mesa: remove some gotos

This will make some subsequent changes easier...
This commit is contained in:
Brian Paul
2009-09-15 17:32:01 -06:00
parent c26c2006df
commit ecf6f37fc2

View File

@@ -2161,9 +2161,8 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
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, "glTexImage1D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
@@ -2175,10 +2174,9 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
postConvWidth, 1, 1, postConvWidth, 1, 1,
border, internalFormat); border, internalFormat);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage1D); ASSERT(ctx->Driver.TexImage1D);
ctx->Driver.TexImage1D(ctx, target, level, internalFormat,
/* Give the texture to the driver! <pixels> may be null! */
(*ctx->Driver.TexImage1D)(ctx, target, level, internalFormat,
width, border, format, type, pixels, width, border, format, type, pixels,
&ctx->Unpack, texObj, texImage); &ctx->Unpack, texObj, texImage);
@@ -2190,7 +2188,7 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint 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);
} }
else if (target == GL_PROXY_TEXTURE_1D) { else if (target == GL_PROXY_TEXTURE_1D) {
@@ -2269,9 +2267,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
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, "glTexImage2D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
@@ -2282,12 +2279,11 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
postConvWidth, postConvHeight, 1, postConvWidth, postConvHeight, 1,
border, internalFormat); border, internalFormat);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage2D); ASSERT(ctx->Driver.TexImage2D);
ctx->Driver.TexImage2D(ctx, target, level, internalFormat,
/* Give the texture to the driver! <pixels> may be null! */ width, height, border, format, type,
(*ctx->Driver.TexImage2D)(ctx, target, level, internalFormat, pixels, &ctx->Unpack, texObj, texImage);
width, height, border, format, type, pixels,
&ctx->Unpack, texObj, texImage);
ASSERT(texImage->TexFormat); ASSERT(texImage->TexFormat);
@@ -2297,7 +2293,7 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint 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);
} }
else if (target == GL_PROXY_TEXTURE_2D || else if (target == GL_PROXY_TEXTURE_2D ||
@@ -2372,9 +2368,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
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, "glTexImage3D"); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
goto out;
} }
else {
if (texImage->Data) { if (texImage->Data) {
ctx->Driver.FreeTexImageData( ctx, texImage ); ctx->Driver.FreeTexImageData( ctx, texImage );
} }
@@ -2385,10 +2380,9 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
width, height, depth, width, height, depth,
border, internalFormat); border, internalFormat);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage3D); ASSERT(ctx->Driver.TexImage3D);
ctx->Driver.TexImage3D(ctx, target, level, internalFormat,
/* Give the texture to the driver! <pixels> may be null! */
(*ctx->Driver.TexImage3D)(ctx, target, level, internalFormat,
width, height, depth, border, format, type, width, height, depth, border, format, type,
pixels, &ctx->Unpack, texObj, texImage); pixels, &ctx->Unpack, texObj, texImage);
@@ -2400,7 +2394,7 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint 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);
} }
else if (target == GL_PROXY_TEXTURE_3D || else if (target == GL_PROXY_TEXTURE_3D ||
@@ -2484,18 +2478,17 @@ _mesa_TexSubImage1D( GLenum target, GLint level,
goto out; /* error was detected */ goto out; /* error was detected */
} }
if (width == 0) if (width > 0) {
goto out; /* no-op, not an error */
/* If we have a border, xoffset=-1 is legal. Bias by border width */ /* If we have a border, xoffset=-1 is legal. Bias by border width */
xoffset += texImage->Border; xoffset += texImage->Border;
ASSERT(ctx->Driver.TexSubImage1D); ASSERT(ctx->Driver.TexSubImage1D);
(*ctx->Driver.TexSubImage1D)(ctx, target, level, xoffset, width, ctx->Driver.TexSubImage1D(ctx, target, level, xoffset, width,
format, type, pixels, &ctx->Unpack, format, type, pixels, &ctx->Unpack,
texObj, texImage); texObj, texImage);
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
}
out: out:
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
@@ -2543,19 +2536,18 @@ _mesa_TexSubImage2D( GLenum target, GLint level,
goto out; /* error was detected */ goto out; /* error was detected */
} }
if (width == 0 || height == 0) if (width > 0 && height >= 0) {
goto out; /* no-op, not an error */
/* If we have a border, xoffset=-1 is legal. Bias by border width */ /* If we have a border, xoffset=-1 is legal. Bias by border width */
xoffset += texImage->Border; xoffset += texImage->Border;
yoffset += texImage->Border; yoffset += texImage->Border;
ASSERT(ctx->Driver.TexSubImage2D); ASSERT(ctx->Driver.TexSubImage2D);
(*ctx->Driver.TexSubImage2D)(ctx, target, level, xoffset, yoffset, ctx->Driver.TexSubImage2D(ctx, target, level, xoffset, yoffset,
width, height, format, type, pixels, width, height, format, type, pixels,
&ctx->Unpack, texObj, texImage); &ctx->Unpack, texObj, texImage);
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
}
out: out:
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }
@@ -2595,22 +2587,21 @@ _mesa_TexSubImage3D( GLenum target, GLint level,
goto out; /* error was detected */ goto out; /* error was detected */
} }
if (width == 0 || height == 0 || height == 0) if (width > 0 && height > 0 && height > 0) {
goto out; /* no-op, not an error */
/* If we have a border, xoffset=-1 is legal. Bias by border width */ /* If we have a border, xoffset=-1 is legal. Bias by border width */
xoffset += texImage->Border; xoffset += texImage->Border;
yoffset += texImage->Border; yoffset += texImage->Border;
zoffset += texImage->Border; zoffset += texImage->Border;
ASSERT(ctx->Driver.TexSubImage3D); ASSERT(ctx->Driver.TexSubImage3D);
(*ctx->Driver.TexSubImage3D)(ctx, target, level, ctx->Driver.TexSubImage3D(ctx, target, level,
xoffset, yoffset, zoffset, xoffset, yoffset, zoffset,
width, height, depth, width, height, depth,
format, type, pixels, format, type, pixels,
&ctx->Unpack, texObj, texImage ); &ctx->Unpack, texObj, texImage );
ctx->NewState |= _NEW_TEXTURE; ctx->NewState |= _NEW_TEXTURE;
} }
}
out: out:
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
} }