diff options
-rw-r--r-- | src/mapi/glapi/gen/ARB_texture_storage.xml | 6 | ||||
-rw-r--r-- | src/mesa/main/texstorage.c | 51 | ||||
-rw-r--r-- | src/mesa/main/texstorage.h | 12 |
3 files changed, 66 insertions, 3 deletions
diff --git a/src/mapi/glapi/gen/ARB_texture_storage.xml b/src/mapi/glapi/gen/ARB_texture_storage.xml index 7df39424157..4dbab3947e9 100644 --- a/src/mapi/glapi/gen/ARB_texture_storage.xml +++ b/src/mapi/glapi/gen/ARB_texture_storage.xml @@ -10,14 +10,14 @@ <enum name="TEXTURE_IMMUTABLE_FORMAT" value="0x912F"/> - <function name="TexStorage1D"> + <function name="TexStorage1D" no_error="true"> <param name="target" type="GLenum"/> <param name="levels" type="GLsizei"/> <param name="internalFormat" type="GLenum"/> <param name="width" type="GLsizei"/> </function> - <function name="TexStorage2D" es2="3.0"> + <function name="TexStorage2D" es2="3.0" no_error="true"> <param name="target" type="GLenum"/> <param name="levels" type="GLsizei"/> <param name="internalFormat" type="GLenum"/> @@ -25,7 +25,7 @@ <param name="height" type="GLsizei"/> </function> - <function name="TexStorage3D" es2="3.0"> + <function name="TexStorage3D" es2="3.0" no_error="true"> <param name="target" type="GLenum"/> <param name="levels" type="GLsizei"/> <param name="internalFormat" type="GLenum"/> diff --git a/src/mesa/main/texstorage.c b/src/mesa/main/texstorage.c index 854a2ed5660..ede3159f058 100644 --- a/src/mesa/main/texstorage.c +++ b/src/mesa/main/texstorage.c @@ -487,6 +487,18 @@ texture_storage_error(struct gl_context *ctx, GLuint dims, } +static void +texture_storage_no_error(struct gl_context *ctx, GLuint dims, + struct gl_texture_object *texObj, + GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, bool dsa) +{ + texture_storage(ctx, dims, texObj, target, levels, internalformat, width, + height, depth, dsa, true); +} + + /** * Helper used by _mesa_TexStorage1/2/3D(). */ @@ -531,6 +543,19 @@ texstorage_error(GLuint dims, GLenum target, GLsizei levels, } +static void +texstorage_no_error(GLuint dims, GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, GLsizei height, + GLsizei depth) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_texture_object *texObj = _mesa_get_current_tex_object(ctx, target); + texture_storage_no_error(ctx, dims, texObj, target, levels, + internalformat, width, height, depth, false); +} + + /** * Helper used by _mesa_TextureStorage1/2/3D(). */ @@ -576,6 +601,14 @@ texturestorage(GLuint dims, GLuint texture, GLsizei levels, void GLAPIENTRY +_mesa_TexStorage1D_no_error(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width) +{ + texstorage_no_error(1, target, levels, internalformat, width, 1, 1); +} + + +void GLAPIENTRY _mesa_TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) { @@ -585,6 +618,15 @@ _mesa_TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, void GLAPIENTRY +_mesa_TexStorage2D_no_error(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height) +{ + texstorage_no_error(2, target, levels, internalformat, width, height, 1); +} + + +void GLAPIENTRY _mesa_TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) { @@ -594,6 +636,15 @@ _mesa_TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, void GLAPIENTRY +_mesa_TexStorage3D_no_error(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth) +{ + texstorage_no_error(3, target, levels, internalformat, width, height, depth); +} + + +void GLAPIENTRY _mesa_TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) { diff --git a/src/mesa/main/texstorage.h b/src/mesa/main/texstorage.h index 526c61e8518..269c8bdc272 100644 --- a/src/mesa/main/texstorage.h +++ b/src/mesa/main/texstorage.h @@ -59,15 +59,27 @@ _mesa_valid_tex_storage_dim(GLsizei width, GLsizei height, GLsizei depth) */ /*@{*/ +void GLAPIENTRY +_mesa_TexStorage1D_no_error(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width); + extern void GLAPIENTRY _mesa_TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +void GLAPIENTRY +_mesa_TexStorage2D_no_error(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height); extern void GLAPIENTRY _mesa_TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +void GLAPIENTRY +_mesa_TexStorage3D_no_error(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); extern void GLAPIENTRY _mesa_TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, |