summaryrefslogtreecommitdiff
path: root/src/mesa/main/teximage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/main/teximage.c')
-rw-r--r--src/mesa/main/teximage.c68
1 files changed, 23 insertions, 45 deletions
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index d72e91b3a3..e0c5cf9c37 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -358,34 +358,6 @@ _mesa_base_tex_format( GLcontext *ctx, GLint internalFormat )
/**
- * Test if it is a supported compressed format.
- *
- * \param internalFormat the internal format token provided by the user.
- *
- * \ret GL_TRUE if \p internalFormat is a supported compressed format, or
- * GL_FALSE otherwise.
- *
- * Currently only GL_COMPRESSED_RGB_FXT1_3DFX and GL_COMPRESSED_RGBA_FXT1_3DFX
- * are supported.
- */
-static GLboolean
-is_compressed_format(GLcontext *ctx, GLenum internalFormat)
-{
- GLint supported[100]; /* 100 should be plenty */
- GLuint i, n;
-
- n = _mesa_get_compressed_formats(ctx, supported, GL_TRUE);
- ASSERT(n < 100);
- for (i = 0; i < n; i++) {
- if ((GLint) internalFormat == supported[i]) {
- return GL_TRUE;
- }
- }
- return GL_FALSE;
-}
-
-
-/**
* For cube map faces, return a face index in [0,5].
* For other targets return 0;
*/
@@ -1349,7 +1321,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
}
/* additional checks for compressed textures */
- if (is_compressed_format(ctx, internalFormat)) {
+ if (_mesa_is_compressed_format(ctx, internalFormat)) {
if (!target_can_be_compressed(ctx, target) && !isProxy) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glTexImage%d(target)", dimensions);
@@ -1358,7 +1330,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
if (border != 0) {
if (!isProxy) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glTexImage%D(border!=0)", dimensions);
+ "glTexImage%dD(border!=0)", dimensions);
}
return GL_TRUE;
}
@@ -1536,7 +1508,7 @@ subtexture_error_check2( GLcontext *ctx, GLuint dimensions,
if (!target_can_be_compressed(ctx, target)) {
_mesa_error(ctx, GL_INVALID_ENUM,
- "glTexSubImage%D(target=%s)", dimensions,
+ "glTexSubImage%dD(target=%s)", dimensions,
_mesa_lookup_enum_by_nr(target));
return GL_TRUE;
}
@@ -1547,19 +1519,19 @@ subtexture_error_check2( GLcontext *ctx, GLuint dimensions,
/* offset must be multiple of block size */
if ((xoffset % bw != 0) || (yoffset % bh != 0)) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glTexSubImage%D(xoffset = %d, yoffset = %d)",
+ "glTexSubImage%dD(xoffset = %d, yoffset = %d)",
dimensions, xoffset, yoffset);
return GL_TRUE;
}
/* size must be multiple of bw by bh or equal to whole texture size */
if ((width % bw != 0) && (GLuint) width != destTex->Width) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glTexSubImage%D(width = %d)", dimensions, width);
+ "glTexSubImage%dD(width = %d)", dimensions, width);
return GL_TRUE;
}
if ((height % bh != 0) && (GLuint) height != destTex->Height) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glTexSubImage%D(height = %d)", dimensions, height);
+ "glTexSubImage%dD(height = %d)", dimensions, height);
return GL_TRUE;
}
}
@@ -1715,7 +1687,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
return GL_TRUE;
}
- if (is_compressed_format(ctx, internalFormat)) {
+ if (_mesa_is_compressed_format(ctx, internalFormat)) {
if (!target_can_be_compressed(ctx, target)) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glCopyTexImage%d(target)", dimensions);
@@ -1723,7 +1695,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
}
if (border != 0) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyTexImage%D(border!=0)", dimensions);
+ "glCopyTexImage%dD(border!=0)", dimensions);
return GL_TRUE;
}
}
@@ -1731,7 +1703,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
/* make sure we have depth/stencil buffers */
if (!ctx->ReadBuffer->_DepthBuffer) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyTexImage%D(no depth)", dimensions);
+ "glCopyTexImage%dD(no depth)", dimensions);
return GL_TRUE;
}
}
@@ -1739,7 +1711,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
/* make sure we have depth/stencil buffers */
if (!ctx->ReadBuffer->_DepthBuffer || !ctx->ReadBuffer->_StencilBuffer) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyTexImage%D(no depth/stencil buffer)", dimensions);
+ "glCopyTexImage%dD(no depth/stencil buffer)", dimensions);
return GL_TRUE;
}
}
@@ -1910,18 +1882,18 @@ copytexsubimage_error_check2( GLcontext *ctx, GLuint dimensions,
/* offset must be multiple of 4 */
if ((xoffset & 3) || (yoffset & 3)) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glCopyTexSubImage%D(xoffset or yoffset)", dimensions);
+ "glCopyTexSubImage%dD(xoffset or yoffset)", dimensions);
return GL_TRUE;
}
/* size must be multiple of 4 */
if ((width & 3) != 0 && (GLuint) width != teximage->Width) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glCopyTexSubImage%D(width)", dimensions);
+ "glCopyTexSubImage%dD(width)", dimensions);
return GL_TRUE;
}
if ((height & 3) != 0 && (GLuint) height != teximage->Height) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glCopyTexSubImage%D(height)", dimensions);
+ "glCopyTexSubImage%dD(height)", dimensions);
return GL_TRUE;
}
}
@@ -1941,7 +1913,7 @@ copytexsubimage_error_check2( GLcontext *ctx, GLuint dimensions,
if (teximage->_BaseFormat == GL_DEPTH_COMPONENT) {
if (!ctx->ReadBuffer->_DepthBuffer) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyTexSubImage%D(no depth buffer)",
+ "glCopyTexSubImage%dD(no depth buffer)",
dimensions);
return GL_TRUE;
}
@@ -1949,7 +1921,7 @@ copytexsubimage_error_check2( GLcontext *ctx, GLuint dimensions,
else if (teximage->_BaseFormat == GL_DEPTH_STENCIL_EXT) {
if (!ctx->ReadBuffer->_DepthBuffer || !ctx->ReadBuffer->_StencilBuffer) {
_mesa_error(ctx, GL_INVALID_OPERATION,
- "glCopyTexSubImage%D(no depth/stencil buffer)",
+ "glCopyTexSubImage%dD(no depth/stencil buffer)",
dimensions);
return GL_TRUE;
}
@@ -2457,6 +2429,12 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+ if (!ctx->Extensions.OES_EGL_image) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glEGLImageTargetTexture2DOES(unsupported)");
+ return;
+ }
+
if (target != GL_TEXTURE_2D) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glEGLImageTargetTexture2D(target=%d)", target);
@@ -3107,7 +3085,7 @@ compressed_texture_error_check(GLcontext *ctx, GLint dimensions,
maxTextureSize = 1 << (maxLevels - 1);
/* This will detect any invalid internalFormat value */
- if (!is_compressed_format(ctx, internalFormat))
+ if (!_mesa_is_compressed_format(ctx, internalFormat))
return GL_INVALID_ENUM;
/* This should really never fail */
@@ -3212,7 +3190,7 @@ compressed_subtexture_error_check(GLcontext *ctx, GLint dimensions,
maxTextureSize = 1 << (maxLevels - 1);
/* this will catch any invalid compressed format token */
- if (!is_compressed_format(ctx, format))
+ if (!_mesa_is_compressed_format(ctx, format))
return GL_INVALID_ENUM;
if (width < 1 || width > maxTextureSize)