asahi: gracefully handle allocating linear images

Frontends might try to allocate linear textures or images, we  should
gracefully return NULL so frontends can do fallback paths.

Signed-off-by: Karol Herbst <git@karolherbst.de>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25052>
This commit is contained in:
Karol Herbst 2023-09-01 11:52:50 +02:00 committed by Marge Bot
parent 01aa487c40
commit 3bc09aaf1a

View file

@ -499,8 +499,10 @@ agx_select_best_modifier(const struct agx_resource *pres)
return DRM_FORMAT_MOD_APPLE_TWIDDLED;
}
assert(agx_linear_allowed(pres));
return DRM_FORMAT_MOD_LINEAR;
if (agx_linear_allowed(pres))
return DRM_FORMAT_MOD_LINEAR;
else
return DRM_FORMAT_MOD_INVALID;
}
static struct pipe_resource *
@ -521,16 +523,14 @@ agx_resource_create_with_modifiers(struct pipe_screen *screen,
if (modifiers) {
nresource->modifier =
agx_select_modifier_from_list(nresource, modifiers, count);
/* There may not be a matching modifier, bail if so */
if (nresource->modifier == DRM_FORMAT_MOD_INVALID) {
free(nresource);
return NULL;
}
} else {
nresource->modifier = agx_select_best_modifier(nresource);
}
assert(nresource->modifier != DRM_FORMAT_MOD_INVALID);
/* There may not be a matching modifier, bail if so */
if (nresource->modifier == DRM_FORMAT_MOD_INVALID) {
free(nresource);
return NULL;
}
/* If there's only 1 layer and there's no compression, there's no harm in