mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
mesa: simplify the _mesa_get_proxy_tex_image() function
This commit is contained in:
parent
ea4b183b8c
commit
80684649a6
1 changed files with 30 additions and 85 deletions
|
|
@ -1,8 +1,9 @@
|
|||
/*
|
||||
* mesa 3-D graphics library
|
||||
* Version: 7.1
|
||||
* Version: 7.5
|
||||
*
|
||||
* Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 2009 VMware, Inc. 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"),
|
||||
|
|
@ -924,6 +925,7 @@ struct gl_texture_image *
|
|||
_mesa_get_proxy_tex_image(GLcontext *ctx, GLenum target, GLint level)
|
||||
{
|
||||
struct gl_texture_image *texImage;
|
||||
GLuint texIndex;
|
||||
|
||||
if (level < 0 )
|
||||
return NULL;
|
||||
|
|
@ -932,111 +934,54 @@ _mesa_get_proxy_tex_image(GLcontext *ctx, GLenum target, GLint level)
|
|||
case GL_PROXY_TEXTURE_1D:
|
||||
if (level >= ctx->Const.MaxTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.ProxyTex[TEXTURE_1D_INDEX]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[TEXTURE_1D_INDEX]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[TEXTURE_1D_INDEX];
|
||||
}
|
||||
return texImage;
|
||||
texIndex = TEXTURE_1D_INDEX;
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_2D:
|
||||
if (level >= ctx->Const.MaxTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.ProxyTex[TEXTURE_2D_INDEX]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[TEXTURE_2D_INDEX]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[TEXTURE_2D_INDEX];
|
||||
}
|
||||
return texImage;
|
||||
texIndex = TEXTURE_2D_INDEX;
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_3D:
|
||||
if (level >= ctx->Const.Max3DTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.ProxyTex[TEXTURE_3D_INDEX]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[TEXTURE_3D_INDEX]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[TEXTURE_3D_INDEX];
|
||||
}
|
||||
return texImage;
|
||||
texIndex = TEXTURE_3D_INDEX;
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_CUBE_MAP:
|
||||
if (level >= ctx->Const.MaxCubeTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.ProxyTex[TEXTURE_CUBE_INDEX]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[TEXTURE_CUBE_INDEX]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[TEXTURE_CUBE_INDEX];
|
||||
}
|
||||
return texImage;
|
||||
texIndex = TEXTURE_CUBE_INDEX;
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_RECTANGLE_NV:
|
||||
if (level > 0)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.ProxyTex[TEXTURE_RECT_INDEX]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[TEXTURE_RECT_INDEX]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[TEXTURE_RECT_INDEX];
|
||||
}
|
||||
return texImage;
|
||||
texIndex = TEXTURE_RECT_INDEX;
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_1D_ARRAY_EXT:
|
||||
if (level >= ctx->Const.MaxTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.ProxyTex[TEXTURE_1D_ARRAY_INDEX]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[TEXTURE_1D_ARRAY_INDEX]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[TEXTURE_1D_ARRAY_INDEX];
|
||||
}
|
||||
return texImage;
|
||||
texIndex = TEXTURE_1D_ARRAY_INDEX;
|
||||
break;
|
||||
case GL_PROXY_TEXTURE_2D_ARRAY_EXT:
|
||||
if (level >= ctx->Const.MaxTextureLevels)
|
||||
return NULL;
|
||||
texImage = ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX];
|
||||
}
|
||||
return texImage;
|
||||
texIndex = TEXTURE_2D_ARRAY_INDEX;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
texImage = ctx->Texture.ProxyTex[texIndex]->Image[0][level];
|
||||
if (!texImage) {
|
||||
texImage = ctx->Driver.NewTextureImage(ctx);
|
||||
if (!texImage) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "proxy texture allocation");
|
||||
return NULL;
|
||||
}
|
||||
ctx->Texture.ProxyTex[texIndex]->Image[0][level] = texImage;
|
||||
/* Set the 'back' pointer */
|
||||
texImage->TexObject = ctx->Texture.ProxyTex[texIndex];
|
||||
}
|
||||
return texImage;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue