lima: also check tiled and depth case when import

We missed the tiled and depth case when check buffer alignment.

Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4362>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4362>
This commit is contained in:
Qiang Yu 2020-03-30 10:54:08 +08:00 committed by Marge Bot
parent e46b2ef724
commit 4de35bed42

View file

@ -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: