From daddbeffd1f10f3ae456ffcf04bc7bb33251f9db Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Tue, 14 Apr 2020 23:21:00 -0400 Subject: [PATCH] Texture Cache: Only do buffer copies on accurate GPU. (#3634) This is a simple optimization as Buffer Copies are mostly used for texture recycling. They are, however, useful when games abuse undefined behavior but most 3D APIs forbid it. --- src/video_core/texture_cache/texture_cache.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index cfc7fe6e93..4edd4313b1 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -509,7 +509,9 @@ private: } const auto& final_params = new_surface->GetSurfaceParams(); if (cr_params.type != final_params.type) { - BufferCopy(current_surface, new_surface); + if (Settings::values.use_accurate_gpu_emulation) { + BufferCopy(current_surface, new_surface); + } } else { std::vector bricks = current_surface->BreakDown(final_params); for (auto& brick : bricks) {