Mesa (main): gallium/u_blitter: disable sample shading for all blits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Nov 4 15:28:45 UTC 2021


Module: Mesa
Branch: main
Commit: 6d483fed852b0500a2668ac9f58d9a85f3d3586f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d483fed852b0500a2668ac9f58d9a85f3d3586f

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Fri Oct 29 10:59:51 2021 -0400

gallium/u_blitter: disable sample shading for all blits

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13602>

---

 src/gallium/auxiliary/util/u_blitter.c            | 27 +++++++++++++++++++++++
 src/gallium/auxiliary/util/u_blitter.h            |  4 +++-
 src/gallium/drivers/asahi/agx_blit.c              |  2 +-
 src/gallium/drivers/crocus/crocus_blit.c          |  2 +-
 src/gallium/drivers/d3d12/d3d12_blit.cpp          |  2 +-
 src/gallium/drivers/etnaviv/etnaviv_clear_blit.c  |  2 +-
 src/gallium/drivers/freedreno/freedreno_blitter.c |  2 +-
 src/gallium/drivers/llvmpipe/lp_surface.c         |  2 +-
 src/gallium/drivers/nouveau/nv30/nv30_miptree.c   |  2 +-
 src/gallium/drivers/panfrost/pan_blit.c           |  2 +-
 src/gallium/drivers/r300/r300_blit.c              |  2 +-
 src/gallium/drivers/r600/r600_blit.c              |  2 +-
 src/gallium/drivers/radeonsi/si_blit.c            |  2 +-
 src/gallium/drivers/svga/svga_pipe_blit.c         |  2 +-
 src/gallium/drivers/svga/svga_pipe_clear.c        |  2 +-
 src/gallium/drivers/swr/swr_context.cpp           |  2 +-
 src/gallium/drivers/v3d/v3d_blit.c                |  2 +-
 src/gallium/drivers/vc4/vc4_blit.c                |  2 +-
 src/gallium/drivers/zink/zink_blit.c              |  2 +-
 19 files changed, 47 insertions(+), 18 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index 4623eb7b08b..b7b7e531d70 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -711,6 +711,10 @@ void util_blitter_restore_fragment_states(struct blitter_context *blitter)
       ctx->base.is_sample_mask_saved = false;
    }
 
+   if (ctx->base.saved_min_samples != ~0 && pipe->set_min_samples)
+      pipe->set_min_samples(pipe, ctx->base.saved_min_samples);
+   ctx->base.saved_min_samples = ~0;
+
    /* Miscellaneous states. */
    /* XXX check whether these are saved and whether they need to be restored
     * (depending on the operation) */
@@ -1479,6 +1483,8 @@ void util_blitter_common_clear_setup(struct blitter_context *blitter,
    }
 
    pipe->set_sample_mask(pipe, ~0);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
    blitter_set_dst_dimensions(ctx, width, height);
 }
 
@@ -1816,6 +1822,8 @@ static void do_blits(struct blitter_context_priv *ctx,
 
       /* Draw. */
       pipe->set_sample_mask(pipe, ~0);
+      if (pipe->set_min_samples)
+         pipe->set_min_samples(pipe, 1);
       blitter_draw_tex(ctx, dstbox->x, dstbox->y,
                        dstbox->x + dstbox->width,
                        dstbox->y + dstbox->height,
@@ -1871,6 +1879,9 @@ static void do_blits(struct blitter_context_priv *ctx,
             /* MSAA copy. */
             unsigned i, max_sample = sample0_only ? 0 : dst_samples - 1;
 
+            if (pipe->set_min_samples)
+               pipe->set_min_samples(pipe, 1);
+
             for (i = 0; i <= max_sample; i++) {
                pipe->set_sample_mask(pipe, 1 << i);
                blitter_draw_tex(ctx, dstbox->x, dstbox->y,
@@ -1886,6 +1897,8 @@ static void do_blits(struct blitter_context_priv *ctx,
          } else {
             /* Normal copy, MSAA upsampling, or MSAA resolve. */
             pipe->set_sample_mask(pipe, ~0);
+            if (pipe->set_min_samples)
+               pipe->set_min_samples(pipe, 1);
             blitter_draw_tex(ctx, dstbox->x, dstbox->y,
                              dstbox->x + dstbox->width,
                              dstbox->y + dstbox->height,
@@ -2312,6 +2325,8 @@ void util_blitter_clear_render_target(struct blitter_context *blitter,
    fb_state.zsbuf = 0;
    pipe->set_framebuffer_state(pipe, &fb_state);
    pipe->set_sample_mask(pipe, ~0);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
    msaa = util_framebuffer_get_num_samples(&fb_state) > 1;
 
    blitter_set_dst_dimensions(ctx, dstsurf->width, dstsurf->height);
@@ -2395,6 +2410,8 @@ void util_blitter_clear_depth_stencil(struct blitter_context *blitter,
    fb_state.zsbuf = dstsurf;
    pipe->set_framebuffer_state(pipe, &fb_state);
    pipe->set_sample_mask(pipe, ~0);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
 
    blitter_set_dst_dimensions(ctx, dstsurf->width, dstsurf->height);
 
@@ -2464,6 +2481,8 @@ void util_blitter_custom_depth_stencil(struct blitter_context *blitter,
    fb_state.zsbuf = zsurf;
    pipe->set_framebuffer_state(pipe, &fb_state);
    pipe->set_sample_mask(pipe, sample_mask);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
 
    blitter_set_common_draw_rect_state(ctx, false,
       util_framebuffer_get_num_samples(&fb_state) > 1);
@@ -2642,6 +2661,8 @@ void util_blitter_custom_resolve_color(struct blitter_context *blitter,
    pipe->bind_depth_stencil_alpha_state(pipe, ctx->dsa_keep_depth_stencil);
    bind_fs_write_one_cbuf(ctx);
    pipe->set_sample_mask(pipe, sample_mask);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
 
    memset(&surf_tmpl, 0, sizeof(surf_tmpl));
    surf_tmpl.format = format;
@@ -2715,6 +2736,8 @@ void util_blitter_custom_color(struct blitter_context *blitter,
    fb_state.zsbuf = 0;
    pipe->set_framebuffer_state(pipe, &fb_state);
    pipe->set_sample_mask(pipe, ~0);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
 
    blitter_set_common_draw_rect_state(ctx, false,
       util_framebuffer_get_num_samples(&fb_state) > 1);
@@ -2776,6 +2799,8 @@ void util_blitter_custom_shader(struct blitter_context *blitter,
    fb_state.cbufs[0] = dstsurf;
    pipe->set_framebuffer_state(pipe, &fb_state);
    pipe->set_sample_mask(pipe, ~0);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
 
    blitter_set_common_draw_rect_state(ctx, false,
       util_framebuffer_get_num_samples(&fb_state) > 1);
@@ -2870,6 +2895,8 @@ util_blitter_stencil_fallback(struct blitter_context *blitter,
    fb_state.zsbuf = dst_view;
    pipe->set_framebuffer_state(pipe, &fb_state);
    pipe->set_sample_mask(pipe, ~0);
+   if (pipe->set_min_samples)
+      pipe->set_min_samples(pipe, 1);
 
    blitter_set_common_draw_rect_state(ctx, scissor != NULL,
       util_framebuffer_get_num_samples(&fb_state) > 1);
diff --git a/src/gallium/auxiliary/util/u_blitter.h b/src/gallium/auxiliary/util/u_blitter.h
index 48b9344430f..70157e5df4b 100644
--- a/src/gallium/auxiliary/util/u_blitter.h
+++ b/src/gallium/auxiliary/util/u_blitter.h
@@ -118,6 +118,7 @@ struct blitter_context
    bool skip_viewport_restore;
    bool is_sample_mask_saved;
    unsigned saved_sample_mask;
+   unsigned saved_min_samples;
 
    unsigned saved_num_sampler_states;
    void *saved_sampler_states[PIPE_MAX_SAMPLERS];
@@ -565,10 +566,11 @@ util_blitter_save_so_targets(struct blitter_context *blitter,
 
 static inline void
 util_blitter_save_sample_mask(struct blitter_context *blitter,
-                              unsigned sample_mask)
+                              unsigned sample_mask, unsigned min_samples)
 {
    blitter->is_sample_mask_saved = true;
    blitter->saved_sample_mask = sample_mask;
+   blitter->saved_min_samples = min_samples;
 }
 
 static inline void
diff --git a/src/gallium/drivers/asahi/agx_blit.c b/src/gallium/drivers/asahi/agx_blit.c
index 213761ade0b..545be057f4f 100644
--- a/src/gallium/drivers/asahi/agx_blit.c
+++ b/src/gallium/drivers/asahi/agx_blit.c
@@ -97,7 +97,7 @@ agx_blitter_save(struct agx_context *ctx, struct blitter_context *blitter,
    util_blitter_save_depth_stencil_alpha(blitter, &ctx->zs);
    util_blitter_save_stencil_ref(blitter, &ctx->stencil_ref);
    util_blitter_save_so_targets(blitter, 0, NULL);
-   util_blitter_save_sample_mask(blitter, ctx->sample_mask);
+   util_blitter_save_sample_mask(blitter, ctx->sample_mask, 0);
 
    util_blitter_save_framebuffer(blitter, &ctx->framebuffer);
    util_blitter_save_fragment_sampler_states(blitter,
diff --git a/src/gallium/drivers/crocus/crocus_blit.c b/src/gallium/drivers/crocus/crocus_blit.c
index c32bf9fbb1d..52255266675 100644
--- a/src/gallium/drivers/crocus/crocus_blit.c
+++ b/src/gallium/drivers/crocus/crocus_blit.c
@@ -49,7 +49,7 @@ void crocus_blitter_begin(struct crocus_context *ice, enum crocus_blitter_op op,
       util_blitter_save_depth_stencil_alpha(ice->blitter, ice->state.cso_zsa);
       util_blitter_save_stencil_ref(ice->blitter, &ice->state.stencil_ref);
       util_blitter_save_fragment_shader(ice->blitter, ice->shaders.uncompiled[MESA_SHADER_FRAGMENT]);
-      util_blitter_save_sample_mask(ice->blitter, ice->state.sample_mask);
+      util_blitter_save_sample_mask(ice->blitter, ice->state.sample_mask, 0);
       util_blitter_save_rasterizer(ice->blitter, ice->state.cso_rast);
       util_blitter_save_scissor(ice->blitter, &ice->state.scissors[0]);
       util_blitter_save_viewport(ice->blitter, &ice->state.viewports[0]);
diff --git a/src/gallium/drivers/d3d12/d3d12_blit.cpp b/src/gallium/drivers/d3d12/d3d12_blit.cpp
index ed44263c8f8..2310d79c67f 100644
--- a/src/gallium/drivers/d3d12/d3d12_blit.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_blit.cpp
@@ -557,7 +557,7 @@ util_blit_save_state(struct d3d12_context *ctx)
                                             ctx->sampler_views[PIPE_SHADER_FRAGMENT]);
    util_blitter_save_fragment_constant_buffer_slot(ctx->blitter, ctx->cbufs[PIPE_SHADER_FRAGMENT]);
    util_blitter_save_vertex_buffer_slot(ctx->blitter, ctx->vbs);
-   util_blitter_save_sample_mask(ctx->blitter, ctx->gfx_pipeline_state.sample_mask);
+   util_blitter_save_sample_mask(ctx->blitter, ctx->gfx_pipeline_state.sample_mask, 0);
    util_blitter_save_so_targets(ctx->blitter, ctx->gfx_pipeline_state.num_so_targets, ctx->so_targets);
 }
 
diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
index 99fd6cc1327..113f9cf53b7 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
@@ -61,7 +61,7 @@ etna_blit_save_state(struct etna_context *ctx)
    util_blitter_save_blend(ctx->blitter, ctx->blend);
    util_blitter_save_depth_stencil_alpha(ctx->blitter, ctx->zsa);
    util_blitter_save_stencil_ref(ctx->blitter, &ctx->stencil_ref_s);
-   util_blitter_save_sample_mask(ctx->blitter, ctx->sample_mask);
+   util_blitter_save_sample_mask(ctx->blitter, ctx->sample_mask, 0);
    util_blitter_save_framebuffer(ctx->blitter, &ctx->framebuffer_s);
    util_blitter_save_fragment_sampler_states(ctx->blitter,
          ctx->num_fragment_samplers, (void **)ctx->sampler);
diff --git a/src/gallium/drivers/freedreno/freedreno_blitter.c b/src/gallium/drivers/freedreno/freedreno_blitter.c
index c41a0736ecb..ad829711aa1 100644
--- a/src/gallium/drivers/freedreno/freedreno_blitter.c
+++ b/src/gallium/drivers/freedreno/freedreno_blitter.c
@@ -94,7 +94,7 @@ fd_blitter_pipe_begin(struct fd_context *ctx, bool render_cond) assert_dt
    util_blitter_save_blend(ctx->blitter, ctx->blend);
    util_blitter_save_depth_stencil_alpha(ctx->blitter, ctx->zsa);
    util_blitter_save_stencil_ref(ctx->blitter, &ctx->stencil_ref);
-   util_blitter_save_sample_mask(ctx->blitter, ctx->sample_mask);
+   util_blitter_save_sample_mask(ctx->blitter, ctx->sample_mask, ctx->min_samples);
    util_blitter_save_framebuffer(ctx->blitter, &ctx->framebuffer);
    util_blitter_save_fragment_sampler_states(
       ctx->blitter, ctx->tex[PIPE_SHADER_FRAGMENT].num_samplers,
diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c
index a93131121f6..a116b02005f 100644
--- a/src/gallium/drivers/llvmpipe/lp_surface.c
+++ b/src/gallium/drivers/llvmpipe/lp_surface.c
@@ -159,7 +159,7 @@ static void lp_blit(struct pipe_context *pipe,
    util_blitter_save_tesseval_shader(lp->blitter, (void*)lp->tes);
    util_blitter_save_depth_stencil_alpha(lp->blitter, (void*)lp->depth_stencil);
    util_blitter_save_stencil_ref(lp->blitter, &lp->stencil_ref);
-   util_blitter_save_sample_mask(lp->blitter, lp->sample_mask);
+   util_blitter_save_sample_mask(lp->blitter, lp->sample_mask, lp->min_samples);
    util_blitter_save_framebuffer(lp->blitter, &lp->framebuffer);
    util_blitter_save_fragment_sampler_states(lp->blitter,
                      lp->num_samplers[PIPE_SHADER_FRAGMENT],
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
index aef160ac160..5d1f16b28c9 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
@@ -258,7 +258,7 @@ nv30_blit(struct pipe_context *pipe,
    util_blitter_save_depth_stencil_alpha(nv30->blitter,
                                          nv30->zsa);
    util_blitter_save_stencil_ref(nv30->blitter, &nv30->stencil_ref);
-   util_blitter_save_sample_mask(nv30->blitter, nv30->sample_mask);
+   util_blitter_save_sample_mask(nv30->blitter, nv30->sample_mask, 0);
    util_blitter_save_framebuffer(nv30->blitter, &nv30->framebuffer);
    util_blitter_save_fragment_sampler_states(nv30->blitter,
                      nv30->fragprog.num_samplers,
diff --git a/src/gallium/drivers/panfrost/pan_blit.c b/src/gallium/drivers/panfrost/pan_blit.c
index f2523e2e594..51ebbec3a62 100644
--- a/src/gallium/drivers/panfrost/pan_blit.c
+++ b/src/gallium/drivers/panfrost/pan_blit.c
@@ -49,7 +49,7 @@ panfrost_blitter_save(
         util_blitter_save_depth_stencil_alpha(blitter, ctx->depth_stencil);
         util_blitter_save_stencil_ref(blitter, &ctx->stencil_ref);
         util_blitter_save_so_targets(blitter, 0, NULL);
-        util_blitter_save_sample_mask(blitter, ctx->sample_mask);
+        util_blitter_save_sample_mask(blitter, ctx->sample_mask, ctx->min_samples);
 
         util_blitter_save_framebuffer(blitter, &ctx->pipe_framebuffer);
         util_blitter_save_fragment_sampler_states(blitter,
diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c
index 2609ee30535..e2648e3a71f 100644
--- a/src/gallium/drivers/r300/r300_blit.c
+++ b/src/gallium/drivers/r300/r300_blit.c
@@ -68,7 +68,7 @@ static void r300_blitter_begin(struct r300_context* r300, enum r300_blitter_op o
     util_blitter_save_vertex_shader(r300->blitter, r300->vs_state.state);
     util_blitter_save_viewport(r300->blitter, &r300->viewport);
     util_blitter_save_scissor(r300->blitter, r300->scissor_state.state);
-    util_blitter_save_sample_mask(r300->blitter, *(unsigned*)r300->sample_mask.state);
+    util_blitter_save_sample_mask(r300->blitter, *(unsigned*)r300->sample_mask.state, 0);
     util_blitter_save_vertex_buffer_slot(r300->blitter, r300->vertex_buffer);
     util_blitter_save_vertex_elements(r300->blitter, r300->velems);
 
diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c
index 2ee4744bf0a..ddceebfeffe 100644
--- a/src/gallium/drivers/r600/r600_blit.c
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -76,7 +76,7 @@ static void r600_blitter_begin(struct pipe_context *ctx, enum r600_blitter_op op
 		util_blitter_save_blend(rctx->blitter, rctx->blend_state.cso);
 		util_blitter_save_depth_stencil_alpha(rctx->blitter, rctx->dsa_state.cso);
 		util_blitter_save_stencil_ref(rctx->blitter, &rctx->stencil_ref.pipe_state);
-                util_blitter_save_sample_mask(rctx->blitter, rctx->sample_mask.sample_mask);
+                util_blitter_save_sample_mask(rctx->blitter, rctx->sample_mask.sample_mask, rctx->ps_iter_samples);
 	}
 
 	if (op & R600_SAVE_FRAMEBUFFER)
diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 8c7860f0de6..c2c96d0dfbe 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -56,7 +56,7 @@ void si_blitter_begin(struct si_context *sctx, enum si_blitter_op op)
       util_blitter_save_depth_stencil_alpha(sctx->blitter, sctx->queued.named.dsa);
       util_blitter_save_stencil_ref(sctx->blitter, &sctx->stencil_ref.state);
       util_blitter_save_fragment_shader(sctx->blitter, sctx->shader.ps.cso);
-      util_blitter_save_sample_mask(sctx->blitter, sctx->sample_mask);
+      util_blitter_save_sample_mask(sctx->blitter, sctx->sample_mask, sctx->ps_iter_samples);
       util_blitter_save_scissor(sctx->blitter, &sctx->scissors[0]);
       util_blitter_save_window_rectangles(sctx->blitter, sctx->window_rectangles_include,
                                           sctx->num_window_rectangles, sctx->window_rectangles);
diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c b/src/gallium/drivers/svga/svga_pipe_blit.c
index 1d3ec2a185a..8cff079eea6 100644
--- a/src/gallium/drivers/svga/svga_pipe_blit.c
+++ b/src/gallium/drivers/svga/svga_pipe_blit.c
@@ -634,7 +634,7 @@ try_blit(struct svga_context *svga, const struct pipe_blit_info *blit_info)
    util_blitter_save_depth_stencil_alpha(svga->blitter,
                                          (void*)svga->curr.depth);
    util_blitter_save_stencil_ref(svga->blitter, &svga->curr.stencil_ref);
-   util_blitter_save_sample_mask(svga->blitter, svga->curr.sample_mask);
+   util_blitter_save_sample_mask(svga->blitter, svga->curr.sample_mask, 0);
    util_blitter_save_framebuffer(svga->blitter, &svga->curr.framebuffer);
    util_blitter_save_fragment_sampler_states(svga->blitter,
                      svga->curr.num_samplers[PIPE_SHADER_FRAGMENT],
diff --git a/src/gallium/drivers/svga/svga_pipe_clear.c b/src/gallium/drivers/svga/svga_pipe_clear.c
index 82b102081e5..01f513289dd 100644
--- a/src/gallium/drivers/svga/svga_pipe_clear.c
+++ b/src/gallium/drivers/svga/svga_pipe_clear.c
@@ -57,7 +57,7 @@ begin_blit(struct svga_context *svga)
    util_blitter_save_depth_stencil_alpha(svga->blitter,
                                          (void*)svga->curr.depth);
    util_blitter_save_stencil_ref(svga->blitter, &svga->curr.stencil_ref);
-   util_blitter_save_sample_mask(svga->blitter, svga->curr.sample_mask);
+   util_blitter_save_sample_mask(svga->blitter, svga->curr.sample_mask, 0);
 }
 
 
diff --git a/src/gallium/drivers/swr/swr_context.cpp b/src/gallium/drivers/swr/swr_context.cpp
index 2a07a3767b9..08637dba1d5 100644
--- a/src/gallium/drivers/swr/swr_context.cpp
+++ b/src/gallium/drivers/swr/swr_context.cpp
@@ -334,7 +334,7 @@ swr_blit(struct pipe_context *pipe, const struct pipe_blit_info *blit_info)
    util_blitter_save_depth_stencil_alpha(ctx->blitter,
                                          (void *)ctx->depth_stencil);
    util_blitter_save_stencil_ref(ctx->blitter, &ctx->stencil_ref);
-   util_blitter_save_sample_mask(ctx->blitter, ctx->sample_mask);
+   util_blitter_save_sample_mask(ctx->blitter, ctx->sample_mask, 0);
    util_blitter_save_framebuffer(ctx->blitter, &ctx->framebuffer);
    util_blitter_save_fragment_sampler_states(
       ctx->blitter,
diff --git a/src/gallium/drivers/v3d/v3d_blit.c b/src/gallium/drivers/v3d/v3d_blit.c
index 793f2d2e535..967d0d6d1d4 100644
--- a/src/gallium/drivers/v3d/v3d_blit.c
+++ b/src/gallium/drivers/v3d/v3d_blit.c
@@ -46,7 +46,7 @@ v3d_blitter_save(struct v3d_context *v3d)
         util_blitter_save_blend(v3d->blitter, v3d->blend);
         util_blitter_save_depth_stencil_alpha(v3d->blitter, v3d->zsa);
         util_blitter_save_stencil_ref(v3d->blitter, &v3d->stencil_ref);
-        util_blitter_save_sample_mask(v3d->blitter, v3d->sample_mask);
+        util_blitter_save_sample_mask(v3d->blitter, v3d->sample_mask, 0);
         util_blitter_save_framebuffer(v3d->blitter, &v3d->framebuffer);
         util_blitter_save_fragment_sampler_states(v3d->blitter,
                         v3d->tex[PIPE_SHADER_FRAGMENT].num_samplers,
diff --git a/src/gallium/drivers/vc4/vc4_blit.c b/src/gallium/drivers/vc4/vc4_blit.c
index bdfbbf62a9b..9f4ab89e57f 100644
--- a/src/gallium/drivers/vc4/vc4_blit.c
+++ b/src/gallium/drivers/vc4/vc4_blit.c
@@ -177,7 +177,7 @@ vc4_blitter_save(struct vc4_context *vc4)
         util_blitter_save_blend(vc4->blitter, vc4->blend);
         util_blitter_save_depth_stencil_alpha(vc4->blitter, vc4->zsa);
         util_blitter_save_stencil_ref(vc4->blitter, &vc4->stencil_ref);
-        util_blitter_save_sample_mask(vc4->blitter, vc4->sample_mask);
+        util_blitter_save_sample_mask(vc4->blitter, vc4->sample_mask, 0);
         util_blitter_save_framebuffer(vc4->blitter, &vc4->framebuffer);
         util_blitter_save_fragment_sampler_states(vc4->blitter,
                         vc4->fragtex.num_samplers,
diff --git a/src/gallium/drivers/zink/zink_blit.c b/src/gallium/drivers/zink/zink_blit.c
index 1dda73d9f9b..8055111afe0 100644
--- a/src/gallium/drivers/zink/zink_blit.c
+++ b/src/gallium/drivers/zink/zink_blit.c
@@ -329,7 +329,7 @@ zink_blit_begin(struct zink_context *ctx, enum zink_blit_flags flags)
       util_blitter_save_blend(ctx->blitter, ctx->gfx_pipeline_state.blend_state);
       util_blitter_save_depth_stencil_alpha(ctx->blitter, ctx->dsa_state);
       util_blitter_save_stencil_ref(ctx->blitter, &ctx->stencil_ref);
-      util_blitter_save_sample_mask(ctx->blitter, ctx->gfx_pipeline_state.sample_mask);
+      util_blitter_save_sample_mask(ctx->blitter, ctx->gfx_pipeline_state.sample_mask, 0);
       util_blitter_save_scissor(ctx->blitter, ctx->vp_state.scissor_states);
       /* also util_blitter_save_window_rectangles when we have that? */
 



More information about the mesa-commit mailing list