From cc723ed45c2c8d6eb77340e87078b48512b1a5f0 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Wed, 13 May 2020 20:53:13 +0300 Subject: [PATCH] vk: Properly fix dynamic state descriptors --- rpcs3/Emu/RSX/VK/VKOverlays.h | 11 +++++------ rpcs3/Emu/RSX/VK/VKResolveHelper.h | 8 ++++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKOverlays.h b/rpcs3/Emu/RSX/VK/VKOverlays.h index c9b18b2fef..8eed9eb072 100644 --- a/rpcs3/Emu/RSX/VK/VKOverlays.h +++ b/rpcs3/Emu/RSX/VK/VKOverlays.h @@ -164,7 +164,7 @@ namespace vk return fs_inputs; } - virtual void get_dynamic_state_entries(VkDynamicState* /*state_descriptors*/, VkPipelineDynamicStateCreateInfo& /*info*/) + virtual void get_dynamic_state_entries(std::vector& /*state_descriptors*/) {} virtual std::vector get_push_constants() @@ -207,15 +207,14 @@ namespace vk shader_stages[1].module = m_fragment_shader.get_handle(); shader_stages[1].pName = "main"; - std::vector dynamic_state_descriptors; - VkPipelineDynamicStateCreateInfo dynamic_state_info = {}; - dynamic_state_info.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; dynamic_state_descriptors.push_back(VK_DYNAMIC_STATE_VIEWPORT); dynamic_state_descriptors.push_back(VK_DYNAMIC_STATE_SCISSOR); - dynamic_state_info.dynamicStateCount = ::size32(dynamic_state_descriptors); + get_dynamic_state_entries(dynamic_state_descriptors); - get_dynamic_state_entries(dynamic_state_descriptors.data(), dynamic_state_info); + VkPipelineDynamicStateCreateInfo dynamic_state_info = {}; + dynamic_state_info.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamic_state_info.dynamicStateCount = ::size32(dynamic_state_descriptors); dynamic_state_info.pDynamicStates = dynamic_state_descriptors.data(); VkVertexInputBindingDescription vb = { 0, 16, VK_VERTEX_INPUT_RATE_VERTEX }; diff --git a/rpcs3/Emu/RSX/VK/VKResolveHelper.h b/rpcs3/Emu/RSX/VK/VKResolveHelper.h index 1cee9dc14e..0bf59c371a 100644 --- a/rpcs3/Emu/RSX/VK/VKResolveHelper.h +++ b/rpcs3/Emu/RSX/VK/VKResolveHelper.h @@ -342,9 +342,9 @@ namespace vk {"usampler2DMS fs0"}); } - void get_dynamic_state_entries(VkDynamicState* state_descriptors, VkPipelineDynamicStateCreateInfo& info) override + void get_dynamic_state_entries(std::vector& state_descriptors) override { - state_descriptors[info.dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK; + state_descriptors.push_back(VK_DYNAMIC_STATE_STENCIL_WRITE_MASK); } void emit_geometry(vk::command_buffer& cmd) override @@ -407,9 +407,9 @@ namespace vk { "usampler2D fs0" }); } - void get_dynamic_state_entries(VkDynamicState* state_descriptors, VkPipelineDynamicStateCreateInfo& info) override + void get_dynamic_state_entries(std::vector& state_descriptors) override { - state_descriptors[info.dynamicStateCount++] = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK; + state_descriptors.push_back(VK_DYNAMIC_STATE_STENCIL_WRITE_MASK); } void emit_geometry(vk::command_buffer& cmd) override