Merge pull request #521 from yavn/frag-shader-primitive-id-capability
SPV: PrimitiveId in frag shader will emit OpCapability
This commit is contained in:
commit
074ced3e00
@ -499,11 +499,17 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
|
|||||||
case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex;
|
case glslang::EbvInstanceIndex: return spv::BuiltInInstanceIndex;
|
||||||
case glslang::EbvBaseVertex:
|
case glslang::EbvBaseVertex:
|
||||||
case glslang::EbvBaseInstance:
|
case glslang::EbvBaseInstance:
|
||||||
|
|
||||||
case glslang::EbvDrawId:
|
case glslang::EbvDrawId:
|
||||||
// TODO: Add SPIR-V builtin ID.
|
// TODO: Add SPIR-V builtin ID.
|
||||||
logger->missingFunctionality("shader draw parameters");
|
logger->missingFunctionality("shader draw parameters");
|
||||||
return spv::BuiltInMax;
|
return spv::BuiltInMax;
|
||||||
case glslang::EbvPrimitiveId: return spv::BuiltInPrimitiveId;
|
|
||||||
|
case glslang::EbvPrimitiveId:
|
||||||
|
if (glslangIntermediate->getStage() == EShLangFragment)
|
||||||
|
builder.addCapability(spv::CapabilityGeometry);
|
||||||
|
return spv::BuiltInPrimitiveId;
|
||||||
|
|
||||||
case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
|
case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
|
||||||
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
|
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
|
||||||
case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter;
|
case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter;
|
||||||
|
|||||||
@ -7,16 +7,17 @@ Linked fragment stage:
|
|||||||
|
|
||||||
// Module Version 10000
|
// Module Version 10000
|
||||||
// Generated by (magic number): 80001
|
// Generated by (magic number): 80001
|
||||||
// Id's are bound by 1114
|
// Id's are bound by 1118
|
||||||
|
|
||||||
Capability Shader
|
Capability Shader
|
||||||
|
Capability Geometry
|
||||||
Capability Float64
|
Capability Float64
|
||||||
Capability ImageGatherExtended
|
Capability ImageGatherExtended
|
||||||
Capability ClipDistance
|
Capability ClipDistance
|
||||||
Capability SampledRect
|
Capability SampledRect
|
||||||
1: ExtInstImport "GLSL.std.450"
|
1: ExtInstImport "GLSL.std.450"
|
||||||
MemoryModel Logical GLSL450
|
MemoryModel Logical GLSL450
|
||||||
EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107
|
EntryPoint Fragment 4 "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116
|
||||||
ExecutionMode 4 OriginUpperLeft
|
ExecutionMode 4 OriginUpperLeft
|
||||||
Source GLSL 400
|
Source GLSL 400
|
||||||
SourceExtension "GL_ARB_separate_shader_objects"
|
SourceExtension "GL_ARB_separate_shader_objects"
|
||||||
@ -55,6 +56,8 @@ Linked fragment stage:
|
|||||||
Name 1099 "vl2"
|
Name 1099 "vl2"
|
||||||
Name 1105 "uo"
|
Name 1105 "uo"
|
||||||
Name 1107 "u"
|
Name 1107 "u"
|
||||||
|
Name 1115 "id"
|
||||||
|
Name 1116 "gl_PrimitiveID"
|
||||||
Decorate 17(u2drs) DescriptorSet 0
|
Decorate 17(u2drs) DescriptorSet 0
|
||||||
Decorate 1025(arrayedSampler) DescriptorSet 0
|
Decorate 1025(arrayedSampler) DescriptorSet 0
|
||||||
Decorate 1027(i) Flat
|
Decorate 1027(i) Flat
|
||||||
@ -64,6 +67,8 @@ Linked fragment stage:
|
|||||||
Decorate 1097(gl_FragCoord) BuiltIn FragCoord
|
Decorate 1097(gl_FragCoord) BuiltIn FragCoord
|
||||||
Decorate 1099(vl2) Location 6
|
Decorate 1099(vl2) Location 6
|
||||||
Decorate 1107(u) Flat
|
Decorate 1107(u) Flat
|
||||||
|
Decorate 1116(gl_PrimitiveID) Flat
|
||||||
|
Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId
|
||||||
2: TypeVoid
|
2: TypeVoid
|
||||||
3: TypeFunction 2
|
3: TypeFunction 2
|
||||||
10: TypeFloat 32
|
10: TypeFloat 32
|
||||||
@ -185,9 +190,12 @@ Linked fragment stage:
|
|||||||
1105(uo): 1104(ptr) Variable Output
|
1105(uo): 1104(ptr) Variable Output
|
||||||
1106: TypePointer Input 32(int)
|
1106: TypePointer Input 32(int)
|
||||||
1107(u): 1106(ptr) Variable Input
|
1107(u): 1106(ptr) Variable Input
|
||||||
|
1114: TypePointer Function 23(int)
|
||||||
|
1116(gl_PrimitiveID): 1026(ptr) Variable Input
|
||||||
4(main): 2 Function None 3
|
4(main): 2 Function None 3
|
||||||
5: Label
|
5: Label
|
||||||
1019(v): 1018(ptr) Variable Function
|
1019(v): 1018(ptr) Variable Function
|
||||||
|
1115(id): 1114(ptr) Variable Function
|
||||||
1028: 23(int) Load 1027(i)
|
1028: 23(int) Load 1027(i)
|
||||||
1030: 1029(ptr) AccessChain 1025(arrayedSampler) 1028
|
1030: 1029(ptr) AccessChain 1025(arrayedSampler) 1028
|
||||||
1031: 1021 Load 1030
|
1031: 1021 Load 1030
|
||||||
@ -242,6 +250,8 @@ Linked fragment stage:
|
|||||||
Store 1105(uo) 1111
|
Store 1105(uo) 1111
|
||||||
1112: 2 FunctionCall 6(foo23()
|
1112: 2 FunctionCall 6(foo23()
|
||||||
1113: 2 FunctionCall 8(doubles()
|
1113: 2 FunctionCall 8(doubles()
|
||||||
|
1117: 23(int) Load 1116(gl_PrimitiveID)
|
||||||
|
Store 1115(id) 1117
|
||||||
Return
|
Return
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
6(foo23(): 2 Function None 3
|
6(foo23(): 2 Function None 3
|
||||||
|
|||||||
@ -259,5 +259,7 @@ void main()
|
|||||||
uo = u % i;
|
uo = u % i;
|
||||||
foo23();
|
foo23();
|
||||||
doubles();
|
doubles();
|
||||||
|
|
||||||
|
int id = gl_PrimitiveID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user