On 03/24/2014 08:07 AM, Brian Paul wrote: > On 03/24/2014 02:52 AM, Kenneth Graunke wrote: >> WebGL Aquarium in Chrome 24 actually hits this. >> >> v2: Move to core Mesa (wisely suggested by Ian); only consider >> components which actually exist. >> >> v3: Use _mesa_format_has_color_component to determine whether components >> actually exist, fixing alpha format handling. >> >> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> >> --- >> src/mesa/main/clear.c | 20 +++++++++++++++++++- >> 1 file changed, 19 insertions(+), 1 deletion(-) >> >> Thanks for the review! You're absolutely right about ALPHA formats. >> >> I think this version should actually work :) >> >> diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c >> index 077c5fc..e2566c0 100644 >> --- a/src/mesa/main/clear.c >> +++ b/src/mesa/main/clear.c >> @@ -106,6 +106,24 @@ _mesa_ClearColorIuiEXT(GLuint r, GLuint g, GLuint >> b, GLuint a) >> } >> >> >> +static bool >> +color_buffer_writes_enabled(const struct gl_context *ctx, unsigned idx) >> +{ >> + struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[idx]; >> + GLuint c; >> + GLubyte colorMask = 0; >> + >> + if (rb) { >> + for (c = 0; c < 4; c++) { >> + if (_mesa_format_has_color_component(rb->Format, c)) >> + colorMask |= ctx->Color.ColorMask[idx][c]; >> + } >> + } >> + >> + return colorMask != 0; >> +} >> + >> + >> /** >> * Clear buffers. >> * >> @@ -181,7 +199,7 @@ _mesa_Clear( GLbitfield mask ) >> for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) { >> GLint buf = ctx->DrawBuffer->_ColorDrawBufferIndexes[i]; >> >> - if (buf >= 0) { >> + if (buf >= 0 && color_buffer_writes_enabled(ctx, i)) { >> bufferMask |= 1 << buf; >> } >> } >> > > I still think a comment on the new function would be nice. Looks good > though. > > Reviewed-by: Brian Paul <bri...@vmware.com>
Oops, sorry...I missed your request for a comment. Added in v4 (with no actual code changes), and pushed. Thanks! --Ken
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev