summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Noblesmith <nobled@dreamwidth.org>2013-07-19 21:57:18 +0000
committerDylan Noblesmith <nobled@dreamwidth.org>2013-10-08 17:38:00 +0000
commit6ede7ba0bc5043af7a912d011bbfa93fbdd3e826 (patch)
treef86a38a869feef0285934eecabf93464011a38b2
parent8cb4b2d006a8054bfa2212a978b629be86970b5a (diff)
downloadmesa-6ede7ba0bc5043af7a912d011bbfa93fbdd3e826.tar.gz
mesa: don't hardcode ctx->DrawBuffer in draw_buffer_enum_to_bitmask
-rw-r--r--src/mesa/main/buffers.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c
index 2bdbf41be5d..ed7abef9db6 100644
--- a/src/mesa/main/buffers.c
+++ b/src/mesa/main/buffers.c
@@ -93,7 +93,8 @@ supported_buffer_bitmask(const struct gl_context *ctx,
* GL_FRONT_AND_BACK), return the corresponding bitmask of BUFFER_BIT_* flags.
*/
static GLbitfield
-draw_buffer_enum_to_bitmask(const struct gl_context *ctx, GLenum buffer)
+draw_buffer_enum_to_bitmask(const struct gl_context *ctx, GLenum buffer,
+ struct gl_framebuffer *fb)
{
switch (buffer) {
case GL_NONE:
@@ -112,7 +113,7 @@ draw_buffer_enum_to_bitmask(const struct gl_context *ctx, GLenum buffer)
* Since there is no stereo rendering in ES 3.0, only return the
* LEFT bits. This also satisfies the "n must be 1" requirement.
*/
- if (ctx->DrawBuffer->Visual.doubleBufferMode)
+ if (fb->Visual.doubleBufferMode)
return BUFFER_BIT_BACK_LEFT;
return BUFFER_BIT_FRONT_LEFT;
}
@@ -256,7 +257,7 @@ _mesa_DrawBuffer(GLenum buffer)
else {
const GLbitfield supportedMask
= supported_buffer_bitmask(ctx, ctx->DrawBuffer);
- destMask = draw_buffer_enum_to_bitmask(ctx, buffer);
+ destMask = draw_buffer_enum_to_bitmask(ctx, buffer, ctx->DrawBuffer);
if (destMask == BAD_MASK) {
/* totally bogus buffer */
_mesa_error(ctx, GL_INVALID_ENUM,
@@ -349,7 +350,8 @@ _mesa_DrawBuffers(GLsizei n, const GLenum *buffers)
return;
}
- destMask[output] = draw_buffer_enum_to_bitmask(ctx, buffers[output]);
+ destMask[output] = draw_buffer_enum_to_bitmask(ctx, buffers[output],
+ ctx->DrawBuffer);
/* From the OpenGL 3.0 specification, page 258:
* "Each buffer listed in bufs must be one of the values from tables
@@ -479,7 +481,7 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers,
const GLbitfield supportedMask = supported_buffer_bitmask(ctx, fb);
GLuint output;
for (output = 0; output < n; output++) {
- mask[output] = draw_buffer_enum_to_bitmask(ctx, buffers[output]);
+ mask[output] = draw_buffer_enum_to_bitmask(ctx, buffers[output], fb);
ASSERT(mask[output] != BAD_MASK);
mask[output] &= supportedMask;
}