
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
103 lines
5.3 KiB
Plaintext
103 lines
5.3 KiB
Plaintext
spv.ext.meshShaderTaskMem.mesh
|
|
// Module Version 10400
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 58
|
|
|
|
Capability MeshShadingEXT
|
|
Extension "SPV_EXT_mesh_shader"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint MeshEXT 4 "main" 11 22 30 38
|
|
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 18 "outBlock"
|
|
MemberName 18(outBlock) 0 "gid5"
|
|
MemberName 18(outBlock) 1 "gid6"
|
|
Name 22 "myblk"
|
|
Name 28 "taskBlock"
|
|
MemberName 28(taskBlock) 0 "gid1"
|
|
MemberName 28(taskBlock) 1 "gid2"
|
|
Name 30 "mytask"
|
|
Name 36 "bufferBlock"
|
|
MemberName 36(bufferBlock) 0 "gid3"
|
|
MemberName 36(bufferBlock) 1 "gid4"
|
|
Name 38 "mybuf"
|
|
Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
|
|
Decorate 18(outBlock) Block
|
|
Decorate 22(myblk) Location 0
|
|
Decorate 35 ArrayStride 4
|
|
MemberDecorate 36(bufferBlock) 0 Offset 0
|
|
MemberDecorate 36(bufferBlock) 1 Offset 16
|
|
Decorate 36(bufferBlock) Block
|
|
Decorate 38(mybuf) DescriptorSet 0
|
|
Decorate 38(mybuf) Binding 0
|
|
Decorate 57 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)
|
|
16: TypeFloat 32
|
|
17: TypeVector 16(float) 4
|
|
18(outBlock): TypeStruct 16(float) 17(fvec4)
|
|
19: 6(int) Constant 81
|
|
20: TypeArray 18(outBlock) 19
|
|
21: TypePointer Output 20
|
|
22(myblk): 21(ptr) Variable Output
|
|
24: TypeInt 32 1
|
|
25: 24(int) Constant 0
|
|
26: 6(int) Constant 2
|
|
27: TypeArray 16(float) 26
|
|
28(taskBlock): TypeStruct 27 17(fvec4)
|
|
29: TypePointer TaskPayloadWorkgroupEXT 28(taskBlock)
|
|
30(mytask): 29(ptr) Variable TaskPayloadWorkgroupEXT
|
|
31: 24(int) Constant 1
|
|
32: TypePointer TaskPayloadWorkgroupEXT 16(float)
|
|
35: TypeArray 16(float) 26
|
|
36(bufferBlock): TypeStruct 35 17(fvec4)
|
|
37: TypePointer StorageBuffer 36(bufferBlock)
|
|
38(mybuf): 37(ptr) Variable StorageBuffer
|
|
39: TypePointer StorageBuffer 16(float)
|
|
43: TypePointer Output 16(float)
|
|
46: TypePointer TaskPayloadWorkgroupEXT 17(fvec4)
|
|
49: TypePointer StorageBuffer 17(fvec4)
|
|
53: TypePointer Output 17(fvec4)
|
|
55: 6(int) Constant 32
|
|
56: 6(int) Constant 1
|
|
57: 9(ivec3) ConstantComposite 55 56 56
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
8(iid): 7(ptr) Variable Function
|
|
14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12
|
|
15: 6(int) Load 14
|
|
Store 8(iid) 15
|
|
23: 6(int) Load 8(iid)
|
|
33: 32(ptr) AccessChain 30(mytask) 25 31
|
|
34: 16(float) Load 33
|
|
40: 39(ptr) AccessChain 38(mybuf) 25 31
|
|
41: 16(float) Load 40
|
|
42: 16(float) FAdd 34 41
|
|
44: 43(ptr) AccessChain 22(myblk) 23 25
|
|
Store 44 42
|
|
45: 6(int) Load 8(iid)
|
|
47: 46(ptr) AccessChain 30(mytask) 31
|
|
48: 17(fvec4) Load 47
|
|
50: 49(ptr) AccessChain 38(mybuf) 31
|
|
51: 17(fvec4) Load 50
|
|
52: 17(fvec4) FAdd 48 51
|
|
54: 53(ptr) AccessChain 22(myblk) 45 31
|
|
Store 54 52
|
|
Return
|
|
FunctionEnd
|