i965/miptree: Fall back to no aux if creation fails
authorNanley Chery <nanley.g.chery@intel.com>
Wed, 24 Apr 2019 20:34:15 +0000 (13:34 -0700)
committerNanley Chery <nanleychery@gmail.com>
Tue, 14 May 2019 16:23:12 +0000 (16:23 +0000)
No surface requires an auxiliary surface to operate correctly. Fall back
to an uncompressed surface if mesa fails to create and allocate an
auxiliary surface. This enables adding more restrictions to ISL without
having to update i965.

Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index 426782c588370bb3d9d5f7461508a2744d066acc..28f32facd2aff4363eff7aef668f22b6178aa37e 100644 (file)
@@ -766,8 +766,8 @@ intel_miptree_create(struct brw_context *brw,
     */
    if (mt->aux_usage != ISL_AUX_USAGE_CCS_D &&
        !intel_miptree_alloc_aux(brw, mt)) {
-      intel_miptree_release(&mt);
-      return NULL;
+      mt->aux_usage = ISL_AUX_USAGE_NONE;
+      mt->supports_fast_clear = false;
    }
 
    return mt;
@@ -854,8 +854,8 @@ intel_miptree_create_for_bo(struct brw_context *brw,
        */
       if (mt->aux_usage != ISL_AUX_USAGE_CCS_D &&
           !intel_miptree_alloc_aux(brw, mt)) {
-         intel_miptree_release(&mt);
-         return NULL;
+         mt->aux_usage = ISL_AUX_USAGE_NONE;
+         mt->supports_fast_clear = false;
       }
    }
 
@@ -1830,7 +1830,8 @@ intel_miptree_alloc_aux(struct brw_context *brw,
    }
 
    /* We should have a valid aux_surf. */
-   assert(aux_surf_ok);
+   if (!aux_surf_ok)
+      return false;
 
    /* No work is needed for a zero-sized auxiliary buffer. */
    if (aux_surf.size_B == 0)