diff --git a/rpcs3/Emu/RSX/GL/GLGSRender.cpp b/rpcs3/Emu/RSX/GL/GLGSRender.cpp index eb6f639517..578fa7ce09 100644 --- a/rpcs3/Emu/RSX/GL/GLGSRender.cpp +++ b/rpcs3/Emu/RSX/GL/GLGSRender.cpp @@ -1436,7 +1436,9 @@ void GLGSRender::flip(int buffer) u32 buffer_height = display_buffers[buffer].height; u32 buffer_pitch = display_buffers[buffer].pitch; - if ((u32)buffer < display_buffers_count && buffer_width && buffer_height && buffer_pitch) + if (!buffer_pitch) buffer_pitch = buffer_width * 4; + + if ((u32)buffer < display_buffers_count && buffer_width && buffer_height) { // Calculate blit coordinates coordi aspect_ratio; @@ -1476,7 +1478,7 @@ void GLGSRender::flip(int buffer) image = render_target_texture->raw_handle(); } - else if (auto surface = m_gl_texture_cache.find_texture_from_dimensions(absolute_address)) + else if (auto surface = m_gl_texture_cache.find_texture_from_dimensions(absolute_address, buffer_width, buffer_height)) { //Hack - this should be the first location to check for output //The render might have been done offscreen or in software and a blit used to display @@ -1486,7 +1488,6 @@ void GLGSRender::flip(int buffer) { LOG_WARNING(RSX, "Flip texture was not found in cache. Uploading surface from CPU"); - if (!buffer_pitch) buffer_pitch = buffer_width * 4; gl::pixel_unpack_settings unpack_settings; unpack_settings.alignment(1).row_length(buffer_pitch / 4); diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index 9325c64bcb..3c972a7883 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "stdafx.h" #include "Emu/Memory/vm.h" #include "Emu/System.h" #include "VKGSRender.h" @@ -2922,7 +2922,6 @@ void VKGSRender::flip(int buffer) u32 buffer_width = display_buffers[buffer].width; u32 buffer_height = display_buffers[buffer].height; - u32 buffer_pitch = display_buffers[buffer].pitch; coordi aspect_ratio; @@ -2999,7 +2998,7 @@ void VKGSRender::flip(int buffer) //Blit contents to screen.. vk::image* image_to_flip = nullptr; - if ((u32)buffer < display_buffers_count && buffer_width && buffer_height && buffer_pitch) + if ((u32)buffer < display_buffers_count && buffer_width && buffer_height) { rsx::tiled_region buffer_region = get_tiled_address(display_buffers[buffer].offset, CELL_GCM_LOCATION_LOCAL); u32 absolute_address = buffer_region.address + buffer_region.base; @@ -3008,7 +3007,7 @@ void VKGSRender::flip(int buffer) { image_to_flip = render_target_texture; } - else if (auto surface = m_texture_cache.find_texture_from_dimensions(absolute_address)) + else if (auto surface = m_texture_cache.find_texture_from_dimensions(absolute_address, buffer_width, buffer_height)) { //Hack - this should be the first location to check for output //The render might have been done offscreen or in software and a blit used to display