From 9a6a452857250455050d06b86767925563b25007 Mon Sep 17 00:00:00 2001 From: Phantom Date: Wed, 13 Dec 2017 19:22:02 +0100 Subject: [PATCH] Fix broken surface validation logic since removal of the reinterpret hack --- src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index e6c290293..3939c86c2 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -1271,10 +1271,8 @@ void RasterizerCacheOpenGL::ValidateSurface(const Surface& surface, PAddr addr, return; } - auto validate_regions = surface->invalid_regions & validate_interval; - for (;;) { - const auto it = validate_regions.begin(); + const auto it = surface->invalid_regions.find(validate_interval); if (it == surface->invalid_regions.end()) break; @@ -1287,7 +1285,7 @@ void RasterizerCacheOpenGL::ValidateSurface(const Surface& surface, PAddr addr, if (copy_surface != nullptr) { SurfaceInterval copy_interval = params.GetCopyableInterval(copy_surface); CopySurface(copy_surface, surface, copy_interval); - validate_regions.erase(interval); + surface->invalid_regions.erase(interval); continue; } @@ -1295,7 +1293,7 @@ void RasterizerCacheOpenGL::ValidateSurface(const Surface& surface, PAddr addr, FlushRegion(params.addr, params.size); surface->LoadGLBuffer(params.addr, params.end); surface->UploadGLTexture(surface->GetSubRect(params)); - validate_regions.erase(interval); + surface->invalid_regions.erase(interval); } }