Zero out the hit stride for miss SBT tests
authorEric Werness <ewerness@nvidia.com>
Tue, 24 Nov 2020 20:40:44 +0000 (12:40 -0800)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 26 Nov 2020 17:35:11 +0000 (12:35 -0500)
The test was relying on a zero sbtRecordStride to not index the hit
groups, but that's only multiplied by the geometryIndex, not the
instanceShaderBindingTableRecordOffset, causing the hit group to
index out of bounds on the miss test

Affects:

dEQP-VK.ray_tracing_pipeline.shader_binding_table.*miss*

Components: Vulkan
VK-GL-CTS issue: 2444

Change-Id: I01868190a4901f87a5c536b70ae9ee0989280b47

external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingShaderBindingTableTests.cpp

index 96e6201..0901c23 100644 (file)
@@ -486,7 +486,7 @@ void CheckerboardConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                                missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, shaderCount[STT_MISS], 0u, 0u, MemoryRequirement::Any, 0u, shaderBindingTableOffset);
 
                        raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
-                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
                        if (testParams.shaderRecordPresent)
                                missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), shaderBindingTableOffset), shaderRecordAlignedSize, shaderCount[STT_MISS] * shaderRecordAlignedSize);
                        else