From c4fba680d12fa5db77cb868b8ce71e659a0dacdc Mon Sep 17 00:00:00 2001 From: kd-11 Date: Fri, 17 Oct 2025 17:12:47 +0300 Subject: [PATCH] vk: Fix broken bound object comparison --- rpcs3/Emu/RSX/VK/VKProgramPipeline.cpp | 12 ++++++++++-- rpcs3/Emu/RSX/VK/vkutils/unique_resource.cpp | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKProgramPipeline.cpp b/rpcs3/Emu/RSX/VK/VKProgramPipeline.cpp index 134aa6430a..96f45ae7a2 100644 --- a/rpcs3/Emu/RSX/VK/VKProgramPipeline.cpp +++ b/rpcs3/Emu/RSX/VK/VKProgramPipeline.cpp @@ -17,13 +17,21 @@ namespace vk bool operator == (const descriptor_slot_t& a, const VkDescriptorImageInfoEx& b) { const auto ptr = std::get_if(&a); - return !!ptr && ptr->resourceId == b.resourceId; + return !!ptr && + ptr->resourceId == b.resourceId && + ptr->imageView == b.imageView && + ptr->sampler == b.sampler && + ptr->imageLayout == b.imageLayout; } bool operator == (const descriptor_slot_t& a, const VkDescriptorBufferInfoEx& b) { const auto ptr = std::get_if(&a); - return !!ptr && ptr->resourceId == b.resourceId; + return !!ptr && + ptr->resourceId == b.resourceId && + ptr->buffer == b.buffer && + ptr->offset == b.offset && + ptr->range == b.range; } bool operator == (const descriptor_slot_t& a, const VkDescriptorBufferViewEx& b) diff --git a/rpcs3/Emu/RSX/VK/vkutils/unique_resource.cpp b/rpcs3/Emu/RSX/VK/vkutils/unique_resource.cpp index 2bd60a4a02..e77d6eae09 100644 --- a/rpcs3/Emu/RSX/VK/vkutils/unique_resource.cpp +++ b/rpcs3/Emu/RSX/VK/vkutils/unique_resource.cpp @@ -5,7 +5,8 @@ namespace vk { static atomic_t s_resource_uid; - u64 gen_uid() { + u64 gen_uid() + { return s_resource_uid++; } }