mesa: simplify _mesa_is_image_unit_valid for buffers
authorMarek Olšák <marek.olsak@amd.com>
Sun, 11 Jun 2017 22:49:15 +0000 (00:49 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 21 Jun 2017 23:51:02 +0000 (01:51 +0200)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/mesa/main/shaderimage.c

index 5e31d4e822081bbeaa6cce6e563c1ad58206cde5..c722b327de255457894106bb5adacc8f792936bf 100644 (file)
@@ -477,6 +477,13 @@ _mesa_is_image_unit_valid(struct gl_context *ctx, struct gl_image_unit *u)
    if (!t)
       return GL_FALSE;
 
+   /* The GL 4.5 Core spec doesn't say anything about buffers. In practice,
+    * the image buffer format is always compatible with the underlying
+    * buffer storage.
+    */
+   if (t->Target == GL_TEXTURE_BUFFER)
+      return GL_TRUE;
+
    if (!t->_BaseComplete && !t->_MipmapComplete)
        _mesa_test_texobj_completeness(ctx, t);
 
@@ -490,20 +497,14 @@ _mesa_is_image_unit_valid(struct gl_context *ctx, struct gl_image_unit *u)
        u->_Layer >= _mesa_get_texture_layers(t, u->Level))
       return GL_FALSE;
 
-   if (t->Target == GL_TEXTURE_BUFFER) {
-      tex_format = _mesa_get_shader_image_format(t->BufferObjectFormat);
-
-   } else {
-      struct gl_texture_image *img = (t->Target == GL_TEXTURE_CUBE_MAP ?
-                                      t->Image[u->_Layer][u->Level] :
-                                      t->Image[0][u->Level]);
-
-      if (!img || img->Border || img->NumSamples > ctx->Const.MaxImageSamples)
-         return GL_FALSE;
+   struct gl_texture_image *img = (t->Target == GL_TEXTURE_CUBE_MAP ?
+                                   t->Image[u->_Layer][u->Level] :
+                                   t->Image[0][u->Level]);
 
-      tex_format = _mesa_get_shader_image_format(img->InternalFormat);
-   }
+   if (!img || img->Border || img->NumSamples > ctx->Const.MaxImageSamples)
+      return GL_FALSE;
 
+   tex_format = _mesa_get_shader_image_format(img->InternalFormat);
    if (!tex_format)
       return GL_FALSE;