mesa: add KHR_no_error support to glTexStorage*D()
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Tue, 18 Jul 2017 12:14:48 +0000 (14:14 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 31 Jul 2017 11:53:39 +0000 (13:53 +0200)
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/mapi/glapi/gen/ARB_texture_storage.xml
src/mesa/main/texstorage.c
src/mesa/main/texstorage.h

index 7df39424157db5e4a674847d9594614d6125cc9c..4dbab3947e9ee737ef773a211fc19f4dbc134349 100644 (file)
 
   <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"/>
index 854a2ed56601592c42729c8be01f21b8c23f909f..ede3159f058c5d5f74510c90b37b09d8f5981a84 100644 (file)
@@ -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().
  */
@@ -575,6 +600,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)
@@ -584,6 +617,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)
@@ -593,6 +635,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)
index 526c61e8518449de57931ee85a025e2f6081231e..269c8bdc2721c987d06b33e1d47bd7d1dcfd04fb 100644 (file)
@@ -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,