[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