diff options
-rw-r--r-- | src/mesa/main/APIspec.xml | 8 | ||||
-rw-r--r-- | src/mesa/main/teximage.c | 18 |
2 files changed, 18 insertions, 8 deletions
diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 7b6e25ebdf8..b9332ab8028 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -1418,14 +1418,6 @@ <param name="height" type="GLsizei"/> <param name="border" type="GLint"/> </proto> - - <desc name="internalFormat" error="GL_INVALID_VALUE"> - <value name="GL_ALPHA"/> - <value name="GL_RGB"/> - <value name="GL_RGBA"/> - <value name="GL_LUMINANCE"/> - <value name="GL_LUMINANCE_ALPHA"/> - </desc> </template> <template name="CopyTexSubImage2D"> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 3cd9d401553..5cf91183a20 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -2127,6 +2127,24 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, return GL_TRUE; } + /* OpenGL ES 1.x and OpenGL ES 2.0 impose additional restrictions on the + * internalFormat. + */ + if (_mesa_is_gles(ctx) && !_mesa_is_gles3(ctx)) { + switch (internalFormat) { + case GL_ALPHA: + case GL_RGB: + case GL_RGBA: + case GL_LUMINANCE: + case GL_LUMINANCE_ALPHA: + break; + default: + _mesa_error(ctx, GL_INVALID_VALUE, + "glCopyTexImage%dD(internalFormat)", dimensions); + return GL_TRUE; + } + } + baseFormat = _mesa_base_tex_format(ctx, internalFormat); if (baseFormat < 0) { _mesa_error(ctx, GL_INVALID_VALUE, |