iris: util_copy_framebuffer_state (ported from Rob's v3d patches)
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 21 May 2018 07:32:04 +0000 (00:32 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:06 +0000 (10:26 -0800)
src/gallium/drivers/iris/iris_state.c

index 155ee917b7c992e2fa0004507e1d775205347bfb..87a34d73721450c9e8f7bc9723120afa2ea04060 100644 (file)
@@ -38,6 +38,7 @@
 #include "pipe/p_screen.h"
 #include "util/u_inlines.h"
 #include "util/u_format.h"
+#include "util/u_framebuffer.h"
 #include "util/u_transfer.h"
 #include "util/u_upload_mgr.h"
 #include "i915_drm.h"
@@ -1275,20 +1276,7 @@ iris_set_framebuffer_state(struct pipe_context *ctx,
       ice->state.dirty |= IRIS_DIRTY_BLEND_STATE;
    }
 
-   cso->width = state->width;
-   cso->height = state->height;
-   cso->layers = state->layers;
-   cso->samples = state->samples;
-
-   unsigned i;
-   for (i = 0; i < state->nr_cbufs; i++)
-      pipe_surface_reference(&cso->cbufs[i], state->cbufs[i]);
-   for (; i < cso->nr_cbufs; i++)
-      pipe_surface_reference(&cso->cbufs[i], NULL);
-
-   cso->nr_cbufs = state->nr_cbufs;
-
-   pipe_surface_reference(&cso->zsbuf, state->zsbuf);
+   util_copy_framebuffer_state(cso, state);
 
    struct iris_depth_buffer_state *cso_z =
       malloc(sizeof(struct iris_depth_buffer_state));