gl: ensure depth isn't masked during clear
If a pipeline has been flushed that disables depth writing and then we try to clear the framebuffer with cogl_framebuffer_clear4f, passing COGL_BUFFER_BIT_DEPTH then we need to make sure that depth writing is re-enabled before issuing the glClear call. We also need to make sure that when the next primitive is flushed that we re-check what state the depth mask should be in. Reviewed-by: Neil Roberts <neil@linux.intel.com> (cherry picked from commit 3cf497042897d1aa6918bc55b71a36ff67e560b9)
This commit is contained in:
parent
3c5ebb8752
commit
2fa7b5573d
@ -890,7 +890,21 @@ _cogl_framebuffer_gl_clear (CoglFramebuffer *framebuffer,
|
||||
}
|
||||
|
||||
if (buffers & COGL_BUFFER_BIT_DEPTH)
|
||||
gl_buffers |= GL_DEPTH_BUFFER_BIT;
|
||||
{
|
||||
gl_buffers |= GL_DEPTH_BUFFER_BIT;
|
||||
|
||||
if (ctx->depth_writing_enabled_cache != TRUE)
|
||||
{
|
||||
GE( ctx, glDepthMask (TRUE));
|
||||
|
||||
ctx->depth_writing_enabled_cache = TRUE;
|
||||
|
||||
/* Make sure the DepthMask is updated when the next primitive is drawn */
|
||||
ctx->current_pipeline_changes_since_flush |=
|
||||
COGL_PIPELINE_STATE_DEPTH;
|
||||
ctx->current_pipeline_age--;
|
||||
}
|
||||
}
|
||||
|
||||
if (buffers & COGL_BUFFER_BIT_STENCIL)
|
||||
gl_buffers |= GL_STENCIL_BUFFER_BIT;
|
||||
|
Loading…
Reference in New Issue
Block a user