From 2677cc88c871568bd41c60b119d9d42d9372f922 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sat, 9 Feb 2019 20:44:24 -0400 Subject: [PATCH] Implemented a lil edge case on RecreateSurface. --- src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 59f671048e..af76bf3784 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -1247,6 +1247,14 @@ Surface RasterizerCacheOpenGL::RecreateSurface(const Surface& old_surface, return new_surface; } + if ((old_params.target == SurfaceTarget::Texture2DArray) && + (new_params.target == SurfaceTarget::Texture2D) && + GetFormatBpp(old_params.pixel_format) == GetFormatBpp(new_params.pixel_format) && + old_params.type == new_params.type) { + FastCopySurface(old_surface, new_surface); + return new_surface; + } + switch (new_params.target) { case SurfaceTarget::Texture2D: CopySurface(old_surface, new_surface, copy_pbo.handle);