From 5762aa4e56a526bc1d251b81da1548ad1ccd1c29 Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Tue, 16 Mar 2021 23:41:03 -0700 Subject: [PATCH] lima: relax checks of imported BO We don't need stride of imported buffer to be equal to calculated stride if the buffer is linear. Fixes #3070 Reviewed-by: Erico Nunes Signed-off-by: Vasily Khoruzhick Part-of: --- src/gallium/drivers/lima/lima_resource.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/lima/lima_resource.c b/src/gallium/drivers/lima/lima_resource.c index 2c2c1a3cd5d..e19b9be8898 100644 --- a/src/gallium/drivers/lima/lima_resource.c +++ b/src/gallium/drivers/lima/lima_resource.c @@ -351,8 +351,26 @@ lima_resource_from_handle(struct pipe_screen *pscreen, stride = util_format_get_stride(pres->format, width); size = util_format_get_2d_size(pres->format, stride, height); - if (res->levels[0].stride != stride || res->bo->size < size) { - debug_error("import buffer not properly aligned\n"); + if (res->tiled && res->levels[0].stride != stride) { + fprintf(stderr, "tiled imported buffer has mismatching stride: %d (BO) != %d (expected)", + res->levels[0].stride, stride); + goto err_out; + } + + if (!res->tiled && (res->levels[0].stride % 8)) { + fprintf(stderr, "linear imported buffer stride is not aligned to 8 bytes: %d\n", + res->levels[0].stride); + } + + if (!res->tiled && res->levels[0].stride < stride) { + fprintf(stderr, "linear imported buffer stride is smaller than minimal: %d (BO) < %d (min)", + res->levels[0].stride, stride); + goto err_out; + } + + if (res->bo->size < size) { + fprintf(stderr, "imported bo size is smaller than expected: %d (BO) < %d (expected)\n", + res->bo->size, size); goto err_out; }