[Mesa-dev] [PATCH 2/3] radeon: use staging for mapping linear textures

Marek Olšák maraeo at gmail.com
Sun Oct 13 18:16:07 CEST 2013


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

Marek

On Sun, Oct 13, 2013 at 6:08 PM, Grigori Goronzy <greg at chown.ath.cx> wrote:
> Textures that likely reside in VRAM, are mapped for reading and
> don't require direct mapping should be staged into GTT, to avoid bad
> performance. This fixes readback performance of VDPAU surfaces.
> ---
>  src/gallium/drivers/radeon/r600_texture.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c
> index ebb70906..9ba1e36 100644
> --- a/src/gallium/drivers/radeon/r600_texture.c
> +++ b/src/gallium/drivers/radeon/r600_texture.c
> @@ -852,6 +852,12 @@ static void *r600_texture_transfer_map(struct pipe_context *ctx,
>         if (rtex->surface.level[level].mode >= RADEON_SURF_MODE_1D)
>                 use_staging_texture = TRUE;
>
> +       /* Untiled buffers in VRAM, which is slow for CPU reads */
> +       if ((usage & PIPE_TRANSFER_READ) && !(usage & PIPE_TRANSFER_MAP_DIRECTLY) &&
> +           (rtex->resource.domains == RADEON_DOMAIN_VRAM)) {
> +               use_staging_texture = TRUE;
> +       }
> +
>         /* Use a staging texture for uploads if the underlying BO is busy. */
>         if (!(usage & PIPE_TRANSFER_READ) &&
>             (r600_rings_is_buffer_referenced(rctx, rtex->resource.cs_buf, RADEON_USAGE_READWRITE) ||
> --
> 1.8.1.2
>
> _______________________________________________
> 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