[Mesa-dev] [PATCH 7/7] mesa: add KHR_no_error support for glCompressedTex*SubImage3D()

Nicolai Hähnle nhaehnle at gmail.com
Mon May 15 14:16:15 UTC 2017


Patches 1, 3-7:

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


On 12.05.2017 06:13, Timothy Arceri wrote:
> ---
>  src/mapi/glapi/gen/ARB_direct_state_access.xml |  2 +-
>  src/mapi/glapi/gen/gl_API.xml                  |  3 ++-
>  src/mesa/main/teximage.c                       | 28 +++++++++++++++++++++++++-
>  src/mesa/main/teximage.h                       | 14 +++++++++++++
>  4 files changed, 44 insertions(+), 3 deletions(-)
>
> diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml b/src/mapi/glapi/gen/ARB_direct_state_access.xml
> index 21f44b5..43e4e05 100644
> --- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
> +++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
> @@ -425,21 +425,21 @@
>        <param name="level" type="GLint" />
>        <param name="xoffset" type="GLint" />
>        <param name="yoffset" type="GLint" />
>        <param name="width" type="GLsizei" />
>        <param name="height" type="GLsizei" />
>        <param name="format" type="GLenum" />
>        <param name="imageSize" type="GLsizei" />
>        <param name="data" type="const GLvoid *" />
>     </function>
>
> -   <function name="CompressedTextureSubImage3D">
> +   <function name="CompressedTextureSubImage3D" no_error="true">
>        <param name="texture" type="GLuint" />
>        <param name="level" type="GLint" />
>        <param name="xoffset" type="GLint" />
>        <param name="yoffset" type="GLint" />
>        <param name="zoffset" type="GLint" />
>        <param name="width" type="GLsizei" />
>        <param name="height" type="GLsizei" />
>        <param name="depth" type="GLsizei" />
>        <param name="format" type="GLenum" />
>        <param name="imageSize" type="GLsizei" />
> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
> index 755cb31..1a3b306 100644
> --- a/src/mapi/glapi/gen/gl_API.xml
> +++ b/src/mapi/glapi/gen/gl_API.xml
> @@ -4536,21 +4536,22 @@
>          <param name="target" type="GLenum"/>
>          <param name="level" type="GLint"/>
>          <param name="internalformat" type="GLenum"/>
>          <param name="width" type="GLsizei"/>
>          <param name="border" type="GLint"/>
>          <param name="imageSize" type="GLsizei" counter="true"/>
>          <param name="data" type="const GLvoid *" count="imageSize"/>
>          <glx rop="214" handcode="client"/>
>      </function>
>
> -    <function name="CompressedTexSubImage3D" es2="3.0" marshal="sync">
> +    <function name="CompressedTexSubImage3D" es2="3.0" marshal="sync"
> +              no_error="true">
>          <param name="target" type="GLenum"/>
>          <param name="level" type="GLint"/>
>          <param name="xoffset" type="GLint"/>
>          <param name="yoffset" type="GLint"/>
>          <param name="zoffset" type="GLint"/>
>          <param name="width" type="GLsizei"/>
>          <param name="height" type="GLsizei"/>
>          <param name="depth" type="GLsizei"/>
>          <param name="format" type="GLenum"/>
>          <param name="imageSize" type="GLsizei" counter="true"/>
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index 2f9ff30..fed1dad 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -4576,21 +4576,21 @@ compressed_tex_sub_image(unsigned dim, GLenum target, GLuint texture,
>
>     /* Must handle special case GL_TEXTURE_CUBE_MAP. */
>     if (dim == 3 && dsa && texObj->Target == GL_TEXTURE_CUBE_MAP) {
>        const char *pixels = data;
>        GLint image_stride;
>
>        /* Make sure the texture object is a proper cube.
>         * (See texturesubimage in teximage.c for details on why this check is
>         * performed.)
>         */
> -      if (!_mesa_cube_level_complete(texObj, level)) {
> +      if (!no_error && !_mesa_cube_level_complete(texObj, level)) {
>           _mesa_error(ctx, GL_INVALID_OPERATION,
>                       "glCompressedTextureSubImage3D(cube map incomplete)");
>           return;
>        }
>
>        /* Copy in each face. */
>        for (int i = 0; i < 6; ++i) {
>           texImage = texObj->Image[i][level];
>           assert(texImage);
>
> @@ -4707,31 +4707,57 @@ _mesa_CompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset,
>                                    GLsizei width, GLsizei height,
>                                    GLenum format, GLsizei imageSize,
>                                    const GLvoid *data)
>  {
>     compressed_tex_sub_image(2, 0, texture, level, xoffset, yoffset, 0, width,
>                              height, 1, format, imageSize, data, true, false,
>                              "glCompressedTextureSubImage2D");
>  }
>
>  void GLAPIENTRY
> +_mesa_CompressedTexSubImage3D_no_error(GLenum target, GLint level,
> +                                       GLint xoffset, GLint yoffset,
> +                                       GLint zoffset, GLsizei width,
> +                                       GLsizei height, GLsizei depth,
> +                                       GLenum format, GLsizei imageSize,
> +                                       const GLvoid *data)
> +{
> +   compressed_tex_sub_image(3, target, 0, level, xoffset, yoffset, zoffset,
> +                            width, height, depth, format, imageSize, data,
> +                            false, true, "glCompressedTexSubImage3D");
> +}
> +
> +void GLAPIENTRY
>  _mesa_CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset,
>                                GLint yoffset, GLint zoffset, GLsizei width,
>                                GLsizei height, GLsizei depth, GLenum format,
>                                GLsizei imageSize, const GLvoid *data)
>  {
>     compressed_tex_sub_image(3, target, 0, level, xoffset, yoffset, zoffset,
>                              width, height, depth, format, imageSize, data,
>                              false, false, "glCompressedTexSubImage3D");
>  }
>
>  void GLAPIENTRY
> +_mesa_CompressedTextureSubImage3D_no_error(GLuint texture, GLint level,
> +                                           GLint xoffset, GLint yoffset,
> +                                           GLint zoffset, GLsizei width,
> +                                           GLsizei height, GLsizei depth,
> +                                           GLenum format, GLsizei imageSize,
> +                                           const GLvoid *data)
> +{
> +   compressed_tex_sub_image(3, 0, texture, level, xoffset, yoffset, zoffset,
> +                            width, height, depth, format, imageSize, data,
> +                            true, true, "glCompressedTextureSubImage3D");
> +}
> +
> +void GLAPIENTRY
>  _mesa_CompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset,
>                                    GLint yoffset, GLint zoffset, GLsizei width,
>                                    GLsizei height, GLsizei depth,
>                                    GLenum format, GLsizei imageSize,
>                                    const GLvoid *data)
>  {
>     compressed_tex_sub_image(3, 0, texture, level, xoffset, yoffset, zoffset,
>                              width, height, depth, format, imageSize, data,
>                              true, false, "glCompressedTextureSubImage3D");
>  }
> diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h
> index 6eda721..bc4e235 100644
> --- a/src/mesa/main/teximage.h
> +++ b/src/mesa/main/teximage.h
> @@ -426,26 +426,40 @@ _mesa_CompressedTextureSubImage2D_no_error(GLuint texture, GLint level,
>                                             GLenum format, GLsizei imageSize,
>                                             const GLvoid *data);
>  extern void GLAPIENTRY
>  _mesa_CompressedTextureSubImage2D(GLuint texture, GLint level, GLint xoffset,
>                                    GLint yoffset,
>                                    GLsizei width, GLsizei height,
>                                    GLenum format, GLsizei imageSize,
>                                    const GLvoid *data);
>
>  extern void GLAPIENTRY
> +_mesa_CompressedTexSubImage3D_no_error(GLenum target, GLint level,
> +                                       GLint xoffset, GLint yoffset,
> +                                       GLint zoffset, GLsizei width,
> +                                       GLsizei height, GLsizei depth,
> +                                       GLenum format, GLsizei imageSize,
> +                                       const GLvoid *data);
> +extern void GLAPIENTRY
>  _mesa_CompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset,
>                                   GLint yoffset, GLint zoffset, GLsizei width,
>                                   GLsizei height, GLsizei depth, GLenum format,
>                                   GLsizei imageSize, const GLvoid *data);
>
>  extern void GLAPIENTRY
> +_mesa_CompressedTextureSubImage3D_no_error(GLuint texture, GLint level,
> +                                           GLint xoffset, GLint yoffset,
> +                                           GLint zoffset, GLsizei width,
> +                                           GLsizei height, GLsizei depth,
> +                                           GLenum format, GLsizei imageSize,
> +                                           const GLvoid *data);
> +extern void GLAPIENTRY
>  _mesa_CompressedTextureSubImage3D(GLuint texture, GLint level, GLint xoffset,
>                                    GLint yoffset, GLint zoffset,
>                                    GLsizei width, GLsizei height,
>                                    GLsizei depth,
>                                    GLenum format, GLsizei imageSize,
>                                    const GLvoid *data);
>
>  extern void GLAPIENTRY
>  _mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer);
>
>


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


More information about the mesa-dev mailing list