From 3558c88442b532642ce077d32bf1ddfdd36bd0c3 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Sat, 9 Feb 2019 18:42:52 -0400 Subject: Remove certain optimizations that caused texception to fail in certain scenarios. --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 3 --- .../renderer_opengl/gl_rasterizer_cache.cpp | 19 +------------------ src/video_core/renderer_opengl/gl_rasterizer_cache.h | 3 --- 3 files changed, 1 insertion(+), 24 deletions(-) (limited to 'src') diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 1a0a18c3e..99c3cd67d 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -575,8 +575,6 @@ std::pair RasterizerOpenGL::ConfigureFramebuffers( SetupCachedFramebuffer(fbkey, current_state); SyncViewport(current_state); - res_cache.SignalPostFramebufferSetup(); - return current_depth_stencil_usage = {static_cast(depth_surface), fbkey.stencil_enable}; } @@ -1019,7 +1017,6 @@ void RasterizerOpenGL::SetupTextures(Maxwell::ShaderStage stage, const Shader& s texture_samplers[current_bindpoint].SyncWithConfig(texture.tsc); Surface surface = res_cache.GetTextureSurface(texture, entry); - res_cache.SignalSurfaceParameter(surface); if (surface != nullptr) { state.texture_units[current_bindpoint].texture = entry.IsArray() ? surface->TextureLayer().handle : surface->Texture().handle; diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 66a80730c..09013d6da 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -1394,7 +1394,6 @@ bool RasterizerCacheOpenGL::PartialReinterpretSurface(Surface triggering_surface void RasterizerCacheOpenGL::NotifyFrameBufferChange(Surface triggering_surface) { if (triggering_surface == nullptr) return; - run_texception_pass = false; if (texception) { return; } @@ -1408,11 +1407,10 @@ void RasterizerCacheOpenGL::SignalPreDrawCall() { if (texception) { glTextureBarrier(); } + texception = false; } void RasterizerCacheOpenGL::SignalPostDrawCall() { - if (!run_texception_pass) - return; for (u32 i = 0; i < Maxwell::NumRenderTargets; i++) { if (current_color_buffers[i] != nullptr) { Surface intersect = CollideOnReinterpretedSurface(current_color_buffers[i]->GetAddr()); @@ -1422,21 +1420,6 @@ void RasterizerCacheOpenGL::SignalPostDrawCall() { } } } - if (!texception) - run_texception_pass = false; -} - -void RasterizerCacheOpenGL::SignalPostFramebufferSetup() { - if (!run_texception_pass) - texception = false; -} - -void RasterizerCacheOpenGL::SignalSurfaceParameter(Surface& surface) { - if (surface == nullptr) - return; - if (surface->IsReinterpreted()) { - run_texception_pass = true; - } } } // namespace OpenGL diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.h b/src/video_core/renderer_opengl/gl_rasterizer_cache.h index 67841d554..fd3f9cc72 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.h +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.h @@ -471,8 +471,6 @@ public: void SignalPreDrawCall(); void SignalPostDrawCall(); - void SignalSurfaceParameter(Surface& surface); - void SignalPostFramebufferSetup(); private: void LoadSurface(const Surface& surface); @@ -512,7 +510,6 @@ private: OGLFramebuffer read_framebuffer; OGLFramebuffer draw_framebuffer; - bool run_texception_pass = false; bool texception = false; /// Use a Pixel Buffer Object to download the previous texture and then upload it to the new one -- cgit v1.2.3