[Mesa-dev] [PATCH libdrm] radeon: Always multiply pitch_bytes by nsamples, not by slice_pt

Marek Olšák maraeo at gmail.com
Tue Sep 30 02:17:28 PDT 2014


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Tue, Sep 30, 2014 at 5:58 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> slice_pt is tileb[0] / tile_split, which isn't directly related to the
> pitch.
>
> This caused pitch_bytes to be too large in some cases.
>
> [0] Tile size in bytes
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
> ---
>  radeon/radeon_surface.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
> index 0723425..930017e 100644
> --- a/radeon/radeon_surface.c
> +++ b/radeon/radeon_surface.c
> @@ -595,7 +595,7 @@ static void eg_surf_minify(struct radeon_surface *surf,
>      mtile_ps = (mtile_pr * surflevel->nblk_y) / mtileh;
>
>      surflevel->offset = offset;
> -    surflevel->pitch_bytes = surflevel->nblk_x * bpe * slice_pt;
> +    surflevel->pitch_bytes = surflevel->nblk_x * bpe * surf->nsamples;
>      surflevel->slice_size = mtile_ps * mtileb * slice_pt;
>
>      surf->bo_size = offset + surflevel->slice_size * surflevel->nblk_z * surf->array_size;
> @@ -1498,7 +1498,7 @@ static void si_surf_minify_2d(struct radeon_surface *surf,
>      /* macro tile per slice */
>      mtile_ps = (mtile_pr * surflevel->nblk_y) / yalign;
>      surflevel->offset = offset;
> -    surflevel->pitch_bytes = surflevel->nblk_x * bpe * slice_pt;
> +    surflevel->pitch_bytes = surflevel->nblk_x * bpe * surf->nsamples;
>      surflevel->slice_size = mtile_ps * mtileb * slice_pt;
>
>      surf->bo_size = offset + surflevel->slice_size * surflevel->nblk_z * surf->array_size;
> --
> 2.1.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list