Added following updates to GL_EXT_mesh_shader implementation: 1. Added SPIRV and GLSL test cases 2. Added checks to ensure NV and EXT mesh shader builtins cannot be used interchangeably. 3. Updated the language name by removing the postfix "NV" to MeshShader and TaskShader. 4. Added checks for grammar checking to comply with the spec. 5. Added gl_NumWorkGroups builtin to Mesh shader 6. Fixed data type of gl_PrimitiveLineIndicesEXT and gl_PrimitiveTriangleIndicesEXT 7. Added new constants to the resources table 8. Updates to handle new storage qualifier "taskPayloadSharedEXT" 9. Updated test cases by replacing "taskEXT" with storage qualifier "taskPayloadSharedEXT" Addressed Review comments 1. Fixed instruction description used by glslang disassembly. 2. Updated OpEmitMeshTasksEXT as per spec update 3. Fixed implementation that errors out if there are more then one taskPayloadSharedEXT varjables. 4. Fixed miscellaneous error logs and removed unwanted code. SPIRV 1.6 related build failure fixes - Update SPIRV header to 1.6 - Fix conflict wiht SPIRV 1.6 change, where localSizeId is used for execution mode for mesh/task shaders Enable SPIRV generated for EXT_mesh_shader to be version 1.4 GL_EXT_mesh_shader: Add checks for atomic support and corresponding test cases
217 lines
12 KiB
Plaintext
217 lines
12 KiB
Plaintext
spv.ext.meshShaderRedeclBuiltins.mesh
|
|
// Module Version 10400
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 128
|
|
|
|
Capability ClipDistance
|
|
Capability CullDistance
|
|
Capability FragmentShadingRateKHR
|
|
Capability MeshShadingEXT
|
|
Extension "SPV_EXT_mesh_shader"
|
|
Extension "SPV_KHR_fragment_shading_rate"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint MeshEXT 4 "main" 11 17 29 81 122
|
|
ExecutionMode 4 LocalSize 32 1 1
|
|
ExecutionMode 4 OutputVertices 81
|
|
ExecutionMode 4 OutputPrimitivesNV 32
|
|
ExecutionMode 4 OutputPoints
|
|
Source GLSL 460
|
|
SourceExtension "GL_EXT_mesh_shader"
|
|
Name 4 "main"
|
|
Name 8 "iid"
|
|
Name 11 "gl_LocalInvocationID"
|
|
Name 16 "gid"
|
|
Name 17 "gl_WorkGroupID"
|
|
Name 26 "gl_MeshPerVertexEXT"
|
|
MemberName 26(gl_MeshPerVertexEXT) 0 "gl_Position"
|
|
MemberName 26(gl_MeshPerVertexEXT) 1 "gl_PointSize"
|
|
MemberName 26(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
|
|
MemberName 26(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
|
|
Name 29 "gl_MeshVerticesEXT"
|
|
Name 78 "gl_MeshPerPrimitiveEXT"
|
|
MemberName 78(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
|
|
MemberName 78(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
|
|
MemberName 78(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
|
|
MemberName 78(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
|
|
MemberName 78(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
|
|
Name 81 "gl_MeshPrimitivesEXT"
|
|
Name 122 "gl_PrimitivePointIndicesEXT"
|
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
|
|
MemberDecorate 26(gl_MeshPerVertexEXT) 0 BuiltIn Position
|
|
MemberDecorate 26(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
|
|
MemberDecorate 26(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
|
|
MemberDecorate 26(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
|
|
Decorate 26(gl_MeshPerVertexEXT) Block
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
|
|
MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
|
|
Decorate 78(gl_MeshPerPrimitiveEXT) Block
|
|
Decorate 122(gl_PrimitivePointIndicesEXT) BuiltIn PrimitivePointIndicesEXT
|
|
Decorate 127 BuiltIn WorkgroupSize
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 0
|
|
7: TypePointer Function 6(int)
|
|
9: TypeVector 6(int) 3
|
|
10: TypePointer Input 9(ivec3)
|
|
11(gl_LocalInvocationID): 10(ptr) Variable Input
|
|
12: 6(int) Constant 0
|
|
13: TypePointer Input 6(int)
|
|
17(gl_WorkGroupID): 10(ptr) Variable Input
|
|
20: 6(int) Constant 81
|
|
21: 6(int) Constant 32
|
|
22: TypeFloat 32
|
|
23: TypeVector 22(float) 4
|
|
24: 6(int) Constant 4
|
|
25: TypeArray 22(float) 24
|
|
26(gl_MeshPerVertexEXT): TypeStruct 23(fvec4) 22(float) 25 25
|
|
27: TypeArray 26(gl_MeshPerVertexEXT) 20
|
|
28: TypePointer Output 27
|
|
29(gl_MeshVerticesEXT): 28(ptr) Variable Output
|
|
31: TypeInt 32 1
|
|
32: 31(int) Constant 0
|
|
33: 22(float) Constant 1065353216
|
|
34: 23(fvec4) ConstantComposite 33 33 33 33
|
|
35: TypePointer Output 23(fvec4)
|
|
38: 31(int) Constant 1
|
|
39: 22(float) Constant 1073741824
|
|
40: TypePointer Output 22(float)
|
|
43: 31(int) Constant 2
|
|
44: 31(int) Constant 3
|
|
45: 22(float) Constant 1077936128
|
|
48: 22(float) Constant 1082130432
|
|
50: 6(int) Constant 1
|
|
51: 6(int) Constant 264
|
|
52: 6(int) Constant 2
|
|
77: TypeBool
|
|
78(gl_MeshPerPrimitiveEXT): TypeStruct 31(int) 31(int) 31(int) 77(bool) 31(int)
|
|
79: TypeArray 78(gl_MeshPerPrimitiveEXT) 21
|
|
80: TypePointer Output 79
|
|
81(gl_MeshPrimitivesEXT): 80(ptr) Variable Output
|
|
83: 31(int) Constant 6
|
|
84: TypePointer Output 31(int)
|
|
87: 31(int) Constant 7
|
|
90: 31(int) Constant 8
|
|
93: 77(bool) ConstantFalse
|
|
94: TypePointer Output 77(bool)
|
|
120: TypeArray 6(int) 21
|
|
121: TypePointer Output 120
|
|
122(gl_PrimitivePointIndicesEXT): 121(ptr) Variable Output
|
|
123: TypePointer Output 6(int)
|
|
125: 31(int) Constant 31
|
|
127: 9(ivec3) ConstantComposite 21 50 50
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
8(iid): 7(ptr) Variable Function
|
|
16(gid): 7(ptr) Variable Function
|
|
14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
|
|
15: 6(int) Load 14
|
|
Store 8(iid) 15
|
|
18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12
|
|
19: 6(int) Load 18
|
|
Store 16(gid) 19
|
|
SetMeshOutputsEXT 20 21
|
|
30: 6(int) Load 8(iid)
|
|
36: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 30 32
|
|
Store 36 34
|
|
37: 6(int) Load 8(iid)
|
|
41: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 37 38
|
|
Store 41 39
|
|
42: 6(int) Load 8(iid)
|
|
46: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 42 43 44
|
|
Store 46 45
|
|
47: 6(int) Load 8(iid)
|
|
49: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 47 44 43
|
|
Store 49 48
|
|
MemoryBarrier 50 51
|
|
ControlBarrier 52 52 51
|
|
53: 6(int) Load 8(iid)
|
|
54: 6(int) IAdd 53 50
|
|
55: 6(int) Load 8(iid)
|
|
56: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 55 32
|
|
57: 23(fvec4) Load 56
|
|
58: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 54 32
|
|
Store 58 57
|
|
59: 6(int) Load 8(iid)
|
|
60: 6(int) IAdd 59 50
|
|
61: 6(int) Load 8(iid)
|
|
62: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 61 38
|
|
63: 22(float) Load 62
|
|
64: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 60 38
|
|
Store 64 63
|
|
65: 6(int) Load 8(iid)
|
|
66: 6(int) IAdd 65 50
|
|
67: 6(int) Load 8(iid)
|
|
68: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 67 43 44
|
|
69: 22(float) Load 68
|
|
70: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 66 43 44
|
|
Store 70 69
|
|
71: 6(int) Load 8(iid)
|
|
72: 6(int) IAdd 71 50
|
|
73: 6(int) Load 8(iid)
|
|
74: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 73 44 43
|
|
75: 22(float) Load 74
|
|
76: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 72 44 43
|
|
Store 76 75
|
|
MemoryBarrier 50 51
|
|
ControlBarrier 52 52 51
|
|
82: 6(int) Load 8(iid)
|
|
85: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 82 32
|
|
Store 85 83
|
|
86: 6(int) Load 8(iid)
|
|
88: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 86 38
|
|
Store 88 87
|
|
89: 6(int) Load 8(iid)
|
|
91: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 89 43
|
|
Store 91 90
|
|
92: 6(int) Load 8(iid)
|
|
95: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 92 44
|
|
Store 95 93
|
|
MemoryBarrier 50 51
|
|
ControlBarrier 52 52 51
|
|
96: 6(int) Load 8(iid)
|
|
97: 6(int) IAdd 96 50
|
|
98: 6(int) Load 8(iid)
|
|
99: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 98 32
|
|
100: 31(int) Load 99
|
|
101: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 97 32
|
|
Store 101 100
|
|
102: 6(int) Load 8(iid)
|
|
103: 6(int) IAdd 102 50
|
|
104: 6(int) Load 8(iid)
|
|
105: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 104 38
|
|
106: 31(int) Load 105
|
|
107: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 103 38
|
|
Store 107 106
|
|
108: 6(int) Load 8(iid)
|
|
109: 6(int) IAdd 108 50
|
|
110: 6(int) Load 8(iid)
|
|
111: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 110 43
|
|
112: 31(int) Load 111
|
|
113: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 109 43
|
|
Store 113 112
|
|
114: 6(int) Load 8(iid)
|
|
115: 6(int) IAdd 114 50
|
|
116: 6(int) Load 8(iid)
|
|
117: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 116 44
|
|
118: 77(bool) Load 117
|
|
119: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 115 44
|
|
Store 119 118
|
|
MemoryBarrier 50 51
|
|
ControlBarrier 52 52 51
|
|
124: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 32
|
|
Store 124 50
|
|
126: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 125
|
|
Store 126 52
|
|
Return
|
|
FunctionEnd
|