Implement GL_EXT_demote_to_helper_invocation
This commit is contained in:
parent
4162de4bbf
commit
ba6170b534
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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 */
|
||||||
|
70
Test/baseResults/spv.conditionalDemote.frag.out
Normal file
70
Test/baseResults/spv.conditionalDemote.frag.out
Normal 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
|
6
Test/baseResults/spv.demoteDisabled.frag.out
Normal file
6
Test/baseResults/spv.demoteDisabled.frag.out
Normal 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
|
18
Test/spv.conditionalDemote.frag
Normal file
18
Test/spv.conditionalDemote.frag
Normal 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;
|
||||||
|
}
|
10
Test/spv.demoteDisabled.frag
Normal file
10
Test/spv.demoteDisabled.frag
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#version 460 core
|
||||||
|
|
||||||
|
void main (void)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
int demote = 0;
|
||||||
|
demote;
|
||||||
|
}
|
||||||
|
demote;
|
||||||
|
}
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user