iris/resource: Fall back to no aux if creation fails

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 iris.

Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com>
This commit is contained in:
Nanley Chery 2019-05-01 14:42:58 -07:00 committed by Nanley Chery
parent 1423b78633
commit 75a3947af4

View file

@ -351,6 +351,7 @@ iris_resource_alloc_aux(struct iris_screen *screen, struct iris_resource *res)
switch (res->aux.usage) {
case ISL_AUX_USAGE_NONE:
res->aux.surf.size_B = 0;
ok = true;
break;
case ISL_AUX_USAGE_HIZ:
initial_state = ISL_AUX_STATE_AUX_INVALID;
@ -392,13 +393,14 @@ iris_resource_alloc_aux(struct iris_screen *screen, struct iris_resource *res)
break;
}
/* We should have a valid aux_surf. */
if (!ok)
return false;
/* No work is needed for a zero-sized auxiliary buffer. */
if (res->aux.surf.size_B == 0)
return true;
/* Assert that ISL gave us a valid aux surf */
assert(ok);
/* Create the aux_state for the auxiliary buffer. */
res->aux.state = create_aux_state_map(res, initial_state);
if (!res->aux.state)
@ -684,7 +686,7 @@ iris_resource_create_with_modifiers(struct pipe_screen *pscreen,
goto fail;
if (!iris_resource_alloc_aux(screen, res))
goto fail;
iris_resource_disable_aux(res);
return &res->base;