Android: gl_shader_decompiler.cpp: get rid of the not-so-accurate multiplication (#7011)

This commit is contained in:
SachinVin 2023-10-05 22:58:26 +05:30 committed by GitHub
parent 483e877001
commit 053b3618dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -828,13 +828,6 @@ private:
void Generate() { void Generate() {
if (sanitize_mul) { if (sanitize_mul) {
#ifdef ANDROID
// Use a cheaper sanitize_mul on Android, as mobile GPUs struggle here
// This seems to be sufficient at least for Ocarina of Time and Attack on Titan accurate
// multiplication bugs
shader.AddLine(
"#define sanitize_mul(lhs, rhs) mix(lhs * rhs, vec4(0.0), isnan(lhs * rhs))");
#else
shader.AddLine("vec4 sanitize_mul(vec4 lhs, vec4 rhs) {{"); shader.AddLine("vec4 sanitize_mul(vec4 lhs, vec4 rhs) {{");
++shader.scope; ++shader.scope;
shader.AddLine("vec4 product = lhs * rhs;"); shader.AddLine("vec4 product = lhs * rhs;");
@ -842,7 +835,6 @@ private:
"isnan(lhs)), isnan(product));"); "isnan(lhs)), isnan(product));");
--shader.scope; --shader.scope;
shader.AddLine("}}\n"); shader.AddLine("}}\n");
#endif
} }
shader.AddLine("vec4 get_offset_register(int base_index, int offset) {{"); shader.AddLine("vec4 get_offset_register(int base_index, int offset) {{");