[Mesa-dev] [PATCH] mesa: Implement TEXTURE_IMMUTABLE_LEVELS for ES 3.0.

Brian Paul brianp at vmware.com
Tue Mar 12 12:05:33 PDT 2013


On 03/12/2013 12:15 PM, Matt Turner wrote:
> Fixes piglit's texture-immutable-levels test.
> Reported-by: Marek Olšák<maraeo at gmail.com>
> ---
>   src/mesa/main/mtypes.h     |    1 +
>   src/mesa/main/texparam.c   |   12 ++++++++++++
>   src/mesa/main/texstorage.c |    1 +
>   3 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 4f09513..d7e1776 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -1288,6 +1288,7 @@ struct gl_texture_object
>      GLfloat Priority;		/**<  in [0,1] */
>      GLint BaseLevel;		/**<  min mipmap level, OpenGL 1.2 */
>      GLint MaxLevel;		/**<  max mipmap level, OpenGL 1.2 */
> +   GLint ImmutableLevels;       /**<  ES 3.0 / ARB_texture_view */
>      GLint _MaxLevel;		/**<  actual max mipmap level (q in the spec) */
>      GLfloat _MaxLambda;		/**<  = _MaxLevel - BaseLevel (q - b in spec) */
>      GLint CropRect[4];           /**<  GL_OES_draw_texture */
> diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
> index 120845b..3ff40aa 100644
> --- a/src/mesa/main/texparam.c
> +++ b/src/mesa/main/texparam.c
> @@ -1460,6 +1460,12 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
>            *params = (GLfloat) obj->Immutable;
>            break;
>
> +      case GL_TEXTURE_IMMUTABLE_LEVELS:
> +         if (!_mesa_is_gles3(ctx))
> +            goto invalid_pname;
> +         *params = (GLfloat) obj->ImmutableLevels;
> +         break;
> +
>         case GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES:
>            if (!_mesa_is_gles(ctx) || !ctx->Extensions.OES_EGL_image_external)
>               goto invalid_pname;
> @@ -1637,6 +1643,12 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
>            *params = (GLint) obj->Immutable;
>            break;
>
> +      case GL_TEXTURE_IMMUTABLE_LEVELS:
> +         if (!_mesa_is_gles3(ctx))
> +            goto invalid_pname;
> +         *params = (GLint) obj->ImmutableLevels;

Cast not needed.


> +         break;
> +
>         case GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES:
>            if (!_mesa_is_gles(ctx) || !ctx->Extensions.OES_EGL_image_external)
>               goto invalid_pname;
> diff --git a/src/mesa/main/texstorage.c b/src/mesa/main/texstorage.c
> index 00f19ba..675fd74 100644
> --- a/src/mesa/main/texstorage.c
> +++ b/src/mesa/main/texstorage.c
> @@ -397,6 +397,7 @@ texstorage(GLuint dims, GLenum target, GLsizei levels, GLenum internalformat,
>         }
>
>         texObj->Immutable = GL_TRUE;
> +      texObj->ImmutableLevels = levels;
>      }
>   }
>

Reviewed-by: Brian Paul <brianp at vmware.com>


More information about the mesa-dev mailing list