[Mesa-dev] [PATCH 1/3] r600g: use LINEAR_ALIGNED tiling for staging textures, reorder the code

Alex Deucher alexdeucher at gmail.com
Tue Nov 13 05:38:58 PST 2012


On Mon, Nov 12, 2012 at 6:43 PM, Marek Olšák <maraeo at gmail.com> wrote:

For the series:

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  src/gallium/drivers/r600/r600_texture.c |   16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
> index ea017d3..b1dbf07 100644
> --- a/src/gallium/drivers/r600/r600_texture.c
> +++ b/src/gallium/drivers/r600/r600_texture.c
> @@ -494,10 +494,18 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
>  {
>         struct r600_screen *rscreen = (struct r600_screen*)screen;
>         struct radeon_surface surface;
> -       unsigned array_mode = 0;
> +       const struct util_format_description *desc = util_format_description(templ->format);
> +       unsigned array_mode;
>         int r;
>
> -       if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER)) {
> +       /* Default tiling mode for staging textures. */
> +       array_mode = V_038000_ARRAY_LINEAR_ALIGNED;
> +
> +       /* Tiling doesn't work with the 422 (SUBSAMPLED) formats. That's not an issue,
> +        * because 422 formats are used for videos, which prefer linear buffers
> +        * for fast uploads anyway. */
> +       if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) &&
> +           desc->layout != UTIL_FORMAT_LAYOUT_SUBSAMPLED) {
>                 if (!(templ->bind & PIPE_BIND_SCANOUT) &&
>                     templ->usage != PIPE_USAGE_STAGING &&
>                     templ->usage != PIPE_USAGE_STREAM) {
> @@ -507,10 +515,6 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
>                 }
>         }
>
> -       /* XXX tiling is broken for the 422 formats */
> -       if (util_format_description(templ->format)->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED)
> -               array_mode = V_038000_ARRAY_LINEAR_ALIGNED;
> -
>         r = r600_init_surface(rscreen, &surface, templ, array_mode,
>                               templ->flags & R600_RESOURCE_FLAG_FLUSHED_DEPTH);
>         if (r) {
> --
> 1.7.9.5
>
> _______________________________________________
> 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