improved error checking in error_check_format_type()
This commit is contained in:
@@ -43,6 +43,7 @@ error_check_format_type(GLcontext *ctx, GLenum format, GLenum type,
|
||||
GLboolean drawing)
|
||||
{
|
||||
const char *readDraw = drawing ? "Draw" : "Read";
|
||||
struct gl_framebuffer *fb = drawing ? ctx->DrawBuffer : ctx->ReadBuffer;
|
||||
|
||||
if (ctx->Extensions.EXT_packed_depth_stencil
|
||||
&& type == GL_UNSIGNED_INT_24_8_EXT
|
||||
@@ -86,14 +87,14 @@ error_check_format_type(GLcontext *ctx, GLenum format, GLenum type,
|
||||
}
|
||||
break;
|
||||
case GL_STENCIL_INDEX:
|
||||
if (ctx->DrawBuffer->Visual.stencilBits == 0) {
|
||||
if (fb->Visual.stencilBits == 0) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"gl%sPixels(no stencil buffer)", readDraw);
|
||||
return GL_TRUE;
|
||||
}
|
||||
break;
|
||||
case GL_DEPTH_COMPONENT:
|
||||
if (ctx->DrawBuffer->Visual.depthBits == 0) {
|
||||
if (fb->Visual.depthBits == 0) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"gl%sPixels(no depth buffer)", readDraw);
|
||||
return GL_TRUE;
|
||||
@@ -105,14 +106,13 @@ error_check_format_type(GLcontext *ctx, GLenum format, GLenum type,
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "gl%sPixels(type)", readDraw);
|
||||
return GL_TRUE;
|
||||
}
|
||||
if (ctx->DrawBuffer->Visual.depthBits == 0 ||
|
||||
ctx->ReadBuffer->Visual.depthBits == 0 ||
|
||||
ctx->DrawBuffer->Visual.stencilBits == 0 ||
|
||||
ctx->ReadBuffer->Visual.stencilBits == 0) {
|
||||
if (fb->Visual.depthBits == 0 || fb->Visual.stencilBits == 0) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"gl%sPixels(no depth or stencil buffer)", readDraw);
|
||||
return GL_TRUE;
|
||||
}
|
||||
ASSERT(fb->Attachment[BUFFER_DEPTH].Renderbuffer);
|
||||
ASSERT(fb->Attachment[BUFFER_STENCIL].Renderbuffer);
|
||||
break;
|
||||
default:
|
||||
/* this should have been caught in _mesa_is_legal_format_type() */
|
||||
|
||||
Reference in New Issue
Block a user