Apply shader group handle alignment where required

Fixes #787
This commit is contained in:
Sascha Willems 2020-12-12 08:20:33 +01:00
parent 21f9cd5251
commit a369e6ed96
7 changed files with 37 additions and 26 deletions

View file

@ -205,10 +205,11 @@ void VulkanRaytracingSample::prepare()
VkStridedDeviceAddressRegionKHR VulkanRaytracingSample::getSbtEntryStridedDeviceAddressRegion(VkBuffer buffer, uint32_t handleCount)
{
const uint32_t handleSizeAligned = vks::tools::alignedSize(rayTracingPipelineProperties.shaderGroupHandleSize, rayTracingPipelineProperties.shaderGroupHandleAlignment);
VkStridedDeviceAddressRegionKHR stridedDeviceAddressRegionKHR{};
stridedDeviceAddressRegionKHR.deviceAddress = getBufferDeviceAddress(buffer);
stridedDeviceAddressRegionKHR.stride = rayTracingPipelineProperties.shaderGroupHandleSize;
stridedDeviceAddressRegionKHR.size = rayTracingPipelineProperties.shaderGroupHandleSize * handleCount;
stridedDeviceAddressRegionKHR.stride = handleSizeAligned;
stridedDeviceAddressRegionKHR.size = handleCount * handleSizeAligned;
return stridedDeviceAddressRegionKHR;
}