From dc7fbe114bac338e7075efdb325053ef41dad91c Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 17 Aug 2020 19:32:59 -0400 Subject: [PATCH] panfrost: Drop implicit blend pooling We dropped blend shader pools a long time ago for various reasons, but the indirection required remained. Oops. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Tomeu Vizoso Part-of: --- src/gallium/drivers/panfrost/pan_blend.h | 2 +- src/gallium/drivers/panfrost/pan_blend_cso.c | 20 ++++++-------------- src/gallium/drivers/panfrost/pan_cmdstream.c | 5 +---- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_blend.h b/src/gallium/drivers/panfrost/pan_blend.h index 49ad8d9b3d7..22993dd94a9 100644 --- a/src/gallium/drivers/panfrost/pan_blend.h +++ b/src/gallium/drivers/panfrost/pan_blend.h @@ -115,7 +115,7 @@ void panfrost_blend_context_init(struct pipe_context *pipe); struct panfrost_blend_final -panfrost_get_blend_for_context(struct panfrost_context *ctx, unsigned rt, struct panfrost_bo **bo, unsigned *shader_offset); +panfrost_get_blend_for_context(struct panfrost_context *ctx, unsigned rt); struct panfrost_blend_shader * panfrost_get_blend_shader( diff --git a/src/gallium/drivers/panfrost/pan_blend_cso.c b/src/gallium/drivers/panfrost/pan_blend_cso.c index 01b4fd33a10..1e5c1bf072e 100644 --- a/src/gallium/drivers/panfrost/pan_blend_cso.c +++ b/src/gallium/drivers/panfrost/pan_blend_cso.c @@ -219,7 +219,7 @@ panfrost_blend_constant(float *out, float *in, unsigned mask) /* Create a final blend given the context */ struct panfrost_blend_final -panfrost_get_blend_for_context(struct panfrost_context *ctx, unsigned rti, struct panfrost_bo **bo, unsigned *shader_offset) +panfrost_get_blend_for_context(struct panfrost_context *ctx, unsigned rti) { struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx); @@ -268,32 +268,24 @@ panfrost_get_blend_for_context(struct panfrost_context *ctx, unsigned rti, struc final.shader.work_count = shader->work_count; final.shader.first_tag = shader->first_tag; - /* Upload the shader, sharing a BO */ - if (!(*bo)) { - *bo = panfrost_batch_create_bo(batch, 4096, + /* Upload the shader */ + struct panfrost_bo *bo = panfrost_batch_create_bo(batch, shader->size, PAN_BO_EXECUTE, PAN_BO_ACCESS_PRIVATE | PAN_BO_ACCESS_READ | - PAN_BO_ACCESS_VERTEX_TILER | PAN_BO_ACCESS_FRAGMENT); - } - - /* Size check */ - assert((*shader_offset + shader->size) < 4096); - memcpy((*bo)->cpu + *shader_offset, shader->buffer, shader->size); - final.shader.gpu = (*bo)->gpu + *shader_offset; + memcpy(bo->cpu, shader->buffer, shader->size); + final.shader.gpu = bo->gpu; if (shader->patch_index) { /* We have to specialize the blend shader to use constants, so * patch in the current constants */ - float *patch = (float *) ((*bo)->cpu + *shader_offset + shader->patch_index); + float *patch = (float *) (bo->cpu + shader->patch_index); memcpy(patch, ctx->blend_color.color, sizeof(float) * 4); } - *shader_offset += shader->size; - return final; } diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index bd01daccf91..d3bbf40f6dc 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -554,12 +554,9 @@ panfrost_frag_meta_blend_update(struct panfrost_context *ctx, unsigned rt_count = MAX2(ctx->pipe_framebuffer.nr_cbufs, 1); struct panfrost_blend_final blend[PIPE_MAX_COLOR_BUFS]; - unsigned shader_offset = 0; - struct panfrost_bo *shader_bo = NULL; for (unsigned c = 0; c < rt_count; ++c) - blend[c] = panfrost_get_blend_for_context(ctx, c, &shader_bo, - &shader_offset); + blend[c] = panfrost_get_blend_for_context(ctx, c); /* Disable shader execution if we can */ if (dev->quirks & MIDGARD_SHADERLESS -- 2.30.2