On 08/20/2012 05:06 PM, Ian Romanick wrote: > From: Ian Romanick <ian.d.roman...@intel.com> > > v2: Add proper GLES3 filtering. > > Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> > --- > src/mesa/main/APIspec.xml | 203 > --------------------------------------------- > src/mesa/main/teximage.c | 104 +++++++++++++++++++++++ > src/mesa/main/teximage.h | 4 + > 3 files changed, 108 insertions(+), 203 deletions(-) > > diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml > index 1c5be8c..ffc384c 100644 > --- a/src/mesa/main/APIspec.xml > +++ b/src/mesa/main/APIspec.xml > @@ -241,148 +241,6 @@ > <param name="type" type="GLenum"/> > <param name="pixels" type="const GLvoid *"/> > </proto> > - > - <desc name="internalFormat"> > - <value name="GL_ALPHA"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_ALPHA"/> > - </desc> > - </desc> > - > - <desc name="internalFormat"> > - <value name="GL_RGB"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_RGB"/> > - </desc> > - </desc> > - > - <desc name="internalFormat"> > - <value name="GL_RGBA"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_RGBA"/> > - </desc> > - </desc> > - > - <desc name="internalFormat"> > - <value name="GL_LUMINANCE"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_LUMINANCE"/> > - </desc> > - </desc> > - > - <desc name="internalFormat"> > - <value name="GL_LUMINANCE_ALPHA"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_LUMINANCE_ALPHA"/> > - </desc> > - </desc> > - > - <desc name="internalFormat" category="OES_depth_texture"> > - <value name="GL_DEPTH_COMPONENT"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_DEPTH_COMPONENT"/> > - </desc> > - </desc> > - > - <desc name="internalFormat" category="OES_packed_depth_stencil"> > - <value name="GL_DEPTH_STENCIL_OES"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_DEPTH_STENCIL_OES"/> > - </desc> > - </desc> > - > - <desc name="internalFormat" category="EXT_texture_format_BGRA8888"> > - <value name="GL_BGRA_EXT"/> > - > - <desc name="format" error="GL_INVALID_VALUE"> > - <value name="GL_BGRA_EXT"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_ALPHA"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_RGB"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_UNSIGNED_SHORT_5_6_5"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_RGBA"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_UNSIGNED_SHORT_4_4_4_4"/> > - <value name="GL_UNSIGNED_SHORT_5_5_5_1"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" > category="EXT_texture_type_2_10_10_10_REV"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_LUMINANCE"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_LUMINANCE_ALPHA"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > - > - <desc name="format" category="OES_depth_texture"> > - <value name="GL_DEPTH_COMPONENT"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_SHORT"/> > - <value name="GL_UNSIGNED_INT"/> > - </desc> > - </desc> > - > - <desc name="format" category="OES_packed_depth_stencil"> > - <value name="GL_DEPTH_STENCIL_OES"/> > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_INT_24_8_OES"/> > - </desc> > - </desc> > - > - <desc name="format" category="EXT_texture_format_BGRA8888"> > - <value name="GL_BGRA_EXT"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - </desc> > - </desc> > </template> > > <template name="TexEnv"> > @@ -1749,67 +1607,6 @@ > <param name="pixels" type="const GLvoid *"/> > </proto> > > - <desc name="internalFormat"> > - <value name="GL_ALPHA"/> > - <value name="GL_RGB"/> > - <value name="GL_RGBA"/> > - <value name="GL_LUMINANCE"/> > - <value name="GL_LUMINANCE_ALPHA"/> > - </desc> > - > - <desc name="format"> > - <value name="GL_ALPHA"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_RGB"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_UNSIGNED_SHORT_5_6_5"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_RGBA"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_UNSIGNED_SHORT_4_4_4_4"/> > - <value name="GL_UNSIGNED_SHORT_5_5_5_1"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" > category="EXT_texture_type_2_10_10_10_REV"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_LUMINANCE"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > - > - <desc name="format"> > - <value name="GL_LUMINANCE_ALPHA"/> > - > - <desc name="type" error="GL_INVALID_OPERATION"> > - <value name="GL_UNSIGNED_BYTE"/> > - <value name="GL_FLOAT" category="OES_texture_float"/> > - <value name="GL_HALF_FLOAT_OES" > category="OES_texture_half_float"/> > - </desc> > - </desc> > </template> > > <template name="TexSubImage3D"> > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c > index 679cf5c..9c97e60 100644 > --- a/src/mesa/main/teximage.c > +++ b/src/mesa/main/teximage.c > @@ -50,6 +50,12 @@ > #include "glformats.h" > > > +/* Inexplicably, GL_HALF_FLOAT_OES has a different value than GL_HALF_FLOAT. > + */ > +#ifndef GL_HALF_FLOAT_OES > +#define GL_HALF_FLOAT_OES 0x8D61 > +#endif > + > /** > * State changes which we care about for glCopyTex[Sub]Image() calls. > * In particular, we care about pixel transfer state and buffer state > @@ -1578,6 +1584,78 @@ mutable_tex_object(struct gl_context *ctx, GLenum > target) > } > > > +GLenum > +_mesa_es_error_check_format_and_type(GLenum format, GLenum type, > + unsigned dimensions) > +{ > + bool type_valid = true; > + > + switch (format) { > + case GL_ALPHA: > + type_valid = (type == GL_UNSIGNED_BYTE > + || type == GL_FLOAT > + || type == GL_HALF_FLOAT_OES); > + break; > + > + case GL_RGB: > + type_valid = (type == GL_UNSIGNED_BYTE > + || type == GL_UNSIGNED_SHORT_5_6_5 > + || type == GL_FLOAT > + || type == GL_HALF_FLOAT_OES); > + break; > + > + case GL_RGBA: > + type_valid = (type == GL_UNSIGNED_BYTE > + || type == GL_UNSIGNED_SHORT_4_4_4_4 > + || type == GL_UNSIGNED_SHORT_5_5_5_1 > + || type == GL_FLOAT > + || type == GL_HALF_FLOAT_OES > + || type == GL_UNSIGNED_INT_2_10_10_10_REV); > + break; > + > + case GL_LUMINANCE: > + type_valid = (type == GL_UNSIGNED_BYTE > + || type == GL_FLOAT > + || type == GL_HALF_FLOAT_OES); > + break; > + > + case GL_LUMINANCE_ALPHA: > + type_valid = (type == GL_UNSIGNED_BYTE > + || type == GL_FLOAT > + || type == GL_HALF_FLOAT_OES); > + break;
You could actually coalesce the L and LA cases here, if you like. A bit less code. But either way. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev