[Mesa-dev] [PATCH] r600g: work around ddx over alignment

Marek Olšák maraeo at gmail.com
Tue Dec 18 10:17:57 PST 2012


Reviewed-by: Marek Olšák <maraeo at gmail.com>

Thank you!

Marek

On Tue, Dec 18, 2012 at 6:50 PM,  <j.glisse at gmail.com> wrote:
> From: Jerome Glisse <jglisse at redhat.com>
>
> This force surface allocated from ddx to be consider as height
> aligned on 8 and fix 1D->2D tiling transition that result from
> this.
>
> Signed-off-by: Jerome Glisse <jglisse at redhat.com>
> ---
>  src/gallium/drivers/r600/r600_texture.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
> index 56e9b64..9373451 100644
> --- a/src/gallium/drivers/r600/r600_texture.c
> +++ b/src/gallium/drivers/r600/r600_texture.c
> @@ -89,7 +89,8 @@ static int r600_init_surface(struct r600_screen *rscreen,
>                              struct radeon_surface *surface,
>                              const struct pipe_resource *ptex,
>                              unsigned array_mode,
> -                            bool is_flushed_depth)
> +                            bool is_flushed_depth,
> +                            bool from_ddx)
>  {
>         const struct util_format_description *desc =
>                 util_format_description(ptex->format);
> @@ -107,6 +108,10 @@ static int r600_init_surface(struct r600_screen *rscreen,
>         surface->array_size = 1;
>         surface->last_level = ptex->last_level;
>
> +       if (from_ddx) {
> +               surface->npix_y = align(surface->npix_y, 8);
> +       }
> +
>         if (rscreen->chip_class >= EVERGREEN && !is_flushed_depth &&
>             ptex->format == PIPE_FORMAT_Z32_FLOAT_S8X24_UINT) {
>                 surface->bpe = 4; /* stencil is allocated separately on evergreen */
> @@ -539,7 +544,8 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
>         }
>
>         r = r600_init_surface(rscreen, &surface, templ, array_mode,
> -                             templ->flags & R600_RESOURCE_FLAG_FLUSHED_DEPTH);
> +                             templ->flags & R600_RESOURCE_FLAG_FLUSHED_DEPTH,
> +                             false);
>         if (r) {
>                 return NULL;
>         }
> @@ -627,7 +633,7 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen,
>         else
>                 array_mode = V_038000_ARRAY_LINEAR_ALIGNED;
>
> -       r = r600_init_surface(rscreen, &surface, templ, array_mode, false);
> +       r = r600_init_surface(rscreen, &surface, templ, array_mode, false, true);
>         if (r) {
>                 return NULL;
>         }
> --
> 1.8.0
>
> _______________________________________________
> 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