radeonsi: unify error paths in si_texture_create_object
authorMarek Olšák <marek.olsak@amd.com>
Sat, 5 Jan 2019 00:30:48 +0000 (19:30 -0500)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 30 Jan 2019 17:35:22 +0000 (12:35 -0500)
src/gallium/drivers/radeonsi/si_texture.c

index 0f31303592a637a5e3c64605dfefe0e3103ce112..422b0bc3a851d942bac23d19008ac5dee594f9fd 100644 (file)
@@ -1111,7 +1111,7 @@ si_texture_create_object(struct pipe_screen *screen,
 
        tex = CALLOC_STRUCT(si_texture);
        if (!tex)
-               return NULL;
+               goto error;
 
        resource = &tex->buffer;
        resource->b.b = *base;
@@ -1186,10 +1186,8 @@ si_texture_create_object(struct pipe_screen *screen,
                        tex->cb_color_info |= S_028C70_FAST_CLEAR(1);
                        tex->cmask_buffer = &tex->buffer;
 
-                       if (!tex->surface.fmask_size || !tex->surface.cmask_size) {
-                               FREE(tex);
-                               return NULL;
-                       }
+                       if (!tex->surface.fmask_size || !tex->surface.cmask_size)
+                               goto error;
                }
 
                /* Shared textures must always set up DCC here.
@@ -1210,10 +1208,8 @@ si_texture_create_object(struct pipe_screen *screen,
                si_init_resource_fields(sscreen, resource, tex->size,
                                          tex->surface.surf_alignment);
 
-               if (!si_alloc_resource(sscreen, resource)) {
-                       FREE(tex);
-                       return NULL;
-               }
+               if (!si_alloc_resource(sscreen, resource))
+                       goto error;
        } else {
                resource->buf = buf;
                resource->gpu_address = sscreen->ws->buffer_get_virtual_address(resource->buf);
@@ -1275,6 +1271,10 @@ si_texture_create_object(struct pipe_screen *screen,
        }
 
        return tex;
+
+error:
+       FREE(tex);
+       return NULL;
 }
 
 static enum radeon_surf_mode