From: Brian Paul Date: Fri, 14 Apr 2006 02:25:35 +0000 (+0000) Subject: When popping GL_DRAW_BUFFER state, need to re-do error checking since X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=730b26556bf0f82385059dfcb7488f4b9b349118;p=mesa.git When popping GL_DRAW_BUFFER state, need to re-do error checking since validity depends on whether a window-system FBO or user-created FBO is currently bound. glPopAttrib() may generate GL_INVALID_OPERATION because of this. --- diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index 2eef7294691..d15f9f714de 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -1,8 +1,8 @@ /* * Mesa 3-D graphics library - * Version: 6.5 + * Version: 6.5.1 * - * Copyright (C) 1999-2005 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -848,8 +848,19 @@ _mesa_PopAttrib(void) (GLboolean) (color->ColorMask[1] != 0), (GLboolean) (color->ColorMask[2] != 0), (GLboolean) (color->ColorMask[3] != 0)); - _mesa_drawbuffers(ctx, ctx->Const.MaxDrawBuffers, - color->DrawBuffer, NULL); + /* Call the API_level functions, not _mesa_drawbuffers() since + * we need to do error checking on the pop'd GL_DRAW_BUFFER. + * Ex: if GL_FRONT were pushed, but we're popping with a user + * FBO bound, GL_FRONT will be illegal and we'll need to + * record that error. Per OpenGL ARB decision. + */ + if (ctx->Extensions.ARB_draw_buffers) { + _mesa_DrawBuffersARB(ctx->Const.MaxDrawBuffers, + color->DrawBuffer); + } + else { + _mesa_DrawBuffer(color->DrawBuffer[0]); + } _mesa_set_enable(ctx, GL_ALPHA_TEST, color->AlphaEnabled); _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRef); _mesa_set_enable(ctx, GL_BLEND, color->BlendEnabled);