mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 13:28:06 +02:00
iris: Fix tiled memcpy for cubes...and for array slices
tiled_memcpy_map was not offsetting map->ptr based on the slice, while unmap was. also, we were doing offsetting wrong for cubes.
This commit is contained in:
parent
bce7398646
commit
84832ab7d4
1 changed files with 11 additions and 4 deletions
|
|
@ -652,7 +652,7 @@ iris_unmap_tiled_memcpy(struct iris_transfer *map)
|
|||
unsigned x1, x2, y1, y2;
|
||||
tile_extents(surf, &box, xfer->level, &x1, &x2, &y1, &y2);
|
||||
|
||||
void *ptr = map->ptr + box.z * xfer->layer_stride;
|
||||
void *ptr = map->ptr + s * xfer->layer_stride;
|
||||
|
||||
isl_memcpy_linear_to_tiled(x1, x2, y1, y2, dst, ptr,
|
||||
surf->row_pitch_B, xfer->stride,
|
||||
|
|
@ -698,9 +698,16 @@ iris_map_tiled_memcpy(struct iris_transfer *map)
|
|||
unsigned x1, x2, y1, y2;
|
||||
tile_extents(surf, &box, xfer->level, &x1, &x2, &y1, &y2);
|
||||
|
||||
isl_memcpy_tiled_to_linear(x1, x2, y1, y2, map->ptr, src,
|
||||
xfer->stride, surf->row_pitch_B,
|
||||
has_swizzling, surf->tiling, ISL_MEMCPY);
|
||||
/* When transferring cubes, box.depth is counted in cubes, but
|
||||
* box.z is counted in faces. We want to transfer only the
|
||||
* specified face, but for all array elements. So, use 's'
|
||||
* (the zero-based slice count) rather than box.z.
|
||||
*/
|
||||
void *ptr = map->ptr + s * xfer->layer_stride;
|
||||
|
||||
isl_memcpy_tiled_to_linear(x1, x2, y1, y2, ptr, src, xfer->stride,
|
||||
surf->row_pitch_B, has_swizzling,
|
||||
surf->tiling, ISL_MEMCPY);
|
||||
box.z++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue