From cd9cfc5bfabd07fd8022a1fe5cf5be63cc43a17a Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 12 Jan 2016 23:30:53 +0100 Subject: [PATCH] Only set write pointer for type of descriptor we're writing --- renderdoc/driver/vulkan/vk_initstate.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_initstate.cpp b/renderdoc/driver/vulkan/vk_initstate.cpp index deee76727..ceb9d2a1b 100644 --- a/renderdoc/driver/vulkan/vk_initstate.cpp +++ b/renderdoc/driver/vulkan/vk_initstate.cpp @@ -1322,11 +1322,10 @@ bool WrappedVulkan::Serialise_InitialState(ResourceId resid, WrappedVkRes *) VkBufferView *dstTexelBuffer = (VkBufferView *)dstData; dstData += layout.bindings[j].descriptorCount; - // all pointers but the correct one will be ignored so we can safely - // set all three. - writes[i].pBufferInfo = dstBuffer; - writes[i].pImageInfo = dstImage; - writes[i].pTexelBufferView = dstTexelBuffer; + // the correct one will be set below + writes[i].pBufferInfo = NULL; + writes[i].pImageInfo = NULL; + writes[i].pTexelBufferView = NULL; // check that the resources we need for this write are present, // as some might have been skipped due to stale descriptor set @@ -1359,6 +1358,7 @@ bool WrappedVulkan::Serialise_InitialState(ResourceId resid, WrappedVkRes *) dstImage[d] = src[d].imageInfo; valid &= (src[d].imageInfo.sampler != VK_NULL_HANDLE); } + writes[i].pImageInfo = dstImage; break; } case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: @@ -1369,6 +1369,7 @@ bool WrappedVulkan::Serialise_InitialState(ResourceId resid, WrappedVkRes *) valid &= (src[d].imageInfo.sampler != VK_NULL_HANDLE); valid &= (src[d].imageInfo.imageView != VK_NULL_HANDLE); } + writes[i].pImageInfo = dstImage; break; } case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: @@ -1380,6 +1381,7 @@ bool WrappedVulkan::Serialise_InitialState(ResourceId resid, WrappedVkRes *) dstImage[d] = src[d].imageInfo; valid &= (src[d].imageInfo.imageView != VK_NULL_HANDLE); } + writes[i].pImageInfo = dstImage; break; } case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: @@ -1390,6 +1392,7 @@ bool WrappedVulkan::Serialise_InitialState(ResourceId resid, WrappedVkRes *) dstTexelBuffer[d] = src[d].texelBufferView; valid &= (src[d].texelBufferView != VK_NULL_HANDLE); } + writes[i].pTexelBufferView = dstTexelBuffer; break; } case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: @@ -1402,6 +1405,7 @@ bool WrappedVulkan::Serialise_InitialState(ResourceId resid, WrappedVkRes *) dstBuffer[d] = src[d].bufferInfo; valid &= (src[d].bufferInfo.buffer != VK_NULL_HANDLE); } + writes[i].pBufferInfo = dstBuffer; break; } default: