Handle dstArrayElement when updating current bindings from initial state

This commit is contained in:
baldurk
2018-05-13 10:13:32 +01:00
parent 42aefbaf0e
commit 0cc5ed6145
+5 -4
View File
@@ -1164,27 +1164,28 @@ void WrappedVulkan::Apply_InitialState(WrappedVkRes *live, VkInitialContents ini
for(uint32_t i = 0; i < initial.numDescriptors; i++)
{
RDCASSERT(writes[i].dstBinding < bindings.size());
RDCASSERT(writes[i].dstArrayElement == 0);
DescriptorSetSlot *bind = bindings[writes[i].dstBinding];
for(uint32_t d = 0; d < writes[i].descriptorCount; d++)
{
uint32_t idx = writes[i].dstArrayElement + d;
if(writes[i].descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER ||
writes[i].descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)
{
bind[d].texelBufferView = writes[i].pTexelBufferView[d];
bind[idx].texelBufferView = writes[i].pTexelBufferView[idx];
}
else if(writes[i].descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER ||
writes[i].descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC ||
writes[i].descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER ||
writes[i].descriptorType == VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)
{
bind[d].bufferInfo = writes[i].pBufferInfo[d];
bind[idx].bufferInfo = writes[i].pBufferInfo[idx];
}
else
{
bind[d].imageInfo = writes[i].pImageInfo[d];
bind[idx].imageInfo = writes[i].pImageInfo[idx];
}
}
}