Marek, do we want this into -stable?

On Thu, 2017-06-29 at 21:47 +0200, Marek Olšák wrote:
> From: Marek Olšák <marek.ol...@amd.com>
> 
> ---
>  src/gallium/drivers/radeon/r600_texture.c | 24 +++++++++++++++---------
>  1 file changed, 15 insertions(+), 9 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeon/r600_texture.c 
> b/src/gallium/drivers/radeon/r600_texture.c
> index d68587b..139ab13 100644
> --- a/src/gallium/drivers/radeon/r600_texture.c
> +++ b/src/gallium/drivers/radeon/r600_texture.c
> @@ -582,30 +582,36 @@ static boolean r600_texture_get_handle(struct 
> pipe_screen* screen,
>                * doesn't set it.
>                */
>               res->external_usage |= usage & 
> ~PIPE_HANDLE_USAGE_EXPLICIT_FLUSH;
>               if (!(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH))
>                       res->external_usage &= 
> ~PIPE_HANDLE_USAGE_EXPLICIT_FLUSH;
>       } else {
>               res->b.is_shared = true;
>               res->external_usage = usage;
>       }
>  
> -     if (rscreen->chip_class >= GFX9) {
> -             offset = rtex->surface.u.gfx9.surf_offset;
> -             stride = rtex->surface.u.gfx9.surf_pitch *
> -                      rtex->surface.bpe;
> -             slice_size = rtex->surface.u.gfx9.surf_slice_size;
> +     if (res->b.b.target == PIPE_BUFFER) {
> +             offset = 0;
> +             stride = 0;
> +             slice_size = 0;
>       } else {
> -             offset = rtex->surface.u.legacy.level[0].offset;
> -             stride = rtex->surface.u.legacy.level[0].nblk_x *
> -                      rtex->surface.bpe;
> -             slice_size = rtex->surface.u.legacy.level[0].slice_size;
> +             if (rscreen->chip_class >= GFX9) {
> +                     offset = rtex->surface.u.gfx9.surf_offset;
> +                     stride = rtex->surface.u.gfx9.surf_pitch *
> +                              rtex->surface.bpe;
> +                     slice_size = rtex->surface.u.gfx9.surf_slice_size;
> +             } else {
> +                     offset = rtex->surface.u.legacy.level[0].offset;
> +                     stride = rtex->surface.u.legacy.level[0].nblk_x *
> +                              rtex->surface.bpe;
> +                     slice_size = rtex->surface.u.legacy.level[0].slice_size;
> +             }
>       }
>       return rscreen->ws->buffer_get_handle(res->buf, stride, offset,
>                                             slice_size, whandle);
>  }
>  
>  static void r600_texture_destroy(struct pipe_screen *screen,
>                                struct pipe_resource *ptex)
>  {
>       struct r600_texture *rtex = (struct r600_texture*)ptex;
>       struct r600_resource *resource = &rtex->resource;
-- 
Br,

Andres
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to