* OTHER DEALINGS IN THE SOFTWARE.
*/
-
/**
* \file texstorage.c
* GL_ARB_texture_storage functions
*/
-
-
#include "glheader.h"
#include "context.h"
#include "enums.h"
/** Helper to get a particular texture image in a texture object */
static struct gl_texture_image *
-get_tex_image(struct gl_context *ctx,
+get_tex_image(struct gl_context *ctx,
struct gl_texture_object *texObj,
GLuint face, GLuint level)
{
0, internalFormat, texFormat);
}
- _mesa_next_mipmap_level_size(target, 0, levelWidth, levelHeight, levelDepth,
+ _mesa_next_mipmap_level_size(target, 0,
+ levelWidth, levelHeight, levelDepth,
&levelWidth, &levelHeight, &levelDepth);
}
return GL_TRUE;
}
}
+
/**
* Default ctx->Driver.AllocTextureStorage() handler.
*
"glTex%sStorage%uD(width, height or depth < 1)",
suffix, dims);
return GL_TRUE;
- }
+ }
if (_mesa_is_compressed_format(ctx, internalformat)) {
GLenum err;
_mesa_error(ctx, GL_INVALID_VALUE, "glTex%sStorage%uD(levels < 1)",
suffix, dims);
return GL_TRUE;
- }
+ }
/* check levels against maximum (note different error than above) */
if (levels > (GLint) _mesa_max_texture_levels(ctx, target)) {
return; /* error was recorded */
}
-
texFormat = _mesa_choose_texture_format(ctx, texObj, target, 0,
internalformat, GL_NONE, GL_NONE);
assert(texFormat != MESA_FORMAT_NONE);
}
}
+
/**
* Helper used by _mesa_TexStorage1/2/3D().
*/
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- /* target check */
- /* This is done here so that _mesa_texture_storage can receive unsized
- * formats. */
+ /* Check target. This is done here so that _mesa_texture_storage
+ * can receive unsized formats.
+ */
if (!legal_texobj_target(ctx, dims, target)) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glTexStorage%uD(illegal target=%s)",
_mesa_enum_to_string(target), levels,
_mesa_enum_to_string(internalformat),
width, height, depth);
+
/* Check the format to make sure it is sized. */
if (!_mesa_is_legal_tex_storage_format(ctx, internalformat)) {
_mesa_error(ctx, GL_INVALID_ENUM,
internalformat, width, height, depth, false);
}
+
/**
* Helper used by _mesa_TextureStorage1/2/3D().
*/
return;
}
- /* target check */
- /* This is done here so that _mesa_texture_storage can receive unsized
- * formats. */
+ /* Check target. This is done here so that _mesa_texture_storage
+ * can receive unsized formats.
+ */
if (!legal_texobj_target(ctx, dims, texObj->Target)) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glTextureStorage%uD(illegal target=%s)",
levels, internalformat, width, height, depth, true);
}
+
void GLAPIENTRY
_mesa_TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat,
GLsizei width)
texstorage(3, target, levels, internalformat, width, height, depth);
}
+
void GLAPIENTRY
_mesa_TextureStorage1D(GLuint texture, GLsizei levels, GLenum internalformat,
GLsizei width)
texturestorage(2, texture, levels, internalformat, width, height, 1);
}
+
void GLAPIENTRY
_mesa_TextureStorage3D(GLuint texture, GLsizei levels, GLenum internalformat,
GLsizei width, GLsizei height, GLsizei depth)
}
-
void GLAPIENTRY
_mesa_TextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels,
GLenum internalformat,