[Freedreno] [PATCH 01/12] gallium/util: make util_copy_framebuffer_state(src=NULL) work

Marek Olšák maraeo at gmail.com
Mon Jul 4 08:49:59 UTC 2016


Patches 1, 2:

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

Marek

On Sat, Jul 2, 2016 at 6:52 PM, Rob Clark <robdclark at gmail.com> wrote:
> From: Rob Clark <robclark at freedesktop.org>
>
> Be more consistent with the other u_inlines util_copy_xyz_state()
> helpers and support NULL src.
>
> Signed-off-by: Rob Clark <robclark at freedesktop.org>
> ---
>  src/gallium/auxiliary/util/u_framebuffer.c | 37 +++++++++++++++++++++---------
>  1 file changed, 26 insertions(+), 11 deletions(-)
>
> diff --git a/src/gallium/auxiliary/util/u_framebuffer.c b/src/gallium/auxiliary/util/u_framebuffer.c
> index f2108a1..c2948a5 100644
> --- a/src/gallium/auxiliary/util/u_framebuffer.c
> +++ b/src/gallium/auxiliary/util/u_framebuffer.c
> @@ -86,22 +86,37 @@ util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
>  {
>     unsigned i;
>
> -   dst->width = src->width;
> -   dst->height = src->height;
> +   if (src) {
> +      dst->width = src->width;
> +      dst->height = src->height;
>
> -   dst->samples = src->samples;
> -   dst->layers  = src->layers;
> +      dst->samples = src->samples;
> +      dst->layers  = src->layers;
>
> -   for (i = 0; i < src->nr_cbufs; i++)
> -      pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
> +      for (i = 0; i < src->nr_cbufs; i++)
> +         pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
>
> -   /* Set remaining dest cbuf pointers to NULL */
> -   for ( ; i < ARRAY_SIZE(dst->cbufs); i++)
> -      pipe_surface_reference(&dst->cbufs[i], NULL);
> +      /* Set remaining dest cbuf pointers to NULL */
> +      for ( ; i < ARRAY_SIZE(dst->cbufs); i++)
> +         pipe_surface_reference(&dst->cbufs[i], NULL);
>
> -   dst->nr_cbufs = src->nr_cbufs;
> +      dst->nr_cbufs = src->nr_cbufs;
>
> -   pipe_surface_reference(&dst->zsbuf, src->zsbuf);
> +      pipe_surface_reference(&dst->zsbuf, src->zsbuf);
> +   } else {
> +      dst->width = 0;
> +      dst->height = 0;
> +
> +      dst->samples = 0;
> +      dst->layers  = 0;
> +
> +      for (i = 0 ; i < ARRAY_SIZE(dst->cbufs); i++)
> +         pipe_surface_reference(&dst->cbufs[i], NULL);
> +
> +      dst->nr_cbufs = 0;
> +
> +      pipe_surface_reference(&dst->zsbuf, NULL);
> +   }
>  }
>
>
> --
> 2.7.4
>


More information about the Freedreno mailing list