diff --git a/renderdoc/driver/vulkan/vk_postvs.cpp b/renderdoc/driver/vulkan/vk_postvs.cpp index 0d0de3386..3092a66fe 100644 --- a/renderdoc/driver/vulkan/vk_postvs.cpp +++ b/renderdoc/driver/vulkan/vk_postvs.cpp @@ -1222,7 +1222,7 @@ void VulkanReplay::InitPostVSBuffers(uint32_t eventId) }; std::vector attrIsInstanced; - std::vector vbuffers; + CompactedAttrBuffer vbuffers[64] = {}; { VkWriteDescriptorSet descWrites[64]; @@ -1260,12 +1260,18 @@ void VulkanReplay::InitPostVSBuffers(uint32_t eventId) GetBufferData(state.vbuffers[vb].buf, offs, len, origVBs[vb]); } - vbuffers.resize(vi->vertexAttributeDescriptionCount); for(uint32_t i = 0; i < vi->vertexAttributeDescriptionCount; i++) { const VkVertexInputAttributeDescription &attrDesc = vi->pVertexAttributeDescriptions[i]; uint32_t attr = attrDesc.location; + RDCASSERT(attr < 64); + if(attr >= ARRAY_COUNT(vbuffers)) + { + RDCERR("Attribute index too high! Resize array."); + continue; + } + bool isInstanced = false; size_t stride = 1;