From cfeedd20251d8add5e5d468a8c8244244b1e2101 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 28 Jul 2025 19:44:17 -0700 Subject: [PATCH] freedreno: Drop min_samples handling code. The frontend already does it for us based on !caps->force_persample_interp, and the caller in util_blitter also handles things through per-sample interpolation. Part-of: --- src/gallium/drivers/freedreno/a6xx/fd6_context.cc | 2 +- src/gallium/drivers/freedreno/a6xx/fd6_draw.cc | 1 - src/gallium/drivers/freedreno/freedreno_blitter.c | 2 +- src/gallium/drivers/freedreno/freedreno_context.h | 3 --- src/gallium/drivers/freedreno/freedreno_state.c | 6 +++--- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_context.cc b/src/gallium/drivers/freedreno/a6xx/fd6_context.cc index c384c8a3088..bd6446b43ef 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_context.cc +++ b/src/gallium/drivers/freedreno/a6xx/fd6_context.cc @@ -156,7 +156,7 @@ setup_state_map(struct fd_context *ctx) BIT(FD6_GROUP_LRZ)); fd_context_add_map(ctx, FD_DIRTY_PROG | FD_DIRTY_RASTERIZER_CLIP_PLANE_ENABLE, BIT(FD6_GROUP_PROG) | BIT(FD6_GROUP_PROG_KEY)); - fd_context_add_map(ctx, FD_DIRTY_RASTERIZER | FD_DIRTY_MIN_SAMPLES | FD_DIRTY_FRAMEBUFFER, + fd_context_add_map(ctx, FD_DIRTY_RASTERIZER | FD_DIRTY_FRAMEBUFFER, BIT(FD6_GROUP_PROG_KEY)); if (ctx->screen->driconf.dual_color_blend_by_location) { fd_context_add_map(ctx, FD_DIRTY_BLEND_DUAL, diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_draw.cc b/src/gallium/drivers/freedreno/a6xx/fd6_draw.cc index 93835305ab5..a5d8f2a970d 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_draw.cc +++ b/src/gallium/drivers/freedreno/a6xx/fd6_draw.cc @@ -214,7 +214,6 @@ get_program_state(struct fd_context *ctx, const struct pipe_draw_info *info) * by not initializing these inline: */ key.key.ucp_enables = ctx->rasterizer->clip_plane_enable; - key.key.sample_shading = (ctx->min_samples > 1); key.key.msaa = (ctx->framebuffer.samples > 1); key.key.rasterflat = ctx->rasterizer->flatshade; diff --git a/src/gallium/drivers/freedreno/freedreno_blitter.c b/src/gallium/drivers/freedreno/freedreno_blitter.c index a1e2f3d4f84..ee39d8cba09 100644 --- a/src/gallium/drivers/freedreno/freedreno_blitter.c +++ b/src/gallium/drivers/freedreno/freedreno_blitter.c @@ -84,7 +84,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, ctx->min_samples); + util_blitter_save_sample_mask(ctx->blitter, ctx->sample_mask, 1 /* min_samples -- unused in freedreno */); 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/freedreno/freedreno_context.h b/src/gallium/drivers/freedreno/freedreno_context.h index 1145f701f91..25c09885e22 100644 --- a/src/gallium/drivers/freedreno/freedreno_context.h +++ b/src/gallium/drivers/freedreno/freedreno_context.h @@ -133,7 +133,6 @@ enum fd_dirty_3d_state { FD_DIRTY_VIEWPORT = BIT(8), FD_DIRTY_VTXSTATE = BIT(9), FD_DIRTY_VTXBUF = BIT(10), - FD_DIRTY_MIN_SAMPLES = BIT(11), FD_DIRTY_SCISSOR = BIT(12), FD_DIRTY_STREAMOUT = BIT(13), FD_DIRTY_UCP = BIT(14), @@ -181,7 +180,6 @@ fd_print_dirty_state(BITMASK_ENUM(fd_dirty_3d_state) dirty) STATE(VIEWPORT), STATE(VTXSTATE), STATE(VTXBUF), - STATE(MIN_SAMPLES), STATE(SCISSOR), STATE(STREAMOUT), STATE(UCP), @@ -482,7 +480,6 @@ struct fd_context { struct pipe_blend_color blend_color dt; struct pipe_stencil_ref stencil_ref dt; unsigned sample_mask dt; - unsigned min_samples dt; /* 1x1 grid, max 4x MSAA: */ uint8_t sample_locations[4] dt; diff --git a/src/gallium/drivers/freedreno/freedreno_state.c b/src/gallium/drivers/freedreno/freedreno_state.c index 4ef044366fb..656e534ca47 100644 --- a/src/gallium/drivers/freedreno/freedreno_state.c +++ b/src/gallium/drivers/freedreno/freedreno_state.c @@ -102,9 +102,9 @@ fd_set_sample_locations(struct pipe_context *pctx, size_t size, static void fd_set_min_samples(struct pipe_context *pctx, unsigned min_samples) in_dt { - struct fd_context *ctx = fd_context(pctx); - ctx->min_samples = min_samples; - fd_context_dirty(ctx, FD_DIRTY_MIN_SAMPLES); + /* We don't need to track min_samples, because the frontend lowers it to + * info->fs.uses_sample_shading for us. + */ } static void