From 4de35bed423a9e4204498b83b5be7f16399363bc Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Mon, 30 Mar 2020 10:54:08 +0800 Subject: [PATCH] lima: also check tiled and depth case when import We missed the tiled and depth case when check buffer alignment. Reviewed-by: Vasily Khoruzhick Signed-off-by: Qiang Yu Tested-by: Marge Bot Part-of: --- src/gallium/drivers/lima/lima_resource.c | 39 ++++++++++++------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/gallium/drivers/lima/lima_resource.c b/src/gallium/drivers/lima/lima_resource.c index fb416652e53..5dd2a472114 100644 --- a/src/gallium/drivers/lima/lima_resource.c +++ b/src/gallium/drivers/lima/lima_resource.c @@ -322,25 +322,6 @@ lima_resource_from_handle(struct pipe_screen *pscreen, return NULL; } - /* check alignment for the buffer */ - if (pres->bind & PIPE_BIND_RENDER_TARGET) { - unsigned width, height, stride, size; - - width = align(pres->width0, 16); - height = align(pres->height0, 16); - 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"); - goto err_out; - } - - res->levels[0].width = width; - } - else - res->levels[0].width = pres->width0; - switch (handle->modifier) { case DRM_FORMAT_MOD_LINEAR: res->tiled = false; @@ -360,6 +341,26 @@ lima_resource_from_handle(struct pipe_screen *pscreen, goto err_out; } + /* check alignment for the buffer */ + if (res->tiled || + (pres->bind & (PIPE_BIND_RENDER_TARGET | PIPE_BIND_DEPTH_STENCIL))) { + unsigned width, height, stride, size; + + width = align(pres->width0, 16); + height = align(pres->height0, 16); + 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"); + goto err_out; + } + + res->levels[0].width = width; + } + else + res->levels[0].width = pres->width0; + return pres; err_out: -- 2.30.2