[Mesa-dev] [PATCH 3/3] mesa: add KHR_no_error support for gl{Compressed}TexImage*D()

Nicolai Hähnle nhaehnle at gmail.com
Mon Jun 26 08:54:47 UTC 2017


For the series:

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

On 26.06.2017 02:49, Timothy Arceri wrote:
> ---
>   src/mapi/glapi/gen/gl_API.xml | 14 ++++----
>   src/mesa/main/teximage.c      | 82 +++++++++++++++++++++++++++++++++++++++++++
>   src/mesa/main/teximage.h      | 34 ++++++++++++++++++
>   3 files changed, 124 insertions(+), 6 deletions(-)
> 
> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
> index 2cc66ac..550af08 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -2149,7 +2149,7 @@
>           <glx rop="108"/>
>       </function>
>   
> -    <function name="TexImage1D">
> +    <function name="TexImage1D" no_error="true">
>           <param name="target" type="GLenum"/>
>           <param name="level" type="GLint"/>
>           <param name="internalformat" type="GLint"/>
> @@ -2161,7 +2161,7 @@
>           <glx rop="109" large="true"/>
>       </function>
>   
> -    <function name="TexImage2D" es1="1.0" es2="2.0">
> +    <function name="TexImage2D" es1="1.0" es2="2.0" no_error="true">
>           <param name="target" type="GLenum"/>
>           <param name="level" type="GLint"/>
>           <param name="internalformat" type="GLint"/>
> @@ -4011,7 +4011,7 @@
>           <glx rop="4113"/>
>       </function>
>   
> -    <function name="TexImage3D" es2="3.0">
> +    <function name="TexImage3D" es2="3.0" no_error="true">
>           <param name="target" type="GLenum"/>
>           <param name="level" type="GLint"/>
>           <param name="internalformat" type="GLint"/>
> @@ -4507,7 +4507,8 @@
>           <glx rop="229"/>
>       </function>
>   
> -    <function name="CompressedTexImage3D" es2="3.0" marshal="sync">
> +    <function name="CompressedTexImage3D" es2="3.0" marshal="sync"
> +              no_error="true">
>           <param name="target" type="GLenum"/>
>           <param name="level" type="GLint"/>
>           <param name="internalformat" type="GLenum"/>
> @@ -4520,7 +4521,8 @@
>           <glx rop="216" handcode="client"/>
>       </function>
>   
> -    <function name="CompressedTexImage2D" es1="1.0" es2="2.0" marshal="sync">
> +    <function name="CompressedTexImage2D" es1="1.0" es2="2.0" marshal="sync"
> +               no_error="true">
>           <param name="target" type="GLenum"/>
>           <param name="level" type="GLint"/>
>           <param name="internalformat" type="GLenum"/>
> @@ -4532,7 +4534,7 @@
>           <glx rop="215" handcode="client"/>
>       </function>
>   
> -    <function name="CompressedTexImage1D" marshal="sync">
> +    <function name="CompressedTexImage1D" marshal="sync" no_error="true">
>           <param name="target" type="GLenum"/>
>           <param name="level" type="GLint"/>
>           <param name="internalformat" type="GLenum"/>
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index 4ff7d33..128e010 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -3090,6 +3090,18 @@ teximage_err(struct gl_context *ctx, GLboolean compressed, GLuint dims,
>   }
>   
>   
> +static void
> +teximage_no_error(struct gl_context *ctx, GLboolean compressed, GLuint dims,
> +                  GLenum target, GLint level, GLint internalFormat,
> +                  GLsizei width, GLsizei height, GLsizei depth,
> +                  GLint border, GLenum format, GLenum type,
> +                  GLsizei imageSize, const GLvoid *pixels)
> +{
> +   teximage(ctx, compressed, dims, target, level, internalFormat, width, height,
> +            depth, border, format, type, imageSize, pixels, true);
> +}
> +
> +
>   /*
>    * Called from the API.  Note that width includes the border.
>    */
> @@ -3144,6 +3156,40 @@ _mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalFormat,
>   
>   
>   void GLAPIENTRY
> +_mesa_TexImage1D_no_error(GLenum target, GLint level, GLint internalFormat,
> +                          GLsizei width, GLint border, GLenum format,
> +                          GLenum type, const GLvoid *pixels)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   teximage_no_error(ctx, GL_FALSE, 1, target, level, internalFormat, width, 1,
> +                     1, border, format, type, 0, pixels);
> +}
> +
> +
> +void GLAPIENTRY
> +_mesa_TexImage2D_no_error(GLenum target, GLint level, GLint internalFormat,
> +                          GLsizei width, GLsizei height, GLint border,
> +                          GLenum format, GLenum type, const GLvoid *pixels)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   teximage_no_error(ctx, GL_FALSE, 2, target, level, internalFormat, width,
> +                     height, 1, border, format, type, 0, pixels);
> +}
> +
> +
> +void GLAPIENTRY
> +_mesa_TexImage3D_no_error(GLenum target, GLint level, GLint internalFormat,
> +                          GLsizei width, GLsizei height, GLsizei depth,
> +                          GLint border, GLenum format, GLenum type,
> +                          const GLvoid *pixels )
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   teximage_no_error(ctx, GL_FALSE, 3, target, level, internalFormat,
> +                     width, height, depth, border, format, type, 0, pixels);
> +}
> +
> +
> +void GLAPIENTRY
>   _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
>   {
>      struct gl_texture_object *texObj;
> @@ -4571,6 +4617,42 @@ _mesa_CompressedTexImage3D(GLenum target, GLint level,
>   }
>   
>   
> +void GLAPIENTRY
> +_mesa_CompressedTexImage1D_no_error(GLenum target, GLint level,
> +                                    GLenum internalFormat, GLsizei width,
> +                                    GLint border, GLsizei imageSize,
> +                                    const GLvoid *data)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   teximage_no_error(ctx, GL_TRUE, 1, target, level, internalFormat, width, 1,
> +                     1, border, GL_NONE, GL_NONE, imageSize, data);
> +}
> +
> +
> +void GLAPIENTRY
> +_mesa_CompressedTexImage2D_no_error(GLenum target, GLint level,
> +                                    GLenum internalFormat, GLsizei width,
> +                                    GLsizei height, GLint border,
> +                                    GLsizei imageSize, const GLvoid *data)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   teximage_no_error(ctx, GL_TRUE, 2, target, level, internalFormat, width,
> +                     height, 1, border, GL_NONE, GL_NONE, imageSize, data);
> +}
> +
> +
> +void GLAPIENTRY
> +_mesa_CompressedTexImage3D_no_error(GLenum target, GLint level,
> +                                    GLenum internalFormat, GLsizei width,
> +                                    GLsizei height, GLsizei depth, GLint border,
> +                                    GLsizei imageSize, const GLvoid *data)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   teximage_no_error(ctx, GL_TRUE, 3, target, level, internalFormat, width,
> +                     height, depth, border, GL_NONE, GL_NONE, imageSize, data);
> +}
> +
> +
>   /**
>    * Common helper for glCompressedTexSubImage1/2/3D() and
>    * glCompressedTextureSubImage1/2/3D().
> diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h
> index 295e35a..72168a4 100644
> --- a/src/mesa/main/teximage.h
> +++ b/src/mesa/main/teximage.h
> @@ -269,6 +269,22 @@ _mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalformat,
>                        const GLvoid *pixels );
>   
>   extern void GLAPIENTRY
> +_mesa_TexImage1D_no_error(GLenum target, GLint level, GLint internalformat,
> +                          GLsizei width, GLint border,
> +                          GLenum format, GLenum type, const GLvoid *pixels);
> +
> +extern void GLAPIENTRY
> +_mesa_TexImage2D_no_error(GLenum target, GLint level, GLint internalformat,
> +                          GLsizei width, GLsizei height, GLint border,
> +                          GLenum format, GLenum type, const GLvoid *pixels);
> +
> +extern void GLAPIENTRY
> +_mesa_TexImage3D_no_error(GLenum target, GLint level, GLint internalformat,
> +                          GLsizei width, GLsizei height, GLsizei depth,
> +                          GLint border, GLenum format, GLenum type,
> +                          const GLvoid *pixels);
> +
> +extern void GLAPIENTRY
>   _mesa_EGLImageTargetTexture2DOES( GLenum target, GLeglImageOES image );
>   
>   void GLAPIENTRY
> @@ -404,6 +420,24 @@ _mesa_CompressedTexImage3D(GLenum target, GLint level,
>                                 GLsizei height, GLsizei depth, GLint border,
>                                 GLsizei imageSize, const GLvoid *data);
>   
> +extern void GLAPIENTRY
> +_mesa_CompressedTexImage1D_no_error(GLenum target, GLint level,
> +                                    GLenum internalformat, GLsizei width,
> +                                    GLint border, GLsizei imageSize,
> +                                    const GLvoid *data);
> +
> +extern void GLAPIENTRY
> +_mesa_CompressedTexImage2D_no_error(GLenum target, GLint level,
> +                                    GLenum internalformat, GLsizei width,
> +                                    GLsizei height, GLint border,
> +                                    GLsizei imageSize, const GLvoid *data);
> +
> +extern void GLAPIENTRY
> +_mesa_CompressedTexImage3D_no_error(GLenum target, GLint level,
> +                                    GLenum internalformat, GLsizei width,
> +                                    GLsizei height, GLsizei depth, GLint border,
> +                                    GLsizei imageSize, const GLvoid *data);
> +
>   
>   extern void GLAPIENTRY
>   _mesa_CompressedTexSubImage1D_no_error(GLenum target, GLint level,
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list