diff options
Diffstat (limited to 'src/shader_recompiler/backend/spirv/spirv_emit_context.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp index d3ba66569..cd90c084a 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | |||
| @@ -164,9 +164,10 @@ void DefineGenericOutput(EmitContext& ctx, size_t index, std::optional<u32> invo | |||
| 164 | while (element < 4) { | 164 | while (element < 4) { |
| 165 | const u32 remainder{4 - element}; | 165 | const u32 remainder{4 - element}; |
| 166 | const TransformFeedbackVarying* xfb_varying{}; | 166 | const TransformFeedbackVarying* xfb_varying{}; |
| 167 | if (!ctx.runtime_info.xfb_varyings.empty()) { | 167 | const size_t xfb_varying_index{base_attr_index + element}; |
| 168 | xfb_varying = &ctx.runtime_info.xfb_varyings[base_attr_index + element]; | 168 | if (xfb_varying_index < ctx.runtime_info.xfb_varyings.size()) { |
| 169 | xfb_varying = xfb_varying && xfb_varying->components > 0 ? xfb_varying : nullptr; | 169 | xfb_varying = &ctx.runtime_info.xfb_varyings[xfb_varying_index]; |
| 170 | xfb_varying = xfb_varying->components > 0 ? xfb_varying : nullptr; | ||
| 170 | } | 171 | } |
| 171 | const u32 num_components{xfb_varying ? xfb_varying->components : remainder}; | 172 | const u32 num_components{xfb_varying ? xfb_varying->components : remainder}; |
| 172 | 173 | ||