From c80be9e54bea709dc02a834b7c8d762b74de0d66 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Wed, 17 May 2023 18:39:52 +0300 Subject: [PATCH] Fixup - command buffer wrapping --- rpcs3/Emu/RSX/VK/VKTexture.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKTexture.cpp b/rpcs3/Emu/RSX/VK/VKTexture.cpp index 2a9ef448bc..555c0eb567 100644 --- a/rpcs3/Emu/RSX/VK/VKTexture.cpp +++ b/rpcs3/Emu/RSX/VK/VKTexture.cpp @@ -46,7 +46,7 @@ namespace vk } } - void copy_image_to_buffer(VkCommandBuffer cmd, const vk::image* src, const vk::buffer* dst, const VkBufferImageCopy& region, bool swap_bytes) + void copy_image_to_buffer(const vk::command_buffer& cmd, const vk::image* src, const vk::buffer* dst, const VkBufferImageCopy& region, bool swap_bytes) { // Always validate ensure(src->current_layout == VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL || src->current_layout == VK_IMAGE_LAYOUT_GENERAL); @@ -56,6 +56,9 @@ namespace vk vk::end_renderpass(cmd); } + ensure((region.imageExtent.width + region.imageOffset.x) <= src->width()); + ensure((region.imageExtent.height + region.imageOffset.y) <= src->height()); + switch (src->format()) { default: @@ -183,7 +186,7 @@ namespace vk } } - void copy_buffer_to_image(VkCommandBuffer cmd, const vk::buffer* src, const vk::image* dst, const VkBufferImageCopy& region) + void copy_buffer_to_image(const vk::command_buffer& cmd, const vk::buffer* src, const vk::image* dst, const VkBufferImageCopy& region) { // Always validate ensure(dst->current_layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL || dst->current_layout == VK_IMAGE_LAYOUT_GENERAL); @@ -738,7 +741,7 @@ namespace vk } } - static void gpu_deswizzle_sections_impl(VkCommandBuffer cmd, vk::buffer* scratch_buf, u32 dst_offset, int word_size, int word_count, bool swap_bytes, std::vector& sections) + static void gpu_deswizzle_sections_impl(const vk::command_buffer& cmd, vk::buffer* scratch_buf, u32 dst_offset, int word_size, int word_count, bool swap_bytes, std::vector& sections) { // NOTE: This has to be done individually for every LOD vk::cs_deswizzle_base* job = nullptr;