diff options
author | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-05-31 01:21:30 +0200 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-23 03:51:37 +0200 |
commit | 8ec0028e687f0ace26e0a4abf8ffbe1abb19653d (patch) | |
tree | 6d28ebc2067f811814eeb9e18836ab1915cf8e28 /src/shader_recompiler/backend | |
parent | glsl: Rework var alloc to not assign unused results (diff) | |
download | yuzu-8ec0028e687f0ace26e0a4abf8ffbe1abb19653d.tar yuzu-8ec0028e687f0ace26e0a4abf8ffbe1abb19653d.tar.gz yuzu-8ec0028e687f0ace26e0a4abf8ffbe1abb19653d.tar.bz2 yuzu-8ec0028e687f0ace26e0a4abf8ffbe1abb19653d.tar.lz yuzu-8ec0028e687f0ace26e0a4abf8ffbe1abb19653d.tar.xz yuzu-8ec0028e687f0ace26e0a4abf8ffbe1abb19653d.tar.zst yuzu-8ec0028e687f0ace26e0a4abf8ffbe1abb19653d.zip |
Diffstat (limited to 'src/shader_recompiler/backend')
-rw-r--r-- | src/shader_recompiler/backend/glsl/emit_glsl.cpp | 3 | ||||
-rw-r--r-- | src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/glsl/emit_glsl.cpp b/src/shader_recompiler/backend/glsl/emit_glsl.cpp index 4304ee4d5..f0257db7f 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl.cpp @@ -112,6 +112,9 @@ void PrecolorInst(IR::Inst& phi) { ir.PhiMove(phi, IR::Value{arg.InstRecursive()}); } } + for (size_t i = 0; i < num_args; ++i) { + IR::IREmitter{*phi.PhiBlock(i)}.Reference(IR::Value{&phi}); + } } void Precolor(const IR::Program& program) { diff --git a/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp b/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp index 8688686e8..8f5f94752 100644 --- a/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp +++ b/src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp @@ -186,6 +186,18 @@ void EmitSetAttribute(EmitContext& ctx, IR::Attribute attr, std::string_view val case IR::Attribute::PositionW: ctx.Add("gl_Position.{}={};", swizzle, value); break; + case IR::Attribute::ClipDistance0: + case IR::Attribute::ClipDistance1: + case IR::Attribute::ClipDistance2: + case IR::Attribute::ClipDistance3: + case IR::Attribute::ClipDistance4: + case IR::Attribute::ClipDistance5: + case IR::Attribute::ClipDistance6: + case IR::Attribute::ClipDistance7: { + const u32 index{static_cast<u32>(attr) - static_cast<u32>(IR::Attribute::ClipDistance0)}; + ctx.Add("gl_ClipDistance[{}]={};", index, value); + break; + } default: fmt::print("Set attribute {}", attr); throw NotImplementedException("Set attribute {}", attr); |