From 4cbcae5b649378d9e839e58e42a121d3a4e69d99 Mon Sep 17 00:00:00 2001 From: "Herman S." <429230+has207@users.noreply.github.com> Date: Tue, 9 Dec 2025 13:40:09 +0900 Subject: [PATCH] [Vulkan] Properly scale rectangle coordinates --- src/xenia/gpu/vulkan/vulkan_render_target_cache.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc b/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc index 3f9984405..adc33082c 100644 --- a/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc +++ b/src/xenia/gpu/vulkan/vulkan_render_target_cache.cc @@ -5129,8 +5129,12 @@ void VulkanRenderTargetCache::PerformTransfersAndResolveClears( transfer_viewport.minDepth = 0.0f; transfer_viewport.maxDepth = 1.0f; command_processor_.SetViewport(transfer_viewport); - float pixels_to_ndc_x = 2.0f / transfer_viewport.width; - float pixels_to_ndc_y = 2.0f / transfer_viewport.height; + // GetRectangles returns coordinates in guest pixels, so scale + // pixels_to_ndc to convert guest pixels to NDC correctly. + float pixels_to_ndc_x = + 2.0f / transfer_viewport.width * draw_resolution_scale_x(); + float pixels_to_ndc_y = + 2.0f / transfer_viewport.height * draw_resolution_scale_y(); VkRect2D transfer_scissor; transfer_scissor.offset.x = 0; transfer_scissor.offset.y = 0;