From be5ea29237c06b48ce3a2b708527494b1321591b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 27 May 2021 22:51:00 -0400 Subject: [PATCH] asahi: Track scissor states Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/asahi/agx_state.c | 11 +++++++++-- src/gallium/drivers/asahi/agx_state.h | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index e2577bdbb36..73f3fe57bfd 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -407,11 +407,18 @@ agx_set_sample_mask(struct pipe_context *pipe, unsigned sample_mask) } static void -agx_set_scissor_states(struct pipe_context *ctx, +agx_set_scissor_states(struct pipe_context *pctx, unsigned start_slot, unsigned num_scissors, - const struct pipe_scissor_state *state) + const struct pipe_scissor_state *scissor) { + struct agx_context *ctx = agx_context(pctx); + + assert(start_slot == 0 && "no geometry shaders"); + assert(num_scissors == 1 && "no geometry shaders"); + + ctx->scissor = *scissor; + ctx->dirty |= AGX_DIRTY_SCISSOR; } static void diff --git a/src/gallium/drivers/asahi/agx_state.h b/src/gallium/drivers/asahi/agx_state.h index 8a853ece396..2a6735c059f 100644 --- a/src/gallium/drivers/asahi/agx_state.h +++ b/src/gallium/drivers/asahi/agx_state.h @@ -117,6 +117,7 @@ struct asahi_shader_key { enum agx_dirty { AGX_DIRTY_VERTEX = BITFIELD_BIT(0), AGX_DIRTY_VIEWPORT = BITFIELD_BIT(1), + AGX_DIRTY_SCISSOR = BITFIELD_BIT(2), }; struct agx_context { @@ -136,6 +137,7 @@ struct agx_context { struct agx_blend *blend; struct pipe_blend_color blend_color; struct pipe_viewport_state viewport; + struct pipe_scissor_state scissor; uint8_t render_target[8][AGX_RENDER_TARGET_LENGTH]; };