if (rb) {
for (c = 0; c < 4; c++) {
- if (ctx->Color.ColorMask[idx][c] &&
+ if (GET_COLORMASK_BIT(ctx->Color.ColorMask, idx, c) &&
_mesa_format_has_color_component(rb->Format, c)) {
return true;
}
clear(struct gl_context *ctx, GLbitfield mask, bool no_error)
{
FLUSH_VERTICES(ctx, 0);
- FLUSH_CURRENT(ctx, 0);
if (!no_error) {
if (mask & ~(GL_COLOR_BUFFER_BIT |
}
if ((mask & GL_DEPTH_BUFFER_BIT)
- && ctx->DrawBuffer->Visual.haveDepthBuffer) {
+ && ctx->DrawBuffer->Visual.depthBits > 0) {
bufferMask |= BUFFER_BIT_DEPTH;
}
if ((mask & GL_STENCIL_BUFFER_BIT)
- && ctx->DrawBuffer->Visual.haveStencilBuffer) {
+ && ctx->DrawBuffer->Visual.stencilBits > 0) {
bufferMask |= BUFFER_BIT_STENCIL;
}
if ((mask & GL_ACCUM_BUFFER_BIT)
- && ctx->DrawBuffer->Visual.haveAccumBuffer) {
+ && ctx->DrawBuffer->Visual.accumRedBits > 0) {
bufferMask |= BUFFER_BIT_ACCUM;
}
const GLint *value, bool no_error)
{
FLUSH_VERTICES(ctx, 0);
- FLUSH_CURRENT(ctx, 0);
if (ctx->NewState) {
_mesa_update_state( ctx );
}
+ if (!no_error && ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
+ _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT,
+ "glClearBufferiv(incomplete framebuffer)");
+ return;
+ }
+
switch (buffer) {
case GL_STENCIL:
/* Page 264 (page 280 of the PDF) of the OpenGL 3.0 spec says:
const GLuint *value, bool no_error)
{
FLUSH_VERTICES(ctx, 0);
- FLUSH_CURRENT(ctx, 0);
if (ctx->NewState) {
_mesa_update_state( ctx );
}
+ if (!no_error && ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE) {
+ _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION,
+ "glClearBufferuiv(incomplete framebuffer)");
+ return;
+ }
+
switch (buffer) {
case GL_COLOR:
{
const GLfloat *value, bool no_error)
{
FLUSH_VERTICES(ctx, 0);
- FLUSH_CURRENT(ctx, 0);
if (ctx->NewState) {
_mesa_update_state( ctx );
}
+ if (!no_error && ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE) {
+ _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION,
+ "glClearBufferfv(incomplete framebuffer)");
+ return;
+ }
+
switch (buffer) {
case GL_DEPTH:
/* Page 264 (page 280 of the PDF) of the OpenGL 3.0 spec says:
GLbitfield mask = 0;
FLUSH_VERTICES(ctx, 0);
- FLUSH_CURRENT(ctx, 0);
if (!no_error) {
if (buffer != GL_DEPTH_STENCIL) {
_mesa_update_state( ctx );
}
+ if (!no_error && ctx->DrawBuffer->_Status != GL_FRAMEBUFFER_COMPLETE_EXT) {
+ _mesa_error(ctx, GL_INVALID_FRAMEBUFFER_OPERATION_EXT,
+ "glClearBufferfi(incomplete framebuffer)");
+ return;
+ }
+
if (ctx->DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer)
mask |= BUFFER_BIT_DEPTH;
if (ctx->DrawBuffer->Attachment[BUFFER_STENCIL].Renderbuffer)