From b36b9e482262feb90622c8727e5b5bad50be535a Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sat, 18 Jan 2020 01:14:05 +0300 Subject: [PATCH] vk: Fixup for total number of combined samplers using the dynamic binding structure --- rpcs3/Emu/RSX/VK/VKGSRender.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index b8f554afca..f8ac77b043 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -456,10 +456,13 @@ VKGSRender::VKGSRender() : GSRender() m_occlusion_query_data[n].driver_handle = n; //Generate frame contexts + const auto& binding_table = m_device->get_pipeline_binding_table(); + const u32 num_fs_samplers = binding_table.vertex_textures_first_bind_slot - binding_table.textures_first_bind_slot; + std::vector sizes; sizes.push_back({ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER , 6 * DESCRIPTOR_MAX_DRAW_CALLS }); sizes.push_back({ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER , 3 * DESCRIPTOR_MAX_DRAW_CALLS }); - sizes.push_back({ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER , 20 * DESCRIPTOR_MAX_DRAW_CALLS }); + sizes.push_back({ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER , (num_fs_samplers + 4) * DESCRIPTOR_MAX_DRAW_CALLS }); // Conditional rendering predicate slot; refactor to allow skipping this when not needed sizes.push_back({ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1 * DESCRIPTOR_MAX_DRAW_CALLS });