glthread: track GL_READ_FRAMEBUFFER bindings too
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17976>
This commit is contained in:
@@ -236,6 +236,7 @@ struct glthread_state
|
||||
bool CullFace;
|
||||
|
||||
GLuint CurrentDrawFramebuffer;
|
||||
GLuint CurrentReadFramebuffer;
|
||||
GLuint CurrentProgram;
|
||||
};
|
||||
|
||||
|
@@ -65,9 +65,12 @@ _mesa_marshal_GetIntegerv(GLenum pname, GLint *p)
|
||||
case GL_DRAW_INDIRECT_BUFFER_BINDING:
|
||||
*p = ctx->GLThread.CurrentDrawIndirectBufferName;
|
||||
return;
|
||||
case GL_DRAW_FRAMEBUFFER_BINDING: /* == GL_FRAMEBUFFER_BINDING */
|
||||
case GL_DRAW_FRAMEBUFFER_BINDING:
|
||||
*p = ctx->GLThread.CurrentDrawFramebuffer;
|
||||
return;
|
||||
case GL_READ_FRAMEBUFFER_BINDING:
|
||||
*p = ctx->GLThread.CurrentReadFramebuffer;
|
||||
return;
|
||||
case GL_PIXEL_PACK_BUFFER_BINDING:
|
||||
*p = ctx->GLThread.CurrentPixelPackBufferName;
|
||||
return;
|
||||
|
@@ -779,16 +779,33 @@ _mesa_glthread_DeleteLists(struct gl_context *ctx, GLsizei range)
|
||||
_mesa_glthread_flush_batch(ctx);
|
||||
}
|
||||
|
||||
static inline void
|
||||
_mesa_glthread_BindFramebuffer(struct gl_context *ctx, GLenum target, GLuint id)
|
||||
{
|
||||
switch (target) {
|
||||
case GL_FRAMEBUFFER:
|
||||
ctx->GLThread.CurrentDrawFramebuffer = id;
|
||||
ctx->GLThread.CurrentReadFramebuffer = id;
|
||||
break;
|
||||
case GL_DRAW_FRAMEBUFFER:
|
||||
ctx->GLThread.CurrentDrawFramebuffer = id;
|
||||
break;
|
||||
case GL_READ_FRAMEBUFFER:
|
||||
ctx->GLThread.CurrentReadFramebuffer = id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void
|
||||
_mesa_glthread_DeleteFramebuffers(struct gl_context *ctx, GLsizei n,
|
||||
const GLuint *ids)
|
||||
{
|
||||
if (ctx->GLThread.CurrentDrawFramebuffer) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (ctx->GLThread.CurrentDrawFramebuffer == ids[i]) {
|
||||
if (ctx->GLThread.CurrentDrawFramebuffer == ids[i])
|
||||
ctx->GLThread.CurrentDrawFramebuffer = 0;
|
||||
break;
|
||||
}
|
||||
if (ctx->GLThread.CurrentReadFramebuffer == ids[i])
|
||||
ctx->GLThread.CurrentReadFramebuffer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user