summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-06-26 01:14:06 -0300
committerGravatar ameerj2021-07-22 21:51:39 -0400
commit5643a909bc3fa9f497d2f2e68650f823ed2944ac (patch)
tree9fd367abf424ed751d0053e22b7bc53ed6b4e61c /src/shader_recompiler/backend/spirv
parentglsl: Fix shared and local memory declarations (diff)
downloadyuzu-5643a909bc3fa9f497d2f2e68650f823ed2944ac.tar.gz
yuzu-5643a909bc3fa9f497d2f2e68650f823ed2944ac.tar.xz
yuzu-5643a909bc3fa9f497d2f2e68650f823ed2944ac.zip
shader: Fix disabled and unwritten attributes and varyings
Diffstat (limited to 'src/shader_recompiler/backend/spirv')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp
index 77fbb2b2f..756de0a27 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp
@@ -298,10 +298,14 @@ Id EmitGetAttribute(EmitContext& ctx, IR::Attribute attr, Id vertex) {
298 if (IR::IsGeneric(attr)) { 298 if (IR::IsGeneric(attr)) {
299 const u32 index{IR::GenericAttributeIndex(attr)}; 299 const u32 index{IR::GenericAttributeIndex(attr)};
300 const std::optional<AttrInfo> type{AttrTypes(ctx, index)}; 300 const std::optional<AttrInfo> type{AttrTypes(ctx, index)};
301 if (!type || !ctx.runtime_info.previous_stage_stores.Generic(index)) { 301 if (!type) {
302 // Attribute is disabled 302 // Attribute is disabled
303 return ctx.Const(0.0f); 303 return ctx.Const(0.0f);
304 } 304 }
305 if (!ctx.runtime_info.previous_stage_stores.Generic(index, element)) {
306 // Varying component is not written
307 return ctx.Const(type && element == 3 ? 1.0f : 0.0f);
308 }
305 const Id generic_id{ctx.input_generics.at(index)}; 309 const Id generic_id{ctx.input_generics.at(index)};
306 const Id pointer{AttrPointer(ctx, type->pointer, vertex, generic_id, ctx.Const(element))}; 310 const Id pointer{AttrPointer(ctx, type->pointer, vertex, generic_id, ctx.Const(element))};
307 const Id value{ctx.OpLoad(type->id, pointer)}; 311 const Id value{ctx.OpLoad(type->id, pointer)};