mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
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:
parent
e46b2ef724
commit
4de35bed42
1 changed files with 20 additions and 19 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue