Merge pull request #660 from Subv/depth_write
GPU: Always enable the depth write when clearing the depth buffer.
This commit is contained in:
		@@ -322,9 +322,6 @@ std::pair<Surface, Surface> RasterizerOpenGL::ConfigureFramebuffers(bool using_c
 | 
			
		||||
                                                                    bool using_depth_fb) {
 | 
			
		||||
    const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs;
 | 
			
		||||
 | 
			
		||||
    // Sync the depth test state before configuring the framebuffer surfaces.
 | 
			
		||||
    SyncDepthTestState();
 | 
			
		||||
 | 
			
		||||
    // TODO(bunnei): Implement this
 | 
			
		||||
    const bool has_stencil = false;
 | 
			
		||||
 | 
			
		||||
@@ -389,6 +386,13 @@ void RasterizerOpenGL::Clear() {
 | 
			
		||||
    if (regs.clear_buffers.Z) {
 | 
			
		||||
        clear_mask |= GL_DEPTH_BUFFER_BIT;
 | 
			
		||||
        use_depth_fb = true;
 | 
			
		||||
 | 
			
		||||
        // Always enable the depth write when clearing the depth buffer. The depth write mask is
 | 
			
		||||
        // ignored when clearing the buffer in the Switch, but OpenGL obeys it so we set it to true.
 | 
			
		||||
        state.depth.test_enabled = true;
 | 
			
		||||
        state.depth.write_mask = GL_TRUE;
 | 
			
		||||
        state.depth.test_func = GL_ALWAYS;
 | 
			
		||||
        state.Apply();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (clear_mask == 0)
 | 
			
		||||
@@ -423,6 +427,7 @@ void RasterizerOpenGL::DrawArrays() {
 | 
			
		||||
    auto [dirty_color_surface, dirty_depth_surface] =
 | 
			
		||||
        ConfigureFramebuffers(true, regs.zeta.Address() != 0);
 | 
			
		||||
 | 
			
		||||
    SyncDepthTestState();
 | 
			
		||||
    SyncBlendState();
 | 
			
		||||
    SyncCullMode();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user