
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
209 lines
10 KiB
Plaintext
209 lines
10 KiB
Plaintext
spv.ext.meshShaderUserDefined.mesh
|
|
// Module Version 10400
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 141
|
|
|
|
Capability MeshShadingEXT
|
|
Extension "SPV_EXT_mesh_shader"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint MeshEXT 4 "main" 11 17 34 104
|
|
ExecutionMode 4 LocalSize 32 1 1
|
|
ExecutionMode 4 OutputVertices 81
|
|
ExecutionMode 4 OutputPrimitivesNV 32
|
|
ExecutionMode 4 OutputTrianglesNV
|
|
Source GLSL 450
|
|
SourceExtension "GL_EXT_mesh_shader"
|
|
Name 4 "main"
|
|
Name 8 "iid"
|
|
Name 11 "gl_LocalInvocationID"
|
|
Name 16 "gid"
|
|
Name 17 "gl_WorkGroupID"
|
|
Name 30 "myblock"
|
|
MemberName 30(myblock) 0 "f"
|
|
MemberName 30(myblock) 1 "fArr"
|
|
MemberName 30(myblock) 2 "pos"
|
|
MemberName 30(myblock) 3 "posArr"
|
|
MemberName 30(myblock) 4 "m"
|
|
MemberName 30(myblock) 5 "mArr"
|
|
Name 34 "blk"
|
|
Name 100 "myblock2"
|
|
MemberName 100(myblock2) 0 "f"
|
|
MemberName 100(myblock2) 1 "pos"
|
|
MemberName 100(myblock2) 2 "m"
|
|
Name 104 "blk2"
|
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
|
|
MemberDecorate 30(myblock) 0 PerPrimitiveNV
|
|
MemberDecorate 30(myblock) 1 PerPrimitiveNV
|
|
MemberDecorate 30(myblock) 2 PerPrimitiveNV
|
|
MemberDecorate 30(myblock) 3 PerPrimitiveNV
|
|
MemberDecorate 30(myblock) 4 PerPrimitiveNV
|
|
MemberDecorate 30(myblock) 5 PerPrimitiveNV
|
|
Decorate 30(myblock) Block
|
|
Decorate 34(blk) Location 0
|
|
Decorate 100(myblock2) Block
|
|
Decorate 104(blk2) Location 20
|
|
Decorate 140 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: TypeFloat 32
|
|
21: 6(int) Constant 4
|
|
22: TypeArray 20(float) 21
|
|
23: TypeVector 20(float) 3
|
|
24: TypeVector 20(float) 4
|
|
25: TypeArray 24(fvec4) 21
|
|
26: TypeMatrix 24(fvec4) 4
|
|
27: TypeMatrix 23(fvec3) 3
|
|
28: 6(int) Constant 2
|
|
29: TypeArray 27 28
|
|
30(myblock): TypeStruct 20(float) 22 23(fvec3) 25 26 29
|
|
31: 6(int) Constant 32
|
|
32: TypeArray 30(myblock) 31
|
|
33: TypePointer Output 32
|
|
34(blk): 33(ptr) Variable Output
|
|
36: TypeInt 32 1
|
|
37: 36(int) Constant 0
|
|
38: 20(float) Constant 1093664768
|
|
39: TypePointer Output 20(float)
|
|
42: 6(int) Constant 1
|
|
44: 36(int) Constant 1
|
|
52: 36(int) Constant 2
|
|
53: 20(float) Constant 1096810496
|
|
54: 20(float) Constant 1097859072
|
|
55: 20(float) Constant 1095761920
|
|
56: 23(fvec3) ConstantComposite 53 54 55
|
|
57: TypePointer Output 23(fvec3)
|
|
63: 36(int) Constant 3
|
|
72: 6(int) Constant 3
|
|
77: 36(int) Constant 4
|
|
78: 20(float) Constant 1098907648
|
|
79: 24(fvec4) ConstantComposite 55 53 54 78
|
|
80: TypePointer Output 24(fvec4)
|
|
85: 36(int) Constant 5
|
|
94: 20(float) Constant 1099431936
|
|
95: 20(float) Constant 1099956224
|
|
96: 20(float) Constant 1100480512
|
|
97: 23(fvec3) ConstantComposite 94 95 96
|
|
99: 6(int) Constant 264
|
|
100(myblock2): TypeStruct 20(float) 24(fvec4) 26
|
|
101: 6(int) Constant 81
|
|
102: TypeArray 100(myblock2) 101
|
|
103: TypePointer Output 102
|
|
104(blk2): 103(ptr) Variable Output
|
|
110: 20(float) Constant 1101004800
|
|
114: 20(float) Constant 1101529088
|
|
115: 20(float) Constant 1102053376
|
|
116: 20(float) Constant 1102577664
|
|
117: 20(float) Constant 1103101952
|
|
118: 24(fvec4) ConstantComposite 114 115 116 117
|
|
130: 20(float) Constant 1105723392
|
|
140: 9(ivec3) ConstantComposite 31 42 42
|
|
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
|
|
35: 6(int) Load 8(iid)
|
|
40: 39(ptr) AccessChain 34(blk) 35 37
|
|
Store 40 38
|
|
41: 6(int) Load 8(iid)
|
|
43: 6(int) IAdd 41 42
|
|
45: 6(int) Load 16(gid)
|
|
46: 6(int) Load 8(iid)
|
|
47: 39(ptr) AccessChain 34(blk) 46 37
|
|
48: 20(float) Load 47
|
|
49: 39(ptr) AccessChain 34(blk) 43 44 45
|
|
Store 49 48
|
|
50: 6(int) Load 8(iid)
|
|
51: 6(int) UDiv 50 28
|
|
58: 57(ptr) AccessChain 34(blk) 51 52
|
|
59: 23(fvec3) Load 58
|
|
60: 23(fvec3) VectorShuffle 59 56 5 3 4
|
|
Store 58 60
|
|
61: 6(int) Load 8(iid)
|
|
62: 6(int) IMul 61 28
|
|
64: 6(int) Load 8(iid)
|
|
65: 6(int) UDiv 64 28
|
|
66: 57(ptr) AccessChain 34(blk) 65 52
|
|
67: 23(fvec3) Load 66
|
|
68: 39(ptr) AccessChain 34(blk) 62 63 44 42
|
|
69: 20(float) CompositeExtract 67 0
|
|
Store 68 69
|
|
70: 39(ptr) AccessChain 34(blk) 62 63 44 28
|
|
71: 20(float) CompositeExtract 67 1
|
|
Store 70 71
|
|
73: 39(ptr) AccessChain 34(blk) 62 63 44 72
|
|
74: 20(float) CompositeExtract 67 2
|
|
Store 73 74
|
|
75: 6(int) Load 8(iid)
|
|
76: 6(int) UDiv 75 21
|
|
81: 80(ptr) AccessChain 34(blk) 76 77 52
|
|
82: 24(fvec4) Load 81
|
|
83: 24(fvec4) VectorShuffle 82 79 7 6 5 4
|
|
Store 81 83
|
|
84: 6(int) Load 8(iid)
|
|
86: 6(int) Load 8(iid)
|
|
87: 6(int) UDiv 86 21
|
|
88: 39(ptr) AccessChain 34(blk) 87 77 52 72
|
|
89: 20(float) Load 88
|
|
90: 39(ptr) AccessChain 34(blk) 84 85 37 44 42
|
|
Store 90 89
|
|
91: 6(int) Load 8(iid)
|
|
92: 6(int) IMul 91 21
|
|
93: 6(int) Load 16(gid)
|
|
98: 57(ptr) AccessChain 34(blk) 92 85 44 93
|
|
Store 98 97
|
|
MemoryBarrier 42 99
|
|
ControlBarrier 28 28 99
|
|
105: 6(int) Load 8(iid)
|
|
106: 6(int) Load 8(iid)
|
|
107: 6(int) ISub 106 42
|
|
108: 39(ptr) AccessChain 104(blk2) 107 37
|
|
109: 20(float) Load 108
|
|
111: 20(float) FAdd 109 110
|
|
112: 39(ptr) AccessChain 104(blk2) 105 37
|
|
Store 112 111
|
|
113: 6(int) Load 8(iid)
|
|
119: 80(ptr) AccessChain 104(blk2) 113 44
|
|
Store 119 118
|
|
120: 6(int) Load 8(iid)
|
|
121: 6(int) IAdd 120 42
|
|
122: 6(int) Load 16(gid)
|
|
123: 6(int) Load 8(iid)
|
|
124: 80(ptr) AccessChain 104(blk2) 123 44
|
|
125: 24(fvec4) Load 124
|
|
126: 80(ptr) AccessChain 104(blk2) 121 52 122
|
|
Store 126 125
|
|
127: 6(int) Load 8(iid)
|
|
128: 6(int) IAdd 127 42
|
|
129: 6(int) Load 16(gid)
|
|
131: 39(ptr) AccessChain 104(blk2) 128 52 129 28
|
|
Store 131 130
|
|
132: 6(int) Load 8(iid)
|
|
133: 6(int) IAdd 132 28
|
|
134: 6(int) Load 8(iid)
|
|
135: 6(int) IAdd 134 42
|
|
136: 6(int) Load 16(gid)
|
|
137: 80(ptr) AccessChain 104(blk2) 135 52 136
|
|
138: 24(fvec4) Load 137
|
|
139: 80(ptr) AccessChain 104(blk2) 133 52 63
|
|
Store 139 138
|
|
MemoryBarrier 42 99
|
|
ControlBarrier 28 28 99
|
|
Return
|
|
FunctionEnd
|