From: Jason Ekstrand Date: Tue, 12 Apr 2022 18:34:26 +0000 (-0500) Subject: iris: More gracefully fail in resource_from_user_memory X-Git-Tag: upstream/22.3.5~10442 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c8df09ebd4f164c8cd8b828db08c00deb09fb887;p=platform%2Fupstream%2Fmesa.git iris: More gracefully fail in resource_from_user_memory rusticl (and clover) would like to get a graceful fail here so they can fall back to a shadow copy instead of us asserting. We also start rejecting arrayed surface because isl doesn't allow selecting a QPitch yet. Even if it did, QPitch is horribly restrictive, even for linear surfaces, that it likely wouldn't be that useful. Fixes: e81f3edf76b0 ("iris: Allow userptr on 1D and 2D images") Reviewed-by: Kenneth Graunke Part-of: --- diff --git a/src/gallium/drivers/iris/iris_resource.c b/src/gallium/drivers/iris/iris_resource.c index a690c2b..b5a80c6 100644 --- a/src/gallium/drivers/iris/iris_resource.c +++ b/src/gallium/drivers/iris/iris_resource.c @@ -1175,9 +1175,13 @@ iris_resource_from_user_memory(struct pipe_screen *pscreen, if (!res) return NULL; - assert(templ->target == PIPE_BUFFER || - templ->target == PIPE_TEXTURE_1D || - templ->target == PIPE_TEXTURE_2D); + if (templ->target != PIPE_BUFFER && + templ->target != PIPE_TEXTURE_1D && + templ->target != PIPE_TEXTURE_2D) + return NULL; + + if (templ->array_size > 1) + return NULL; size_t res_size = templ->width0; if (templ->target != PIPE_BUFFER) {