gl_shader_decompiler: Fix min/max NaN edge case (#6935)

This commit is contained in:
GPUCode 2023-08-31 23:37:53 +03:00 committed by GitHub
parent 5ad58e0605
commit cab0ad50f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -476,12 +476,22 @@ private:
} }
case OpCode::Id::MAX: { case OpCode::Id::MAX: {
SetDest(swizzle, dest_reg, fmt::format("max({}, {})", src1, src2), 4, 4); if (sanitize_mul) {
SetDest(swizzle, dest_reg,
fmt::format("mix({1}, {0}, greaterThan({0}, {1}))", src1, src2), 4, 4);
} else {
SetDest(swizzle, dest_reg, fmt::format("max({}, {})", src1, src2), 4, 4);
}
break; break;
} }
case OpCode::Id::MIN: { case OpCode::Id::MIN: {
SetDest(swizzle, dest_reg, fmt::format("min({}, {})", src1, src2), 4, 4); if (sanitize_mul) {
SetDest(swizzle, dest_reg,
fmt::format("mix({1}, {0}, lessThan({0}, {1}))", src1, src2), 4, 4);
} else {
SetDest(swizzle, dest_reg, fmt::format("min({}, {})", src1, src2), 4, 4);
}
break; break;
} }