diff --git a/src/mesa/main/glthread.h b/src/mesa/main/glthread.h index ae75def0216..ee15d5f4865 100644 --- a/src/mesa/main/glthread.h +++ b/src/mesa/main/glthread.h @@ -130,6 +130,7 @@ struct glthread_attrib_node { int ActiveTexture; GLenum MatrixMode; bool CullFace; + bool DepthTest; }; typedef enum { @@ -231,6 +232,7 @@ struct glthread_state int MatrixStackDepth[M_NUM_MATRIX_STACKS]; /** Enable states. */ + bool DepthTest; bool CullFace; GLuint CurrentDrawFramebuffer; diff --git a/src/mesa/main/glthread_marshal.h b/src/mesa/main/glthread_marshal.h index 95d4b20e4d1..80022c1cea6 100644 --- a/src/mesa/main/glthread_marshal.h +++ b/src/mesa/main/glthread_marshal.h @@ -452,6 +452,9 @@ _mesa_glthread_Enable(struct gl_context *ctx, GLenum cap) case GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB: _mesa_glthread_destroy(ctx, "Enable(DEBUG_OUTPUT_SYNCHRONOUS)"); break; + case GL_DEPTH_TEST: + ctx->GLThread.DepthTest = true; + break; case GL_CULL_FACE: ctx->GLThread.CullFace = true; break; @@ -472,6 +475,9 @@ _mesa_glthread_Disable(struct gl_context *ctx, GLenum cap) case GL_CULL_FACE: ctx->GLThread.CullFace = false; break; + case GL_DEPTH_TEST: + ctx->GLThread.DepthTest = false; + break; } } @@ -481,6 +487,8 @@ _mesa_glthread_IsEnabled(struct gl_context *ctx, GLenum cap) switch (cap) { case GL_CULL_FACE: return ctx->GLThread.CullFace; + case GL_DEPTH_TEST: + return ctx->GLThread.DepthTest; case GL_VERTEX_ARRAY: return !!(ctx->GLThread.CurrentVAO->UserEnabled & VERT_BIT_POS); case GL_NORMAL_ARRAY: @@ -509,6 +517,9 @@ _mesa_glthread_PushAttrib(struct gl_context *ctx, GLbitfield mask) if (mask & (GL_POLYGON_BIT | GL_ENABLE_BIT)) attr->CullFace = ctx->GLThread.CullFace; + if (mask & (GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT)) + attr->DepthTest = ctx->GLThread.DepthTest; + if (mask & GL_TEXTURE_BIT) attr->ActiveTexture = ctx->GLThread.ActiveTexture; @@ -529,6 +540,9 @@ _mesa_glthread_PopAttrib(struct gl_context *ctx) if (mask & (GL_POLYGON_BIT | GL_ENABLE_BIT)) ctx->GLThread.CullFace = attr->CullFace; + if (mask & (GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT)) + ctx->GLThread.DepthTest = attr->DepthTest; + if (mask & GL_TEXTURE_BIT) ctx->GLThread.ActiveTexture = attr->ActiveTexture;