panvk: Fix 1DArray image to buffer copy
The img2buf shaders expect the array index to be placed in coord.y when copying a 1D array. Adjust the compute job instantiation to match this behavior. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13077>
This commit is contained in:
committed by
Marge Bot
parent
e48d66afcb
commit
02c46a28ef
@@ -1625,14 +1625,19 @@ panvk_meta_copy_img2buf(struct panvk_cmd_buffer *cmdbuf,
|
||||
.buf.ptr = buf->bo->ptr.gpu + buf->bo_offset + region->bufferOffset,
|
||||
.buf.stride.line = (region->bufferRowLength ? : region->imageExtent.width) * buftexelsz,
|
||||
.img.offset.x = MAX2(region->imageOffset.x & ~15, 0),
|
||||
.img.offset.y = MAX2(region->imageOffset.y & ~15, 0),
|
||||
.img.offset.z = MAX2(region->imageOffset.z, 0),
|
||||
.img.extent.minx = MAX2(region->imageOffset.x, 0),
|
||||
.img.extent.miny = MAX2(region->imageOffset.y, 0),
|
||||
.img.extent.maxx = MAX2(region->imageOffset.x + region->imageExtent.width - 1, 0),
|
||||
.img.extent.maxy = MAX2(region->imageOffset.y + region->imageExtent.height - 1, 0),
|
||||
};
|
||||
|
||||
if (img->pimage.layout.dim == MALI_TEXTURE_DIMENSION_1D) {
|
||||
info.img.extent.maxy = region->imageSubresource.layerCount - 1;
|
||||
} else {
|
||||
info.img.offset.y = MAX2(region->imageOffset.y & ~15, 0);
|
||||
info.img.offset.z = MAX2(region->imageOffset.z, 0);
|
||||
info.img.extent.miny = MAX2(region->imageOffset.y, 0);
|
||||
info.img.extent.maxy = MAX2(region->imageOffset.y + region->imageExtent.height - 1, 0);
|
||||
}
|
||||
|
||||
info.buf.stride.surf = (region->bufferImageHeight ? : region->imageExtent.height) *
|
||||
info.buf.stride.line;
|
||||
|
||||
@@ -1683,8 +1688,10 @@ panvk_meta_copy_img2buf(struct panvk_cmd_buffer *cmdbuf,
|
||||
struct pan_compute_dim num_wg = {
|
||||
(ALIGN_POT(info.img.extent.maxx + 1, 16) - info.img.offset.x) / 16,
|
||||
img->pimage.layout.dim == MALI_TEXTURE_DIMENSION_1D ?
|
||||
1 : (ALIGN_POT(info.img.extent.maxy + 1, 16) - info.img.offset.y) / 16,
|
||||
MAX2(region->imageSubresource.layerCount, region->imageExtent.depth),
|
||||
region->imageSubresource.layerCount :
|
||||
(ALIGN_POT(info.img.extent.maxy + 1, 16) - info.img.offset.y) / 16,
|
||||
img->pimage.layout.dim != MALI_TEXTURE_DIMENSION_1D ?
|
||||
MAX2(region->imageSubresource.layerCount, region->imageExtent.depth) : 1,
|
||||
};
|
||||
|
||||
struct panfrost_ptr job =
|
||||
|
||||
Reference in New Issue
Block a user