@@ -786,10 +786,10 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
786786 {
787787 const auto & Vertices = TestingConstants::TriangleClosestHit::Vertices;
788788
789- VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
790- VkAccelerationStructureGeometryKHR Geometry = {};
791- VkAccelerationStructureBuildRangeInfoKHR Offset = {1 , 0 , 0 , 0 };
792- VkAccelerationStructureBuildRangeInfoKHR const * OffsetPtr = &Offset ;
789+ VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
790+ VkAccelerationStructureGeometryKHR Geometry = {};
791+ VkAccelerationStructureBuildRangeInfoKHR BuildRange = {1 , 0 , 0 , 0 };
792+ VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {&BuildRange} ;
793793
794794 Geometry.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
795795 Geometry.flags = VK_GEOMETRY_OPAQUE_BIT_KHR;
@@ -800,7 +800,7 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
800800 Geometry.geometry .triangles .vertexStride = sizeof (Vertices[0 ]);
801801 Geometry.geometry .triangles .indexType = VK_INDEX_TYPE_NONE_KHR;
802802
803- CreateBLAS (Ctx, &Geometry, OffsetPtr , 1 , Ctx.BLAS );
803+ CreateBLAS (Ctx, &Geometry, &BuildRange , 1 , Ctx.BLAS );
804804 CreateTLAS (Ctx, 1 , Ctx.TLAS );
805805 CreateRTBuffers (Ctx, sizeof (Vertices), 0 , 1 , 1 , 1 );
806806
@@ -818,7 +818,7 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
818818 ASBuildInfo.pGeometries = &Geometry;
819819 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
820820
821- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
821+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
822822
823823 VkAccelerationStructureInstanceKHR InstanceData = {};
824824 InstanceData.instanceShaderBindingTableRecordOffset = 0 ;
@@ -847,7 +847,7 @@ void RayTracingTriangleClosestHitReferenceVk(ISwapChain* pSwapChain)
847847 ASBuildInfo.pGeometries = &Geometry;
848848 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
849849
850- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
850+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
851851 }
852852
853853 Ctx.ClearRenderTarget (pTestingSwapChainVk);
@@ -943,10 +943,10 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
943943 {
944944 const auto & Vertices = TestingConstants::TriangleAnyHit::Vertices;
945945
946- VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
947- VkAccelerationStructureBuildRangeInfoKHR Offset = {3 , 0 , 0 , 0 };
948- VkAccelerationStructureGeometryKHR Geometry = {};
949- VkAccelerationStructureBuildRangeInfoKHR const * OffsetPtr = &Offset ;
946+ VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
947+ VkAccelerationStructureBuildRangeInfoKHR BuildRange = {3 , 0 , 0 , 0 };
948+ VkAccelerationStructureGeometryKHR Geometry = {};
949+ VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {&BuildRange} ;
950950
951951 Geometry.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
952952 Geometry.flags = 0 ;
@@ -957,7 +957,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
957957 Geometry.geometry .triangles .maxVertex = _countof (Vertices) - 1 ;
958958 Geometry.geometry .triangles .indexType = VK_INDEX_TYPE_NONE_KHR;
959959
960- CreateBLAS (Ctx, &Geometry, OffsetPtr , 1 , Ctx.BLAS );
960+ CreateBLAS (Ctx, &Geometry, &BuildRange , 1 , Ctx.BLAS );
961961 CreateTLAS (Ctx, 1 , Ctx.TLAS );
962962 CreateRTBuffers (Ctx, sizeof (Vertices), 0 , 1 , 1 , 1 );
963963
@@ -975,7 +975,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
975975 ASBuildInfo.pGeometries = &Geometry;
976976 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
977977
978- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
978+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
979979
980980 VkAccelerationStructureInstanceKHR InstanceData = {};
981981 InstanceData.instanceShaderBindingTableRecordOffset = 0 ;
@@ -995,7 +995,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
995995 Geometry.geometry .instances .arrayOfPointers = VK_FALSE;
996996 Geometry.geometry .instances .data .deviceAddress = Ctx.vkInstanceBufferAddress ;
997997
998- Offset .primitiveCount = 1 ;
998+ BuildRange .primitiveCount = 1 ;
999999
10001000 ASBuildInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
10011001 ASBuildInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR;
@@ -1006,7 +1006,7 @@ void RayTracingTriangleAnyHitReferenceVk(ISwapChain* pSwapChain)
10061006 ASBuildInfo.pGeometries = &Geometry;
10071007 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
10081008
1009- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
1009+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
10101010 }
10111011
10121012 Ctx.ClearRenderTarget (pTestingSwapChainVk);
@@ -1102,10 +1102,10 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11021102 {
11031103 const auto & Boxes = TestingConstants::ProceduralIntersection::Boxes;
11041104
1105- VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1106- VkAccelerationStructureBuildRangeInfoKHR Offset = {1 , 0 , 0 , 0 };
1107- VkAccelerationStructureGeometryKHR Geometry = {};
1108- VkAccelerationStructureBuildRangeInfoKHR const * OffsetPtr = &Offset ;
1105+ VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1106+ VkAccelerationStructureBuildRangeInfoKHR BuildRange = {1 , 0 , 0 , 0 };
1107+ VkAccelerationStructureGeometryKHR Geometry = {};
1108+ VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {&BuildRange} ;
11091109
11101110 Geometry.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
11111111 Geometry.flags = VK_GEOMETRY_OPAQUE_BIT_KHR;
@@ -1114,7 +1114,7 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11141114 Geometry.geometry .aabbs .pNext = nullptr ;
11151115 Geometry.geometry .aabbs .stride = sizeof (float3) * 2 ;
11161116
1117- CreateBLAS (Ctx, &Geometry, OffsetPtr , 1 , Ctx.BLAS );
1117+ CreateBLAS (Ctx, &Geometry, &BuildRange , 1 , Ctx.BLAS );
11181118 CreateTLAS (Ctx, 1 , Ctx.TLAS );
11191119 CreateRTBuffers (Ctx, sizeof (Boxes), 0 , 1 , 1 , 1 );
11201120
@@ -1132,7 +1132,7 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11321132 ASBuildInfo.pGeometries = &Geometry;
11331133 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
11341134
1135- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
1135+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
11361136
11371137 VkAccelerationStructureInstanceKHR InstanceData = {};
11381138 InstanceData.instanceShaderBindingTableRecordOffset = 0 ;
@@ -1161,7 +1161,7 @@ void RayTracingProceduralIntersectionReferenceVk(ISwapChain* pSwapChain)
11611161 ASBuildInfo.pGeometries = &Geometry;
11621162 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
11631163
1164- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
1164+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
11651165 }
11661166
11671167 Ctx.ClearRenderTarget (pTestingSwapChainVk);
@@ -1271,11 +1271,11 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
12711271 const auto & Vertices = TestingConstants::MultiGeometry::Vertices;
12721272 const auto & Indices = TestingConstants::MultiGeometry::Indices;
12731273
1274- VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1275- VkAccelerationStructureBuildRangeInfoKHR Offsets [3 ] = {};
1276- VkAccelerationStructureGeometryKHR Geometries[3 ] = {};
1277- VkAccelerationStructureBuildRangeInfoKHR const * OffsetPtr = Offsets ;
1278- static_assert (_countof (Offsets ) == _countof (Geometries), " size mismatch" );
1274+ VkAccelerationStructureBuildGeometryInfoKHR ASBuildInfo = {};
1275+ VkAccelerationStructureBuildRangeInfoKHR BuildRanges [3 ] = {};
1276+ VkAccelerationStructureGeometryKHR Geometries[3 ] = {};
1277+ VkAccelerationStructureBuildRangeInfoKHR* RangeInfos[] = {BuildRanges} ;
1278+ static_assert (_countof (BuildRanges ) == _countof (Geometries), " size mismatch" );
12791279 static_assert (GeometryCount == _countof (Geometries), " size mismatch" );
12801280
12811281 Geometries[0 ].sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
@@ -1305,11 +1305,11 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13051305 Geometries[2 ].geometry .triangles .maxVertex = (_countof (Primitives) - PrimitiveOffsets[2 ]) * 3 - 1 ;
13061306 Geometries[2 ].geometry .triangles .indexType = VK_INDEX_TYPE_UINT32;
13071307
1308- Offsets [0 ].primitiveCount = PrimitiveOffsets[1 ];
1309- Offsets [1 ].primitiveCount = PrimitiveOffsets[2 ] - PrimitiveOffsets[1 ];
1310- Offsets [2 ].primitiveCount = _countof (Primitives) - PrimitiveOffsets[2 ];
1308+ BuildRanges [0 ].primitiveCount = PrimitiveOffsets[1 ];
1309+ BuildRanges [1 ].primitiveCount = PrimitiveOffsets[2 ] - PrimitiveOffsets[1 ];
1310+ BuildRanges [2 ].primitiveCount = _countof (Primitives) - PrimitiveOffsets[2 ];
13111311
1312- CreateBLAS (Ctx, Geometries, OffsetPtr , _countof (Geometries), Ctx.BLAS );
1312+ CreateBLAS (Ctx, Geometries, BuildRanges , _countof (Geometries), Ctx.BLAS );
13131313 CreateTLAS (Ctx, InstanceCount, Ctx.TLAS );
13141314 CreateRTBuffers (Ctx, sizeof (Vertices), sizeof (Indices), InstanceCount, 1 , HitGroupCount, TestingConstants::MultiGeometry::ShaderRecordSize);
13151315
@@ -1324,10 +1324,6 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13241324 Geometries[2 ].geometry .triangles .vertexData .deviceAddress = Ctx.vkVertexBufferAddress ;
13251325 Geometries[2 ].geometry .triangles .indexData .deviceAddress = Ctx.vkIndexBufferAddress + PrimitiveOffsets[2 ] * sizeof (uint) * 3 ;
13261326
1327- Offsets[0 ].primitiveCount = PrimitiveOffsets[1 ];
1328- Offsets[1 ].primitiveCount = PrimitiveOffsets[2 ] - PrimitiveOffsets[1 ];
1329- Offsets[2 ].primitiveCount = _countof (Primitives) - PrimitiveOffsets[2 ];
1330-
13311327 ASBuildInfo.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR;
13321328 ASBuildInfo.type = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR;
13331329 ASBuildInfo.mode = VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR;
@@ -1337,7 +1333,7 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13371333 ASBuildInfo.pGeometries = Geometries;
13381334 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
13391335
1340- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
1336+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
13411337
13421338 VkAccelerationStructureInstanceKHR InstanceData[2 ] = {};
13431339 static_assert (_countof (InstanceData) == InstanceCount, " size mismatch" );
@@ -1362,11 +1358,11 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13621358 vkCmdUpdateBuffer (Ctx.vkCmdBuffer , Ctx.vkInstanceBuffer , 0 , sizeof (InstanceData), InstanceData);
13631359 AccelStructBarrier (Ctx);
13641360
1365- VkAccelerationStructureBuildRangeInfoKHR InstOffsets = {};
1366- VkAccelerationStructureGeometryKHR Instances = {};
1361+ VkAccelerationStructureBuildRangeInfoKHR InstBuildRange = {};
1362+ VkAccelerationStructureGeometryKHR Instances = {};
13671363
1368- OffsetPtr = &InstOffsets ;
1369- InstOffsets .primitiveCount = _countof (InstanceData);
1364+ RangeInfos[ 0 ] = &InstBuildRange ;
1365+ InstBuildRange .primitiveCount = _countof (InstanceData);
13701366
13711367 Instances.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR;
13721368 Instances.geometryType = VK_GEOMETRY_TYPE_INSTANCES_KHR;
@@ -1383,7 +1379,7 @@ void RayTracingMultiGeometryReferenceVk(ISwapChain* pSwapChain)
13831379 ASBuildInfo.pGeometries = &Instances;
13841380 ASBuildInfo.scratchData .deviceAddress = Ctx.vkScratchBufferAddress ;
13851381
1386- vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , 1 , &ASBuildInfo, &OffsetPtr );
1382+ vkCmdBuildAccelerationStructuresKHR (Ctx.vkCmdBuffer , _countof (RangeInfos) , &ASBuildInfo, RangeInfos );
13871383 }
13881384
13891385 ClearRenderTarget (Ctx, pTestingSwapChainVk);
0 commit comments