From c6ae93e1c73c0a5c4994593fe50925415f23c6b4 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 24 May 2018 20:41:05 +0100 Subject: [PATCH] Expose raw pushconstants values as part of vulkan pipeline state * Not used directly in the UI, but can be useful for script access --- renderdoc/api/replay/vk_pipestate.h | 3 +++ renderdoc/driver/vulkan/vk_replay.cpp | 4 ++++ renderdoc/replay/renderdoc_serialise.inl | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/renderdoc/api/replay/vk_pipestate.h b/renderdoc/api/replay/vk_pipestate.h index 0b628cec8..bca33acd2 100644 --- a/renderdoc/api/replay/vk_pipestate.h +++ b/renderdoc/api/replay/vk_pipestate.h @@ -734,6 +734,9 @@ struct State DOCUMENT("A :class:`VKPipeline` with the currently bound graphics pipeline, if any."); Pipeline graphics; + DOCUMENT("A ``bytes`` containing the raw push constant data."); + bytebuf pushconsts; + DOCUMENT("A :class:`VKInputAssembly` describing the input assembly stage."); InputAssembly inputAssembly; DOCUMENT("A :class:`VKVertexInput` describing the vertex input stage."); diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 9f354a60c..892633a13 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -802,6 +802,10 @@ 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()); + // General pipeline properties m_VulkanPipelineState.compute.pipelineResourceId = rm->GetOriginalID(state.compute.pipeline); m_VulkanPipelineState.graphics.pipelineResourceId = rm->GetOriginalID(state.graphics.pipeline); diff --git a/renderdoc/replay/renderdoc_serialise.inl b/renderdoc/replay/renderdoc_serialise.inl index d90d829da..4c61d17e1 100644 --- a/renderdoc/replay/renderdoc_serialise.inl +++ b/renderdoc/replay/renderdoc_serialise.inl @@ -2048,6 +2048,8 @@ void DoSerialise(SerialiserType &ser, VKPipe::State &el) SERIALISE_MEMBER(compute); SERIALISE_MEMBER(graphics); + SERIALISE_MEMBER(pushconsts); + SERIALISE_MEMBER(inputAssembly); SERIALISE_MEMBER(vertexInput); @@ -2069,7 +2071,7 @@ void DoSerialise(SerialiserType &ser, VKPipe::State &el) SERIALISE_MEMBER(images); - SIZE_CHECK(1312); + SIZE_CHECK(1328); } #pragma endregion Vulkan pipeline state