mesa: more goto removal

This commit is contained in:
Brian Paul
2009-09-15 17:36:35 -06:00
parent ecf6f37fc2
commit c352566933

View File

@@ -2642,9 +2642,8 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
texImage = _mesa_get_tex_image(ctx, texObj, target, level); texImage = _mesa_get_tex_image(ctx, texObj, target, level);
if (!texImage) { if (!texImage) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage1D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage1D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
@@ -2655,9 +2654,8 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
_mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, 1, 1, _mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, 1, 1,
border, internalFormat); border, internalFormat);
ASSERT(ctx->Driver.CopyTexImage1D); ASSERT(ctx->Driver.CopyTexImage1D);
(*ctx->Driver.CopyTexImage1D)(ctx, target, level, internalFormat, ctx->Driver.CopyTexImage1D(ctx, target, level, internalFormat,
x, y, width, border); x, y, width, border);
ASSERT(texImage->TexFormat); ASSERT(texImage->TexFormat);
@@ -2668,7 +2666,7 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
texObj->_Complete = GL_FALSE; texObj->_Complete = GL_FALSE;
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out: }
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
@@ -2710,9 +2708,8 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
if (!texImage) { if (!texImage) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage2D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage2D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
@@ -2725,7 +2722,7 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
border, internalFormat); border, internalFormat);
ASSERT(ctx->Driver.CopyTexImage2D); ASSERT(ctx->Driver.CopyTexImage2D);
(*ctx->Driver.CopyTexImage2D)(ctx, target, level, internalFormat, ctx->Driver.CopyTexImage2D(ctx, target, level, internalFormat,
x, y, width, height, border); x, y, width, height, border);
ASSERT(texImage->TexFormat); ASSERT(texImage->TexFormat);
@@ -2736,7 +2733,7 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
texObj->_Complete = GL_FALSE; texObj->_Complete = GL_FALSE;
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out: }
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
@@ -3133,9 +3130,8 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
texImage = _mesa_get_tex_image(ctx, texObj, target, level); texImage = _mesa_get_tex_image(ctx, texObj, target, level);
if (!texImage) { if (!texImage) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage1D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage1D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
@@ -3145,7 +3141,7 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
border, internalFormat); border, internalFormat);
ASSERT(ctx->Driver.CompressedTexImage1D); ASSERT(ctx->Driver.CompressedTexImage1D);
(*ctx->Driver.CompressedTexImage1D)(ctx, target, level, ctx->Driver.CompressedTexImage1D(ctx, target, level,
internalFormat, width, border, internalFormat, width, border,
imageSize, data, imageSize, data,
texObj, texImage); texObj, texImage);
@@ -3154,7 +3150,7 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
texObj->_Complete = GL_FALSE; texObj->_Complete = GL_FALSE;
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out: }
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
else if (target == GL_PROXY_TEXTURE_1D) { else if (target == GL_PROXY_TEXTURE_1D) {
@@ -3230,9 +3226,8 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
texImage = _mesa_get_tex_image(ctx, texObj, target, level); texImage = _mesa_get_tex_image(ctx, texObj, target, level);
if (!texImage) { if (!texImage) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage2D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage2D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
@@ -3242,7 +3237,7 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
border, internalFormat); border, internalFormat);
ASSERT(ctx->Driver.CompressedTexImage2D); ASSERT(ctx->Driver.CompressedTexImage2D);
(*ctx->Driver.CompressedTexImage2D)(ctx, target, level, ctx->Driver.CompressedTexImage2D(ctx, target, level,
internalFormat, width, height, internalFormat, width, height,
border, imageSize, data, border, imageSize, data,
texObj, texImage); texObj, texImage);
@@ -3251,7 +3246,7 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
texObj->_Complete = GL_FALSE; texObj->_Complete = GL_FALSE;
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out: }
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
else if (target == GL_PROXY_TEXTURE_2D || else if (target == GL_PROXY_TEXTURE_2D ||
@@ -3325,19 +3320,19 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
texImage = _mesa_get_tex_image(ctx, texObj, target, level); texImage = _mesa_get_tex_image(ctx, texObj, target, level);
if (!texImage) { if (!texImage) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage3D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage3D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
ASSERT(texImage->Data == NULL); ASSERT(texImage->Data == NULL);
_mesa_init_teximage_fields(ctx, target, texImage, width, height, depth, _mesa_init_teximage_fields(ctx, target, texImage,
width, height, depth,
border, internalFormat); border, internalFormat);
ASSERT(ctx->Driver.CompressedTexImage3D); ASSERT(ctx->Driver.CompressedTexImage3D);
(*ctx->Driver.CompressedTexImage3D)(ctx, target, level, ctx->Driver.CompressedTexImage3D(ctx, target, level,
internalFormat, internalFormat,
width, height, depth, width, height, depth,
border, imageSize, data, border, imageSize, data,
@@ -3347,7 +3342,7 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
texObj->_Complete = GL_FALSE; texObj->_Complete = GL_FALSE;
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out: }
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
else if (target == GL_PROXY_TEXTURE_3D) { else if (target == GL_PROXY_TEXTURE_3D) {
@@ -3413,6 +3408,7 @@ _mesa_CompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset,
texUnit = _mesa_get_current_tex_unit(ctx); texUnit = _mesa_get_current_tex_unit(ctx);
texObj = _mesa_select_tex_object(ctx, texUnit, target); texObj = _mesa_select_tex_object(ctx, texUnit, target);
_mesa_lock_texture(ctx, texObj); _mesa_lock_texture(ctx, texObj);
{ {
texImage = _mesa_select_tex_image(ctx, texObj, target, level); texImage = _mesa_select_tex_image(ctx, texObj, target, level);
@@ -3421,26 +3417,22 @@ _mesa_CompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset,
if ((GLint) format != texImage->InternalFormat) { if ((GLint) format != texImage->InternalFormat) {
_mesa_error(ctx, GL_INVALID_OPERATION, _mesa_error(ctx, GL_INVALID_OPERATION,
"glCompressedTexSubImage1D(format)"); "glCompressedTexSubImage1D(format)");
goto out;
} }
else if ((width == 1 || width == 2) &&
if ((width == 1 || width == 2) && (GLuint) width != texImage->Width) { (GLuint) width != texImage->Width) {
_mesa_error(ctx, GL_INVALID_VALUE, "glCompressedTexSubImage1D(width)"); _mesa_error(ctx, GL_INVALID_VALUE,
goto out; "glCompressedTexSubImage1D(width)");
} }
else if (width > 0) {
if (width == 0)
goto out; /* no-op, not an error */
if (ctx->Driver.CompressedTexSubImage1D) { if (ctx->Driver.CompressedTexSubImage1D) {
(*ctx->Driver.CompressedTexSubImage1D)(ctx, target, level, ctx->Driver.CompressedTexSubImage1D(ctx, target, level,
xoffset, width, xoffset, width,
format, imageSize, data, format, imageSize, data,
texObj, texImage); texObj, texImage);
} }
}
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out:
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
@@ -3470,6 +3462,7 @@ _mesa_CompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset,
texUnit = _mesa_get_current_tex_unit(ctx); texUnit = _mesa_get_current_tex_unit(ctx);
texObj = _mesa_select_tex_object(ctx, texUnit, target); texObj = _mesa_select_tex_object(ctx, texUnit, target);
_mesa_lock_texture(ctx, texObj); _mesa_lock_texture(ctx, texObj);
{ {
texImage = _mesa_select_tex_image(ctx, texObj, target, level); texImage = _mesa_select_tex_image(ctx, texObj, target, level);
@@ -3478,27 +3471,23 @@ _mesa_CompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset,
if ((GLint) format != texImage->InternalFormat) { if ((GLint) format != texImage->InternalFormat) {
_mesa_error(ctx, GL_INVALID_OPERATION, _mesa_error(ctx, GL_INVALID_OPERATION,
"glCompressedTexSubImage2D(format)"); "glCompressedTexSubImage2D(format)");
goto out;
} }
else if (((width == 1 || width == 2)
if (((width == 1 || width == 2) && (GLuint) width != texImage->Width) || && (GLuint) width != texImage->Width) ||
((height == 1 || height == 2) && (GLuint) height != texImage->Height)) { ((height == 1 || height == 2)
&& (GLuint) height != texImage->Height)) {
_mesa_error(ctx, GL_INVALID_VALUE, "glCompressedTexSubImage2D(size)"); _mesa_error(ctx, GL_INVALID_VALUE, "glCompressedTexSubImage2D(size)");
goto out;
} }
else if (width > 0 && height > 0) {
if (width == 0 || height == 0)
goto out; /* no-op, not an error */
if (ctx->Driver.CompressedTexSubImage2D) { if (ctx->Driver.CompressedTexSubImage2D) {
(*ctx->Driver.CompressedTexSubImage2D)(ctx, target, level, ctx->Driver.CompressedTexSubImage2D(ctx, target, level,
xoffset, yoffset, width, height, xoffset, yoffset, width, height,
format, imageSize, data, format, imageSize, data,
texObj, texImage); texObj, texImage);
} }
}
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out:
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
@@ -3527,6 +3516,7 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset,
texUnit = _mesa_get_current_tex_unit(ctx); texUnit = _mesa_get_current_tex_unit(ctx);
texObj = _mesa_select_tex_object(ctx, texUnit, target); texObj = _mesa_select_tex_object(ctx, texUnit, target);
_mesa_lock_texture(ctx, texObj); _mesa_lock_texture(ctx, texObj);
{ {
texImage = _mesa_select_tex_image(ctx, texObj, target, level); texImage = _mesa_select_tex_image(ctx, texObj, target, level);
@@ -3535,29 +3525,26 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset,
if ((GLint) format != texImage->InternalFormat) { if ((GLint) format != texImage->InternalFormat) {
_mesa_error(ctx, GL_INVALID_OPERATION, _mesa_error(ctx, GL_INVALID_OPERATION,
"glCompressedTexSubImage3D(format)"); "glCompressedTexSubImage3D(format)");
goto out;
} }
else if (((width == 1 || width == 2)
if (((width == 1 || width == 2) && (GLuint) width != texImage->Width) || && (GLuint) width != texImage->Width) ||
((height == 1 || height == 2) && (GLuint) height != texImage->Height) || ((height == 1 || height == 2)
((depth == 1 || depth == 2) && (GLuint) depth != texImage->Depth)) { && (GLuint) height != texImage->Height) ||
((depth == 1 || depth == 2)
&& (GLuint) depth != texImage->Depth)) {
_mesa_error(ctx, GL_INVALID_VALUE, "glCompressedTexSubImage3D(size)"); _mesa_error(ctx, GL_INVALID_VALUE, "glCompressedTexSubImage3D(size)");
goto out;
} }
else if (width > 0 && height > 0 && depth > 0) {
if (width == 0 || height == 0 || depth == 0)
goto out; /* no-op, not an error */
if (ctx->Driver.CompressedTexSubImage3D) { if (ctx->Driver.CompressedTexSubImage3D) {
(*ctx->Driver.CompressedTexSubImage3D)(ctx, target, level, ctx->Driver.CompressedTexSubImage3D(ctx, target, level,
xoffset, yoffset, zoffset, xoffset, yoffset, zoffset,
width, height, depth, width, height, depth,
format, imageSize, data, format, imageSize, data,
texObj, texImage); texObj, texImage);
} }
}
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
out:
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }