summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glasm/emit_context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glasm/emit_context.cpp')
-rw-r--r--src/shader_recompiler/backend/glasm/emit_context.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_context.cpp b/src/shader_recompiler/backend/glasm/emit_context.cpp
index 8f418936e..a9bbb680f 100644
--- a/src/shader_recompiler/backend/glasm/emit_context.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_context.cpp
@@ -47,24 +47,31 @@ EmitContext::EmitContext(IR::Program& program, Bindings& bindings, const Profile
47 case Stage::VertexA: 47 case Stage::VertexA:
48 case Stage::VertexB: 48 case Stage::VertexB:
49 stage_name = "vertex"; 49 stage_name = "vertex";
50 attrib_name = "vertex";
50 break; 51 break;
51 case Stage::TessellationControl: 52 case Stage::TessellationControl:
52 case Stage::TessellationEval: 53 case Stage::TessellationEval:
54 stage_name = "primitive";
55 attrib_name = "primitive";
56 break;
53 case Stage::Geometry: 57 case Stage::Geometry:
54 stage_name = "primitive"; 58 stage_name = "primitive";
59 attrib_name = "vertex";
55 break; 60 break;
56 case Stage::Fragment: 61 case Stage::Fragment:
57 stage_name = "fragment"; 62 stage_name = "fragment";
63 attrib_name = "fragment";
58 break; 64 break;
59 case Stage::Compute: 65 case Stage::Compute:
60 stage_name = "invocation"; 66 stage_name = "invocation";
61 break; 67 break;
62 } 68 }
69 const std::string_view attr_stage{stage == Stage::Fragment ? "fragment" : "vertex"};
63 for (size_t index = 0; index < program.info.input_generics.size(); ++index) { 70 for (size_t index = 0; index < program.info.input_generics.size(); ++index) {
64 const auto& generic{program.info.input_generics[index]}; 71 const auto& generic{program.info.input_generics[index]};
65 if (generic.used) { 72 if (generic.used) {
66 Add("{}ATTRIB in_attr{}[]={{{}.attrib[{}..{}]}};", 73 Add("{}ATTRIB in_attr{}[]={{{}.attrib[{}..{}]}};",
67 InterpDecorator(generic.interpolation), index, stage_name, index, index); 74 InterpDecorator(generic.interpolation), index, attr_stage, index, index);
68 } 75 }
69 } 76 }
70 for (size_t index = 0; index < program.info.stores_frag_color.size(); ++index) { 77 for (size_t index = 0; index < program.info.stores_frag_color.size(); ++index) {