Store the size of the push constant range in the vulkan pipeline state

This commit is contained in:
baldurk
2018-05-25 14:37:37 +01:00
parent b235d03701
commit 69df1348c0
3 changed files with 6 additions and 3 deletions
+2 -3
View File
@@ -802,9 +802,8 @@ void VulkanReplay::SavePipelineState()
m_VulkanPipelineState = VKPipe::State();
m_VulkanPipelineState.pushconsts.resize(ARRAY_COUNT(state.pushconsts));
memcpy(m_VulkanPipelineState.pushconsts.data(), state.pushconsts,
m_VulkanPipelineState.pushconsts.size());
m_VulkanPipelineState.pushconsts.resize(state.pushConstSize);
memcpy(m_VulkanPipelineState.pushconsts.data(), state.pushconsts, state.pushConstSize);
// General pipeline properties
m_VulkanPipelineState.compute.pipelineResourceId = rm->GetOriginalID(state.compute.pipeline);
+2
View File
@@ -68,6 +68,8 @@ struct VulkanRenderState
// this should be big enough for any implementation
byte pushconsts[1024];
// the actual number of bytes that have been uploaded
uint32_t pushConstSize = 0;
ResourceId renderPass;
uint32_t subpass;
@@ -1980,6 +1980,8 @@ bool WrappedVulkan::Serialise_vkCmdPushConstants(SerialiserType &ser, VkCommandB
RDCASSERT(start + length < (uint32_t)ARRAY_COUNT(m_RenderState.pushconsts));
memcpy(m_RenderState.pushconsts + start, values, length);
m_RenderState.pushConstSize = RDCMAX(m_RenderState.pushConstSize, start + length);
}
}
}