[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