From: Rob Clark <robcl...@freedesktop.org>

Be more consistent with the other u_inlines util_copy_xyz_state()
helpers and support NULL src.

Signed-off-by: Rob Clark <robcl...@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

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

Reply via email to