From: Rob Clark <robcl...@freedesktop.org> No one was implementing this driver hook, so let's first turn it into something more useful and better matching the rest of the Driver API.
Signed-off-by: Rob Clark <robcl...@freedesktop.org> --- src/mesa/drivers/common/driverfuncs.c | 2 +- src/mesa/main/dd.h | 6 +++--- src/mesa/main/fbobject.c | 17 +++++++++++++++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index 6fe42b1..92aabf0 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -176,7 +176,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->ValidateFramebuffer = _mesa_validate_framebuffer; driver->BlitFramebuffer = _swrast_BlitFramebuffer; - driver->DiscardFramebuffer = NULL; + driver->DiscardTexture = NULL; _mesa_init_texture_barrier_functions(driver); diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 1fc4ca4..ddc2e77 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -723,9 +723,9 @@ struct dd_function_table { GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - void (*DiscardFramebuffer)(struct gl_context *ctx, - GLenum target, GLsizei numAttachments, - const GLenum *attachments); + void (*DiscardTexture)(struct gl_context *ctx, + struct gl_framebuffer *fb, + struct gl_renderbuffer_attachment *att); /** * \name Query objects diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 8418340..42eec89 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -4182,8 +4182,21 @@ _mesa_DiscardFramebufferEXT(GLenum target, GLsizei numAttachments, } } - if (ctx->Driver.DiscardFramebuffer) - ctx->Driver.DiscardFramebuffer(ctx, target, numAttachments, attachments); + if (ctx->Driver.DiscardTexture) { + for (i = 0; i < numAttachments; i++) { + struct gl_renderbuffer_attachment *att; + + if (_mesa_is_user_fbo(fb)) + att = get_attachment(ctx, fb, attachments[i]); + else /* winsys_fbo */ + att = _mesa_get_fb0_attachment(ctx, fb, attachments[i]); + + if (!att) + continue; + + ctx->Driver.DiscardTexture(ctx, fb, att); + } + } return; -- 2.4.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev