diff options
author | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-12-29 18:55:42 -0500 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-12-29 19:03:50 -0500 |
commit | 8c907c620d830bdaef30ff4316489443775b3ea4 (patch) | |
tree | 1d4fdda0429c8999d615e981a6e79384a223823a /src/shader_recompiler/backend/glsl/emit_glsl_special.cpp | |
parent | b84d429c2ec59e54a89d9d4e34b0df9f22172e8f (diff) |
glsl: Add boolean reference workaround
Diffstat (limited to 'src/shader_recompiler/backend/glsl/emit_glsl_special.cpp')
-rw-r--r-- | src/shader_recompiler/backend/glsl/emit_glsl_special.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp index b8ddafe48f..fcf620b791 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl_special.cpp @@ -90,7 +90,9 @@ void EmitPhiMove(EmitContext& ctx, const IR::Value& phi_value, const IR::Value& if (phi_reg == val_reg) { return; } - ctx.Add("{}={};", phi_reg, val_reg); + const bool needs_workaround{ctx.profile.has_gl_bool_ref_bug && phi_type == IR::Type::U1}; + const auto suffix{needs_workaround ? "?true:false" : ""}; + ctx.Add("{}={}{};", phi_reg, val_reg, suffix); } void EmitPrologue(EmitContext& ctx) { |