ac/surface: fix epitch when modifying surf_pitch
This is needed otherwise it can cause bad rendering of UYVY files.
The align(..., 256 / surf->bpe) constraint comes from addrlib.
Fixes: 69aadc4933
("radeonsi: fix surf_pitch for subsampled surface")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5314>
This commit is contained in:
parent
e9826a1bb2
commit
8275dc1ed5
|
@ -1163,10 +1163,14 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib,
|
|||
|
||||
surf->u.gfx9.surf_slice_size = out.sliceSize;
|
||||
surf->u.gfx9.surf_pitch = out.pitch;
|
||||
if (!compressed && surf->blk_w > 1 && out.pitch == out.pixelPitch) {
|
||||
if (!compressed && surf->blk_w > 1 && out.pitch == out.pixelPitch &&
|
||||
surf->u.gfx9.surf.swizzle_mode == ADDR_SW_LINEAR) {
|
||||
/* Adjust surf_pitch to be in elements units,
|
||||
* not in pixels */
|
||||
surf->u.gfx9.surf_pitch /= surf->blk_w;
|
||||
surf->u.gfx9.surf_pitch =
|
||||
align(surf->u.gfx9.surf_pitch / surf->blk_w, 256 / surf->bpe);
|
||||
surf->u.gfx9.surf.epitch = MAX2(surf->u.gfx9.surf.epitch,
|
||||
surf->u.gfx9.surf_pitch * surf->blk_w - 1);
|
||||
}
|
||||
surf->u.gfx9.surf_height = out.height;
|
||||
surf->surf_size = out.surfSize;
|
||||
|
|
Loading…
Reference in New Issue