rhi: vulkan: be nicer when binding empty buffers
vkUpdateDescriptorSets(): pDescriptorWrites[1].pBufferInfo[0].range is not VK_WHOLE_SIZE and is zero. The Vulkan spec states: If range is not equal to VK_WHOLE_SIZE, range must be greater than 0 (https://docs.vulkan.org/spec/latest/chapters/ descriptorsets.html#VUID-VkDescriptorBufferInfo-range-00341) As a drive-by, fix the wrong union member access. Change-Id: I511cddd25f91a117ff181fd64b77079e6946c94c Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This commit is contained in:
parent
a95c568908
commit
a8ae971a95
@ -3626,7 +3626,7 @@ void QRhiVulkan::updateShaderResourceBindings(QRhiShaderResourceBindings *srb)
|
||||
VkDescriptorBufferInfo bufInfo;
|
||||
bufInfo.buffer = bufD->m_type == QRhiBuffer::Dynamic ? bufD->buffers[currentFrameSlot] : bufD->buffers[0];
|
||||
bufInfo.offset = b->u.ubuf.offset;
|
||||
bufInfo.range = b->u.ubuf.maybeSize ? b->u.ubuf.maybeSize : bufD->m_size;
|
||||
bufInfo.range = b->u.ubuf.maybeSize ? b->u.ubuf.maybeSize : VK_WHOLE_SIZE;
|
||||
// be nice and assert when we know the vulkan device would die a horrible death due to non-aligned reads
|
||||
Q_ASSERT(aligned(bufInfo.offset, ubufAlign) == bufInfo.offset);
|
||||
bufferInfoIndex = bufferInfos.size();
|
||||
@ -3721,8 +3721,8 @@ void QRhiVulkan::updateShaderResourceBindings(QRhiShaderResourceBindings *srb)
|
||||
bd.sbuf.generation = bufD->generation;
|
||||
VkDescriptorBufferInfo bufInfo;
|
||||
bufInfo.buffer = bufD->m_type == QRhiBuffer::Dynamic ? bufD->buffers[currentFrameSlot] : bufD->buffers[0];
|
||||
bufInfo.offset = b->u.ubuf.offset;
|
||||
bufInfo.range = b->u.ubuf.maybeSize ? b->u.ubuf.maybeSize : bufD->m_size;
|
||||
bufInfo.offset = b->u.sbuf.offset;
|
||||
bufInfo.range = b->u.sbuf.maybeSize ? b->u.sbuf.maybeSize : VK_WHOLE_SIZE;
|
||||
bufferInfoIndex = bufferInfos.size();
|
||||
bufferInfos.append(bufInfo);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user