Address validation errors reported by validation layers with RT support.
authorDominik Witczak <dominik.witczak@amd.com>
Fri, 21 Aug 2020 12:03:23 +0000 (14:03 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 27 Aug 2020 07:13:49 +0000 (03:13 -0400)
Changed tests:
* dEQP-VK.ray_tracing_pipeline.misc.*
* dEQP-VK.ray_tracing_pipeline.callable_shader.*
* dEQP-VK.ray_tracing_pipeline.capture_replay.*
* dEQP-VK.ray_tracing_pipeline.shader_binding_table.*
* dEQP-VK.ray_tracing_pipeline.traversal_control.*
* dEQP-VK.ray_tracing_pipeline.indirect.*
* dEQP-VK.ray_tracing_pipeline.watertightness.*
* dEQP-VK.ray_tracing_pipeline.memguarantee.*
* dEQP-VK.ray_query.builtin.*
* dEQP-VK.ray_query.ray_flags.*
* dEQP-VK.ray_query.traversal_control.*
* dEQP-VK.ray_query.watertightness.*

Components: Vulkan
VK-GL-CTS issue: 2444

Change-Id: I41d047dcfddb41f4fe96017a5e82aa0b4e1470d6

17 files changed:
external/vulkancts/framework/vulkan/vkRayTracingUtil.cpp
external/vulkancts/modules/vulkan/binding_model/vktBindingDescriptorSetRandomTests.cpp
external/vulkancts/modules/vulkan/ray_query/vktRayQueryAccelerationStructuresTests.cpp
external/vulkancts/modules/vulkan/ray_query/vktRayQueryBuiltinTests.cpp
external/vulkancts/modules/vulkan/ray_query/vktRayQueryCullRayFlagsTests.cpp
external/vulkancts/modules/vulkan/ray_query/vktRayQueryTraversalControlTests.cpp
external/vulkancts/modules/vulkan/ray_query/vktRayQueryWatertightnessTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingBuildIndirectTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingBuiltinTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingCallableShadersTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingCaptureReplayTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingMemGuaranteeTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingMiscTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingNullASTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingShaderBindingTableTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingTraversalControlTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingWatertightnessTests.cpp

index 235c704..3845c20 100644 (file)
@@ -2335,8 +2335,12 @@ de::MovePtr<BufferWithMemory> RayTracingPipeline::createShaderBindingTable (cons
                DE_NULL,                                                                                                                // const void*          pNext;
                deUint64(opaqueCaptureAddress)                                                                  // deUint64                     opaqueCaptureAddress;
        };
+
        if (opaqueCaptureAddress != 0u)
+       {
                sbtCreateInfo.pNext = &sbtCaptureAddressInfo;
+               sbtCreateInfo.flags |= VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT;
+       }
        const MemoryRequirement                 sbtMemRequirements                                              = MemoryRequirement::HostVisible | MemoryRequirement::Coherent | MemoryRequirement::DeviceAddress | additionalMemoryRequirement;
        de::MovePtr<BufferWithMemory>   sbtBuffer                                                               = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vk, device, allocator, sbtCreateInfo, sbtMemRequirements));
        vk::Allocation&                                 sbtAlloc                                                                = sbtBuffer->getAllocation();
index ee83530..b532a41 100644 (file)
@@ -2326,7 +2326,7 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                pipeline = rayTracingPipeline->createPipeline(vk, device, *pipelineLayout);
 
                raygenShaderBindingTable                                = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
-               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        }
        else if (m_data.stage == STAGE_INTERSECT)
        {
@@ -2338,10 +2338,10 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                pipeline = rayTracingPipeline->createPipeline(vk, device, *pipelineLayout);
 
                raygenShaderBindingTable                                = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
-               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
 
                hitShaderBindingTable                                   = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
-               hitShaderBindingTableRegion                             = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               hitShaderBindingTableRegion                             = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        }
        else if (m_data.stage == STAGE_ANY_HIT)
        {
@@ -2353,10 +2353,10 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                pipeline = rayTracingPipeline->createPipeline(vk, device, *pipelineLayout);
 
                raygenShaderBindingTable                                = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
-               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
 
                hitShaderBindingTable                                   = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
-               hitShaderBindingTableRegion                             = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               hitShaderBindingTableRegion                             = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        }
        else if (m_data.stage == STAGE_CLOSEST_HIT)
        {
@@ -2368,10 +2368,10 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                pipeline = rayTracingPipeline->createPipeline(vk, device, *pipelineLayout);
 
                raygenShaderBindingTable                                = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
-               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
 
                hitShaderBindingTable                                   = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
-               hitShaderBindingTableRegion                             = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               hitShaderBindingTableRegion                             = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        }
        else if (m_data.stage == STAGE_MISS)
        {
@@ -2383,10 +2383,10 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                pipeline = rayTracingPipeline->createPipeline(vk, device, *pipelineLayout);
 
                raygenShaderBindingTable                                = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
-               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
 
                missShaderBindingTable                                  = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
-               missShaderBindingTableRegion                    = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               missShaderBindingTableRegion                    = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        }
        else if (m_data.stage == STAGE_CALLABLE)
        {
@@ -2398,10 +2398,10 @@ tcu::TestStatus DescriptorSetRandomTestInstance::iterate (void)
                pipeline = rayTracingPipeline->createPipeline(vk, device, *pipelineLayout);
 
                raygenShaderBindingTable                                = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 0, 1);
-               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               raygenShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
 
                callableShaderBindingTable                              = rayTracingPipeline->createShaderBindingTable(vk, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
-               callableShaderBindingTableRegion                = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               callableShaderBindingTableRegion                = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vk, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        }
        else
        {
index 0befbe1..9b061ad 100644 (file)
@@ -1052,10 +1052,10 @@ void RayTracingConfiguration::fillCommandBuffer (Context&                                               context,
        vkd.cmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *rtPipeline);
 
        deUint32                                                        shaderGroupHandleSize                           = getShaderGroupHandleSize(vki, physicalDevice);
-       VkStridedDeviceAddressRegionKHR         raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != DE_NULL             ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)          : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != DE_NULL                ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)                     : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         missShaderBindingTableRegion            = missShaderBindingTable.get() != DE_NULL               ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)            : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         callableShaderBindingTableRegion        = callableShaderBindingTable.get() != DE_NULL   ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)        : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != DE_NULL             ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)              : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != DE_NULL                ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)                 : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         missShaderBindingTableRegion            = missShaderBindingTable.get() != DE_NULL               ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)                : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         callableShaderBindingTableRegion        = callableShaderBindingTable.get() != DE_NULL   ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)    : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
        cmdTraceRays(vkd,
                commandBuffer,
index 72f9922..136e8b8 100644 (file)
@@ -1513,10 +1513,10 @@ namespace vkt
                                m_hitShaderBindingTable = createShaderBindingTable(vki, vkd, device, physicalDevice, *m_pipeline, allocator, m_rayTracingPipeline, m_hitShaderGroup);
                                m_callableShaderBindingTable = createShaderBindingTable(vki, vkd, device, physicalDevice, *m_pipeline, allocator, m_rayTracingPipeline, m_callableShaderGroup);
 
-                               m_raygenShaderBindingTableRegion = m_raygenShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-                               m_missShaderBindingTableRegion = m_missShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-                               m_hitShaderBindingTableRegion = m_hitShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-                               m_callableShaderBindingTableRegion = m_callableShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+                               m_raygenShaderBindingTableRegion = m_raygenShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+                               m_missShaderBindingTableRegion = m_missShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+                               m_hitShaderBindingTableRegion = m_hitShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+                               m_callableShaderBindingTableRegion = m_callableShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, m_callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
                        }
 
                        void RayTracingConfiguration::fillCommandBuffer(Context& context,
index 152dfe0..e90195a 100644 (file)
@@ -1092,10 +1092,10 @@ void RayTracingConfiguration::fillCommandBuffer (Context&                                                       context,
        vkd.cmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *rtPipeline);
 
        deUint32                                                        shaderGroupHandleSize                           = getShaderGroupHandleSize(vki, physicalDevice);
-       VkStridedDeviceAddressRegionKHR         raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != DE_NULL             ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)          : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != DE_NULL                ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)                     : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         missShaderBindingTableRegion            = missShaderBindingTable.get() != DE_NULL               ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)            : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         callableShaderBindingTableRegion        = callableShaderBindingTable.get() != DE_NULL   ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)        : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != DE_NULL             ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)              : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != DE_NULL                ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)                 : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         missShaderBindingTableRegion            = missShaderBindingTable.get() != DE_NULL               ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)                : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         callableShaderBindingTableRegion        = callableShaderBindingTable.get() != DE_NULL   ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)    : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
        cmdTraceRays(vkd,
                commandBuffer,
index 1482373..26065c8 100644 (file)
@@ -1068,10 +1068,10 @@ void RayTracingConfiguration::fillCommandBuffer (Context&                                               context,
        vkd.cmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, *rtPipeline);
 
        deUint32                                                        shaderGroupHandleSize                           = getShaderGroupHandleSize(vki, physicalDevice);
-       VkStridedDeviceAddressRegionKHR         raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != DE_NULL             ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)          : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != DE_NULL                ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)                     : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         missShaderBindingTableRegion            = missShaderBindingTable.get() != DE_NULL               ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)            : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       VkStridedDeviceAddressRegionKHR         callableShaderBindingTableRegion        = callableShaderBindingTable.get() != DE_NULL   ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize)        : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != DE_NULL             ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)              : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != DE_NULL                ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)                 : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         missShaderBindingTableRegion            = missShaderBindingTable.get() != DE_NULL               ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)                : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       VkStridedDeviceAddressRegionKHR         callableShaderBindingTableRegion        = callableShaderBindingTable.get() != DE_NULL   ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize)    : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
        cmdTraceRays(vkd,
                commandBuffer,
index 42d086a..184f1a6 100644 (file)
@@ -175,7 +175,7 @@ VkStridedDeviceAddressRegionKHR makeStridedDeviceAddressRegion (const DeviceInte
 {
        const VkDeviceSize sizeFixed = ((buffer == DE_NULL) ? 0ull : size);
 
-       return makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, buffer, 0), 0, sizeFixed);
+       return makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, buffer, 0), sizeFixed, sizeFixed);
 }
 
 VkImageCreateInfo makeImageCreateInfo (VkFormat                                format,
index d154904..351d681 100644 (file)
@@ -438,8 +438,8 @@ de::MovePtr<BufferWithMemory> RayTracingBuildIndirectTestInstance::prepareBuffer
        const deUint32                                          shaderGroupHandleSize                           = getShaderGroupSize(vki, physicalDevice);
        const deUint32                                          shaderGroupBaseAlignment                        = getShaderGroupBaseAlignment(vki, physicalDevice);
 
-       const VkBufferCreateInfo                        bufferCreateInfo                                        = makeBufferCreateInfo(bufferSizeBytes, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT);
-       de::MovePtr<BufferWithMemory>           buffer                                                          = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, bufferCreateInfo, MemoryRequirement::HostVisible));
+       const VkBufferCreateInfo                        bufferCreateInfo                                        = makeBufferCreateInfo(bufferSizeBytes, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT);
+       de::MovePtr<BufferWithMemory>           buffer                                                          = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, allocator, bufferCreateInfo, MemoryRequirement::HostVisible | MemoryRequirement::DeviceAddress));
 
        const Move<VkDescriptorSetLayout>       descriptorSetLayout                                     = DescriptorSetLayoutBuilder()
                                                                                                                                                                        .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, ALL_RAY_TRACING_STAGES)
@@ -521,9 +521,9 @@ de::MovePtr<BufferWithMemory> RayTracingBuildIndirectTestInstance::runTest (cons
        const de::MovePtr<BufferWithMemory>     raygenShaderBindingTable                        = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, RAYGEN_GROUP, 1u);
        const de::MovePtr<BufferWithMemory>     missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, MISS_GROUP, 1u);
        const de::MovePtr<BufferWithMemory>     hitShaderBindingTable                           = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, HIT_GROUP, 1u);
-       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        const VkStridedDeviceAddressRegionKHR   callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
        const VkImageCreateInfo                         imageCreateInfo                                         = makeImageCreateInfo(m_data.width, m_data.height, m_data.depth, format);
index 19dbc2a..92c1396 100644 (file)
@@ -1681,10 +1681,10 @@ de::MovePtr<BufferWithMemory> RayTracingBuiltinLaunchTestInstance::runTest (void
        const de::MovePtr<BufferWithMemory>     hitShaderBindingTable                           = createShaderBindingTable(vki, vkd, device, physicalDevice, *pipeline, allocator, rayTracingPipeline, m_hitShaderGroup);
        const de::MovePtr<BufferWithMemory>     callableShaderBindingTable                      = createShaderBindingTable(vki, vkd, device, physicalDevice, *pipeline, allocator, rayTracingPipeline, m_callableShaderGroup);
 
-       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = missShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       const VkStridedDeviceAddressRegionKHR   callableShaderBindingTableRegion        = callableShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = missShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       const VkStridedDeviceAddressRegionKHR   callableShaderBindingTableRegion        = callableShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
        const VkImageCreateInfo                         imageCreateInfo                                         = makeImageCreateInfo(m_data.width, m_data.height, m_data.depth, format);
        const VkImageSubresourceRange           imageSubresourceRange                           = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0, 1u);
index 4ef39bb..4a68706 100644 (file)
@@ -310,10 +310,10 @@ void SingleSquareConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                        missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
                        callableShaderBindingTable                      = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 3, 1);
 
-                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        break;
                }
                case CSTT_RGEN_CALL_CALL:
@@ -323,9 +323,9 @@ void SingleSquareConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                        missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
                        callableShaderBindingTable                      = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 3, 2);
 
-                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, 2*shaderGroupHandleSize);
                        break;
                }
@@ -336,10 +336,10 @@ void SingleSquareConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                        missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
                        callableShaderBindingTable                      = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 3, 1);
 
-                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        break;
                }
                case CSTT_RGEN_MULTICALL:
@@ -349,9 +349,9 @@ void SingleSquareConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                        missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
                        callableShaderBindingTable                      = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 3, 4);
 
-                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, 4*shaderGroupHandleSize);
                        break;
                }
index 0179a4b..fc17b01 100644 (file)
@@ -378,8 +378,8 @@ void TestShaderBindingTablesConfiguration::initShaderBindingTables (de::MovePtr<
                pipelineData.pipelines[0].hitShaderBindingTable                                 = rayTracingPipeline->createShaderBindingTable(vkd, device, *(pipelineData.pipelines[0].pipeline), pipelineData.allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, RTCR_SHADER_COUNT, VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, MemoryRequirement::DeviceAddress, 0u);
                pipelineData.pipelines[0].descriptorSet                                                 = makeDescriptorSet(vkd, device, pipelineData.descriptorPool, pipelineData.descriptorSetLayout);
                pipelineData.pipelines[0].uniformBuffer                                                 = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, pipelineData.allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
-               pipelineData.pipelines[0].raygenShaderBindingTableRegion                = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-               pipelineData.pipelines[0].missShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+               pipelineData.pipelines[0].raygenShaderBindingTableRegion                = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+               pipelineData.pipelines[0].missShaderBindingTableRegion                  = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                pipelineData.pipelines[0].hitShaderBindingTableRegion                   = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].hitShaderBindingTable->get(), 0), shaderGroupHandleSize, RTCR_SHADER_COUNT * shaderGroupHandleSize);
                pipelineData.pipelines[0].callableShaderBindingTableRegion              = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
@@ -408,8 +408,8 @@ void TestShaderBindingTablesConfiguration::initShaderBindingTables (de::MovePtr<
                        pipelineData.pipelines[0].hitShaderBindingTable                         = rayTracingPipeline->createShaderBindingTable(vkd, device, *(pipelineData.pipelines[0].pipeline), pipelineData.allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, RTCR_SHADER_COUNT, 0u, 0u, MemoryRequirement::Any, sbtSavedHitAddress);
                        pipelineData.pipelines[0].descriptorSet                                         = makeDescriptorSet(vkd, device, pipelineData.descriptorPool, pipelineData.descriptorSetLayout);
                        pipelineData.pipelines[0].uniformBuffer                                         = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, pipelineData.allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
-                       pipelineData.pipelines[0].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       pipelineData.pipelines[0].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       pipelineData.pipelines[0].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       pipelineData.pipelines[0].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        pipelineData.pipelines[0].hitShaderBindingTableRegion           = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].hitShaderBindingTable->get(), 0), shaderGroupHandleSize, RTCR_SHADER_COUNT * shaderGroupHandleSize);
                        pipelineData.pipelines[0].callableShaderBindingTableRegion      = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
@@ -421,8 +421,8 @@ void TestShaderBindingTablesConfiguration::initShaderBindingTables (de::MovePtr<
                        pipelineData.pipelines[0].hitShaderBindingTable                         = rayTracingPipeline->createShaderBindingTable(vkd, device, *(pipelineData.pipelines[0].pipeline), pipelineData.allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, RTCR_SHADER_COUNT, 0u, 0u, MemoryRequirement::Any, sbtSavedHitAddress);
                        pipelineData.pipelines[0].descriptorSet                                         = makeDescriptorSet(vkd, device, pipelineData.descriptorPool, pipelineData.descriptorSetLayout);
                        pipelineData.pipelines[0].uniformBuffer                                         = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, pipelineData.allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
-                       pipelineData.pipelines[0].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       pipelineData.pipelines[0].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       pipelineData.pipelines[0].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       pipelineData.pipelines[0].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        pipelineData.pipelines[0].hitShaderBindingTableRegion           = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].hitShaderBindingTable->get(), 0), shaderGroupHandleSize, RTCR_SHADER_COUNT * shaderGroupHandleSize);
                        pipelineData.pipelines[0].callableShaderBindingTableRegion      = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
@@ -432,8 +432,8 @@ void TestShaderBindingTablesConfiguration::initShaderBindingTables (de::MovePtr<
                        pipelineData.pipelines[1].hitShaderBindingTable                         = rayTracingPipeline->createShaderBindingTable(vkd, device, *(pipelineData.pipelines[1].pipeline), pipelineData.allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, RTCR_SHADER_COUNT, 0u, 0u, MemoryRequirement::Any, 0u);
                        pipelineData.pipelines[1].descriptorSet                                         = makeDescriptorSet(vkd, device, pipelineData.descriptorPool, pipelineData.descriptorSetLayout);
                        pipelineData.pipelines[1].uniformBuffer                                         = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, pipelineData.allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
-                       pipelineData.pipelines[1].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       pipelineData.pipelines[1].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       pipelineData.pipelines[1].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       pipelineData.pipelines[1].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        pipelineData.pipelines[1].hitShaderBindingTableRegion           = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].hitShaderBindingTable->get(), 0), shaderGroupHandleSize, RTCR_SHADER_COUNT * shaderGroupHandleSize);
                        pipelineData.pipelines[1].callableShaderBindingTableRegion      = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
@@ -445,8 +445,8 @@ void TestShaderBindingTablesConfiguration::initShaderBindingTables (de::MovePtr<
                        pipelineData.pipelines[0].hitShaderBindingTable                         = rayTracingPipeline->createShaderBindingTable(vkd, device, *(pipelineData.pipelines[0].pipeline), pipelineData.allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, RTCR_SHADER_COUNT, 0u, 0u, MemoryRequirement::Any, 0u);
                        pipelineData.pipelines[0].descriptorSet                                         = makeDescriptorSet(vkd, device, pipelineData.descriptorPool, pipelineData.descriptorSetLayout);
                        pipelineData.pipelines[0].uniformBuffer                                         = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, pipelineData.allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
-                       pipelineData.pipelines[0].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       pipelineData.pipelines[0].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       pipelineData.pipelines[0].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       pipelineData.pipelines[0].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        pipelineData.pipelines[0].hitShaderBindingTableRegion           = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].hitShaderBindingTable->get(), 0), shaderGroupHandleSize, RTCR_SHADER_COUNT * shaderGroupHandleSize);
                        pipelineData.pipelines[0].callableShaderBindingTableRegion      = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
@@ -456,8 +456,8 @@ void TestShaderBindingTablesConfiguration::initShaderBindingTables (de::MovePtr<
                        pipelineData.pipelines[1].hitShaderBindingTable                         = rayTracingPipeline->createShaderBindingTable(vkd, device, *(pipelineData.pipelines[1].pipeline), pipelineData.allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, RTCR_SHADER_COUNT, 0u, 0u, MemoryRequirement::Any, sbtSavedHitAddress);
                        pipelineData.pipelines[1].descriptorSet                                         = makeDescriptorSet(vkd, device, pipelineData.descriptorPool, pipelineData.descriptorSetLayout);
                        pipelineData.pipelines[1].uniformBuffer                                         = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, pipelineData.allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
-                       pipelineData.pipelines[1].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                       pipelineData.pipelines[1].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       pipelineData.pipelines[1].raygenShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       pipelineData.pipelines[1].missShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        pipelineData.pipelines[1].hitShaderBindingTableRegion           = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[1].hitShaderBindingTable->get(), 0), shaderGroupHandleSize, RTCR_SHADER_COUNT * shaderGroupHandleSize);
                        pipelineData.pipelines[1].callableShaderBindingTableRegion      = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
                        break;
@@ -702,9 +702,9 @@ void TestAccelerationStructuresConfiguration::initShaderBindingTables (de::MoveP
        pipelineData.pipelines[0].missShaderBindingTable                                        = rayTracingPipeline->createShaderBindingTable(vkd, device, *(pipelineData.pipelines[0].pipeline), pipelineData.allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 3, 1 );
        pipelineData.pipelines[0].descriptorSet                                                         = makeDescriptorSet(vkd, device, pipelineData.descriptorPool, pipelineData.descriptorSetLayout);
        pipelineData.pipelines[0].uniformBuffer                                                         = de::MovePtr<BufferWithMemory>(new BufferWithMemory(vkd, device, pipelineData.allocator, uniformBufferCreateInfo, MemoryRequirement::HostVisible));
-       pipelineData.pipelines[0].raygenShaderBindingTableRegion                        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       pipelineData.pipelines[0].missShaderBindingTableRegion                          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       pipelineData.pipelines[0].hitShaderBindingTableRegion                           = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+       pipelineData.pipelines[0].raygenShaderBindingTableRegion                        = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       pipelineData.pipelines[0].missShaderBindingTableRegion                          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       pipelineData.pipelines[0].hitShaderBindingTableRegion                           = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, pipelineData.pipelines[0].hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        pipelineData.pipelines[0].callableShaderBindingTableRegion                      = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
 }
index f2adb7f..60ae07d 100644 (file)
@@ -647,9 +647,9 @@ de::MovePtr<BufferWithMemory> RayTracingBuildTestInstance::runTest (void)
        const de::MovePtr<BufferWithMemory>     hitShaderBindingTable                           = createShaderBindingTable(vki, vkd, device, physicalDevice, *pipeline, allocator, rayTracingPipeline, m_hitShaderGroup);
        const de::MovePtr<BufferWithMemory>     callableShaderBindingTable                      = createShaderBindingTable(vki, vkd, device, physicalDevice, *pipeline, allocator, rayTracingPipeline, m_callableShaderGroup, callableGroups);
 
-       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = missShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
-       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = raygenShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = missShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
+       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = hitShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
        const VkStridedDeviceAddressRegionKHR   callableShaderBindingTableRegion        = callableShaderBindingTable.get() != NULL ? makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize * callableGroups) : makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
        const VkImageCreateInfo                         imageCreateInfo                                         = makeImageCreateInfo(m_data.width, m_data.height, format);
index 73a32b7..88ad639 100644 (file)
@@ -2272,19 +2272,19 @@ de::MovePtr<BufferWithMemory> RayTracingMiscTestInstance::runTest(void)
                                                                                                                                                                                                                                                deviceVk,
                                                                                                                                                                                                                                                raygenShaderBindingTablePtr->get(),
                                                                                                                                                                                                                                                0 /* offset */),
-                                                                                                                                                                                               0, /* stride */
+                                                                                                                                                                                               m_rayTracingPropsPtr->getShaderGroupHandleSize(),
                                                                                                                                                                                                m_rayTracingPropsPtr->getShaderGroupHandleSize() );
                        const auto      missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(     deviceInterface,
                                                                                                                                                                                                                                                deviceVk,
                                                                                                                                                                                                                                                missShaderBindingTablePtr->get(),
                                                                                                                                                                                                                                                0 /* offset */),
-                                                                                                                                                                                               0, /* stride */
+                                                                                                                                                                                               m_rayTracingPropsPtr->getShaderGroupHandleSize(),
                                                                                                                                                                                                m_rayTracingPropsPtr->getShaderGroupHandleSize() );
                        const auto      hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(     deviceInterface,
                                                                                                                                                                                                                                                deviceVk,
                                                                                                                                                                                                                                                hitShaderBindingTablePtr->get(),
                                                                                                                                                                                                                                                0 /* offset */),
-                                                                                                                                                                                               0, /* stride */
+                                                                                                                                                                                               m_rayTracingPropsPtr->getShaderGroupHandleSize(),
                                                                                                                                                                                                m_rayTracingPropsPtr->getShaderGroupHandleSize() );
                        const auto      callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(DE_NULL,
                                                                                                                                                                                                0, /* stride */
@@ -2388,6 +2388,8 @@ RayTracingTestCase::~RayTracingTestCase   (void)
 void RayTracingTestCase::checkSupport(Context& context) const
 {
        context.requireDeviceFunctionality("VK_KHR_acceleration_structure");
+       context.requireDeviceFunctionality("VK_KHR_buffer_device_address");
+       context.requireDeviceFunctionality("VK_KHR_deferred_host_operations");
        context.requireDeviceFunctionality("VK_KHR_ray_tracing_pipeline");
 
        const VkPhysicalDeviceAccelerationStructureFeaturesKHR& accelerationStructureFeaturesKHR        = context.getAccelerationStructureFeatures      ();
index 6dc85de..4d5348b 100644 (file)
@@ -317,9 +317,9 @@ de::MovePtr<BufferWithMemory> RayTracingBuildTestInstance::runTest (void)
        const de::MovePtr<BufferWithMemory>     missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, MISS_GROUP, 1u);
        const de::MovePtr<BufferWithMemory>     hitShaderBindingTable                           = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, HIT_GROUP, 1u);
 
-       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+       const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        const VkStridedDeviceAddressRegionKHR   callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
        const VkImageCreateInfo                         imageCreateInfo                                         = makeImageCreateInfo(m_data.width, m_data.height, format);
index 478fc11..f8bd086 100644 (file)
@@ -450,12 +450,12 @@ void CheckerboardConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                                hitShaderBindingTable                           = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, shaderCount[STT_HIT], 0u, 0u, MemoryRequirement::Any, 0u, shaderBindingTableOffset);
                        missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1 + shaderCount[STT_HIT], 1 );
 
-                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        if (testParams.shaderRecordPresent)
                                hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), shaderBindingTableOffset), shaderRecordAlignedSize, shaderCount[STT_HIT] * shaderRecordAlignedSize);
                        else
                                hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), shaderBindingTableOffset), shaderGroupHandleSize, shaderCount[STT_HIT] * shaderGroupHandleSize);
-                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
                        // fill ShaderRecordKHR data
@@ -483,8 +483,8 @@ void CheckerboardConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                        else
                                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), 0, shaderGroupHandleSize);
-                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        if (testParams.shaderRecordPresent)
                                missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), shaderBindingTableOffset), shaderRecordAlignedSize, shaderCount[STT_MISS] * shaderRecordAlignedSize);
                        else
@@ -516,9 +516,9 @@ void CheckerboardConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
                        else
                                callableShaderBindingTable = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2 + shaderCount[STT_CALL], shaderCount[STT_CALL], 0u, 0u, MemoryRequirement::Any, 0u, shaderBindingTableOffset);
 
-                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderCount[STT_CALL] * shaderGroupHandleSize);
-                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                        if (testParams.shaderRecordPresent)
                                callableShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, callableShaderBindingTable->get(), shaderBindingTableOffset), shaderRecordAlignedSize, shaderCount[STT_CALL] * shaderRecordAlignedSize);
                        else
index 40a4945..c7a14bf 100644 (file)
@@ -302,9 +302,9 @@ void SingleSquareConfiguration::initShaderBindingTables (de::MovePtr<RayTracingP
        hitShaderBindingTable                           = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 1, 1);
        missShaderBindingTable                          = rayTracingPipeline->createShaderBindingTable(vkd, device, pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, 2, 1);
 
-       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+       raygenShaderBindingTableRegion          = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       hitShaderBindingTableRegion                     = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+       missShaderBindingTableRegion            = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
        callableShaderBindingTableRegion        = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 }
 
index 26ca764..c9734de 100644 (file)
@@ -595,13 +595,13 @@ namespace vkt
                                const de::MovePtr<BufferWithMemory>     raygenShaderBindingTable = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, RAYGEN_GROUP, 1u);
                                const de::MovePtr<BufferWithMemory>     missShaderBindingTable = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, MISS_GROUP, 1u);
                                const de::MovePtr<BufferWithMemory>     hitShaderBindingTable = rayTracingPipeline->createShaderBindingTable(vkd, device, *pipeline, allocator, shaderGroupHandleSize, shaderGroupBaseAlignment, HIT_GROUP, 1u);
-                               const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                               const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
-                               const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), 0, shaderGroupHandleSize);
+                               const VkStridedDeviceAddressRegionKHR   raygenShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, raygenShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                               const VkStridedDeviceAddressRegionKHR   missShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, missShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
+                               const VkStridedDeviceAddressRegionKHR   hitShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(getBufferDeviceAddress(vkd, device, hitShaderBindingTable->get(), 0), shaderGroupHandleSize, shaderGroupHandleSize);
                                const VkStridedDeviceAddressRegionKHR   callableShaderBindingTableRegion = makeStridedDeviceAddressRegionKHR(DE_NULL, 0, 0);
 
                                const VkImageCreateInfo                         imageCreateInfo = makeImageCreateInfo(m_data.width, m_data.height, m_data.depth, format);
-                               const VkImageSubresourceRange           imageSubresourceRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0, m_data.depth);
+                               const VkImageSubresourceRange           imageSubresourceRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0, 1u);
                                const de::MovePtr<ImageWithMemory>      image = de::MovePtr<ImageWithMemory>(new ImageWithMemory(vkd, device, allocator, imageCreateInfo, MemoryRequirement::Any));
                                const Move<VkImageView>                         imageView = makeImageView(vkd, device, **image, (m_data.depth != 1) ? VK_IMAGE_VIEW_TYPE_3D : VK_IMAGE_VIEW_TYPE_2D, format, imageSubresourceRange);