GL_EXT_mesh_shader/SPV_EXT_mesh_shader implementation
authorPankaj Mistry <pmistry@nvidia.com>
Wed, 25 Aug 2021 20:41:32 +0000 (13:41 -0700)
committerPankaj Mistry <pmistry@nvidia.com>
Fri, 2 Sep 2022 01:02:21 +0000 (18:02 -0700)
commit228c67228a181ac299df2a1c09a322dcc9bb0cdc
tree6e8d6cd2a117ca934892cbe45fa8055e14b3391a
parent69ae9e7460499b488cb2d32edae623a95264db14
GL_EXT_mesh_shader/SPV_EXT_mesh_shader implementation
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
52 files changed:
SPIRV/CInterface/spirv_c_interface.cpp
SPIRV/GLSL.ext.EXT.h
SPIRV/GlslangToSpv.cpp
SPIRV/doc.cpp
SPIRV/spirv.hpp
StandAlone/ResourceLimits.cpp
StandAlone/StandAlone.cpp
Test/baseResults/glsl.460.subgroupEXT.mesh.out [new file with mode: 0644]
Test/baseResults/glsl.460.subgroupEXT.task.out [new file with mode: 0644]
Test/baseResults/spv.460.subgroupEXT.mesh.out [new file with mode: 0644]
Test/baseResults/spv.460.subgroupEXT.task.out [new file with mode: 0644]
Test/baseResults/spv.atomiAddEXT.error.mesh.out [new file with mode: 0644]
Test/baseResults/spv.atomiAddEXT.task.out [new file with mode: 0644]
Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out [new file with mode: 0644]
Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out [new file with mode: 0644]
Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out [new file with mode: 0644]
Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out [new file with mode: 0644]
Test/baseResults/spv.ext.meshTaskShader.task.out [new file with mode: 0644]
Test/baseResults/test.conf
Test/spv.460.subgroupEXT.mesh [new file with mode: 0644]
Test/spv.460.subgroupEXT.task [new file with mode: 0644]
Test/spv.atomiAddEXT.error.mesh [new file with mode: 0644]
Test/spv.atomiAddEXT.task [new file with mode: 0644]
Test/spv.ext.meshShaderBuiltins.mesh [new file with mode: 0644]
Test/spv.ext.meshShaderRedeclBuiltins.mesh [new file with mode: 0644]
Test/spv.ext.meshShaderTaskMem.mesh [new file with mode: 0644]
Test/spv.ext.meshShaderUserDefined.mesh [new file with mode: 0644]
Test/spv.ext.meshTaskShader.task [new file with mode: 0644]
glslang/CInterface/glslang_c_interface.cpp
glslang/Include/BaseTypes.h
glslang/Include/ResourceLimits.h
glslang/Include/Types.h
glslang/Include/glslang_c_interface.h
glslang/Include/glslang_c_shader_types.h
glslang/Include/intermediate.h
glslang/MachineIndependent/Initialize.cpp
glslang/MachineIndependent/ParseHelper.cpp
glslang/MachineIndependent/Scan.cpp
glslang/MachineIndependent/ShaderLang.cpp
glslang/MachineIndependent/Versions.cpp
glslang/MachineIndependent/Versions.h
glslang/MachineIndependent/glslang.m4
glslang/MachineIndependent/glslang.y
glslang/MachineIndependent/glslang_tab.cpp
glslang/MachineIndependent/glslang_tab.cpp.h
glslang/MachineIndependent/intermOut.cpp
glslang/MachineIndependent/linkValidate.cpp
glslang/MachineIndependent/localintermediate.h
glslang/Public/ShaderLang.h
gtests/Spv.FromFile.cpp
gtests/TestFixture.cpp
known_good.json