summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-07-18 14:14:48 +0200
committerSamuel Pitoiset <[email protected]>2017-07-31 13:53:39 +0200
commit8ca88da368c55252c18e50b6e4789561f9fb5ebd (patch)
treea88c3eebc8acb8cb2ddbf0c98f3f89beb50ed816
parent14f1613c6f3c892684b3e479e649ce8eefa173ce (diff)
mesa: add KHR_no_error support to glTexStorage*D()
Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/mapi/glapi/gen/ARB_texture_storage.xml6
-rw-r--r--src/mesa/main/texstorage.c51
-rw-r--r--src/mesa/main/texstorage.h12
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,