diff options
| author | wwylele <wwylele@gmail.com> | 2017-06-10 15:10:34 +0300 | 
|---|---|---|
| committer | wwylele <wwylele@gmail.com> | 2017-06-10 15:10:34 +0300 | 
| commit | b3b946857351f7b1f48c1dc862185c93e84431af (patch) | |
| tree | 2bf5ade22bd099d0c66e8730e1fde879fef39c5f | |
| parent | 8c22334f96e3a47753378638285c71a521053687 (diff) | |
gl_rasterizer_cache: depth write is disabled if allow_depth_stencil_write is false
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer_cache.cpp | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp index 8b717e43d..f37894e7a 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer_cache.cpp @@ -542,10 +542,11 @@ RasterizerCacheOpenGL::GetFramebufferSurfaces(              config.GetDepthBufferPhysicalAddress(),              fb_area * Pica::FramebufferRegs::BytesPerDepthPixel(config.depth_format));      bool using_color_fb = config.GetColorBufferPhysicalAddress() != 0; -    bool using_depth_fb = -        config.GetDepthBufferPhysicalAddress() != 0 && -        (regs.framebuffer.output_merger.depth_test_enable || -         regs.framebuffer.output_merger.depth_write_enable || !framebuffers_overlap); +    bool depth_write_enable = regs.framebuffer.output_merger.depth_write_enable && +                              regs.framebuffer.framebuffer.allow_depth_stencil_write; +    bool using_depth_fb = config.GetDepthBufferPhysicalAddress() != 0 && +                          (regs.framebuffer.output_merger.depth_test_enable || depth_write_enable || +                           !framebuffers_overlap);      if (framebuffers_overlap && using_color_fb && using_depth_fb) {          LOG_CRITICAL(Render_OpenGL, "Color and depth framebuffer memory regions overlap; "  | 
