Implement GL_EXT_demote_to_helper_invocation

This commit is contained in:
Jeff Bolz 2019-07-01 09:23:23 -05:00
parent 4162de4bbf
commit ba6170b534
18 changed files with 3618 additions and 3426 deletions

View File

@ -34,5 +34,6 @@ static const char* const E_SPV_EXT_shader_stencil_export = "SPV_EXT_shade
static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer"; static const char* const E_SPV_EXT_shader_viewport_index_layer = "SPV_EXT_shader_viewport_index_layer";
static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered"; static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fully_covered";
static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density";
static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation";
#endif // #ifndef GLSLextEXT_H #endif // #ifndef GLSLextEXT_H

View File

@ -3111,6 +3111,12 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T
builder.clearAccessChain(); builder.clearAccessChain();
break; break;
case glslang::EOpDemote:
builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT);
builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation);
builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT);
break;
default: default:
assert(0); assert(0);
break; break;
@ -7610,6 +7616,13 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
builder.createNoResultOp(spv::OpEndInvocationInterlockEXT); builder.createNoResultOp(spv::OpEndInvocationInterlockEXT);
return 0; return 0;
case glslang::EOpIsHelperInvocation:
{
std::vector<spv::Id> args; // Dummy arguments
spv::Id id = builder.createOp(spv::OpIsHelperInvocationEXT, typeId, args);
return id;
}
default: default:
logger->missingFunctionality("unknown operation with no arguments"); logger->missingFunctionality("unknown operation with no arguments");
return 0; return 0;

View File

@ -1367,6 +1367,8 @@ const char* OpcodeString(int op)
case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV";
case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV"; case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV";
case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV"; case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV";
case OpDemoteToHelperInvocationEXT: return "OpDemoteToHelperInvocationEXT";
case OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT";
case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT"; case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT";
case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT"; case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT";
@ -2784,6 +2786,8 @@ void Parameterize()
InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'"); InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'");
InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'"); InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'");
InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false);
} }
}; // end spv namespace }; // end spv namespace

View File

@ -455,6 +455,7 @@ enum Decoration {
DecorationHlslCounterBufferGOOGLE = 5634, DecorationHlslCounterBufferGOOGLE = 5634,
DecorationHlslSemanticGOOGLE = 5635, DecorationHlslSemanticGOOGLE = 5635,
DecorationUserSemantic = 5635, DecorationUserSemantic = 5635,
DecorationUserTypeGOOGLE = 5636,
DecorationMax = 0x7fffffff, DecorationMax = 0x7fffffff,
}; };
@ -632,7 +633,7 @@ enum MemorySemanticsShift {
MemorySemanticsOutputMemoryKHRShift = 12, MemorySemanticsOutputMemoryKHRShift = 12,
MemorySemanticsMakeAvailableKHRShift = 13, MemorySemanticsMakeAvailableKHRShift = 13,
MemorySemanticsMakeVisibleKHRShift = 14, MemorySemanticsMakeVisibleKHRShift = 14,
MemorySemanticsVolatileShift = 15, MemorySemanticsVolatileShift = 15,
MemorySemanticsMax = 0x7fffffff, MemorySemanticsMax = 0x7fffffff,
}; };
@ -650,8 +651,8 @@ enum MemorySemanticsMask {
MemorySemanticsImageMemoryMask = 0x00000800, MemorySemanticsImageMemoryMask = 0x00000800,
MemorySemanticsOutputMemoryKHRMask = 0x00001000, MemorySemanticsOutputMemoryKHRMask = 0x00001000,
MemorySemanticsMakeAvailableKHRMask = 0x00002000, MemorySemanticsMakeAvailableKHRMask = 0x00002000,
MemorySemanticsMakeVisibleKHRMask = 0x00004000, MemorySemanticsMakeVisibleKHRMask = 0x00004000,
MemorySemanticsVolatileMask = 0x00008000, MemorySemanticsVolatileMask = 0x00008000,
}; };
enum MemoryAccessShift { enum MemoryAccessShift {
@ -845,6 +846,7 @@ enum Capability {
CapabilityFragmentShaderShadingRateInterlockEXT = 5372, CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
CapabilityShaderSMBuiltinsNV = 5373, CapabilityShaderSMBuiltinsNV = 5373,
CapabilityFragmentShaderPixelInterlockEXT = 5378, CapabilityFragmentShaderPixelInterlockEXT = 5378,
CapabilityDemoteToHelperInvocationEXT = 5379,
CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupShuffleINTEL = 5568,
CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupBufferBlockIOINTEL = 5569,
CapabilitySubgroupImageBlockIOINTEL = 5570, CapabilitySubgroupImageBlockIOINTEL = 5570,
@ -1233,6 +1235,8 @@ enum Op {
OpCooperativeMatrixLengthNV = 5362, OpCooperativeMatrixLengthNV = 5362,
OpBeginInvocationInterlockEXT = 5364, OpBeginInvocationInterlockEXT = 5364,
OpEndInvocationInterlockEXT = 5365, OpEndInvocationInterlockEXT = 5365,
OpDemoteToHelperInvocationEXT = 5380,
OpIsHelperInvocationEXT = 5381,
OpSubgroupShuffleINTEL = 5571, OpSubgroupShuffleINTEL = 5571,
OpSubgroupShuffleDownINTEL = 5572, OpSubgroupShuffleDownINTEL = 5572,
OpSubgroupShuffleUpINTEL = 5573, OpSubgroupShuffleUpINTEL = 5573,
@ -1907,6 +1911,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
} }
} }
#endif /* SPV_ENABLE_UTILITY_CODE */ #endif /* SPV_ENABLE_UTILITY_CODE */

View File

@ -0,0 +1,70 @@
spv.conditionalDemote.frag
Validation failed
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 38
Capability Shader
Capability Bad
Extension "SPV_EXT_demote_to_helper_invocation"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 17 36
ExecutionMode 4 OriginUpperLeft
Source GLSL 460
SourceExtension "GL_EXT_demote_to_helper_invocation"
Name 4 "main"
Name 9 "v"
Name 13 "tex"
Name 17 "coord"
Name 33 "x"
Name 36 "o"
Decorate 13(tex) DescriptorSet 0
Decorate 13(tex) Binding 0
Decorate 17(coord) Location 0
Decorate 36(o) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 2D sampled format:Unknown
11: TypeSampledImage 10
12: TypePointer UniformConstant 11
13(tex): 12(ptr) Variable UniformConstant
15: TypeVector 6(float) 2
16: TypePointer Input 15(fvec2)
17(coord): 16(ptr) Variable Input
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 6(float) Constant 1050253722
24: 6(float) Constant 1053609165
25: 7(fvec4) ConstantComposite 21 22 23 24
26: TypeBool
27: TypeVector 26(bool) 4
32: TypePointer Function 26(bool)
35: TypePointer Output 7(fvec4)
36(o): 35(ptr) Variable Output
4(main): 2 Function None 3
5: Label
9(v): 8(ptr) Variable Function
33(x): 32(ptr) Variable Function
14: 11 Load 13(tex)
18: 15(fvec2) Load 17(coord)
19: 7(fvec4) ImageSampleImplicitLod 14 18
Store 9(v) 19
20: 7(fvec4) Load 9(v)
28: 27(bvec4) FOrdEqual 20 25
29: 26(bool) All 28
SelectionMerge 31 None
BranchConditional 29 30 31
30: Label
DemoteToHelperInvocationEXT
Branch 31
31: Label
34: 26(bool) IsHelperInvocationEXT
Store 33(x) 34
37: 7(fvec4) Load 9(v)
Store 36(o) 37
Return
FunctionEnd

View File

@ -0,0 +1,6 @@
spv.demoteDisabled.frag
ERROR: 0:9: 'demote' : undeclared identifier
ERROR: 1 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

View File

@ -0,0 +1,18 @@
#version 460 core
#extension GL_EXT_demote_to_helper_invocation : enable
layout(set = 0, binding = 0) uniform sampler2D tex;
layout(location = 0) in vec2 coord;
layout(location = 0) out vec4 o;
void main (void)
{
vec4 v = texture(tex, coord);
if (v == vec4(0.1,0.2,0.3,0.4))
demote;
bool x = helperInvocationEXT();
o = v;
}

View File

@ -0,0 +1,10 @@
#version 460 core
void main (void)
{
{
int demote = 0;
demote;
}
demote;
}

View File

@ -624,6 +624,8 @@ enum TOperator {
EOpBeginInvocationInterlock, // Fragment only EOpBeginInvocationInterlock, // Fragment only
EOpEndInvocationInterlock, // Fragment only EOpEndInvocationInterlock, // Fragment only
EOpIsHelperInvocation,
// //
// Branch // Branch
// //
@ -634,6 +636,7 @@ enum TOperator {
EOpContinue, EOpContinue,
EOpCase, EOpCase,
EOpDefault, EOpDefault,
EOpDemote, // Fragment only
// //
// Constructors // Constructors

View File

@ -5034,6 +5034,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"void beginInvocationInterlockARB(void);" "void beginInvocationInterlockARB(void);"
"void endInvocationInterlockARB(void);"); "void endInvocationInterlockARB(void);");
stageBuiltins[EShLangFragment].append(
"bool helperInvocationEXT();"
"\n");
#ifdef AMD_EXTENSIONS #ifdef AMD_EXTENSIONS
// GL_AMD_shader_explicit_vertex_parameter // GL_AMD_shader_explicit_vertex_parameter
if (profile != EEsProfile && version >= 450) { if (profile != EEsProfile && version >= 450) {
@ -8641,6 +8645,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setVariableExtensions("gl_StorageSemanticsImage", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsImage", 1, &E_GL_KHR_memory_scope_semantics);
symbolTable.setVariableExtensions("gl_StorageSemanticsOutput", 1, &E_GL_KHR_memory_scope_semantics); symbolTable.setVariableExtensions("gl_StorageSemanticsOutput", 1, &E_GL_KHR_memory_scope_semantics);
} }
symbolTable.setFunctionExtensions("helperInvocationEXT", 1, &E_GL_EXT_demote_to_helper_invocation);
break; break;
case EShLangCompute: case EShLangCompute:
@ -9295,6 +9301,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.relateToOperator("findLSB", EOpFindLSB); symbolTable.relateToOperator("findLSB", EOpFindLSB);
symbolTable.relateToOperator("findMSB", EOpFindMSB); symbolTable.relateToOperator("findMSB", EOpFindMSB);
symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation);
if (PureOperatorBuiltins) { if (PureOperatorBuiltins) {
symbolTable.relateToOperator("imageSize", EOpImageQuerySize); symbolTable.relateToOperator("imageSize", EOpImageQuerySize);
symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples); symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples);

View File

@ -356,6 +356,7 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["default"] = DEFAULT; (*KeywordMap)["default"] = DEFAULT;
(*KeywordMap)["if"] = IF; (*KeywordMap)["if"] = IF;
(*KeywordMap)["else"] = ELSE; (*KeywordMap)["else"] = ELSE;
(*KeywordMap)["demote"] = DEMOTE;
(*KeywordMap)["discard"] = DISCARD; (*KeywordMap)["discard"] = DISCARD;
(*KeywordMap)["return"] = RETURN; (*KeywordMap)["return"] = RETURN;
(*KeywordMap)["void"] = VOID; (*KeywordMap)["void"] = VOID;
@ -1621,6 +1622,12 @@ int TScanContext::tokenizeIdentifier()
return keyword; return keyword;
return identifierOrType(); return identifierOrType();
case DEMOTE:
if (parseContext.extensionTurnedOn(E_GL_EXT_demote_to_helper_invocation))
return keyword;
else
return identifierOrType();
default: default:
parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc);
return 0; return 0;

View File

@ -211,6 +211,7 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_EXT_fragment_invocation_density] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_invocation_density] = EBhDisable;
extensionBehavior[E_GL_EXT_buffer_reference] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference] = EBhDisable;
extensionBehavior[E_GL_EXT_buffer_reference2] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference2] = EBhDisable;
extensionBehavior[E_GL_EXT_demote_to_helper_invocation] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable;
@ -394,6 +395,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_EXT_fragment_invocation_density 1\n" "#define GL_EXT_fragment_invocation_density 1\n"
"#define GL_EXT_buffer_reference 1\n" "#define GL_EXT_buffer_reference 1\n"
"#define GL_EXT_buffer_reference2 1\n" "#define GL_EXT_buffer_reference2 1\n"
"#define GL_EXT_demote_to_helper_invocation 1\n"
// GL_KHR_shader_subgroup // GL_KHR_shader_subgroup
"#define GL_KHR_shader_subgroup_basic 1\n" "#define GL_KHR_shader_subgroup_basic 1\n"

View File

@ -173,6 +173,7 @@ const char* const E_GL_EXT_scalar_block_layout = "GL_EXT_scalar_blo
const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_invocation_density"; const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_invocation_density";
const char* const E_GL_EXT_buffer_reference = "GL_EXT_buffer_reference"; const char* const E_GL_EXT_buffer_reference = "GL_EXT_buffer_reference";
const char* const E_GL_EXT_buffer_reference2 = "GL_EXT_buffer_reference2"; const char* const E_GL_EXT_buffer_reference2 = "GL_EXT_buffer_reference2";
const char* const E_GL_EXT_demote_to_helper_invocation = "GL_EXT_demote_to_helper_invocation";
// Arrays of extensions for the above viewportEXTs duplications // Arrays of extensions for the above viewportEXTs duplications

View File

@ -128,7 +128,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> ATTRIBUTE VARYING %token <lex> ATTRIBUTE VARYING
%token <lex> FLOAT16_T FLOAT FLOAT32_T DOUBLE FLOAT64_T %token <lex> FLOAT16_T FLOAT FLOAT32_T DOUBLE FLOAT64_T
%token <lex> CONST BOOL INT UINT INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T %token <lex> CONST BOOL INT UINT INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T
%token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE %token <lex> BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT SUBROUTINE DEMOTE
%token <lex> BVEC2 BVEC3 BVEC4 %token <lex> BVEC2 BVEC3 BVEC4
%token <lex> IVEC2 IVEC3 IVEC4 %token <lex> IVEC2 IVEC3 IVEC4
%token <lex> UVEC2 UVEC3 UVEC4 %token <lex> UVEC2 UVEC3 UVEC4
@ -265,7 +265,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
%type <interm.intermNode> declaration external_declaration %type <interm.intermNode> declaration external_declaration
%type <interm.intermNode> for_init_statement compound_statement_no_new_scope %type <interm.intermNode> for_init_statement compound_statement_no_new_scope
%type <interm.nodePair> selection_rest_statement for_rest_statement %type <interm.nodePair> selection_rest_statement for_rest_statement
%type <interm.intermNode> iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped %type <interm.intermNode> iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped demote_statement
%type <interm> single_declaration init_declarator_list %type <interm> single_declaration init_declarator_list
%type <interm> parameter_declaration parameter_declarator parameter_type_specifier %type <interm> parameter_declaration parameter_declarator parameter_type_specifier
@ -3416,6 +3416,15 @@ simple_statement
| case_label { $$ = $1; } | case_label { $$ = $1; }
| iteration_statement { $$ = $1; } | iteration_statement { $$ = $1; }
| jump_statement { $$ = $1; } | jump_statement { $$ = $1; }
| demote_statement { $$ = $1; }
;
demote_statement
: DEMOTE SEMICOLON {
parseContext.requireStage($1.loc, EShLangFragment, "demote");
parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote");
$$ = parseContext.intermediate.addBranch(EOpDemote, $1.loc);
}
; ;
compound_statement compound_statement

File diff suppressed because it is too large Load Diff

View File

@ -76,380 +76,381 @@ extern int yydebug;
CASE = 286, CASE = 286,
DEFAULT = 287, DEFAULT = 287,
SUBROUTINE = 288, SUBROUTINE = 288,
BVEC2 = 289, DEMOTE = 289,
BVEC3 = 290, BVEC2 = 290,
BVEC4 = 291, BVEC3 = 291,
IVEC2 = 292, BVEC4 = 292,
IVEC3 = 293, IVEC2 = 293,
IVEC4 = 294, IVEC3 = 294,
UVEC2 = 295, IVEC4 = 295,
UVEC3 = 296, UVEC2 = 296,
UVEC4 = 297, UVEC3 = 297,
I64VEC2 = 298, UVEC4 = 298,
I64VEC3 = 299, I64VEC2 = 299,
I64VEC4 = 300, I64VEC3 = 300,
U64VEC2 = 301, I64VEC4 = 301,
U64VEC3 = 302, U64VEC2 = 302,
U64VEC4 = 303, U64VEC3 = 303,
I32VEC2 = 304, U64VEC4 = 304,
I32VEC3 = 305, I32VEC2 = 305,
I32VEC4 = 306, I32VEC3 = 306,
U32VEC2 = 307, I32VEC4 = 307,
U32VEC3 = 308, U32VEC2 = 308,
U32VEC4 = 309, U32VEC3 = 309,
I16VEC2 = 310, U32VEC4 = 310,
I16VEC3 = 311, I16VEC2 = 311,
I16VEC4 = 312, I16VEC3 = 312,
U16VEC2 = 313, I16VEC4 = 313,
U16VEC3 = 314, U16VEC2 = 314,
U16VEC4 = 315, U16VEC3 = 315,
I8VEC2 = 316, U16VEC4 = 316,
I8VEC3 = 317, I8VEC2 = 317,
I8VEC4 = 318, I8VEC3 = 318,
U8VEC2 = 319, I8VEC4 = 319,
U8VEC3 = 320, U8VEC2 = 320,
U8VEC4 = 321, U8VEC3 = 321,
VEC2 = 322, U8VEC4 = 322,
VEC3 = 323, VEC2 = 323,
VEC4 = 324, VEC3 = 324,
MAT2 = 325, VEC4 = 325,
MAT3 = 326, MAT2 = 326,
MAT4 = 327, MAT3 = 327,
CENTROID = 328, MAT4 = 328,
IN = 329, CENTROID = 329,
OUT = 330, IN = 330,
INOUT = 331, OUT = 331,
UNIFORM = 332, INOUT = 332,
PATCH = 333, UNIFORM = 333,
SAMPLE = 334, PATCH = 334,
BUFFER = 335, SAMPLE = 335,
SHARED = 336, BUFFER = 336,
NONUNIFORM = 337, SHARED = 337,
PAYLOADNV = 338, NONUNIFORM = 338,
PAYLOADINNV = 339, PAYLOADNV = 339,
HITATTRNV = 340, PAYLOADINNV = 340,
CALLDATANV = 341, HITATTRNV = 341,
CALLDATAINNV = 342, CALLDATANV = 342,
COHERENT = 343, CALLDATAINNV = 343,
VOLATILE = 344, COHERENT = 344,
RESTRICT = 345, VOLATILE = 345,
READONLY = 346, RESTRICT = 346,
WRITEONLY = 347, READONLY = 347,
DEVICECOHERENT = 348, WRITEONLY = 348,
QUEUEFAMILYCOHERENT = 349, DEVICECOHERENT = 349,
WORKGROUPCOHERENT = 350, QUEUEFAMILYCOHERENT = 350,
SUBGROUPCOHERENT = 351, WORKGROUPCOHERENT = 351,
NONPRIVATE = 352, SUBGROUPCOHERENT = 352,
DVEC2 = 353, NONPRIVATE = 353,
DVEC3 = 354, DVEC2 = 354,
DVEC4 = 355, DVEC3 = 355,
DMAT2 = 356, DVEC4 = 356,
DMAT3 = 357, DMAT2 = 357,
DMAT4 = 358, DMAT3 = 358,
F16VEC2 = 359, DMAT4 = 359,
F16VEC3 = 360, F16VEC2 = 360,
F16VEC4 = 361, F16VEC3 = 361,
F16MAT2 = 362, F16VEC4 = 362,
F16MAT3 = 363, F16MAT2 = 363,
F16MAT4 = 364, F16MAT3 = 364,
F32VEC2 = 365, F16MAT4 = 365,
F32VEC3 = 366, F32VEC2 = 366,
F32VEC4 = 367, F32VEC3 = 367,
F32MAT2 = 368, F32VEC4 = 368,
F32MAT3 = 369, F32MAT2 = 369,
F32MAT4 = 370, F32MAT3 = 370,
F64VEC2 = 371, F32MAT4 = 371,
F64VEC3 = 372, F64VEC2 = 372,
F64VEC4 = 373, F64VEC3 = 373,
F64MAT2 = 374, F64VEC4 = 374,
F64MAT3 = 375, F64MAT2 = 375,
F64MAT4 = 376, F64MAT3 = 376,
NOPERSPECTIVE = 377, F64MAT4 = 377,
FLAT = 378, NOPERSPECTIVE = 378,
SMOOTH = 379, FLAT = 379,
LAYOUT = 380, SMOOTH = 380,
EXPLICITINTERPAMD = 381, LAYOUT = 381,
PERVERTEXNV = 382, EXPLICITINTERPAMD = 382,
PERPRIMITIVENV = 383, PERVERTEXNV = 383,
PERVIEWNV = 384, PERPRIMITIVENV = 384,
PERTASKNV = 385, PERVIEWNV = 385,
MAT2X2 = 386, PERTASKNV = 386,
MAT2X3 = 387, MAT2X2 = 387,
MAT2X4 = 388, MAT2X3 = 388,
MAT3X2 = 389, MAT2X4 = 389,
MAT3X3 = 390, MAT3X2 = 390,
MAT3X4 = 391, MAT3X3 = 391,
MAT4X2 = 392, MAT3X4 = 392,
MAT4X3 = 393, MAT4X2 = 393,
MAT4X4 = 394, MAT4X3 = 394,
DMAT2X2 = 395, MAT4X4 = 395,
DMAT2X3 = 396, DMAT2X2 = 396,
DMAT2X4 = 397, DMAT2X3 = 397,
DMAT3X2 = 398, DMAT2X4 = 398,
DMAT3X3 = 399, DMAT3X2 = 399,
DMAT3X4 = 400, DMAT3X3 = 400,
DMAT4X2 = 401, DMAT3X4 = 401,
DMAT4X3 = 402, DMAT4X2 = 402,
DMAT4X4 = 403, DMAT4X3 = 403,
F16MAT2X2 = 404, DMAT4X4 = 404,
F16MAT2X3 = 405, F16MAT2X2 = 405,
F16MAT2X4 = 406, F16MAT2X3 = 406,
F16MAT3X2 = 407, F16MAT2X4 = 407,
F16MAT3X3 = 408, F16MAT3X2 = 408,
F16MAT3X4 = 409, F16MAT3X3 = 409,
F16MAT4X2 = 410, F16MAT3X4 = 410,
F16MAT4X3 = 411, F16MAT4X2 = 411,
F16MAT4X4 = 412, F16MAT4X3 = 412,
F32MAT2X2 = 413, F16MAT4X4 = 413,
F32MAT2X3 = 414, F32MAT2X2 = 414,
F32MAT2X4 = 415, F32MAT2X3 = 415,
F32MAT3X2 = 416, F32MAT2X4 = 416,
F32MAT3X3 = 417, F32MAT3X2 = 417,
F32MAT3X4 = 418, F32MAT3X3 = 418,
F32MAT4X2 = 419, F32MAT3X4 = 419,
F32MAT4X3 = 420, F32MAT4X2 = 420,
F32MAT4X4 = 421, F32MAT4X3 = 421,
F64MAT2X2 = 422, F32MAT4X4 = 422,
F64MAT2X3 = 423, F64MAT2X2 = 423,
F64MAT2X4 = 424, F64MAT2X3 = 424,
F64MAT3X2 = 425, F64MAT2X4 = 425,
F64MAT3X3 = 426, F64MAT3X2 = 426,
F64MAT3X4 = 427, F64MAT3X3 = 427,
F64MAT4X2 = 428, F64MAT3X4 = 428,
F64MAT4X3 = 429, F64MAT4X2 = 429,
F64MAT4X4 = 430, F64MAT4X3 = 430,
ATOMIC_UINT = 431, F64MAT4X4 = 431,
ACCSTRUCTNV = 432, ATOMIC_UINT = 432,
FCOOPMATNV = 433, ACCSTRUCTNV = 433,
SAMPLER1D = 434, FCOOPMATNV = 434,
SAMPLER2D = 435, SAMPLER1D = 435,
SAMPLER3D = 436, SAMPLER2D = 436,
SAMPLERCUBE = 437, SAMPLER3D = 437,
SAMPLER1DSHADOW = 438, SAMPLERCUBE = 438,
SAMPLER2DSHADOW = 439, SAMPLER1DSHADOW = 439,
SAMPLERCUBESHADOW = 440, SAMPLER2DSHADOW = 440,
SAMPLER1DARRAY = 441, SAMPLERCUBESHADOW = 441,
SAMPLER2DARRAY = 442, SAMPLER1DARRAY = 442,
SAMPLER1DARRAYSHADOW = 443, SAMPLER2DARRAY = 443,
SAMPLER2DARRAYSHADOW = 444, SAMPLER1DARRAYSHADOW = 444,
ISAMPLER1D = 445, SAMPLER2DARRAYSHADOW = 445,
ISAMPLER2D = 446, ISAMPLER1D = 446,
ISAMPLER3D = 447, ISAMPLER2D = 447,
ISAMPLERCUBE = 448, ISAMPLER3D = 448,
ISAMPLER1DARRAY = 449, ISAMPLERCUBE = 449,
ISAMPLER2DARRAY = 450, ISAMPLER1DARRAY = 450,
USAMPLER1D = 451, ISAMPLER2DARRAY = 451,
USAMPLER2D = 452, USAMPLER1D = 452,
USAMPLER3D = 453, USAMPLER2D = 453,
USAMPLERCUBE = 454, USAMPLER3D = 454,
USAMPLER1DARRAY = 455, USAMPLERCUBE = 455,
USAMPLER2DARRAY = 456, USAMPLER1DARRAY = 456,
SAMPLER2DRECT = 457, USAMPLER2DARRAY = 457,
SAMPLER2DRECTSHADOW = 458, SAMPLER2DRECT = 458,
ISAMPLER2DRECT = 459, SAMPLER2DRECTSHADOW = 459,
USAMPLER2DRECT = 460, ISAMPLER2DRECT = 460,
SAMPLERBUFFER = 461, USAMPLER2DRECT = 461,
ISAMPLERBUFFER = 462, SAMPLERBUFFER = 462,
USAMPLERBUFFER = 463, ISAMPLERBUFFER = 463,
SAMPLERCUBEARRAY = 464, USAMPLERBUFFER = 464,
SAMPLERCUBEARRAYSHADOW = 465, SAMPLERCUBEARRAY = 465,
ISAMPLERCUBEARRAY = 466, SAMPLERCUBEARRAYSHADOW = 466,
USAMPLERCUBEARRAY = 467, ISAMPLERCUBEARRAY = 467,
SAMPLER2DMS = 468, USAMPLERCUBEARRAY = 468,
ISAMPLER2DMS = 469, SAMPLER2DMS = 469,
USAMPLER2DMS = 470, ISAMPLER2DMS = 470,
SAMPLER2DMSARRAY = 471, USAMPLER2DMS = 471,
ISAMPLER2DMSARRAY = 472, SAMPLER2DMSARRAY = 472,
USAMPLER2DMSARRAY = 473, ISAMPLER2DMSARRAY = 473,
SAMPLEREXTERNALOES = 474, USAMPLER2DMSARRAY = 474,
SAMPLEREXTERNAL2DY2YEXT = 475, SAMPLEREXTERNALOES = 475,
F16SAMPLER1D = 476, SAMPLEREXTERNAL2DY2YEXT = 476,
F16SAMPLER2D = 477, F16SAMPLER1D = 477,
F16SAMPLER3D = 478, F16SAMPLER2D = 478,
F16SAMPLER2DRECT = 479, F16SAMPLER3D = 479,
F16SAMPLERCUBE = 480, F16SAMPLER2DRECT = 480,
F16SAMPLER1DARRAY = 481, F16SAMPLERCUBE = 481,
F16SAMPLER2DARRAY = 482, F16SAMPLER1DARRAY = 482,
F16SAMPLERCUBEARRAY = 483, F16SAMPLER2DARRAY = 483,
F16SAMPLERBUFFER = 484, F16SAMPLERCUBEARRAY = 484,
F16SAMPLER2DMS = 485, F16SAMPLERBUFFER = 485,
F16SAMPLER2DMSARRAY = 486, F16SAMPLER2DMS = 486,
F16SAMPLER1DSHADOW = 487, F16SAMPLER2DMSARRAY = 487,
F16SAMPLER2DSHADOW = 488, F16SAMPLER1DSHADOW = 488,
F16SAMPLER1DARRAYSHADOW = 489, F16SAMPLER2DSHADOW = 489,
F16SAMPLER2DARRAYSHADOW = 490, F16SAMPLER1DARRAYSHADOW = 490,
F16SAMPLER2DRECTSHADOW = 491, F16SAMPLER2DARRAYSHADOW = 491,
F16SAMPLERCUBESHADOW = 492, F16SAMPLER2DRECTSHADOW = 492,
F16SAMPLERCUBEARRAYSHADOW = 493, F16SAMPLERCUBESHADOW = 493,
SAMPLER = 494, F16SAMPLERCUBEARRAYSHADOW = 494,
SAMPLERSHADOW = 495, SAMPLER = 495,
TEXTURE1D = 496, SAMPLERSHADOW = 496,
TEXTURE2D = 497, TEXTURE1D = 497,
TEXTURE3D = 498, TEXTURE2D = 498,
TEXTURECUBE = 499, TEXTURE3D = 499,
TEXTURE1DARRAY = 500, TEXTURECUBE = 500,
TEXTURE2DARRAY = 501, TEXTURE1DARRAY = 501,
ITEXTURE1D = 502, TEXTURE2DARRAY = 502,
ITEXTURE2D = 503, ITEXTURE1D = 503,
ITEXTURE3D = 504, ITEXTURE2D = 504,
ITEXTURECUBE = 505, ITEXTURE3D = 505,
ITEXTURE1DARRAY = 506, ITEXTURECUBE = 506,
ITEXTURE2DARRAY = 507, ITEXTURE1DARRAY = 507,
UTEXTURE1D = 508, ITEXTURE2DARRAY = 508,
UTEXTURE2D = 509, UTEXTURE1D = 509,
UTEXTURE3D = 510, UTEXTURE2D = 510,
UTEXTURECUBE = 511, UTEXTURE3D = 511,
UTEXTURE1DARRAY = 512, UTEXTURECUBE = 512,
UTEXTURE2DARRAY = 513, UTEXTURE1DARRAY = 513,
TEXTURE2DRECT = 514, UTEXTURE2DARRAY = 514,
ITEXTURE2DRECT = 515, TEXTURE2DRECT = 515,
UTEXTURE2DRECT = 516, ITEXTURE2DRECT = 516,
TEXTUREBUFFER = 517, UTEXTURE2DRECT = 517,
ITEXTUREBUFFER = 518, TEXTUREBUFFER = 518,
UTEXTUREBUFFER = 519, ITEXTUREBUFFER = 519,
TEXTURECUBEARRAY = 520, UTEXTUREBUFFER = 520,
ITEXTURECUBEARRAY = 521, TEXTURECUBEARRAY = 521,
UTEXTURECUBEARRAY = 522, ITEXTURECUBEARRAY = 522,
TEXTURE2DMS = 523, UTEXTURECUBEARRAY = 523,
ITEXTURE2DMS = 524, TEXTURE2DMS = 524,
UTEXTURE2DMS = 525, ITEXTURE2DMS = 525,
TEXTURE2DMSARRAY = 526, UTEXTURE2DMS = 526,
ITEXTURE2DMSARRAY = 527, TEXTURE2DMSARRAY = 527,
UTEXTURE2DMSARRAY = 528, ITEXTURE2DMSARRAY = 528,
F16TEXTURE1D = 529, UTEXTURE2DMSARRAY = 529,
F16TEXTURE2D = 530, F16TEXTURE1D = 530,
F16TEXTURE3D = 531, F16TEXTURE2D = 531,
F16TEXTURE2DRECT = 532, F16TEXTURE3D = 532,
F16TEXTURECUBE = 533, F16TEXTURE2DRECT = 533,
F16TEXTURE1DARRAY = 534, F16TEXTURECUBE = 534,
F16TEXTURE2DARRAY = 535, F16TEXTURE1DARRAY = 535,
F16TEXTURECUBEARRAY = 536, F16TEXTURE2DARRAY = 536,
F16TEXTUREBUFFER = 537, F16TEXTURECUBEARRAY = 537,
F16TEXTURE2DMS = 538, F16TEXTUREBUFFER = 538,
F16TEXTURE2DMSARRAY = 539, F16TEXTURE2DMS = 539,
SUBPASSINPUT = 540, F16TEXTURE2DMSARRAY = 540,
SUBPASSINPUTMS = 541, SUBPASSINPUT = 541,
ISUBPASSINPUT = 542, SUBPASSINPUTMS = 542,
ISUBPASSINPUTMS = 543, ISUBPASSINPUT = 543,
USUBPASSINPUT = 544, ISUBPASSINPUTMS = 544,
USUBPASSINPUTMS = 545, USUBPASSINPUT = 545,
F16SUBPASSINPUT = 546, USUBPASSINPUTMS = 546,
F16SUBPASSINPUTMS = 547, F16SUBPASSINPUT = 547,
IMAGE1D = 548, F16SUBPASSINPUTMS = 548,
IIMAGE1D = 549, IMAGE1D = 549,
UIMAGE1D = 550, IIMAGE1D = 550,
IMAGE2D = 551, UIMAGE1D = 551,
IIMAGE2D = 552, IMAGE2D = 552,
UIMAGE2D = 553, IIMAGE2D = 553,
IMAGE3D = 554, UIMAGE2D = 554,
IIMAGE3D = 555, IMAGE3D = 555,
UIMAGE3D = 556, IIMAGE3D = 556,
IMAGE2DRECT = 557, UIMAGE3D = 557,
IIMAGE2DRECT = 558, IMAGE2DRECT = 558,
UIMAGE2DRECT = 559, IIMAGE2DRECT = 559,
IMAGECUBE = 560, UIMAGE2DRECT = 560,
IIMAGECUBE = 561, IMAGECUBE = 561,
UIMAGECUBE = 562, IIMAGECUBE = 562,
IMAGEBUFFER = 563, UIMAGECUBE = 563,
IIMAGEBUFFER = 564, IMAGEBUFFER = 564,
UIMAGEBUFFER = 565, IIMAGEBUFFER = 565,
IMAGE1DARRAY = 566, UIMAGEBUFFER = 566,
IIMAGE1DARRAY = 567, IMAGE1DARRAY = 567,
UIMAGE1DARRAY = 568, IIMAGE1DARRAY = 568,
IMAGE2DARRAY = 569, UIMAGE1DARRAY = 569,
IIMAGE2DARRAY = 570, IMAGE2DARRAY = 570,
UIMAGE2DARRAY = 571, IIMAGE2DARRAY = 571,
IMAGECUBEARRAY = 572, UIMAGE2DARRAY = 572,
IIMAGECUBEARRAY = 573, IMAGECUBEARRAY = 573,
UIMAGECUBEARRAY = 574, IIMAGECUBEARRAY = 574,
IMAGE2DMS = 575, UIMAGECUBEARRAY = 575,
IIMAGE2DMS = 576, IMAGE2DMS = 576,
UIMAGE2DMS = 577, IIMAGE2DMS = 577,
IMAGE2DMSARRAY = 578, UIMAGE2DMS = 578,
IIMAGE2DMSARRAY = 579, IMAGE2DMSARRAY = 579,
UIMAGE2DMSARRAY = 580, IIMAGE2DMSARRAY = 580,
F16IMAGE1D = 581, UIMAGE2DMSARRAY = 581,
F16IMAGE2D = 582, F16IMAGE1D = 582,
F16IMAGE3D = 583, F16IMAGE2D = 583,
F16IMAGE2DRECT = 584, F16IMAGE3D = 584,
F16IMAGECUBE = 585, F16IMAGE2DRECT = 585,
F16IMAGE1DARRAY = 586, F16IMAGECUBE = 586,
F16IMAGE2DARRAY = 587, F16IMAGE1DARRAY = 587,
F16IMAGECUBEARRAY = 588, F16IMAGE2DARRAY = 588,
F16IMAGEBUFFER = 589, F16IMAGECUBEARRAY = 589,
F16IMAGE2DMS = 590, F16IMAGEBUFFER = 590,
F16IMAGE2DMSARRAY = 591, F16IMAGE2DMS = 591,
STRUCT = 592, F16IMAGE2DMSARRAY = 592,
VOID = 593, STRUCT = 593,
WHILE = 594, VOID = 594,
IDENTIFIER = 595, WHILE = 595,
TYPE_NAME = 596, IDENTIFIER = 596,
FLOATCONSTANT = 597, TYPE_NAME = 597,
DOUBLECONSTANT = 598, FLOATCONSTANT = 598,
INT16CONSTANT = 599, DOUBLECONSTANT = 599,
UINT16CONSTANT = 600, INT16CONSTANT = 600,
INT32CONSTANT = 601, UINT16CONSTANT = 601,
UINT32CONSTANT = 602, INT32CONSTANT = 602,
INTCONSTANT = 603, UINT32CONSTANT = 603,
UINTCONSTANT = 604, INTCONSTANT = 604,
INT64CONSTANT = 605, UINTCONSTANT = 605,
UINT64CONSTANT = 606, INT64CONSTANT = 606,
BOOLCONSTANT = 607, UINT64CONSTANT = 607,
FLOAT16CONSTANT = 608, BOOLCONSTANT = 608,
LEFT_OP = 609, FLOAT16CONSTANT = 609,
RIGHT_OP = 610, LEFT_OP = 610,
INC_OP = 611, RIGHT_OP = 611,
DEC_OP = 612, INC_OP = 612,
LE_OP = 613, DEC_OP = 613,
GE_OP = 614, LE_OP = 614,
EQ_OP = 615, GE_OP = 615,
NE_OP = 616, EQ_OP = 616,
AND_OP = 617, NE_OP = 617,
OR_OP = 618, AND_OP = 618,
XOR_OP = 619, OR_OP = 619,
MUL_ASSIGN = 620, XOR_OP = 620,
DIV_ASSIGN = 621, MUL_ASSIGN = 621,
ADD_ASSIGN = 622, DIV_ASSIGN = 622,
MOD_ASSIGN = 623, ADD_ASSIGN = 623,
LEFT_ASSIGN = 624, MOD_ASSIGN = 624,
RIGHT_ASSIGN = 625, LEFT_ASSIGN = 625,
AND_ASSIGN = 626, RIGHT_ASSIGN = 626,
XOR_ASSIGN = 627, AND_ASSIGN = 627,
OR_ASSIGN = 628, XOR_ASSIGN = 628,
SUB_ASSIGN = 629, OR_ASSIGN = 629,
LEFT_PAREN = 630, SUB_ASSIGN = 630,
RIGHT_PAREN = 631, LEFT_PAREN = 631,
LEFT_BRACKET = 632, RIGHT_PAREN = 632,
RIGHT_BRACKET = 633, LEFT_BRACKET = 633,
LEFT_BRACE = 634, RIGHT_BRACKET = 634,
RIGHT_BRACE = 635, LEFT_BRACE = 635,
DOT = 636, RIGHT_BRACE = 636,
COMMA = 637, DOT = 637,
COLON = 638, COMMA = 638,
EQUAL = 639, COLON = 639,
SEMICOLON = 640, EQUAL = 640,
BANG = 641, SEMICOLON = 641,
DASH = 642, BANG = 642,
TILDE = 643, DASH = 643,
PLUS = 644, TILDE = 644,
STAR = 645, PLUS = 645,
SLASH = 646, STAR = 646,
PERCENT = 647, SLASH = 647,
LEFT_ANGLE = 648, PERCENT = 648,
RIGHT_ANGLE = 649, LEFT_ANGLE = 649,
VERTICAL_BAR = 650, RIGHT_ANGLE = 650,
CARET = 651, VERTICAL_BAR = 651,
AMPERSAND = 652, CARET = 652,
QUESTION = 653, AMPERSAND = 653,
INVARIANT = 654, QUESTION = 654,
PRECISE = 655, INVARIANT = 655,
HIGH_PRECISION = 656, PRECISE = 656,
MEDIUM_PRECISION = 657, HIGH_PRECISION = 657,
LOW_PRECISION = 658, MEDIUM_PRECISION = 658,
PRECISION = 659, LOW_PRECISION = 659,
PACKED = 660, PRECISION = 660,
RESOURCE = 661, PACKED = 661,
SUPERP = 662 RESOURCE = 662,
SUPERP = 663
}; };
#endif #endif
@ -494,7 +495,7 @@ union YYSTYPE
glslang::TArraySizes* typeParameters; glslang::TArraySizes* typeParameters;
} interm; } interm;
#line 498 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ #line 499 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */
}; };
typedef union YYSTYPE YYSTYPE; typedef union YYSTYPE YYSTYPE;

View File

@ -1098,6 +1098,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break; case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break;
case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices"; break; case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices"; break;
case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break;
default: out.debug.message(EPrefixError, "Bad aggregation op"); default: out.debug.message(EPrefixError, "Bad aggregation op");
} }
@ -1392,6 +1394,7 @@ bool TOutputTraverser::visitBranch(TVisit /* visit*/, TIntermBranch* node)
case EOpContinue: out.debug << "Branch: Continue"; break; case EOpContinue: out.debug << "Branch: Continue"; break;
case EOpReturn: out.debug << "Branch: Return"; break; case EOpReturn: out.debug << "Branch: Return"; break;
case EOpCase: out.debug << "case: "; break; case EOpCase: out.debug << "case: "; break;
case EOpDemote: out.debug << "Demote"; break;
case EOpDefault: out.debug << "default: "; break; case EOpDefault: out.debug << "default: "; break;
default: out.debug << "Branch: Unknown Branch"; break; default: out.debug << "Branch: Unknown Branch"; break;
} }

View File

@ -294,6 +294,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.bufferhandle9.frag", "spv.bufferhandle9.frag",
"spv.bufferhandle_Error.frag", "spv.bufferhandle_Error.frag",
"spv.builtInXFB.vert", "spv.builtInXFB.vert",
"spv.conditionalDemote.frag",
"spv.conditionalDiscard.frag", "spv.conditionalDiscard.frag",
"spv.constStruct.vert", "spv.constStruct.vert",
"spv.constConstruct.vert", "spv.constConstruct.vert",
@ -304,6 +305,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.dataOut.frag", "spv.dataOut.frag",
"spv.dataOutIndirect.frag", "spv.dataOutIndirect.frag",
"spv.dataOutIndirect.vert", "spv.dataOutIndirect.vert",
"spv.demoteDisabled.frag",
"spv.deepRvalue.frag", "spv.deepRvalue.frag",
"spv.depthOut.frag", "spv.depthOut.frag",
"spv.discard-dce.frag", "spv.discard-dce.frag",