aboutsummaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-06-11 00:33:33 -0400
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-22 21:51:38 -0400
commit4759db28d0b98c79f9a630b63ba13c4cd0df9109 (patch)
tree3cc20c600bf0733f464e3c844688b1cef766e191 /src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp
parent85399e119d6d61375fd9304d69bdfb3a85522d2a (diff)
glsl: Address Rodrigo's feedback
Diffstat (limited to 'src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp')
-rw-r--r--src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp
index 954fc67b1b..7421ce97d0 100644
--- a/src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp
+++ b/src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp
@@ -13,8 +13,13 @@ namespace {
constexpr std::string_view SWIZZLE{"xyzw"};
void CompositeInsert(EmitContext& ctx, std::string_view result, std::string_view composite,
std::string_view object, u32 index) {
- ctx.Add("{}={};", result, composite);
- ctx.Add("{}.{}={};", result, SWIZZLE[index], object);
+ if (result == composite) {
+ // The result is aliased with the composite
+ ctx.Add("{}.{}={};", composite, SWIZZLE[index], object);
+ } else {
+ ctx.Add("{}={};", result, composite);
+ ctx.Add("{}.{}={};", result, SWIZZLE[index], object);
+ }
}
} // Anonymous namespace