
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
72 lines
3.6 KiB
Plaintext
72 lines
3.6 KiB
Plaintext
spv.atomiAddEXT.task
|
|
// Module Version 10400
|
|
// Generated by (magic number): 8000a
|
|
// Id's are bound by 34
|
|
|
|
Capability MeshShadingEXT
|
|
Extension "SPV_EXT_mesh_shader"
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint TaskEXT 4 "main" 9 23 28
|
|
ExecutionMode 4 LocalSize 1 1 1
|
|
Source GLSL 460
|
|
SourceExtension "GL_EXT_mesh_shader"
|
|
Name 4 "main"
|
|
Name 7 "Buffer"
|
|
MemberName 7(Buffer) 0 "x"
|
|
Name 9 ""
|
|
Name 20 "structType"
|
|
MemberName 20(structType) 0 "y"
|
|
Name 21 "t2"
|
|
MemberName 21(t2) 0 "f"
|
|
Name 23 "t"
|
|
Name 26 "taskBlock"
|
|
MemberName 26(taskBlock) 0 "atom1"
|
|
Name 28 "mytask"
|
|
MemberDecorate 7(Buffer) 0 Coherent
|
|
MemberDecorate 7(Buffer) 0 Offset 0
|
|
Decorate 7(Buffer) Block
|
|
Decorate 9 DescriptorSet 0
|
|
Decorate 9 Binding 1
|
|
Decorate 19 ArrayStride 4
|
|
MemberDecorate 20(structType) 0 Offset 0
|
|
MemberDecorate 21(t2) 0 Offset 0
|
|
Decorate 21(t2) Block
|
|
Decorate 23(t) DescriptorSet 0
|
|
Decorate 23(t) Binding 0
|
|
Decorate 33 BuiltIn WorkgroupSize
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 1
|
|
7(Buffer): TypeStruct 6(int)
|
|
8: TypePointer StorageBuffer 7(Buffer)
|
|
9: 8(ptr) Variable StorageBuffer
|
|
10: 6(int) Constant 0
|
|
11: TypePointer StorageBuffer 6(int)
|
|
13: 6(int) Constant 1
|
|
14: TypeInt 32 0
|
|
15: 14(int) Constant 1
|
|
16: 14(int) Constant 0
|
|
18: 14(int) Constant 3
|
|
19: TypeArray 6(int) 18
|
|
20(structType): TypeStruct 19
|
|
21(t2): TypeStruct 20(structType)
|
|
22: TypePointer StorageBuffer 21(t2)
|
|
23(t): 22(ptr) Variable StorageBuffer
|
|
26(taskBlock): TypeStruct 6(int)
|
|
27: TypePointer TaskPayloadWorkgroupEXT 26(taskBlock)
|
|
28(mytask): 27(ptr) Variable TaskPayloadWorkgroupEXT
|
|
29: TypePointer TaskPayloadWorkgroupEXT 6(int)
|
|
32: TypeVector 14(int) 3
|
|
33: 32(ivec3) ConstantComposite 15 15 15
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
12: 11(ptr) AccessChain 9 10
|
|
17: 6(int) AtomicIAdd 12 15 16 13
|
|
24: 11(ptr) AccessChain 23(t) 10 10 13
|
|
25: 6(int) AtomicIAdd 24 15 16 13
|
|
30: 29(ptr) AccessChain 28(mytask) 10
|
|
31: 6(int) AtomicIAdd 30 15 16 13
|
|
Return
|
|
FunctionEnd
|