@@ -2900,6 +2900,13 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex
29002900 varInst,
29012901 SpvDecorationNoPerspective);
29022902 return true ;
2903+ case IRInterpolationMode::PerPrimitive:
2904+ emitOpDecorate (
2905+ getSection (SpvLogicalSectionID::Annotations),
2906+ nullptr ,
2907+ varInst,
2908+ SpvDecorationPerPrimitiveEXT);
2909+ return true ;
29032910 case IRInterpolationMode::Linear:
29042911 return true ;
29052912 case IRInterpolationMode::Sample:
@@ -2920,22 +2927,6 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex
29202927 return false ;
29212928 }
29222929 }
2923- void emitSystemVarDecoration (IRInst* var, SpvInst* varInst)
2924- {
2925- for (auto decor : var->getDecorations ())
2926- {
2927- switch (decor->getOp ())
2928- {
2929- case kIROp_GLSLPrimitivesRateDecoration :
2930- emitOpDecorate (
2931- getSection (SpvLogicalSectionID::Annotations),
2932- decor,
2933- varInst,
2934- SpvDecorationPerPrimitiveEXT);
2935- break ;
2936- }
2937- }
2938- }
29392930
29402931 void emitVarLayout (IRInst* var, SpvInst* varInst, IRVarLayout* layout)
29412932 {
@@ -3084,20 +3075,11 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex
30843075
30853076 for (auto decor : var->getDecorations ())
30863077 {
3087- switch (decor->getOp ())
3078+ if (decor->getOp () == kIROp_RequireSPIRVDescriptorIndexingExtensionDecoration )
30883079 {
3089- case kIROp_GLSLPrimitivesRateDecoration :
3090- emitOpDecorate (
3091- getSection (SpvLogicalSectionID::Annotations),
3092- decor,
3093- varInst,
3094- SpvDecorationPerPrimitiveEXT);
3095- break ;
3096- case kIROp_RequireSPIRVDescriptorIndexingExtensionDecoration :
30973080 ensureExtensionDeclarationBeforeSpv15 (
30983081 UnownedStringSlice (" SPV_EXT_descriptor_indexing" ));
30993082 requireSPIRVCapability (SpvCapabilityRuntimeDescriptorArray);
3100- break ;
31013083 }
31023084 }
31033085 }
@@ -3278,7 +3260,6 @@ struct SPIRVEmitContext : public SourceEmitterBase, public SPIRVEmitSharedContex
32783260 }
32793261 if (auto systemValInst = maybeEmitSystemVal (param))
32803262 {
3281- emitSystemVarDecoration (param, systemValInst);
32823263 registerInst (param, systemValInst);
32833264 return systemValInst;
32843265 }
0 commit comments