mesa: expose dimension check for glTex*Storage functions
authorTapani Pälli <tapani.palli@intel.com>
Mon, 10 Aug 2015 07:50:06 +0000 (10:50 +0300)
committerTapani Pälli <tapani.palli@intel.com>
Wed, 19 Aug 2015 04:25:09 +0000 (07:25 +0300)
This is done so that following patch can use it to verify dimensions
for multisample variants of glTex*Storage.

v2: move function to header, use bool instead GLboolean
v3: small changes, cleanup

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
src/mesa/main/texstorage.c
src/mesa/main/texstorage.h

index 4a2cc6065df8304c41e6716eb78a228b58e8d3b8..db2b63d8ac25c046e334794450526a981106b1ba 100644 (file)
@@ -287,7 +287,7 @@ tex_storage_error_check(struct gl_context *ctx,
     * order to allow meta functions to use legacy formats. */
 
    /* size check */
-   if (width < 1 || height < 1 || depth < 1) {
+   if (!_mesa_valid_tex_storage_dim(width, height, depth)) {
       _mesa_error(ctx, GL_INVALID_VALUE,
                   "glTex%sStorage%uD(width, height or depth < 1)",
                   suffix, dims);
index 6f5495f38563340e6cf1afac1c442278d00025e5..033ecb7edaa20bdc14fa25eedb6f9831252b9e3a 100644 (file)
@@ -38,6 +38,27 @@ _mesa_texture_storage(struct gl_context *ctx, GLuint dims,
                       GLenum internalformat, GLsizei width,
                       GLsizei height, GLsizei depth, bool dsa);
 
+/**
+ * Texture width, height and depth check shared with the
+ * multisample variants of TexStorage functions.
+ *
+ * From OpenGL 4.5 Core spec, page 260 (section 8.19)
+ *
+ *     "An INVALID_VALUE error is generated if width, height, depth
+ *     or levels are less than 1, for commands with the corresponding
+ *     parameters."
+ *
+ * (referring to TextureStorage* commands, these also match values
+ * specified for OpenGL ES 3.1.)
+ */
+static inline bool
+_mesa_valid_tex_storage_dim(GLsizei width, GLsizei height, GLsizei depth)
+{
+   if (width < 1 || height < 1 || depth < 1)
+      return false;
+   return true;
+}
+
 /*@}*/
 
 /**