From eb4036ea5b9a55c1d965e0917d21c502c8635b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 9 Aug 2022 19:10:35 -0400 Subject: [PATCH] glthread: unbind framebuffers in glDeleteFramebuffers Tests: dEQP-GLES2.functional.lifetime.delete_bound.framebuffer dEQP-GLES2.functional.state_query.integers.framebuffer_binding_getinteger Fixes: e48f676835d - glthread: don't sync for more glGetIntegerv enums for glretrace Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/mapi/glapi/gen/ARB_framebuffer_object.xml | 3 ++- src/mesa/main/glthread_marshal.h | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mapi/glapi/gen/ARB_framebuffer_object.xml b/src/mapi/glapi/gen/ARB_framebuffer_object.xml index 7cacf14a8a5..c7a117dcd02 100644 --- a/src/mapi/glapi/gen/ARB_framebuffer_object.xml +++ b/src/mapi/glapi/gen/ARB_framebuffer_object.xml @@ -209,7 +209,8 @@ - + diff --git a/src/mesa/main/glthread_marshal.h b/src/mesa/main/glthread_marshal.h index 80022c1cea6..5268ae2a472 100644 --- a/src/mesa/main/glthread_marshal.h +++ b/src/mesa/main/glthread_marshal.h @@ -779,6 +779,20 @@ _mesa_glthread_DeleteLists(struct gl_context *ctx, GLsizei range) _mesa_glthread_flush_batch(ctx); } +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]) { + ctx->GLThread.CurrentDrawFramebuffer = 0; + break; + } + } + } +} + struct marshal_cmd_CallList { struct marshal_cmd_base cmd_base;