From 5bc82d124cbf26f62cf62c26dc212f556e603547 Mon Sep 17 00:00:00 2001 From: Fernando Sahmkow Date: Fri, 8 Feb 2019 20:06:49 -0400 Subject: rasterizer_cache_gl: Implement Texception Pass --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp') diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index ee04569fa..1a0a18c3e 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -575,6 +575,8 @@ 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}; } @@ -738,9 +740,13 @@ void RasterizerOpenGL::DrawArrays() { shader_program_manager->ApplyTo(state); state.Apply(); + res_cache.SignalPreDrawCall(); + // Execute draw call params.DispatchDraw(); + res_cache.SignalPostDrawCall(); + // Disable scissor test state.viewports[0].scissor.enabled = false; @@ -1013,6 +1019,7 @@ 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; -- cgit v1.2.3 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 --- 1 file changed, 3 deletions(-) (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp') 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; -- cgit v1.2.3