freedreno: fix buffer import
`rsc->layout.cpp` is zero until we `fd_resource_layout_init()`
Fixes: 5a8718f01b
("freedreno: Make the slice pitch be bytes, not pixels.")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4818>
This commit is contained in:
@@ -1092,7 +1092,6 @@ fd_resource_from_handle(struct pipe_screen *pscreen,
|
|||||||
struct fd_resource *rsc = CALLOC_STRUCT(fd_resource);
|
struct fd_resource *rsc = CALLOC_STRUCT(fd_resource);
|
||||||
struct fdl_slice *slice = fd_resource_slice(rsc, 0);
|
struct fdl_slice *slice = fd_resource_slice(rsc, 0);
|
||||||
struct pipe_resource *prsc = &rsc->base;
|
struct pipe_resource *prsc = &rsc->base;
|
||||||
uint32_t pitchalign = fd_screen(pscreen)->gmem_alignw * rsc->layout.cpp;
|
|
||||||
|
|
||||||
DBG("target=%d, format=%s, %ux%ux%u, array_size=%u, last_level=%u, "
|
DBG("target=%d, format=%s, %ux%ux%u, array_size=%u, last_level=%u, "
|
||||||
"nr_samples=%u, usage=%u, bind=%x, flags=%x",
|
"nr_samples=%u, usage=%u, bind=%x, flags=%x",
|
||||||
@@ -1124,6 +1123,8 @@ fd_resource_from_handle(struct pipe_screen *pscreen,
|
|||||||
slice->offset = handle->offset;
|
slice->offset = handle->offset;
|
||||||
slice->size0 = handle->stride * prsc->height0;
|
slice->size0 = handle->stride * prsc->height0;
|
||||||
|
|
||||||
|
uint32_t pitchalign = fd_screen(pscreen)->gmem_alignw * rsc->layout.cpp;
|
||||||
|
|
||||||
if ((slice->pitch < align(prsc->width0 * rsc->layout.cpp, pitchalign)) ||
|
if ((slice->pitch < align(prsc->width0 * rsc->layout.cpp, pitchalign)) ||
|
||||||
(slice->pitch & (pitchalign - 1)))
|
(slice->pitch & (pitchalign - 1)))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
Reference in New Issue
Block a user