From ab08dcd8956d2db4534243ad8424691fdc360182 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 10 Jun 2021 08:17:09 -0400 Subject: [PATCH] zink: remove attachment count from pipeline hash this is redundant Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_context.c | 3 --- src/gallium/drivers/zink/zink_pipeline.c | 7 +++++-- src/gallium/drivers/zink/zink_pipeline.h | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 0fe0bdd..c976a31 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -2027,9 +2027,6 @@ zink_set_framebuffer_state(struct pipe_context *pctx, ctx->gfx_pipeline_state.dirty = true; } ctx->gfx_pipeline_state.rast_samples = rast_samples; - if (ctx->gfx_pipeline_state.num_attachments != state->nr_cbufs) - ctx->gfx_pipeline_state.dirty = true; - ctx->gfx_pipeline_state.num_attachments = state->nr_cbufs; /* need to ensure we start a new rp on next draw */ zink_batch_no_rp(ctx); diff --git a/src/gallium/drivers/zink/zink_pipeline.c b/src/gallium/drivers/zink/zink_pipeline.c index d60bcc2..c61ca87 100644 --- a/src/gallium/drivers/zink/zink_pipeline.c +++ b/src/gallium/drivers/zink/zink_pipeline.c @@ -91,8 +91,11 @@ zink_create_gfx_pipeline(struct zink_screen *screen, VkPipelineColorBlendAttachmentState blend_att[PIPE_MAX_COLOR_BUFS]; VkPipelineColorBlendStateCreateInfo blend_state = {0}; blend_state.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; + unsigned num_attachments = state->render_pass->state.num_rts; + if (state->render_pass->state.have_zsbuf) + num_attachments--; if (state->void_alpha_attachments) { - for (unsigned i = 0; i < state->num_attachments; i++) { + for (unsigned i = 0; i < num_attachments; i++) { blend_att[i] = state->blend_state->attachments[i]; if (state->void_alpha_attachments & BITFIELD_BIT(i)) { blend_att[i].dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO; @@ -103,7 +106,7 @@ zink_create_gfx_pipeline(struct zink_screen *screen, blend_state.pAttachments = blend_att; } else blend_state.pAttachments = state->blend_state->attachments; - blend_state.attachmentCount = state->num_attachments; + blend_state.attachmentCount = num_attachments; blend_state.logicOpEnable = state->blend_state->logicop_enable; blend_state.logicOp = state->blend_state->logicop_func; diff --git a/src/gallium/drivers/zink/zink_pipeline.h b/src/gallium/drivers/zink/zink_pipeline.h index 5d11132..de72882 100644 --- a/src/gallium/drivers/zink/zink_pipeline.h +++ b/src/gallium/drivers/zink/zink_pipeline.h @@ -41,7 +41,6 @@ struct zink_gfx_pipeline_state { struct zink_render_pass *render_pass; uint8_t void_alpha_attachments:PIPE_MAX_COLOR_BUFS; - uint32_t num_attachments; struct zink_blend_state *blend_state; struct zink_rasterizer_hw_state *rast_state; -- 2.7.4