diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 3375ec4fa..8355d833b 100755 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -565,6 +565,7 @@ Id Builder::makeAccelerationStructureNVType() Instruction *type; if (groupedTypes[OpTypeAccelerationStructureNV].size() == 0) { type = new Instruction(getUniqueId(), NoType, OpTypeAccelerationStructureNV); + groupedTypes[OpTypeAccelerationStructureNV].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); } else { diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out index db6ecfc95..7e15f2699 100644 --- a/Test/baseResults/spv.RayGenShader.rgen.out +++ b/Test/baseResults/spv.RayGenShader.rgen.out @@ -1,7 +1,7 @@ spv.RayGenShader.rgen // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 60 +// Id's are bound by 61 Capability RayTracingNV Extension "SPV_NV_ray_tracing" @@ -17,21 +17,24 @@ spv.RayGenShader.rgen Name 20 "sx" Name 21 "gl_LaunchSizeNV" Name 24 "sy" - Name 29 "accNV" + Name 29 "accNV0" Name 48 "block" MemberName 48(block) 0 "arr" MemberName 48(block) 1 "pad" Name 50 "" Name 56 "payload" + Name 60 "accNV1" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV - Decorate 29(accNV) DescriptorSet 0 - Decorate 29(accNV) Binding 0 + Decorate 29(accNV0) DescriptorSet 0 + Decorate 29(accNV0) Binding 0 Decorate 46 ArrayStride 4 MemberDecorate 48(block) 0 Offset 0 MemberDecorate 48(block) 1 Offset 16 Decorate 48(block) BufferBlock Decorate 56(payload) Location 0 + Decorate 60(accNV1) DescriptorSet 0 + Decorate 60(accNV1) Binding 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -45,7 +48,7 @@ spv.RayGenShader.rgen 21(gl_LaunchSizeNV): 10(ptr) Variable Input 27: TypeAccelerationStructureNV 28: TypePointer UniformConstant 27 - 29(accNV): 28(ptr) Variable UniformConstant + 29(accNV0): 28(ptr) Variable UniformConstant 35: TypeFloat 32 36: TypeVector 35(float) 3 37: 35(float) Constant 0 @@ -68,6 +71,7 @@ spv.RayGenShader.rgen 55: TypePointer RayPayloadNV 47(fvec4) 56(payload): 55(ptr) Variable RayPayloadNV 58: TypePointer ShaderRecordBufferNV 47(fvec4) + 60(accNV1): 28(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function @@ -86,7 +90,7 @@ spv.RayGenShader.rgen 25: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 17 26: 6(int) Load 25 Store 24(sy) 26 - 30: 27 Load 29(accNV) + 30: 27 Load 29(accNV0) 31: 6(int) Load 8(lx) 32: 6(int) Load 16(ly) 33: 6(int) Load 20(sx) diff --git a/Test/spv.RayGenShader.rgen b/Test/spv.RayGenShader.rgen index 68f92b22d..c36cae46a 100644 --- a/Test/spv.RayGenShader.rgen +++ b/Test/spv.RayGenShader.rgen @@ -1,6 +1,7 @@ #version 460 #extension GL_NV_ray_tracing : enable -layout(binding = 0, set = 0) uniform accelerationStructureNV accNV; +layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0; +layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1; // Unused layout(location = 0) rayPayloadNV vec4 payload; layout(shaderRecordNV) buffer block { @@ -13,7 +14,7 @@ void main() uint ly = gl_LaunchIDNV.y; uint sx = gl_LaunchSizeNV.x; uint sy = gl_LaunchSizeNV.y; - traceNV(accNV, lx, ly, sx, sy, 0u, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 1); + traceNV(accNV0, lx, ly, sx, sy, 0u, vec3(0.0f), 0.5f, vec3(1.0f), 0.75f, 1); arr[3] = 1.0f; pad = payload; }