Updates for final Vulkan ray tracing extensions (#2466)
* Fix traceRay/executeCallable to have id instead of constant.
Update to final (non-provisional) SPIR-V capabilities
(includes review feedback)
- Change visibilty of findLinkerObjects.
See merge request GLSL/glslang!78
* Add support for OpConvertUToAccelerationStructureKHR.
GLSL : https://gitlab.khronos.org/GLSL/GLSL/-/merge_requests/60
SPV : https://gitlab.khronos.org/spirv/spirv-extensions/-/merge_requests/182
See merge request GLSL/glslang!77
* Add volatile qualifier to certain builtins for ray tracing.
See merge request GLSL/glslang!81
* make gl_RayTmaxEXT volatile in intersection shader
Vulkan Issue #2268
* Add testing for layouts on SBT
vulkan/vulkan#2230
- no layout specified should be same as std430
- explicitly test std140, std430, scalar layouts
See merge request GLSL/glslang!86
* Support for new opcodes OpIgnoreIntersectionKHR and OpTerminateRayKHR
vulkan/vulkan#2374
Add support for ignoreIntersectionEXT and terminateRayEXT as block
terminator statements.
See merge request GLSL/glslang!87
* Fix code-generation issues with global ray query variables
See merge request GLSL/glslang!88
* update dependencies for spirv-headers and tools
And update mesh shader results
* Fix indeterminate argument ordering
Authored-by: David Neto <dneto@google.com>
Co-authored-by: Ashwin Lele (NVIDIA Corporation) <alele@nvidia.com>
Co-authored-by: Neslisah <Neslisah.Torosdagli@amd.com>
diff --git a/Test/baseResults/glsl.460.subgroup.rcall.out b/Test/baseResults/glsl.460.subgroup.rcall.out
index 6bffdc9..2b2d89b 100644
--- a/Test/baseResults/glsl.460.subgroup.rcall.out
+++ b/Test/baseResults/glsl.460.subgroup.rcall.out
@@ -109,8 +109,8 @@
0:4 Function Parameters:
0:4 'f4' ( in 4-component vector of float)
0:? Sequence
-0:7 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:8 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:9 subgroupBarrier ( global void)
0:10 subgroupMemoryBarrier ( global void)
0:11 subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
0:19 false (const bool)
0:20 subgroupAllEqual ( global bool)
0:20 'f4' ( in 4-component vector of float)
-0:22 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:23 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:24 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:25 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:26 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:27 subgroupBroadcast ( global 4-component vector of float)
0:27 'f4' ( in 4-component vector of float)
0:27 Constant:
@@ -359,8 +359,8 @@
0:119 Function Definition: basic_works( ( global void)
0:119 Function Parameters:
0:121 Sequence
-0:121 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:122 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:121 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:122 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:123 subgroupBarrier ( global void)
0:124 subgroupMemoryBarrier ( global void)
0:125 subgroupMemoryBarrierBuffer ( global void)
@@ -370,11 +370,11 @@
0:131 Function Parameters:
0:131 'f4' ( in 4-component vector of float)
0:132 Sequence
-0:132 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:133 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:134 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:135 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:136 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:132 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:133 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:134 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:135 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:136 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:137 subgroupBroadcast ( global 4-component vector of float)
0:137 'f4' ( in 4-component vector of float)
0:137 Constant:
@@ -624,15 +624,15 @@
0:247 Sequence
0:247 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:248 'gl_SMCountNV' ( in uint SMCountNV)
-0:249 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:250 'gl_SMIDNV' ( in uint SMIDNV)
+0:249 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:250 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:257 Function Definition: sm_builtins( ( global void)
0:257 Function Parameters:
0:259 Sequence
0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:260 'gl_SMCountNV' ( in uint SMCountNV)
-0:261 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:262 'gl_SMIDNV' ( in uint SMIDNV)
+0:261 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:262 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:? Linker Objects
0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float)
0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1})
diff --git a/Test/baseResults/glsl.460.subgroup.rchit.out b/Test/baseResults/glsl.460.subgroup.rchit.out
index 1ea9e69..f5083e0 100644
--- a/Test/baseResults/glsl.460.subgroup.rchit.out
+++ b/Test/baseResults/glsl.460.subgroup.rchit.out
@@ -109,8 +109,8 @@
0:4 Function Parameters:
0:4 'f4' ( in 4-component vector of float)
0:? Sequence
-0:7 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:8 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:9 subgroupBarrier ( global void)
0:10 subgroupMemoryBarrier ( global void)
0:11 subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
0:19 false (const bool)
0:20 subgroupAllEqual ( global bool)
0:20 'f4' ( in 4-component vector of float)
-0:22 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:23 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:24 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:25 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:26 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:27 subgroupBroadcast ( global 4-component vector of float)
0:27 'f4' ( in 4-component vector of float)
0:27 Constant:
@@ -425,8 +425,8 @@
0:129 Function Definition: basic_works( ( global void)
0:129 Function Parameters:
0:131 Sequence
-0:131 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:132 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:131 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:132 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:133 subgroupBarrier ( global void)
0:134 subgroupMemoryBarrier ( global void)
0:135 subgroupMemoryBarrierBuffer ( global void)
@@ -436,11 +436,11 @@
0:141 Function Parameters:
0:141 'f4' ( in 4-component vector of float)
0:142 Sequence
-0:142 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:143 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:144 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:145 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:146 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:142 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:143 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:144 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:145 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:146 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:147 subgroupBroadcast ( global 4-component vector of float)
0:147 'f4' ( in 4-component vector of float)
0:147 Constant:
@@ -690,15 +690,15 @@
0:257 Sequence
0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:258 'gl_SMCountNV' ( in uint SMCountNV)
-0:259 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:260 'gl_SMIDNV' ( in uint SMIDNV)
+0:259 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:260 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:267 Function Definition: sm_builtins( ( global void)
0:267 Function Parameters:
0:269 Sequence
0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:270 'gl_SMCountNV' ( in uint SMCountNV)
-0:271 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:272 'gl_SMIDNV' ( in uint SMIDNV)
+0:271 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:272 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:? Linker Objects
0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
diff --git a/Test/baseResults/glsl.460.subgroup.rgen.out b/Test/baseResults/glsl.460.subgroup.rgen.out
index dfe1e2b..56283bb 100644
--- a/Test/baseResults/glsl.460.subgroup.rgen.out
+++ b/Test/baseResults/glsl.460.subgroup.rgen.out
@@ -109,8 +109,8 @@
0:4 Function Parameters:
0:4 'f4' ( in 4-component vector of float)
0:? Sequence
-0:7 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:8 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:9 subgroupBarrier ( global void)
0:10 subgroupMemoryBarrier ( global void)
0:11 subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
0:19 false (const bool)
0:20 subgroupAllEqual ( global bool)
0:20 'f4' ( in 4-component vector of float)
-0:22 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:23 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:24 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:25 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:26 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:27 subgroupBroadcast ( global 4-component vector of float)
0:27 'f4' ( in 4-component vector of float)
0:27 Constant:
@@ -389,8 +389,8 @@
0:123 Function Definition: basic_works( ( global void)
0:123 Function Parameters:
0:125 Sequence
-0:125 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:126 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:125 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:126 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:127 subgroupBarrier ( global void)
0:128 subgroupMemoryBarrier ( global void)
0:129 subgroupMemoryBarrierBuffer ( global void)
@@ -400,11 +400,11 @@
0:135 Function Parameters:
0:135 'f4' ( in 4-component vector of float)
0:136 Sequence
-0:136 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:137 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:138 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:139 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:140 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:136 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:137 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:138 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:139 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:140 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:141 subgroupBroadcast ( global 4-component vector of float)
0:141 'f4' ( in 4-component vector of float)
0:141 Constant:
@@ -654,15 +654,15 @@
0:251 Sequence
0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:252 'gl_SMCountNV' ( in uint SMCountNV)
-0:253 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:254 'gl_SMIDNV' ( in uint SMIDNV)
+0:253 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:254 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:261 Function Definition: sm_builtins( ( global void)
0:261 Function Parameters:
0:263 Sequence
0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:264 'gl_SMCountNV' ( in uint SMCountNV)
-0:265 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:266 'gl_SMIDNV' ( in uint SMIDNV)
+0:265 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:266 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:? Linker Objects
0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV)
0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV)
diff --git a/Test/baseResults/glsl.460.subgroup.rint.out b/Test/baseResults/glsl.460.subgroup.rint.out
index 9915ecf..a7de7d3 100644
--- a/Test/baseResults/glsl.460.subgroup.rint.out
+++ b/Test/baseResults/glsl.460.subgroup.rint.out
@@ -109,8 +109,8 @@
0:5 Function Parameters:
0:5 'f4' ( in 4-component vector of float)
0:? Sequence
-0:8 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:9 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:9 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:10 subgroupBarrier ( global void)
0:11 subgroupMemoryBarrier ( global void)
0:12 subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
0:20 false (const bool)
0:21 subgroupAllEqual ( global bool)
0:21 'f4' ( in 4-component vector of float)
-0:23 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:24 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:25 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:26 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:27 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:23 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:24 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:25 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:26 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:27 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:28 subgroupBroadcast ( global 4-component vector of float)
0:28 'f4' ( in 4-component vector of float)
0:28 Constant:
@@ -403,8 +403,8 @@
0:129 Function Definition: basic_works( ( global void)
0:129 Function Parameters:
0:131 Sequence
-0:131 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:132 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:131 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:132 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:133 subgroupBarrier ( global void)
0:134 subgroupMemoryBarrier ( global void)
0:135 subgroupMemoryBarrierBuffer ( global void)
@@ -414,11 +414,11 @@
0:141 Function Parameters:
0:141 'f4' ( in 4-component vector of float)
0:142 Sequence
-0:142 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:143 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:144 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:145 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:146 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:142 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:143 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:144 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:145 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:146 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:147 subgroupBroadcast ( global 4-component vector of float)
0:147 'f4' ( in 4-component vector of float)
0:147 Constant:
@@ -668,15 +668,15 @@
0:257 Sequence
0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:258 'gl_SMCountNV' ( in uint SMCountNV)
-0:259 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:260 'gl_SMIDNV' ( in uint SMIDNV)
+0:259 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:260 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:267 Function Definition: sm_builtins( ( global void)
0:267 Function Parameters:
0:269 Sequence
0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:270 'gl_SMCountNV' ( in uint SMCountNV)
-0:271 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:272 'gl_SMIDNV' ( in uint SMIDNV)
+0:271 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:272 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:? Linker Objects
0:? 'iAttr' ( hitAttributeNV 4-component vector of float)
diff --git a/Test/baseResults/glsl.460.subgroup.rmiss.out b/Test/baseResults/glsl.460.subgroup.rmiss.out
index ddf7d1b..865d88c 100644
--- a/Test/baseResults/glsl.460.subgroup.rmiss.out
+++ b/Test/baseResults/glsl.460.subgroup.rmiss.out
@@ -109,8 +109,8 @@
0:5 Function Parameters:
0:5 'f4' ( in 4-component vector of float)
0:? Sequence
-0:8 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:9 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:8 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:9 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:10 subgroupBarrier ( global void)
0:11 subgroupMemoryBarrier ( global void)
0:12 subgroupMemoryBarrierBuffer ( global void)
@@ -128,11 +128,11 @@
0:20 false (const bool)
0:21 subgroupAllEqual ( global bool)
0:21 'f4' ( in 4-component vector of float)
-0:23 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:24 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:25 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:26 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:27 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:23 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:24 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:25 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:26 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:27 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:28 subgroupBroadcast ( global 4-component vector of float)
0:28 'f4' ( in 4-component vector of float)
0:28 Constant:
@@ -397,8 +397,8 @@
0:123 Function Definition: basic_works( ( global void)
0:123 Function Parameters:
0:125 Sequence
-0:125 'gl_SubgroupSize' ( in uint SubgroupSize)
-0:126 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID)
+0:125 'gl_SubgroupSize' ( volatile in uint SubgroupSize)
+0:126 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID)
0:127 subgroupBarrier ( global void)
0:128 subgroupMemoryBarrier ( global void)
0:129 subgroupMemoryBarrierBuffer ( global void)
@@ -408,11 +408,11 @@
0:135 Function Parameters:
0:135 'f4' ( in 4-component vector of float)
0:136 Sequence
-0:136 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask)
-0:137 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask)
-0:138 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask)
-0:139 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask)
-0:140 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask)
+0:136 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask)
+0:137 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask)
+0:138 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask)
+0:139 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask)
+0:140 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask)
0:141 subgroupBroadcast ( global 4-component vector of float)
0:141 'f4' ( in 4-component vector of float)
0:141 Constant:
@@ -662,15 +662,15 @@
0:251 Sequence
0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:252 'gl_SMCountNV' ( in uint SMCountNV)
-0:253 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:254 'gl_SMIDNV' ( in uint SMIDNV)
+0:253 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:254 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:261 Function Definition: sm_builtins( ( global void)
0:261 Function Parameters:
0:263 Sequence
0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV)
0:264 'gl_SMCountNV' ( in uint SMCountNV)
-0:265 'gl_WarpIDNV' ( in uint WarpIDNV)
-0:266 'gl_SMIDNV' ( in uint SMIDNV)
+0:265 'gl_WarpIDNV' ( volatile in uint WarpIDNV)
+0:266 'gl_SMIDNV' ( volatile in uint SMIDNV)
0:? Linker Objects
0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV)
0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float)
diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out
index c0cc8aa..9c49e2e 100644
--- a/Test/baseResults/rayQuery-allOps.comp.out
+++ b/Test/baseResults/rayQuery-allOps.comp.out
@@ -4,8 +4,8 @@
// Id's are bound by 258
Capability Shader
- Capability RayQueryProvisionalKHR
- Capability RayTraversalPrimitiveCullingProvisionalKHR
+ Capability RayQueryKHR
+ Capability RayTraversalPrimitiveCullingKHR
Extension "SPV_KHR_ray_query"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -87,7 +87,8 @@
37: 18(int) Constant 3
38: 8(float) Constant 1176255488
45: TypeRayQueryProvisionalKHR
- 46: TypePointer Function 45
+ 46: TypePointer Private 45
+ 47(rayQuery): 46(ptr) Variable Private
48: TypeAccelerationStructureKHR
49: TypePointer UniformConstant 48
50(rtas): 49(ptr) Variable UniformConstant
@@ -114,7 +115,6 @@
4(main): 2 Function None 3
5: Label
43(ray): 25(ptr) Variable Function
- 47(rayQuery): 46(ptr) Variable Function
69(candidateType): 68(ptr) Variable Function
78(_mat4x3): 77(ptr) Variable Function
83(_mat3x4): 82(ptr) Variable Function
diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out
index 8182da3..cff8fb0 100644
--- a/Test/baseResults/rayQuery-allOps.frag.out
+++ b/Test/baseResults/rayQuery-allOps.frag.out
@@ -4,7 +4,7 @@
// Id's are bound by 257
Capability Shader
- Capability RayQueryProvisionalKHR
+ Capability RayQueryKHR
Extension "SPV_KHR_ray_query"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -86,7 +86,8 @@
37: 18(int) Constant 3
38: 8(float) Constant 1176255488
45: TypeRayQueryProvisionalKHR
- 46: TypePointer Function 45
+ 46: TypePointer Private 45
+ 47(rayQuery): 46(ptr) Variable Private
48: TypeAccelerationStructureKHR
49: TypePointer UniformConstant 48
50(rtas): 49(ptr) Variable UniformConstant
@@ -112,7 +113,6 @@
4(main): 2 Function None 3
5: Label
43(ray): 25(ptr) Variable Function
- 47(rayQuery): 46(ptr) Variable Function
69(candidateType): 68(ptr) Variable Function
78(_mat4x3): 77(ptr) Variable Function
83(_mat3x4): 82(ptr) Variable Function
diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out
index 01b8f1d..418dad1 100644
--- a/Test/baseResults/rayQuery-allOps.rgen.out
+++ b/Test/baseResults/rayQuery-allOps.rgen.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 257
- Capability RayQueryProvisionalKHR
+ Capability RayQueryKHR
Capability RayTracingNV
Extension "SPV_KHR_ray_query"
Extension "SPV_NV_ray_tracing"
@@ -86,7 +86,8 @@
37: 18(int) Constant 3
38: 8(float) Constant 1176255488
45: TypeRayQueryProvisionalKHR
- 46: TypePointer Function 45
+ 46: TypePointer Private 45
+ 47(rayQuery): 46(ptr) Variable Private
48: TypeAccelerationStructureKHR
49: TypePointer UniformConstant 48
50(rtas): 49(ptr) Variable UniformConstant
@@ -112,7 +113,6 @@
4(main): 2 Function None 3
5: Label
43(ray): 25(ptr) Variable Function
- 47(rayQuery): 46(ptr) Variable Function
69(candidateType): 68(ptr) Variable Function
78(_mat4x3): 77(ptr) Variable Function
83(_mat3x4): 82(ptr) Variable Function
diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out
new file mode 100644
index 0000000..637b752
--- /dev/null
+++ b/Test/baseResults/rayQuery-global.rgen.out
@@ -0,0 +1,76 @@
+rayQuery-global.rgen
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 44
+
+ Capability RayQueryKHR
+ Capability RayTracingKHR
+ Extension "SPV_KHR_ray_query"
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main"
+ Source GLSL 460
+ SourceExtension "GL_EXT_ray_flags_primitive_culling"
+ SourceExtension "GL_EXT_ray_query"
+ Name 4 "main"
+ Name 10 "otherWrapper(rq1;"
+ Name 9 "rq"
+ Name 13 "wrapper(rq1;"
+ Name 12 "rq"
+ Name 17 "rqGlobal"
+ Name 22 "rq2"
+ Name 27 "rtas"
+ Name 40 "rq2"
+ Decorate 27(rtas) DescriptorSet 0
+ Decorate 27(rtas) Binding 1
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeRayQueryProvisionalKHR
+ 7: TypePointer Private 6
+ 8: TypeFunction 2 7(ptr)
+ 15: TypeBool
+ 17(rqGlobal): 7(ptr) Variable Private
+ 22(rq2): 7(ptr) Variable Private
+ 25: TypeAccelerationStructureKHR
+ 26: TypePointer UniformConstant 25
+ 27(rtas): 26(ptr) Variable UniformConstant
+ 29: TypeInt 32 0
+ 30: 29(int) Constant 0
+ 31: 29(int) Constant 255
+ 32: TypeFloat 32
+ 33: TypeVector 32(float) 3
+ 34: 32(float) Constant 0
+ 35: 33(fvec3) ConstantComposite 34 34 34
+ 36: 32(float) Constant 1065353216
+ 37: 33(fvec3) ConstantComposite 36 34 34
+ 40(rq2): 7(ptr) Variable Private
+ 4(main): 2 Function None 3
+ 5: Label
+ 28: 25 Load 27(rtas)
+ RayQueryInitializeKHR 17(rqGlobal) 28 30 31 35 34 37 36
+ 38: 2 FunctionCall 13(wrapper(rq1;) 17(rqGlobal)
+ 39: 2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal)
+ 41: 25 Load 27(rtas)
+ RayQueryInitializeKHR 40(rq2) 41 30 31 35 34 37 36
+ 42: 2 FunctionCall 13(wrapper(rq1;) 40(rq2)
+ 43: 2 FunctionCall 10(otherWrapper(rq1;) 40(rq2)
+ Return
+ FunctionEnd
+10(otherWrapper(rq1;): 2 Function None 8
+ 9(rq): 7(ptr) FunctionParameter
+ 11: Label
+ 16: 15(bool) RayQueryProceedKHR 9(rq)
+ 18: 15(bool) RayQueryProceedKHR 17(rqGlobal)
+ Return
+ FunctionEnd
+13(wrapper(rq1;): 2 Function None 8
+ 12(rq): 7(ptr) FunctionParameter
+ 14: Label
+ 19: 15(bool) RayQueryProceedKHR 12(rq)
+ 20: 15(bool) RayQueryProceedKHR 17(rqGlobal)
+ 21: 2 FunctionCall 10(otherWrapper(rq1;) 12(rq)
+ 23: 2 FunctionCall 10(otherWrapper(rq1;) 22(rq2)
+ 24: 2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal)
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out
index f97287f..3b83333 100644
--- a/Test/baseResults/rayQuery-initialize.rgen.out
+++ b/Test/baseResults/rayQuery-initialize.rgen.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 103
- Capability RayQueryProvisionalKHR
+ Capability RayQueryKHR
Capability RayTracingNV
Extension "SPV_KHR_ray_query"
Extension "SPV_NV_ray_tracing"
@@ -56,7 +56,7 @@
6: TypeInt 32 0
7: TypeFunction 6(int)
10: TypeRayQueryProvisionalKHR
- 11: TypePointer Function 10
+ 11: TypePointer Private 10
12: TypeFloat 32
13: TypeVector 12(float) 3
14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
@@ -88,12 +88,12 @@
75: TypePointer Uniform 74(Rays)
76: 75(ptr) Variable Uniform
78: TypePointer Uniform 72(Ray)
+ 89(rayQuery): 11(ptr) Variable Private
94: 6(int) Constant 32
4(main): 2 Function None 3
5: Label
69(index): 68(ptr) Variable Function
71(ray): 15(ptr) Variable Function
- 89(rayQuery): 11(ptr) Variable Function
90(param): 15(ptr) Variable Function
70: 6(int) FunctionCall 8(launchIndex()
Store 69(index) 70
diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out
index 23c8b51..2f46f07 100644
--- a/Test/baseResults/rayQuery-no-cse.rgen.out
+++ b/Test/baseResults/rayQuery-no-cse.rgen.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 107
- Capability RayQueryProvisionalKHR
+ Capability RayQueryKHR
Capability RayTracingNV
Extension "SPV_KHR_ray_query"
Extension "SPV_NV_ray_tracing"
@@ -58,7 +58,7 @@
6: TypeInt 32 0
7: TypeFunction 6(int)
10: TypeRayQueryProvisionalKHR
- 11: TypePointer Function 10
+ 11: TypePointer Private 10
12: TypeFloat 32
13: TypeVector 12(float) 3
14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
@@ -90,14 +90,14 @@
75: TypePointer Uniform 74(Rays)
76: 75(ptr) Variable Uniform
78: TypePointer Uniform 72(Ray)
+ 89(rayQuery1): 11(ptr) Variable Private
94: 6(int) Constant 32
+ 103(rayQuery2): 11(ptr) Variable Private
4(main): 2 Function None 3
5: Label
69(index): 68(ptr) Variable Function
71(ray): 15(ptr) Variable Function
- 89(rayQuery1): 11(ptr) Variable Function
90(param): 15(ptr) Variable Function
- 103(rayQuery2): 11(ptr) Variable Function
104(param): 15(ptr) Variable Function
70: 6(int) FunctionCall 8(launchIndex()
Store 69(index) 70
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
index bf142a3..3680973 100644
--- a/Test/baseResults/rayQuery.rgen.out
+++ b/Test/baseResults/rayQuery.rgen.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 44
- Capability RayQueryProvisionalKHR
+ Capability RayQueryKHR
Capability RayTracingNV
Extension "SPV_KHR_ray_query"
Extension "SPV_NV_ray_tracing"
@@ -40,7 +40,8 @@
13: 10(float) Constant 0
15: 10(float) Constant 1148846080
16: TypeRayQueryProvisionalKHR
- 17: TypePointer Function 16
+ 17: TypePointer Private 16
+18(localRayQuery): 17(ptr) Variable Private
19: TypeAccelerationStructureKHR
20: TypePointer UniformConstant 19
21(acc0): 20(ptr) Variable UniformConstant
@@ -59,7 +60,6 @@
8(rayFlags): 7(ptr) Variable Function
12(tMin): 11(ptr) Variable Function
14(tMax): 11(ptr) Variable Function
-18(localRayQuery): 17(ptr) Variable Function
Store 8(rayFlags) 9
Store 12(tMin) 13
Store 14(tMax) 15
diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out
index 755d60e..f33a1bd 100644
--- a/Test/baseResults/spv.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader.rahit.out
@@ -153,10 +153,10 @@
SelectionMerge 79 None
BranchConditional 77 78 80
78: Label
- IgnoreIntersectionKHR
+ IgnoreIntersectionNV
Branch 79
80: Label
- TerminateRayKHR
+ TerminateRayNV
Branch 79
79: Label
Return
diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out
index 63039dd..4a8e65d 100644
--- a/Test/baseResults/spv.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader.rchit.out
@@ -164,6 +164,6 @@
68: 60 Load 67(gl_WorldToObjectNV)
Store 66(v14) 68
72: 69 Load 71(accNV)
- TraceRayKHR 72 73 74 75 76 73 78 77 80 81 82
+ TraceNV 72 73 74 75 76 73 78 77 80 81 82
Return
FunctionEnd
diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out
index d0eeb01..563e53f 100644
--- a/Test/baseResults/spv.MissShader.rmiss.out
+++ b/Test/baseResults/spv.MissShader.rmiss.out
@@ -108,6 +108,6 @@
39: 16(float) Load 38(gl_RayTmaxNV)
Store 37(v7) 39
43: 40 Load 42(accNV)
- TraceRayKHR 43 44 45 46 47 44 49 48 51 52 54
+ TraceNV 43 44 45 46 47 44 49 48 51 52 54
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out
index f59d36f..75698fc 100644
--- a/Test/baseResults/spv.RayCallable.rcall.out
+++ b/Test/baseResults/spv.RayCallable.rcall.out
@@ -55,6 +55,6 @@
Store 13(size) 15
23: 22(ptr) AccessChain 18 20
Store 23 21
- ExecuteCallableKHR 24 25
+ ExecuteCallableNV 24 25
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out
index c4085fe..962aeb7 100644
--- a/Test/baseResults/spv.RayConstants.rgen.out
+++ b/Test/baseResults/spv.RayConstants.rgen.out
@@ -41,6 +41,6 @@
4(main): 2 Function None 3
5: Label
9: 6 Load 8(accNV)
- TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23
+ TraceNV 9 11 12 13 13 12 17 18 20 21 23
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index 363b3dd..f8f3fd6 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -92,6 +92,6 @@
44: 36(fvec3) Load 43
47: 42(ptr) AccessChain 39 46
48: 36(fvec3) Load 47
- TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
+ TraceNV 30 31 32 33 34 12 44 45 48 49 41
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index 195071f..f6b79c5 100644
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -88,6 +88,6 @@
44: 36(fvec3) Load 43
47: 42(ptr) AccessChain 39 46
48: 36(fvec3) Load 47
- TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
+ TraceNV 30 31 32 33 34 12 44 45 48 49 41
Return
FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index fef54aa..63a04b3 100644
--- a/Test/baseResults/spv.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out
@@ -111,7 +111,7 @@
51: 32(fvec3) Load 50
54: 49(ptr) AccessChain 36 53
55: 32(fvec3) Load 54
- TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48
+ TraceNV 43 44 45 46 47 12 51 52 55 56 48
61: 38(ptr) AccessChain 36 37
62: 33(int) Load 61
63: 41(ptr) AccessChain 60(accNV1) 62
@@ -124,7 +124,7 @@
70: 32(fvec3) Load 69
71: 49(ptr) AccessChain 36 53
72: 32(fvec3) Load 71
- TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48
+ TraceNV 64 65 66 67 68 12 70 52 72 56 48
73: 38(ptr) AccessChain 36 37
74: 33(int) Load 73
75: 33(int) CopyObject 74
@@ -138,6 +138,6 @@
83: 32(fvec3) Load 82
84: 49(ptr) AccessChain 36 53
85: 32(fvec3) Load 84
- TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48
+ TraceNV 77 78 79 80 81 12 83 52 85 56 48
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
index 39e43a7..133fd63 100644
--- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
@@ -1,15 +1,17 @@
spv.ext.AnyHitShader.rahit
// Module Version 10400
// Generated by (magic number): 8000a
-// Id's are bound by 94
+// Id's are bound by 107
- Capability RayTracingProvisionalKHR
+ Capability GroupNonUniform
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84
+ EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 98
Source GLSL 460
SourceExtension "GL_EXT_ray_tracing"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
Name 4 "main"
Name 9 "v0"
Name 11 "gl_LaunchIDEXT"
@@ -48,6 +50,7 @@
Name 79 "v17"
Name 80 "gl_WorldToObject3x4EXT"
Name 84 "incomingPayload"
+ Name 98 "gl_SubgroupSize"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@@ -67,6 +70,9 @@
Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
Decorate 84(incomingPayload) Location 1
+ Decorate 98(gl_SubgroupSize) RelaxedPrecision
+ Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize
+ Decorate 99 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -114,6 +120,9 @@
86: 72(fvec4) ConstantComposite 85 85 85 85
88: 16(int) Constant 1
89: TypeBool
+ 94: 6(int) Constant 0
+98(gl_SubgroupSize): 57(ptr) Variable Input
+ 101: TypePointer IncomingRayPayloadKHR 28(float)
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -176,13 +185,16 @@
87: 16(int) Load 18(v2)
90: 89(bool) IEqual 87 88
SelectionMerge 92 None
- BranchConditional 90 91 93
+ BranchConditional 90 91 92
91: Label
IgnoreIntersectionKHR
- Branch 92
- 93: Label
- TerminateRayKHR
- Branch 92
92: Label
- Return
+ 99: 6(int) Load 98(gl_SubgroupSize)
+ 100: 28(float) ConvertUToF 99
+ 102: 101(ptr) AccessChain 84(incomingPayload) 94
+ 103: 28(float) Load 102
+ 104: 28(float) FAdd 103 100
+ 105: 101(ptr) AccessChain 84(incomingPayload) 94
+ Store 105 104
+ TerminateRayKHR
FunctionEnd
diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
index 7077ea4..559ba00 100644
--- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 101
- Capability RayTracingProvisionalKHR
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -48,8 +48,8 @@
Name 79 "v17"
Name 80 "gl_WorldToObject3x4EXT"
Name 85 "accEXT"
- Name 98 "localPayload"
- Name 100 "incomingPayload"
+ Name 98 "incomingPayload"
+ Name 100 "localPayload"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@@ -70,8 +70,8 @@
Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
Decorate 85(accEXT) DescriptorSet 0
Decorate 85(accEXT) Binding 0
- Decorate 98(localPayload) Location 0
- Decorate 100(incomingPayload) Location 1
+ Decorate 98(incomingPayload) Location 1
+ Decorate 100(localPayload) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -126,10 +126,10 @@
94: 29(fvec3) ConstantComposite 93 93 93
95: 28(float) Constant 1061158912
96: 16(int) Constant 1
- 97: TypePointer RayPayloadKHR 72(fvec4)
-98(localPayload): 97(ptr) Variable RayPayloadKHR
- 99: TypePointer IncomingRayPayloadKHR 72(fvec4)
-100(incomingPayload): 99(ptr) Variable IncomingRayPayloadKHR
+ 97: TypePointer IncomingRayPayloadKHR 72(fvec4)
+98(incomingPayload): 97(ptr) Variable IncomingRayPayloadKHR
+ 99: TypePointer RayPayloadKHR 72(fvec4)
+100(localPayload): 99(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -189,6 +189,6 @@
82: 73 Transpose 81
Store 79(v17) 82
86: 83 Load 85(accEXT)
- TraceRayKHR 86 87 88 89 90 87 92 91 94 95 96
+ TraceRayKHR 86 87 88 89 90 87 92 91 94 95 98(incomingPayload)
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
index 6c87d1c..9f945a2 100644
--- a/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
+++ b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out
@@ -1,10 +1,12 @@
spv.ext.ClosestHitShader_Errors.rchit
-ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage)
-ERROR: 0:9: 'reportIntersectionEXT' : no matching overloaded function found
-ERROR: 0:10: 'terminateRayEXT' : no matching overloaded function found
-ERROR: 0:11: 'ignoreIntersectionEXT' : no matching overloaded function found
-ERROR: 0:12: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling
-ERROR: 5 compilation errors. No code generated.
+ERROR: 0:6: 'location' : overlapping use of location 2
+ERROR: 0:9: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage)
+ERROR: 0:10: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:11: 'terminateRayEXT' : not supported in this stage: closest-hit
+ERROR: 0:12: 'ignoreIntersectionEXT' : not supported in this stage: closest-hit
+ERROR: 0:13: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling
+ERROR: 0:14: 'no rayPayloadEXT/rayPayloadInEXT declared' : with layout(location = 0)
+ERROR: 7 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
new file mode 100644
index 0000000..14ec09b
--- /dev/null
+++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
@@ -0,0 +1,114 @@
+spv.ext.ClosestHitShader_Subgroup.rchit
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 67
+
+ Capability Int64
+ Capability GroupNonUniform
+ Capability GroupNonUniformBallot
+ Capability SubgroupBallotKHR
+ Capability RayTracingKHR
+ Capability VulkanMemoryModelKHR
+ Capability ShaderSMBuiltinsNV
+ Extension "SPV_KHR_ray_tracing"
+ Extension "SPV_KHR_shader_ballot"
+ Extension "SPV_KHR_vulkan_memory_model"
+ Extension "SPV_NV_shader_sm_builtins"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical VulkanKHR
+ EntryPoint ClosestHitKHR 4 "main" 8 26 28 34 43 48 53 61
+ Source GLSL 460
+ SourceExtension "GL_ARB_shader_ballot"
+ SourceExtension "GL_EXT_ray_tracing"
+ SourceExtension "GL_KHR_shader_subgroup_ballot"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_NV_shader_sm_builtins"
+ Name 4 "main"
+ Name 8 "accEXT"
+ Name 26 "incomingPayload"
+ Name 28 "gl_SubgroupInvocationID"
+ Name 34 "gl_SubGroupGeMaskARB"
+ Name 43 "gl_SubgroupGtMask"
+ Name 48 "gl_SubgroupLeMask"
+ Name 53 "gl_SubGroupLtMaskARB"
+ Name 61 "gl_SMIDNV"
+ Decorate 8(accEXT) DescriptorSet 0
+ Decorate 8(accEXT) Binding 0
+ Decorate 26(incomingPayload) Location 1
+ Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision
+ Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
+ Decorate 29 RelaxedPrecision
+ Decorate 34(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR
+ Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
+ Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
+ Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR
+ Decorate 61(gl_SMIDNV) BuiltIn SMIDNV
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeAccelerationStructureKHR
+ 7: TypePointer UniformConstant 6
+ 8(accEXT): 7(ptr) Variable UniformConstant
+ 10: TypeInt 32 0
+ 11: 10(int) Constant 0
+ 12: 10(int) Constant 1
+ 13: 10(int) Constant 2
+ 14: 10(int) Constant 3
+ 15: TypeFloat 32
+ 16: TypeVector 15(float) 3
+ 17: 15(float) Constant 1056964608
+ 18: 16(fvec3) ConstantComposite 17 17 17
+ 19: 15(float) Constant 1065353216
+ 20: 16(fvec3) ConstantComposite 19 19 19
+ 21: 15(float) Constant 1061158912
+ 22: TypeInt 32 1
+ 23: 22(int) Constant 1
+ 24: TypeVector 15(float) 4
+ 25: TypePointer IncomingRayPayloadKHR 24(fvec4)
+26(incomingPayload): 25(ptr) Variable IncomingRayPayloadKHR
+ 27: TypePointer Input 10(int)
+28(gl_SubgroupInvocationID): 27(ptr) Variable Input
+ 31: TypeVector 10(int) 4
+ 32: TypeInt 64 0
+ 33: TypePointer Input 31(ivec4)
+34(gl_SubGroupGeMaskARB): 33(ptr) Variable Input
+ 38: TypeVector 10(int) 2
+43(gl_SubgroupGtMask): 33(ptr) Variable Input
+48(gl_SubgroupLeMask): 33(ptr) Variable Input
+53(gl_SubGroupLtMaskARB): 33(ptr) Variable Input
+ 61(gl_SMIDNV): 27(ptr) Variable Input
+ 65: TypePointer IncomingRayPayloadKHR 15(float)
+ 4(main): 2 Function None 3
+ 5: Label
+ 9: 6 Load 8(accEXT)
+ TraceRayKHR 9 11 12 13 14 11 18 17 20 21 26(incomingPayload)
+ 29: 10(int) Load 28(gl_SubgroupInvocationID) Volatile
+ 30: 15(float) ConvertUToF 29
+ 35: 31(ivec4) Load 34(gl_SubGroupGeMaskARB)
+ 36: 10(int) CompositeExtract 35 0
+ 37: 10(int) CompositeExtract 35 1
+ 39: 38(ivec2) CompositeConstruct 36 37
+ 40: 32(int64_t) Bitcast 39
+ 41: 15(float) ConvertUToF 40
+ 42: 15(float) FAdd 30 41
+ 44: 31(ivec4) Load 43(gl_SubgroupGtMask) Volatile
+ 45: 24(fvec4) ConvertUToF 44
+ 46: 15(float) CompositeExtract 45 0
+ 47: 15(float) FAdd 42 46
+ 49: 31(ivec4) Load 48(gl_SubgroupLeMask) Volatile
+ 50: 24(fvec4) ConvertUToF 49
+ 51: 15(float) CompositeExtract 50 0
+ 52: 15(float) FAdd 47 51
+ 54: 31(ivec4) Load 53(gl_SubGroupLtMaskARB)
+ 55: 10(int) CompositeExtract 54 0
+ 56: 10(int) CompositeExtract 54 1
+ 57: 38(ivec2) CompositeConstruct 55 56
+ 58: 32(int64_t) Bitcast 57
+ 59: 15(float) ConvertUToF 58
+ 60: 15(float) FAdd 52 59
+ 62: 10(int) Load 61(gl_SMIDNV) Volatile
+ 63: 15(float) ConvertUToF 62
+ 64: 15(float) FAdd 60 63
+ 66: 65(ptr) AccessChain 26(incomingPayload) 11
+ Store 66 64
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out
index 4a4a34a..2d389a0 100644
--- a/Test/baseResults/spv.ext.IntersectShader.rint.out
+++ b/Test/baseResults/spv.ext.IntersectShader.rint.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 81
- Capability RayTracingProvisionalKHR
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -53,6 +53,8 @@
Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
+ Decorate 50(gl_RayTmaxEXT) Volatile
+ Decorate 50(gl_RayTmaxEXT) Coherent
Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out
index 544901b..bc29ccc 100644
--- a/Test/baseResults/spv.ext.MissShader.rmiss.out
+++ b/Test/baseResults/spv.ext.MissShader.rmiss.out
@@ -1,15 +1,25 @@
spv.ext.MissShader.rmiss
// Module Version 10400
// Generated by (magic number): 8000a
-// Id's are bound by 54
+// Id's are bound by 71
- Capability RayTracingProvisionalKHR
+ Capability GroupNonUniform
+ Capability GroupNonUniformBallot
+ Capability SubgroupBallotKHR
+ Capability RayTracingKHR
+ Capability ShaderSMBuiltinsNV
Extension "SPV_KHR_ray_tracing"
+ Extension "SPV_KHR_shader_ballot"
+ Extension "SPV_NV_shader_sm_builtins"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 36 51 53
+ EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 36 51 53 58 63 70
Source GLSL 460
+ SourceExtension "GL_ARB_shader_ballot"
SourceExtension "GL_EXT_ray_tracing"
+ SourceExtension "GL_KHR_shader_subgroup_ballot"
+ SourceExtension "GL_KHR_shader_subgroup_basic"
+ SourceExtension "GL_NV_shader_sm_builtins"
Name 4 "main"
Name 9 "v0"
Name 11 "gl_LaunchIDEXT"
@@ -24,8 +34,11 @@
Name 31 "v5"
Name 32 "gl_RayTmaxEXT"
Name 36 "accEXT"
- Name 51 "localPayload"
- Name 53 "incomingPayload"
+ Name 51 "incomingPayload"
+ Name 53 "gl_SubGroupSizeARB"
+ Name 58 "gl_SubgroupEqMask"
+ Name 63 "gl_WarpIDNV"
+ Name 70 "localPayload"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
@@ -34,8 +47,17 @@
Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
Decorate 36(accEXT) DescriptorSet 0
Decorate 36(accEXT) Binding 0
- Decorate 51(localPayload) Location 0
- Decorate 53(incomingPayload) Location 1
+ Decorate 51(incomingPayload) Location 1
+ Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize
+ Decorate 53(gl_SubGroupSizeARB) Volatile
+ Decorate 53(gl_SubGroupSizeARB) Coherent
+ Decorate 58(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
+ Decorate 58(gl_SubgroupEqMask) Volatile
+ Decorate 58(gl_SubgroupEqMask) Coherent
+ Decorate 63(gl_WarpIDNV) BuiltIn WarpIDNV
+ Decorate 63(gl_WarpIDNV) Volatile
+ Decorate 63(gl_WarpIDNV) Coherent
+ Decorate 70(localPayload) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -69,10 +91,17 @@
47: TypeInt 32 1
48: 47(int) Constant 1
49: TypeVector 16(float) 4
- 50: TypePointer RayPayloadKHR 49(fvec4)
-51(localPayload): 50(ptr) Variable RayPayloadKHR
- 52: TypePointer IncomingRayPayloadKHR 49(fvec4)
-53(incomingPayload): 52(ptr) Variable IncomingRayPayloadKHR
+ 50: TypePointer IncomingRayPayloadKHR 49(fvec4)
+51(incomingPayload): 50(ptr) Variable IncomingRayPayloadKHR
+ 52: TypePointer Input 6(int)
+53(gl_SubGroupSizeARB): 52(ptr) Variable Input
+ 56: TypeVector 6(int) 4
+ 57: TypePointer Input 56(ivec4)
+58(gl_SubgroupEqMask): 57(ptr) Variable Input
+ 63(gl_WarpIDNV): 52(ptr) Variable Input
+ 67: TypePointer IncomingRayPayloadKHR 16(float)
+ 69: TypePointer RayPayloadKHR 49(fvec4)
+70(localPayload): 69(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@@ -94,6 +123,17 @@
33: 16(float) Load 32(gl_RayTmaxEXT)
Store 31(v5) 33
37: 34 Load 36(accEXT)
- TraceRayKHR 37 38 39 40 41 38 43 42 45 46 48
+ TraceRayKHR 37 38 39 40 41 38 43 42 45 46 51(incomingPayload)
+ 54: 6(int) Load 53(gl_SubGroupSizeARB)
+ 55: 16(float) ConvertUToF 54
+ 59: 56(ivec4) Load 58(gl_SubgroupEqMask)
+ 60: 49(fvec4) ConvertUToF 59
+ 61: 16(float) CompositeExtract 60 0
+ 62: 16(float) FAdd 55 61
+ 64: 6(int) Load 63(gl_WarpIDNV)
+ 65: 16(float) ConvertUToF 64
+ 66: 16(float) FAdd 62 65
+ 68: 67(ptr) AccessChain 51(incomingPayload) 38
+ Store 68 66
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
index 929a2a7..50d3c83 100644
--- a/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
+++ b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out
@@ -13,8 +13,8 @@
ERROR: 0:11: 'gl_HitTEXT' : undeclared identifier
ERROR: 0:12: 'gl_HitKindEXT' : undeclared identifier
ERROR: 0:13: 'reportIntersectionEXT' : no matching overloaded function found
-ERROR: 0:14: 'ignoreIntersectionEXT' : no matching overloaded function found
-ERROR: 0:15: 'terminateRayEXT' : no matching overloaded function found
+ERROR: 0:14: 'ignoreIntersectionEXT' : not supported in this stage: miss
+ERROR: 0:15: 'terminateRayEXT' : not supported in this stage: miss
ERROR: 16 compilation errors. No code generated.
diff --git a/Test/baseResults/spv.ext.RayCallable.rcall.out b/Test/baseResults/spv.ext.RayCallable.rcall.out
index e87b5fa..d429116 100644
--- a/Test/baseResults/spv.ext.RayCallable.rcall.out
+++ b/Test/baseResults/spv.ext.RayCallable.rcall.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 30
- Capability RayTracingProvisionalKHR
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -55,6 +55,6 @@
Store 13(size) 15
23: 22(ptr) AccessChain 18 20
Store 23 21
- ExecuteCallableKHR 24 25
+ ExecuteCallableKHR 24 18
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
index 4699342..e623874 100644
--- a/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
+++ b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out
@@ -2,34 +2,36 @@
ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: callable
ERROR: 0:4: 'rayPayloadEXT' : not supported in this stage: callable
ERROR: 0:5: 'rayPayloadInEXT' : not supported in this stage: callable
-ERROR: 0:9: 'gl_PrimitiveID' : undeclared identifier
-ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:10: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
+ERROR: 0:7: 'location' : overlapping use of location 0
+ERROR: 0:10: 'gl_PrimitiveID' : undeclared identifier
ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:11: 'gl_InstanceCustomIndexEXT' : undeclared identifier
+ERROR: 0:11: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
ERROR: 0:11: '=' : cannot convert from ' temp float' to ' temp highp int'
-ERROR: 0:12: 'gl_WorldRayOriginEXT' : undeclared identifier
-ERROR: 0:12: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:13: 'gl_WorldRayDirectionEXT' : undeclared identifier
+ERROR: 0:12: 'gl_InstanceCustomIndexEXT' : undeclared identifier
+ERROR: 0:12: '=' : cannot convert from ' temp float' to ' temp highp int'
+ERROR: 0:13: 'gl_WorldRayOriginEXT' : undeclared identifier
ERROR: 0:13: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:14: 'gl_ObjectRayOriginEXT' : undeclared identifier
+ERROR: 0:14: 'gl_WorldRayDirectionEXT' : undeclared identifier
ERROR: 0:14: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:15: 'gl_ObjectRayDirectionEXT' : undeclared identifier
+ERROR: 0:15: 'gl_ObjectRayOriginEXT' : undeclared identifier
ERROR: 0:15: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
-ERROR: 0:16: 'gl_RayTminEXT' : undeclared identifier
-ERROR: 0:17: 'gl_RayTmaxEXT' : undeclared identifier
-ERROR: 0:18: 'gl_ObjectToWorldEXT' : undeclared identifier
-ERROR: 0:18: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:19: 'gl_WorldToObjectEXT' : undeclared identifier
+ERROR: 0:16: 'gl_ObjectRayDirectionEXT' : undeclared identifier
+ERROR: 0:16: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float'
+ERROR: 0:17: 'gl_RayTminEXT' : undeclared identifier
+ERROR: 0:18: 'gl_RayTmaxEXT' : undeclared identifier
+ERROR: 0:19: 'gl_ObjectToWorldEXT' : undeclared identifier
ERROR: 0:19: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
-ERROR: 0:20: 'gl_HitTEXT' : undeclared identifier
-ERROR: 0:21: 'gl_HitKindEXT' : undeclared identifier
-ERROR: 0:22: 'gl_IncomingRayFlagsEXT' : undeclared identifier
-ERROR: 0:22: '=' : cannot convert from ' temp float' to ' temp highp uint'
-ERROR: 0:23: 'reportIntersectionEXT' : no matching overloaded function found
-ERROR: 0:24: 'ignoreIntersectionEXT' : no matching overloaded function found
-ERROR: 0:25: 'terminateRayEXT' : no matching overloaded function found
-ERROR: 30 compilation errors. No code generated.
+ERROR: 0:20: 'gl_WorldToObjectEXT' : undeclared identifier
+ERROR: 0:20: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
+ERROR: 0:21: 'gl_HitTEXT' : undeclared identifier
+ERROR: 0:22: 'gl_HitKindEXT' : undeclared identifier
+ERROR: 0:23: 'gl_IncomingRayFlagsEXT' : undeclared identifier
+ERROR: 0:23: '=' : cannot convert from ' temp float' to ' temp highp uint'
+ERROR: 0:24: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:25: 'ignoreIntersectionEXT' : not supported in this stage: callable
+ERROR: 0:26: 'terminateRayEXT' : not supported in this stage: callable
+ERROR: 0:27: 'no callableDataEXT/callableDataInEXT declared' : with layout(location = 1)
+ERROR: 32 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out
index 5d7079a..afd5083 100644
--- a/Test/baseResults/spv.ext.RayConstants.rgen.out
+++ b/Test/baseResults/spv.ext.RayConstants.rgen.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 27
- Capability RayTracingProvisionalKHR
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -15,7 +15,7 @@
Name 26 "payload"
Decorate 8(accEXT) DescriptorSet 0
Decorate 8(accEXT) Binding 0
- Decorate 26(payload) Location 0
+ Decorate 26(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeAccelerationStructureKHR
@@ -41,6 +41,6 @@
4(main): 2 Function None 3
5: Label
9: 6 Load 8(accEXT)
- TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23
+ TraceRayKHR 9 11 12 13 13 12 17 18 20 21 26(payload)
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
new file mode 100644
index 0000000..60b5e93
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
@@ -0,0 +1,134 @@
+spv.ext.RayGenSBTlayout.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+ Capability Int64
+ Capability RayTracingKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 11 21 38 60
+ Source GLSL 460
+ SourceExtension "GL_ARB_gpu_shader_int64"
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 8 "lx"
+ Name 11 "gl_LaunchIDEXT"
+ Name 16 "ly"
+ Name 20 "sx"
+ Name 21 "gl_LaunchSizeEXT"
+ Name 24 "sy"
+ Name 36 "block"
+ MemberName 36(block) 0 "dir"
+ MemberName 36(block) 1 "origin"
+ MemberName 36(block) 2 "i"
+ MemberName 36(block) 3 "aHandle32"
+ MemberName 36(block) 4 "aHandle64"
+ MemberName 36(block) 5 "arr2"
+ MemberName 36(block) 6 "a"
+ MemberName 36(block) 7 "arr3"
+ MemberName 36(block) 8 "packme"
+ MemberName 36(block) 9 "b"
+ MemberName 36(block) 10 "c"
+ Name 38 ""
+ Name 60 "payload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 34 ArrayStride 8
+ Decorate 35 ArrayStride 16
+ MemberDecorate 36(block) 0 Offset 0
+ MemberDecorate 36(block) 1 Offset 16
+ MemberDecorate 36(block) 2 Offset 28
+ MemberDecorate 36(block) 3 Offset 32
+ MemberDecorate 36(block) 4 Offset 40
+ MemberDecorate 36(block) 5 Offset 48
+ MemberDecorate 36(block) 6 Offset 64
+ MemberDecorate 36(block) 7 Offset 80
+ MemberDecorate 36(block) 8 Offset 112
+ MemberDecorate 36(block) 9 Offset 120
+ MemberDecorate 36(block) 10 Offset 128
+ Decorate 36(block) Block
+ Decorate 38 DescriptorSet 0
+ Decorate 38 Binding 0
+ Decorate 60(payload) Location 1
+ 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_LaunchIDEXT): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 17: 6(int) Constant 1
+21(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 27: TypeFloat 32
+ 28: TypeVector 27(float) 3
+ 29: TypeInt 32 1
+ 30: TypeVector 6(int) 2
+ 31: TypeInt 64 0
+ 32: TypeVector 27(float) 2
+ 33: 6(int) Constant 2
+ 34: TypeArray 32(fvec2) 33
+ 35: TypeArray 28(fvec3) 33
+ 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+ 37: TypePointer ShaderRecordBufferKHR 36(block)
+ 38: 37(ptr) Variable ShaderRecordBufferKHR
+ 39: 29(int) Constant 3
+ 40: TypePointer ShaderRecordBufferKHR 30(ivec2)
+ 43: TypeAccelerationStructureKHR
+ 49: 29(int) Constant 1
+ 50: TypePointer ShaderRecordBufferKHR 28(fvec3)
+ 53: 27(float) Constant 1056964608
+ 54: 29(int) Constant 0
+ 57: 27(float) Constant 1061158912
+ 58: TypeVector 27(float) 4
+ 59: TypePointer RayPayloadKHR 58(fvec4)
+ 60(payload): 59(ptr) Variable RayPayloadKHR
+ 61: 29(int) Constant 4
+ 62: TypePointer ShaderRecordBufferKHR 31(int64_t)
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(lx): 7(ptr) Variable Function
+ 16(ly): 7(ptr) Variable Function
+ 20(sx): 7(ptr) Variable Function
+ 24(sy): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+ 15: 6(int) Load 14
+ Store 8(lx) 15
+ 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+ 19: 6(int) Load 18
+ Store 16(ly) 19
+ 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+ 23: 6(int) Load 22
+ Store 20(sx) 23
+ 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+ 26: 6(int) Load 25
+ Store 24(sy) 26
+ 41: 40(ptr) AccessChain 38 39
+ 42: 30(ivec2) Load 41
+ 44: 43 ConvertUToAccelerationStructureKHR 42
+ 45: 6(int) Load 8(lx)
+ 46: 6(int) Load 16(ly)
+ 47: 6(int) Load 20(sx)
+ 48: 6(int) Load 24(sy)
+ 51: 50(ptr) AccessChain 38 49
+ 52: 28(fvec3) Load 51
+ 55: 50(ptr) AccessChain 38 54
+ 56: 28(fvec3) Load 55
+ TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+ 63: 62(ptr) AccessChain 38 61
+ 64: 31(int64_t) Load 63
+ 65: 43 ConvertUToAccelerationStructureKHR 64
+ 66: 6(int) Load 8(lx)
+ 67: 6(int) Load 16(ly)
+ 68: 6(int) Load 20(sx)
+ 69: 6(int) Load 24(sy)
+ 70: 50(ptr) AccessChain 38 49
+ 71: 28(fvec3) Load 70
+ 72: 50(ptr) AccessChain 38 54
+ 73: 28(fvec3) Load 72
+ TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
new file mode 100644
index 0000000..cc175f7
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
@@ -0,0 +1,134 @@
+spv.ext.RayGenSBTlayout140.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+ Capability Int64
+ Capability RayTracingKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 11 21 38 60
+ Source GLSL 460
+ SourceExtension "GL_ARB_gpu_shader_int64"
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 8 "lx"
+ Name 11 "gl_LaunchIDEXT"
+ Name 16 "ly"
+ Name 20 "sx"
+ Name 21 "gl_LaunchSizeEXT"
+ Name 24 "sy"
+ Name 36 "block"
+ MemberName 36(block) 0 "dir"
+ MemberName 36(block) 1 "origin"
+ MemberName 36(block) 2 "i"
+ MemberName 36(block) 3 "aHandle32"
+ MemberName 36(block) 4 "aHandle64"
+ MemberName 36(block) 5 "arr"
+ MemberName 36(block) 6 "a"
+ MemberName 36(block) 7 "arr3"
+ MemberName 36(block) 8 "packme"
+ MemberName 36(block) 9 "b"
+ MemberName 36(block) 10 "c"
+ Name 38 ""
+ Name 60 "payload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 34 ArrayStride 16
+ Decorate 35 ArrayStride 16
+ MemberDecorate 36(block) 0 Offset 0
+ MemberDecorate 36(block) 1 Offset 16
+ MemberDecorate 36(block) 2 Offset 28
+ MemberDecorate 36(block) 3 Offset 32
+ MemberDecorate 36(block) 4 Offset 40
+ MemberDecorate 36(block) 5 Offset 48
+ MemberDecorate 36(block) 6 Offset 80
+ MemberDecorate 36(block) 7 Offset 96
+ MemberDecorate 36(block) 8 Offset 128
+ MemberDecorate 36(block) 9 Offset 136
+ MemberDecorate 36(block) 10 Offset 144
+ Decorate 36(block) Block
+ Decorate 38 DescriptorSet 0
+ Decorate 38 Binding 0
+ Decorate 60(payload) Location 1
+ 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_LaunchIDEXT): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 17: 6(int) Constant 1
+21(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 27: TypeFloat 32
+ 28: TypeVector 27(float) 3
+ 29: TypeInt 32 1
+ 30: TypeVector 6(int) 2
+ 31: TypeInt 64 0
+ 32: TypeVector 27(float) 2
+ 33: 6(int) Constant 2
+ 34: TypeArray 32(fvec2) 33
+ 35: TypeArray 28(fvec3) 33
+ 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+ 37: TypePointer ShaderRecordBufferKHR 36(block)
+ 38: 37(ptr) Variable ShaderRecordBufferKHR
+ 39: 29(int) Constant 3
+ 40: TypePointer ShaderRecordBufferKHR 30(ivec2)
+ 43: TypeAccelerationStructureKHR
+ 49: 29(int) Constant 1
+ 50: TypePointer ShaderRecordBufferKHR 28(fvec3)
+ 53: 27(float) Constant 1056964608
+ 54: 29(int) Constant 0
+ 57: 27(float) Constant 1061158912
+ 58: TypeVector 27(float) 4
+ 59: TypePointer RayPayloadKHR 58(fvec4)
+ 60(payload): 59(ptr) Variable RayPayloadKHR
+ 61: 29(int) Constant 4
+ 62: TypePointer ShaderRecordBufferKHR 31(int64_t)
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(lx): 7(ptr) Variable Function
+ 16(ly): 7(ptr) Variable Function
+ 20(sx): 7(ptr) Variable Function
+ 24(sy): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+ 15: 6(int) Load 14
+ Store 8(lx) 15
+ 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+ 19: 6(int) Load 18
+ Store 16(ly) 19
+ 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+ 23: 6(int) Load 22
+ Store 20(sx) 23
+ 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+ 26: 6(int) Load 25
+ Store 24(sy) 26
+ 41: 40(ptr) AccessChain 38 39
+ 42: 30(ivec2) Load 41
+ 44: 43 ConvertUToAccelerationStructureKHR 42
+ 45: 6(int) Load 8(lx)
+ 46: 6(int) Load 16(ly)
+ 47: 6(int) Load 20(sx)
+ 48: 6(int) Load 24(sy)
+ 51: 50(ptr) AccessChain 38 49
+ 52: 28(fvec3) Load 51
+ 55: 50(ptr) AccessChain 38 54
+ 56: 28(fvec3) Load 55
+ TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+ 63: 62(ptr) AccessChain 38 61
+ 64: 31(int64_t) Load 63
+ 65: 43 ConvertUToAccelerationStructureKHR 64
+ 66: 6(int) Load 8(lx)
+ 67: 6(int) Load 16(ly)
+ 68: 6(int) Load 20(sx)
+ 69: 6(int) Load 24(sy)
+ 70: 50(ptr) AccessChain 38 49
+ 71: 28(fvec3) Load 70
+ 72: 50(ptr) AccessChain 38 54
+ 73: 28(fvec3) Load 72
+ TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
new file mode 100644
index 0000000..afcfa9c
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
@@ -0,0 +1,134 @@
+spv.ext.RayGenSBTlayout430.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+ Capability Int64
+ Capability RayTracingKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 11 21 38 60
+ Source GLSL 460
+ SourceExtension "GL_ARB_gpu_shader_int64"
+ SourceExtension "GL_EXT_ray_tracing"
+ Name 4 "main"
+ Name 8 "lx"
+ Name 11 "gl_LaunchIDEXT"
+ Name 16 "ly"
+ Name 20 "sx"
+ Name 21 "gl_LaunchSizeEXT"
+ Name 24 "sy"
+ Name 36 "block"
+ MemberName 36(block) 0 "dir"
+ MemberName 36(block) 1 "origin"
+ MemberName 36(block) 2 "i"
+ MemberName 36(block) 3 "aHandle32"
+ MemberName 36(block) 4 "aHandle64"
+ MemberName 36(block) 5 "arr"
+ MemberName 36(block) 6 "a"
+ MemberName 36(block) 7 "arr3"
+ MemberName 36(block) 8 "packme"
+ MemberName 36(block) 9 "b"
+ MemberName 36(block) 10 "c"
+ Name 38 ""
+ Name 60 "payload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 34 ArrayStride 8
+ Decorate 35 ArrayStride 16
+ MemberDecorate 36(block) 0 Offset 0
+ MemberDecorate 36(block) 1 Offset 16
+ MemberDecorate 36(block) 2 Offset 28
+ MemberDecorate 36(block) 3 Offset 32
+ MemberDecorate 36(block) 4 Offset 40
+ MemberDecorate 36(block) 5 Offset 48
+ MemberDecorate 36(block) 6 Offset 64
+ MemberDecorate 36(block) 7 Offset 80
+ MemberDecorate 36(block) 8 Offset 112
+ MemberDecorate 36(block) 9 Offset 120
+ MemberDecorate 36(block) 10 Offset 128
+ Decorate 36(block) Block
+ Decorate 38 DescriptorSet 0
+ Decorate 38 Binding 0
+ Decorate 60(payload) Location 1
+ 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_LaunchIDEXT): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 17: 6(int) Constant 1
+21(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 27: TypeFloat 32
+ 28: TypeVector 27(float) 3
+ 29: TypeInt 32 1
+ 30: TypeVector 6(int) 2
+ 31: TypeInt 64 0
+ 32: TypeVector 27(float) 2
+ 33: 6(int) Constant 2
+ 34: TypeArray 32(fvec2) 33
+ 35: TypeArray 28(fvec3) 33
+ 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+ 37: TypePointer ShaderRecordBufferKHR 36(block)
+ 38: 37(ptr) Variable ShaderRecordBufferKHR
+ 39: 29(int) Constant 3
+ 40: TypePointer ShaderRecordBufferKHR 30(ivec2)
+ 43: TypeAccelerationStructureKHR
+ 49: 29(int) Constant 1
+ 50: TypePointer ShaderRecordBufferKHR 28(fvec3)
+ 53: 27(float) Constant 1056964608
+ 54: 29(int) Constant 0
+ 57: 27(float) Constant 1061158912
+ 58: TypeVector 27(float) 4
+ 59: TypePointer RayPayloadKHR 58(fvec4)
+ 60(payload): 59(ptr) Variable RayPayloadKHR
+ 61: 29(int) Constant 4
+ 62: TypePointer ShaderRecordBufferKHR 31(int64_t)
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(lx): 7(ptr) Variable Function
+ 16(ly): 7(ptr) Variable Function
+ 20(sx): 7(ptr) Variable Function
+ 24(sy): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+ 15: 6(int) Load 14
+ Store 8(lx) 15
+ 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+ 19: 6(int) Load 18
+ Store 16(ly) 19
+ 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+ 23: 6(int) Load 22
+ Store 20(sx) 23
+ 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+ 26: 6(int) Load 25
+ Store 24(sy) 26
+ 41: 40(ptr) AccessChain 38 39
+ 42: 30(ivec2) Load 41
+ 44: 43 ConvertUToAccelerationStructureKHR 42
+ 45: 6(int) Load 8(lx)
+ 46: 6(int) Load 16(ly)
+ 47: 6(int) Load 20(sx)
+ 48: 6(int) Load 24(sy)
+ 51: 50(ptr) AccessChain 38 49
+ 52: 28(fvec3) Load 51
+ 55: 50(ptr) AccessChain 38 54
+ 56: 28(fvec3) Load 55
+ TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+ 63: 62(ptr) AccessChain 38 61
+ 64: 31(int64_t) Load 63
+ 65: 43 ConvertUToAccelerationStructureKHR 64
+ 66: 6(int) Load 8(lx)
+ 67: 6(int) Load 16(ly)
+ 68: 6(int) Load 20(sx)
+ 69: 6(int) Load 24(sy)
+ 70: 50(ptr) AccessChain 38 49
+ 71: 28(fvec3) Load 70
+ 72: 50(ptr) AccessChain 38 54
+ 73: 28(fvec3) Load 72
+ TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
new file mode 100644
index 0000000..eac481a
--- /dev/null
+++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
@@ -0,0 +1,135 @@
+spv.ext.RayGenSBTlayoutscalar.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 74
+
+ Capability Int64
+ Capability RayTracingKHR
+ Extension "SPV_KHR_ray_tracing"
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint RayGenerationKHR 4 "main" 11 21 38 60
+ Source GLSL 460
+ SourceExtension "GL_ARB_gpu_shader_int64"
+ SourceExtension "GL_EXT_ray_tracing"
+ SourceExtension "GL_EXT_scalar_block_layout"
+ Name 4 "main"
+ Name 8 "lx"
+ Name 11 "gl_LaunchIDEXT"
+ Name 16 "ly"
+ Name 20 "sx"
+ Name 21 "gl_LaunchSizeEXT"
+ Name 24 "sy"
+ Name 36 "block"
+ MemberName 36(block) 0 "dir"
+ MemberName 36(block) 1 "origin"
+ MemberName 36(block) 2 "i"
+ MemberName 36(block) 3 "aHandle32"
+ MemberName 36(block) 4 "aHandle64"
+ MemberName 36(block) 5 "arr"
+ MemberName 36(block) 6 "a"
+ MemberName 36(block) 7 "arr3"
+ MemberName 36(block) 8 "packme"
+ MemberName 36(block) 9 "b"
+ MemberName 36(block) 10 "c"
+ Name 38 ""
+ Name 60 "payload"
+ Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+ Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+ Decorate 34 ArrayStride 8
+ Decorate 35 ArrayStride 12
+ MemberDecorate 36(block) 0 Offset 0
+ MemberDecorate 36(block) 1 Offset 12
+ MemberDecorate 36(block) 2 Offset 24
+ MemberDecorate 36(block) 3 Offset 28
+ MemberDecorate 36(block) 4 Offset 40
+ MemberDecorate 36(block) 5 Offset 48
+ MemberDecorate 36(block) 6 Offset 64
+ MemberDecorate 36(block) 7 Offset 68
+ MemberDecorate 36(block) 8 Offset 92
+ MemberDecorate 36(block) 9 Offset 96
+ MemberDecorate 36(block) 10 Offset 104
+ Decorate 36(block) Block
+ Decorate 38 DescriptorSet 0
+ Decorate 38 Binding 0
+ Decorate 60(payload) Location 1
+ 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_LaunchIDEXT): 10(ptr) Variable Input
+ 12: 6(int) Constant 0
+ 13: TypePointer Input 6(int)
+ 17: 6(int) Constant 1
+21(gl_LaunchSizeEXT): 10(ptr) Variable Input
+ 27: TypeFloat 32
+ 28: TypeVector 27(float) 3
+ 29: TypeInt 32 1
+ 30: TypeVector 6(int) 2
+ 31: TypeInt 64 0
+ 32: TypeVector 27(float) 2
+ 33: 6(int) Constant 2
+ 34: TypeArray 32(fvec2) 33
+ 35: TypeArray 28(fvec3) 33
+ 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
+ 37: TypePointer ShaderRecordBufferKHR 36(block)
+ 38: 37(ptr) Variable ShaderRecordBufferKHR
+ 39: 29(int) Constant 3
+ 40: TypePointer ShaderRecordBufferKHR 30(ivec2)
+ 43: TypeAccelerationStructureKHR
+ 49: 29(int) Constant 1
+ 50: TypePointer ShaderRecordBufferKHR 28(fvec3)
+ 53: 27(float) Constant 1056964608
+ 54: 29(int) Constant 0
+ 57: 27(float) Constant 1061158912
+ 58: TypeVector 27(float) 4
+ 59: TypePointer RayPayloadKHR 58(fvec4)
+ 60(payload): 59(ptr) Variable RayPayloadKHR
+ 61: 29(int) Constant 4
+ 62: TypePointer ShaderRecordBufferKHR 31(int64_t)
+ 4(main): 2 Function None 3
+ 5: Label
+ 8(lx): 7(ptr) Variable Function
+ 16(ly): 7(ptr) Variable Function
+ 20(sx): 7(ptr) Variable Function
+ 24(sy): 7(ptr) Variable Function
+ 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
+ 15: 6(int) Load 14
+ Store 8(lx) 15
+ 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
+ 19: 6(int) Load 18
+ Store 16(ly) 19
+ 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
+ 23: 6(int) Load 22
+ Store 20(sx) 23
+ 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
+ 26: 6(int) Load 25
+ Store 24(sy) 26
+ 41: 40(ptr) AccessChain 38 39
+ 42: 30(ivec2) Load 41
+ 44: 43 ConvertUToAccelerationStructureKHR 42
+ 45: 6(int) Load 8(lx)
+ 46: 6(int) Load 16(ly)
+ 47: 6(int) Load 20(sx)
+ 48: 6(int) Load 24(sy)
+ 51: 50(ptr) AccessChain 38 49
+ 52: 28(fvec3) Load 51
+ 55: 50(ptr) AccessChain 38 54
+ 56: 28(fvec3) Load 55
+ TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
+ 63: 62(ptr) AccessChain 38 61
+ 64: 31(int64_t) Load 63
+ 65: 43 ConvertUToAccelerationStructureKHR 64
+ 66: 6(int) Load 8(lx)
+ 67: 6(int) Load 16(ly)
+ 68: 6(int) Load 20(sx)
+ 69: 6(int) Load 24(sy)
+ 70: 50(ptr) AccessChain 38 49
+ 71: 28(fvec3) Load 70
+ 72: 50(ptr) AccessChain 38 54
+ 73: 28(fvec3) Load 72
+ TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
+ Return
+ FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out
index b1904ac..da516f3 100644
--- a/Test/baseResults/spv.ext.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out
@@ -3,12 +3,12 @@
// Generated by (magic number): 8000a
// Id's are bound by 58
- Capability RayTraversalPrimitiveCullingProvisionalKHR
- Capability RayTracingProvisionalKHR
+ Capability RayTraversalPrimitiveCullingKHR
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint RayGenerationKHR 4 "main" 11 21 29 40 51 54 57
+ EntryPoint RayGenerationKHR 4 "main" 11 21 29 40 53 54 57
Source GLSL 460
SourceExtension "GL_EXT_ray_flags_primitive_culling"
SourceExtension "GL_EXT_ray_tracing"
@@ -24,9 +24,9 @@
MemberName 38(block) 0 "dir"
MemberName 38(block) 1 "origin"
Name 40 ""
- Name 51 "accEXT1"
- Name 54 "imageu"
- Name 57 "payload"
+ Name 53 "payload"
+ Name 54 "accEXT1"
+ Name 57 "imageu"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 29(accEXT0) DescriptorSet 0
@@ -36,11 +36,11 @@
Decorate 38(block) Block
Decorate 40 DescriptorSet 0
Decorate 40 Binding 3
- Decorate 51(accEXT1) DescriptorSet 0
- Decorate 51(accEXT1) Binding 1
- Decorate 54(imageu) DescriptorSet 0
- Decorate 54(imageu) Binding 2
- Decorate 57(payload) Location 0
+ Decorate 53(payload) Location 1
+ Decorate 54(accEXT1) DescriptorSet 0
+ Decorate 54(accEXT1) Binding 1
+ Decorate 57(imageu) DescriptorSet 0
+ Decorate 57(imageu) Binding 2
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -67,13 +67,13 @@
46: 36(float) Constant 1056964608
47: 41(int) Constant 0
50: 36(float) Constant 1061158912
- 51(accEXT1): 28(ptr) Variable UniformConstant
- 52: TypeImage 6(int) 2D nonsampled format:R32ui
- 53: TypePointer UniformConstant 52
- 54(imageu): 53(ptr) Variable UniformConstant
- 55: TypeVector 36(float) 4
- 56: TypePointer RayPayloadKHR 55(fvec4)
- 57(payload): 56(ptr) Variable RayPayloadKHR
+ 51: TypeVector 36(float) 4
+ 52: TypePointer RayPayloadKHR 51(fvec4)
+ 53(payload): 52(ptr) Variable RayPayloadKHR
+ 54(accEXT1): 28(ptr) Variable UniformConstant
+ 55: TypeImage 6(int) 2D nonsampled format:R32ui
+ 56: TypePointer UniformConstant 55
+ 57(imageu): 56(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
8(lx): 7(ptr) Variable Function
@@ -101,6 +101,6 @@
45: 37(fvec3) Load 44
48: 43(ptr) AccessChain 40 47
49: 37(fvec3) Load 48
- TraceRayKHR 30 31 32 33 34 35 45 46 49 50 42
+ TraceRayKHR 30 31 32 33 34 35 45 46 49 50 53(payload)
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
index cfaf529..00262ac 100644
--- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 53
- Capability RayTracingProvisionalKHR
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
@@ -32,7 +32,7 @@
Decorate 37(block) Block
Decorate 39 DescriptorSet 0
Decorate 39 Binding 1
- Decorate 52(payload) Location 0
+ Decorate 52(payload) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -88,6 +88,6 @@
44: 36(fvec3) Load 43
47: 42(ptr) AccessChain 39 46
48: 36(fvec3) Load 47
- TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41
+ TraceRayKHR 30 31 32 33 34 12 44 45 48 49 52(payload)
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
index 25d46a6..473937d 100644
--- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
@@ -1,17 +1,19 @@
spv.ext.RayGenShaderArray.rgen
// Module Version 10400
// Generated by (magic number): 8000a
-// Id's are bound by 89
+// Id's are bound by 117
+ Capability Int64
+ Capability RayTracingKHR
Capability ShaderNonUniformEXT
Capability RuntimeDescriptorArrayEXT
- Capability RayTracingProvisionalKHR
Extension "SPV_EXT_descriptor_indexing"
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint RayGenerationKHR 4 "main" 11 21 30 36 60 88
+ EntryPoint RayGenerationKHR 4 "main" 11 21 30 38 61 65
Source GLSL 460
+ SourceExtension "GL_ARB_gpu_shader_int64"
SourceExtension "GL_EXT_nonuniform_qualifier"
SourceExtension "GL_EXT_ray_tracing"
Name 4 "main"
@@ -22,29 +24,33 @@
Name 21 "gl_LaunchSizeEXT"
Name 24 "sy"
Name 30 "accEXT0"
- Name 34 "block"
- MemberName 34(block) 0 "dir"
- MemberName 34(block) 1 "origin"
- MemberName 34(block) 2 "i"
- Name 36 ""
- Name 60 "accEXT1"
- Name 88 "payload"
+ Name 36 "block"
+ MemberName 36(block) 0 "dir"
+ MemberName 36(block) 1 "origin"
+ MemberName 36(block) 2 "i"
+ MemberName 36(block) 3 "aHandle32"
+ MemberName 36(block) 4 "aHandle64"
+ Name 38 ""
+ Name 61 "payload"
+ Name 65 "accEXT1"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 30(accEXT0) DescriptorSet 0
Decorate 30(accEXT0) Binding 0
- MemberDecorate 34(block) 0 Offset 0
- MemberDecorate 34(block) 1 Offset 16
- MemberDecorate 34(block) 2 Offset 28
- Decorate 34(block) Block
- Decorate 36 DescriptorSet 0
- Decorate 36 Binding 2
- Decorate 60(accEXT1) DescriptorSet 0
- Decorate 60(accEXT1) Binding 1
- Decorate 75 DecorationNonUniformEXT
- Decorate 76 DecorationNonUniformEXT
- Decorate 77 DecorationNonUniformEXT
- Decorate 88(payload) Location 0
+ MemberDecorate 36(block) 0 Offset 0
+ MemberDecorate 36(block) 1 Offset 16
+ MemberDecorate 36(block) 2 Offset 28
+ MemberDecorate 36(block) 3 Offset 32
+ MemberDecorate 36(block) 4 Offset 40
+ Decorate 36(block) Block
+ Decorate 38 DescriptorSet 0
+ Decorate 38 Binding 2
+ Decorate 61(payload) Location 1
+ Decorate 65(accEXT1) DescriptorSet 0
+ Decorate 65(accEXT1) Binding 1
+ Decorate 80 DecorationNonUniformEXT
+ Decorate 81 DecorationNonUniformEXT
+ Decorate 82 DecorationNonUniformEXT
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -63,24 +69,30 @@
31: TypeFloat 32
32: TypeVector 31(float) 3
33: TypeInt 32 1
- 34(block): TypeStruct 32(fvec3) 32(fvec3) 33(int)
- 35: TypePointer ShaderRecordBufferKHR 34(block)
- 36: 35(ptr) Variable ShaderRecordBufferKHR
- 37: 33(int) Constant 2
- 38: TypePointer ShaderRecordBufferKHR 33(int)
- 41: TypePointer UniformConstant 27
- 48: 33(int) Constant 1
- 49: TypePointer ShaderRecordBufferKHR 32(fvec3)
- 52: 31(float) Constant 1056964608
- 53: 33(int) Constant 0
- 56: 31(float) Constant 1061158912
- 57: 6(int) Constant 2
- 58: TypeArray 27 57
- 59: TypePointer UniformConstant 58
- 60(accEXT1): 59(ptr) Variable UniformConstant
- 86: TypeVector 31(float) 4
- 87: TypePointer RayPayloadKHR 86(fvec4)
- 88(payload): 87(ptr) Variable RayPayloadKHR
+ 34: TypeVector 6(int) 2
+ 35: TypeInt 64 0
+ 36(block): TypeStruct 32(fvec3) 32(fvec3) 33(int) 34(ivec2) 35(int64_t)
+ 37: TypePointer ShaderRecordBufferKHR 36(block)
+ 38: 37(ptr) Variable ShaderRecordBufferKHR
+ 39: 33(int) Constant 2
+ 40: TypePointer ShaderRecordBufferKHR 33(int)
+ 43: TypePointer UniformConstant 27
+ 50: 33(int) Constant 1
+ 51: TypePointer ShaderRecordBufferKHR 32(fvec3)
+ 54: 31(float) Constant 1056964608
+ 55: 33(int) Constant 0
+ 58: 31(float) Constant 1061158912
+ 59: TypeVector 31(float) 4
+ 60: TypePointer RayPayloadKHR 59(fvec4)
+ 61(payload): 60(ptr) Variable RayPayloadKHR
+ 62: 6(int) Constant 2
+ 63: TypeArray 27 62
+ 64: TypePointer UniformConstant 63
+ 65(accEXT1): 64(ptr) Variable UniformConstant
+ 91: 33(int) Constant 3
+ 92: TypePointer ShaderRecordBufferKHR 34(ivec2)
+ 104: 33(int) Constant 4
+ 105: TypePointer ShaderRecordBufferKHR 35(int64_t)
4(main): 2 Function None 3
5: Label
8(lx): 7(ptr) Variable Function
@@ -99,45 +111,69 @@
25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
26: 6(int) Load 25
Store 24(sy) 26
- 39: 38(ptr) AccessChain 36 37
- 40: 33(int) Load 39
- 42: 41(ptr) AccessChain 30(accEXT0) 40
- 43: 27 Load 42
- 44: 6(int) Load 8(lx)
- 45: 6(int) Load 16(ly)
- 46: 6(int) Load 20(sx)
- 47: 6(int) Load 24(sy)
- 50: 49(ptr) AccessChain 36 48
- 51: 32(fvec3) Load 50
- 54: 49(ptr) AccessChain 36 53
- 55: 32(fvec3) Load 54
- TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48
- 61: 38(ptr) AccessChain 36 37
- 62: 33(int) Load 61
- 63: 41(ptr) AccessChain 60(accEXT1) 62
- 64: 27 Load 63
- 65: 6(int) Load 8(lx)
- 66: 6(int) Load 16(ly)
- 67: 6(int) Load 20(sx)
- 68: 6(int) Load 24(sy)
- 69: 49(ptr) AccessChain 36 48
- 70: 32(fvec3) Load 69
- 71: 49(ptr) AccessChain 36 53
- 72: 32(fvec3) Load 71
- TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48
- 73: 38(ptr) AccessChain 36 37
- 74: 33(int) Load 73
- 75: 33(int) CopyObject 74
- 76: 41(ptr) AccessChain 30(accEXT0) 75
- 77: 27 Load 76
- 78: 6(int) Load 8(lx)
- 79: 6(int) Load 16(ly)
- 80: 6(int) Load 20(sx)
- 81: 6(int) Load 24(sy)
- 82: 49(ptr) AccessChain 36 48
- 83: 32(fvec3) Load 82
- 84: 49(ptr) AccessChain 36 53
- 85: 32(fvec3) Load 84
- TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48
+ 41: 40(ptr) AccessChain 38 39
+ 42: 33(int) Load 41
+ 44: 43(ptr) AccessChain 30(accEXT0) 42
+ 45: 27 Load 44
+ 46: 6(int) Load 8(lx)
+ 47: 6(int) Load 16(ly)
+ 48: 6(int) Load 20(sx)
+ 49: 6(int) Load 24(sy)
+ 52: 51(ptr) AccessChain 38 50
+ 53: 32(fvec3) Load 52
+ 56: 51(ptr) AccessChain 38 55
+ 57: 32(fvec3) Load 56
+ TraceRayKHR 45 46 47 48 49 12 53 54 57 58 61(payload)
+ 66: 40(ptr) AccessChain 38 39
+ 67: 33(int) Load 66
+ 68: 43(ptr) AccessChain 65(accEXT1) 67
+ 69: 27 Load 68
+ 70: 6(int) Load 8(lx)
+ 71: 6(int) Load 16(ly)
+ 72: 6(int) Load 20(sx)
+ 73: 6(int) Load 24(sy)
+ 74: 51(ptr) AccessChain 38 50
+ 75: 32(fvec3) Load 74
+ 76: 51(ptr) AccessChain 38 55
+ 77: 32(fvec3) Load 76
+ TraceRayKHR 69 70 71 72 73 12 75 54 77 58 61(payload)
+ 78: 40(ptr) AccessChain 38 39
+ 79: 33(int) Load 78
+ 80: 33(int) CopyObject 79
+ 81: 43(ptr) AccessChain 30(accEXT0) 80
+ 82: 27 Load 81
+ 83: 6(int) Load 8(lx)
+ 84: 6(int) Load 16(ly)
+ 85: 6(int) Load 20(sx)
+ 86: 6(int) Load 24(sy)
+ 87: 51(ptr) AccessChain 38 50
+ 88: 32(fvec3) Load 87
+ 89: 51(ptr) AccessChain 38 55
+ 90: 32(fvec3) Load 89
+ TraceRayKHR 82 83 84 85 86 12 88 54 90 58 61(payload)
+ 93: 92(ptr) AccessChain 38 91
+ 94: 34(ivec2) Load 93
+ 95: 27 ConvertUToAccelerationStructureKHR 94
+ 96: 6(int) Load 8(lx)
+ 97: 6(int) Load 16(ly)
+ 98: 6(int) Load 20(sx)
+ 99: 6(int) Load 24(sy)
+ 100: 51(ptr) AccessChain 38 50
+ 101: 32(fvec3) Load 100
+ 102: 51(ptr) AccessChain 38 55
+ 103: 32(fvec3) Load 102
+ TraceRayKHR 95 96 97 98 99 12 101 54 103 58 61(payload)
+ 106: 105(ptr) AccessChain 38 104
+ 107: 35(int64_t) Load 106
+ 108: 27 ConvertUToAccelerationStructureKHR 107
+ 109: 6(int) Load 8(lx)
+ 110: 6(int) Load 16(ly)
+ 111: 6(int) Load 20(sx)
+ 112: 6(int) Load 24(sy)
+ 113: 51(ptr) AccessChain 38 50
+ 114: 32(fvec3) Load 113
+ 115: 51(ptr) AccessChain 38 55
+ 116: 32(fvec3) Load 115
+ TraceRayKHR 108 109 110 111 112 12 114 54 116 58 61(payload)
Return
FunctionEnd
diff --git a/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
index 6dc7480..3f336bb 100644
--- a/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out
@@ -4,8 +4,9 @@
ERROR: 0:5: 'shaderRecordNV' : can only be used with a buffer
ERROR: 0:9: 'binding' : cannot be used with shaderRecordNV
ERROR: 0:12: 'set' : cannot be used with shaderRecordNV
+ERROR: 0:23: ' temp accelerationStructureNV' : cannot construct with these arguments
ERROR: 0:23: 'accelerationStructureNV' : accelerationStructureNV can only be used in uniform variables or function parameters: a
-ERROR: 0:23: '=' : cannot convert from ' const int' to ' temp accelerationStructureNV'
+ERROR: 0:23: '=' : cannot convert from ' const float' to ' temp accelerationStructureNV'
ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier
ERROR: 0:24: '=' : cannot convert from ' temp float' to ' temp highp int'
ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?)
@@ -28,11 +29,13 @@
ERROR: 0:34: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float'
ERROR: 0:35: 'gl_HitTEXT' : undeclared identifier
ERROR: 0:36: 'gl_HitKindEXT' : undeclared identifier
-ERROR: 0:37: 'reportIntersectionEXT' : no matching overloaded function found
-ERROR: 0:38: 'ignoreIntersectionEXT' : no matching overloaded function found
-ERROR: 0:39: 'terminateRayEXT' : no matching overloaded function found
-ERROR: 0:40: 'assign' : l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer)
-ERROR: 33 compilation errors. No code generated.
+ERROR: 0:37: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling
+ERROR: 0:37: '=' : cannot convert from ' const uint' to ' temp highp int'
+ERROR: 0:38: 'reportIntersectionEXT' : no matching overloaded function found
+ERROR: 0:39: 'ignoreIntersectionEXT' : not supported in this stage: ray-generation
+ERROR: 0:40: 'terminateRayEXT' : not supported in this stage: ray-generation
+ERROR: 0:41: 'assign' : l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer)
+ERROR: 36 compilation errors. No code generated.
ERROR: Linking ray-generation stage: Only one shaderRecordNV buffer block is allowed per stage
diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out
index ad877bd..40d73d1 100644
--- a/Test/baseResults/spv.ext.World3x4.rahit.out
+++ b/Test/baseResults/spv.ext.World3x4.rahit.out
@@ -3,7 +3,7 @@
// Generated by (magic number): 8000a
// Id's are bound by 90
- Capability RayTracingProvisionalKHR
+ Capability RayTracingKHR
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
index 38a426c..86a4fd2 100644
--- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
@@ -1,5 +1,4 @@
spv.meshShaderPerViewBuiltins.mesh
-Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 126
diff --git a/Test/rayQuery-global.rgen b/Test/rayQuery-global.rgen
new file mode 100644
index 0000000..3a57e74
--- /dev/null
+++ b/Test/rayQuery-global.rgen
@@ -0,0 +1,31 @@
+#version 460
+#extension GL_EXT_ray_query : enable
+#extension GL_EXT_ray_flags_primitive_culling : enable
+
+layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas;
+
+rayQueryEXT rqGlobal;
+
+void otherWrapper(rayQueryEXT rq) {
+ rayQueryProceedEXT(rq);
+ rayQueryProceedEXT(rqGlobal);
+}
+
+void wrapper(rayQueryEXT rq) {
+ rayQueryEXT rq2;
+ rayQueryProceedEXT(rq);
+ rayQueryProceedEXT(rqGlobal);
+ otherWrapper(rq);
+ otherWrapper(rq2);
+ otherWrapper(rqGlobal);
+}
+
+void main() {
+ rayQueryInitializeEXT(rqGlobal, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0);
+ wrapper(rqGlobal);
+ otherWrapper(rqGlobal);
+ rayQueryEXT rq2;
+ rayQueryInitializeEXT(rq2, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0);
+ wrapper(rq2);
+ otherWrapper(rq2);
+}
diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit
index ee7d9c7..871f8fe 100644
--- a/Test/spv.ext.AnyHitShader.rahit
+++ b/Test/spv.ext.AnyHitShader.rahit
@@ -1,5 +1,6 @@
#version 460
#extension GL_EXT_ray_tracing : enable
+#extension GL_KHR_shader_subgroup_basic : enable
layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
void main()
{
@@ -22,8 +23,10 @@
mat3x4 v16 = gl_ObjectToWorld3x4EXT;
mat3x4 v17 = gl_WorldToObject3x4EXT;
incomingPayload = vec4(0.5f);
- if (v2 == 1)
- ignoreIntersectionEXT();
- else
- terminateRayEXT();
+ if (v2 == 1) {
+ ignoreIntersectionEXT;
+ v0.x++;
+ }
+ incomingPayload.x += float(gl_SubgroupSize);
+ terminateRayEXT;
}
diff --git a/Test/spv.ext.ClosestHitShader_Errors.rchit b/Test/spv.ext.ClosestHitShader_Errors.rchit
index 05e05fe..6416f1f 100644
--- a/Test/spv.ext.ClosestHitShader_Errors.rchit
+++ b/Test/spv.ext.ClosestHitShader_Errors.rchit
@@ -2,12 +2,14 @@
#extension GL_EXT_ray_tracing : enable
hitAttributeEXT vec4 payload;
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
-
+layout(location = 2) rayPayloadEXT vec4 payload0;
+layout(location = 2) rayPayloadInEXT block { vec4 data; }; // ERROR : location already used
void main()
{
payload.x = 1.0f; // ERROR, cannot write to hitattributeEXT in stage
reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
- terminateRayEXT();
- ignoreIntersectionEXT();
+ terminateRayEXT;
+ ignoreIntersectionEXT;
bool e1 = gl_IncomingRayFlagsEXT == gl_RayFlagsSkipAABBEXT;
+ traceRayEXT(accEXT, 0, 0, 0, 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0, 0); //ERROR no payload variable with location = 0
}
diff --git a/Test/spv.ext.ClosestHitShader_Subgroup.rchit b/Test/spv.ext.ClosestHitShader_Subgroup.rchit
new file mode 100644
index 0000000..ce2091a
--- /dev/null
+++ b/Test/spv.ext.ClosestHitShader_Subgroup.rchit
@@ -0,0 +1,16 @@
+#version 460
+#pragma use_vulkan_memory_model
+#extension GL_EXT_ray_tracing : enable
+#extension GL_NV_shader_sm_builtins : enable
+#extension GL_KHR_shader_subgroup_ballot : enable
+#extension GL_ARB_shader_ballot : enable
+#extension GL_NV_shader_sm_builtins : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
+void main()
+{
+ traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+ incomingPayload.x = float(gl_SubgroupInvocationID) + float(gl_SubGroupGeMaskARB) +
+ float(gl_SubgroupGtMask) + float(gl_SubgroupLeMask) +
+ float(gl_SubGroupLtMaskARB) + float(gl_SMIDNV);
+}
diff --git a/Test/spv.ext.MissShader.rmiss b/Test/spv.ext.MissShader.rmiss
index e774334..982bd84 100644
--- a/Test/spv.ext.MissShader.rmiss
+++ b/Test/spv.ext.MissShader.rmiss
@@ -1,5 +1,9 @@
#version 460
#extension GL_EXT_ray_tracing : enable
+#extension GL_NV_shader_sm_builtins : enable
+#extension GL_KHR_shader_subgroup_ballot : enable
+#extension GL_ARB_shader_ballot : enable
+#extension GL_NV_shader_sm_builtins : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
layout(location = 0) rayPayloadEXT vec4 localPayload;
layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
@@ -12,4 +16,5 @@
float v4 = gl_RayTminEXT;
float v5 = gl_RayTmaxEXT;
traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
+ incomingPayload.x = float(gl_SubGroupSizeARB) + float(gl_SubgroupEqMask) + float(gl_WarpIDNV);
}
diff --git a/Test/spv.ext.MissShader_Errors.rmiss b/Test/spv.ext.MissShader_Errors.rmiss
index 2391211..c921f23 100644
--- a/Test/spv.ext.MissShader_Errors.rmiss
+++ b/Test/spv.ext.MissShader_Errors.rmiss
@@ -11,6 +11,6 @@
float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage
float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage
reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
- ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage
- terminateRayEXT(); // ERROR, unsupported builtin in stage
+ ignoreIntersectionEXT; // ERROR, unsupported in stage
+ terminateRayEXT; // ERROR, unsupported in stage
}
diff --git a/Test/spv.ext.RayCallable_Errors.rcall b/Test/spv.ext.RayCallable_Errors.rcall
index d35672e..660ea75 100644
--- a/Test/spv.ext.RayCallable_Errors.rcall
+++ b/Test/spv.ext.RayCallable_Errors.rcall
@@ -3,7 +3,8 @@
hitAttributeEXT vec4 hitattr; // ERROR, hitattributeEXT unsupported in this stage
rayPayloadEXT vec4 payload; // ERROR, rayPayloadEXT unsupported in this stage
rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadInEXT unsupported in this stage
-
+layout(location = 0) callableDataEXT vec4 cd0;
+layout(location = 0) callableDataEXT float cd1; // ERROR, location already used
void main()
{
int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage
@@ -21,6 +22,7 @@
float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage
uint curFlags = gl_IncomingRayFlagsEXT; // ERROR, unsupported builtin in stage
reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
- ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage
- terminateRayEXT(); // ERROR, unsupported builtin in stage
+ ignoreIntersectionEXT; // ERROR, unsupported in stage
+ terminateRayEXT; // ERROR, unsupported in stage
+ executeCallableEXT(1,1); // ERROR, no callable data with location 1
}
diff --git a/Test/spv.ext.RayConstants.rgen b/Test/spv.ext.RayConstants.rgen
index 73cb0c1..8e681ba 100644
--- a/Test/spv.ext.RayConstants.rgen
+++ b/Test/spv.ext.RayConstants.rgen
@@ -1,7 +1,7 @@
#version 460
#extension GL_EXT_ray_tracing : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
void main()
{
const uint rayFlags = gl_RayFlagsNoneEXT | gl_RayFlagsOpaqueEXT |
diff --git a/Test/spv.ext.RayGenSBTlayout.rgen b/Test/spv.ext.RayGenSBTlayout.rgen
new file mode 100644
index 0000000..a5fa2b6
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayout.rgen
@@ -0,0 +1,28 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+// should get std430 layout
+layout(shaderRecordEXT) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+ int i;
+ uvec2 aHandle32;
+ uint64_t aHandle64;
+ vec2 arr2[2];
+ float a;
+ vec3 arr3[2];
+ float packme;
+ vec2 b;
+ float c;
+};
+void main()
+{
+ uint lx = gl_LaunchIDEXT.x;
+ uint ly = gl_LaunchIDEXT.y;
+ uint sx = gl_LaunchSizeEXT.x;
+ uint sy = gl_LaunchSizeEXT.y;
+ traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenSBTlayout140.rgen b/Test/spv.ext.RayGenSBTlayout140.rgen
new file mode 100644
index 0000000..7d673a8
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayout140.rgen
@@ -0,0 +1,27 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT, std140) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+ int i;
+ uvec2 aHandle32;
+ uint64_t aHandle64;
+ vec2 arr[2];
+ float a;
+ vec3 arr3[2];
+ float packme;
+ vec2 b;
+ float c;
+};
+void main()
+{
+ uint lx = gl_LaunchIDEXT.x;
+ uint ly = gl_LaunchIDEXT.y;
+ uint sx = gl_LaunchSizeEXT.x;
+ uint sy = gl_LaunchSizeEXT.y;
+ traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenSBTlayout430.rgen b/Test/spv.ext.RayGenSBTlayout430.rgen
new file mode 100644
index 0000000..bd308b4
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayout430.rgen
@@ -0,0 +1,27 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT, std430) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+ int i;
+ uvec2 aHandle32;
+ uint64_t aHandle64;
+ vec2 arr[2];
+ float a;
+ vec3 arr3[2];
+ float packme;
+ vec2 b;
+ float c;
+};
+void main()
+{
+ uint lx = gl_LaunchIDEXT.x;
+ uint ly = gl_LaunchIDEXT.y;
+ uint sx = gl_LaunchSizeEXT.x;
+ uint sy = gl_LaunchSizeEXT.y;
+ traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenSBTlayoutscalar.rgen b/Test/spv.ext.RayGenSBTlayoutscalar.rgen
new file mode 100644
index 0000000..16bcb13
--- /dev/null
+++ b/Test/spv.ext.RayGenSBTlayoutscalar.rgen
@@ -0,0 +1,28 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+#extension GL_EXT_scalar_block_layout : enable
+layout(location = 1) rayPayloadEXT vec4 payload;
+layout(shaderRecordEXT, scalar) buffer block
+{
+ vec3 dir;
+ vec3 origin;
+ int i;
+ uvec2 aHandle32;
+ uint64_t aHandle64;
+ vec2 arr[2];
+ float a;
+ vec3 arr3[2];
+ float packme;
+ vec2 b;
+ float c;
+};
+void main()
+{
+ uint lx = gl_LaunchIDEXT.x;
+ uint ly = gl_LaunchIDEXT.y;
+ uint sx = gl_LaunchSizeEXT.x;
+ uint sy = gl_LaunchSizeEXT.y;
+ traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+}
diff --git a/Test/spv.ext.RayGenShader.rgen b/Test/spv.ext.RayGenShader.rgen
index 9fedf3a..e9eb2cb 100644
--- a/Test/spv.ext.RayGenShader.rgen
+++ b/Test/spv.ext.RayGenShader.rgen
@@ -4,7 +4,7 @@
layout(binding = 0) uniform accelerationStructureEXT accEXT0;
layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1; // Unused
layout(binding = 2, r32ui) shadercallcoherent uniform uimage2D imageu;
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
layout(shaderRecordEXT) buffer block
{
vec3 dir;
diff --git a/Test/spv.ext.RayGenShader11.rgen b/Test/spv.ext.RayGenShader11.rgen
index 4817026..50853d4 100644
--- a/Test/spv.ext.RayGenShader11.rgen
+++ b/Test/spv.ext.RayGenShader11.rgen
@@ -1,7 +1,7 @@
#version 460
#extension GL_EXT_ray_tracing : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
layout(shaderRecordEXT) buffer block
{
vec3 dir;
diff --git a/Test/spv.ext.RayGenShaderArray.rgen b/Test/spv.ext.RayGenShaderArray.rgen
index d3f99de..66286d9 100644
--- a/Test/spv.ext.RayGenShaderArray.rgen
+++ b/Test/spv.ext.RayGenShaderArray.rgen
@@ -1,14 +1,17 @@
#version 460
#extension GL_EXT_ray_tracing : enable
#extension GL_EXT_nonuniform_qualifier : enable
+#extension GL_ARB_gpu_shader_int64 : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT0[];
layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1[2];
-layout(location = 0) rayPayloadEXT vec4 payload;
+layout(location = 1) rayPayloadEXT vec4 payload;
layout(shaderRecordEXT) buffer block
{
vec3 dir;
vec3 origin;
int i;
+ uvec2 aHandle32;
+ uint64_t aHandle64;
};
void main()
{
@@ -19,4 +22,6 @@
traceRayEXT(accEXT0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
traceRayEXT(accEXT1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
traceRayEXT(accEXT0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
+ traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1);
}
diff --git a/Test/spv.ext.RayGenShader_Errors.rgen b/Test/spv.ext.RayGenShader_Errors.rgen
index 3498342..107df0f 100644
--- a/Test/spv.ext.RayGenShader_Errors.rgen
+++ b/Test/spv.ext.RayGenShader_Errors.rgen
@@ -20,7 +20,7 @@
};
void main()
{
- accelerationStructureEXT a = 0;
+ accelerationStructureEXT a = accelerationStructureEXT(c);
int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage
int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage
int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage
@@ -36,7 +36,7 @@
float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage
int e14 = gl_RayFlagsSkipAABBEXT; // ERROR, unsupported builtin in stage
reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage
- ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage
- terminateRayEXT(); // ERROR, unsupported builtin in stage
- d = 1.0f; // ERROR, can't modify shaderRecordEXT block
+ ignoreIntersectionEXT; // ERROR, unsupported builtin in stage
+ terminateRayEXT; // ERROR, unsupported builtin in stage
+ d = 1.0f; // ERROR, can't modify shaderRecordEXT block
}