From 730d2b766078f5c7d5bc2377d02884380d435100 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 3 May 2022 10:44:30 -0500 Subject: [PATCH] nir/lower_blend: Stop passing the whole options object around Reviewed-by: Alyssa Rosenzweig Part-of: --- src/compiler/nir/nir_lower_blend.c | 26 ++++++++++++++------------ src/compiler/nir/nir_lower_blend.h | 3 ++- src/gallium/drivers/asahi/agx_state.c | 4 ++-- src/panfrost/lib/pan_blend.c | 2 +- src/panfrost/vulkan/panvk_vX_shader.c | 2 +- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/compiler/nir/nir_lower_blend.c b/src/compiler/nir/nir_lower_blend.c index 8f61346..a0e10c3 100644 --- a/src/compiler/nir/nir_lower_blend.c +++ b/src/compiler/nir/nir_lower_blend.c @@ -206,13 +206,13 @@ nir_logicop_func( static nir_ssa_def * nir_blend_logicop( nir_builder *b, - nir_lower_blend_options options, + const nir_lower_blend_options *options, unsigned rt, nir_ssa_def *src, nir_ssa_def *dst) { unsigned bit_size = src->bit_size; const struct util_format_description *format_desc = - util_format_description(options.format[rt]); + util_format_description(options->format[rt]); if (bit_size != 32) { src = nir_f2f32(b, src); @@ -229,7 +229,7 @@ nir_blend_logicop( src = nir_format_float_to_unorm(b, src, bits); dst = nir_format_float_to_unorm(b, dst, bits); - nir_ssa_def *out = nir_logicop_func(b, options.logicop_func, src, dst); + nir_ssa_def *out = nir_logicop_func(b, options->logicop_func, src, dst); if (bits[0] < 32) { nir_const_value mask[4]; @@ -261,13 +261,13 @@ nir_fsat_signed(nir_builder *b, nir_ssa_def *x) static nir_ssa_def * nir_blend( nir_builder *b, - nir_lower_blend_options options, + const nir_lower_blend_options *options, unsigned rt, nir_ssa_def *src, nir_ssa_def *src1, nir_ssa_def *dst) { /* Grab the blend constant ahead of time */ nir_ssa_def *bconst; - if (options.scalar_blend_const) { + if (options->scalar_blend_const) { bconst = nir_vec4(b, nir_load_blend_const_color_r_float(b), nir_load_blend_const_color_g_float(b), @@ -281,7 +281,7 @@ nir_blend( bconst = nir_f2f16(b, bconst); /* Fixed-point framebuffers require their inputs clamped. */ - enum pipe_format format = options.format[rt]; + enum pipe_format format = options->format[rt]; /* From section 17.3.6 "Blending" of the OpenGL 4.5 spec: * @@ -316,7 +316,7 @@ nir_blend( for (unsigned c = 0; c < 4; ++c) { /* Decide properties based on channel */ nir_lower_blend_channel chan = - (c < 3) ? options.rt[rt].rgb : options.rt[rt].alpha; + (c < 3) ? options->rt[rt].rgb : options->rt[rt].alpha; nir_ssa_def *psrc = nir_channel(b, src, c); nir_ssa_def *pdst = nir_channel(b, dst, c); @@ -342,7 +342,7 @@ nir_blend( static bool nir_lower_blend_instr(nir_builder *b, nir_instr *instr, void *data) { - nir_lower_blend_options *options = data; + const nir_lower_blend_options *options = data; if (instr->type != nir_instr_type_intrinsic) return false; @@ -389,10 +389,10 @@ nir_lower_blend_instr(nir_builder *b, nir_instr *instr, void *data) nir_ssa_def *blended = src; if (options->logicop_enable) { - blended = nir_blend_logicop(b, *options, rt, src, dst); + blended = nir_blend_logicop(b, options, rt, src, dst); } else if (!util_format_is_pure_integer(options->format[rt])) { assert(!util_format_is_scaled(options->format[rt])); - blended = nir_blend(b, *options, rt, src, options->src1, dst); + blended = nir_blend(b, options, rt, src, options->src1, dst); } /* Apply a colormask */ @@ -416,10 +416,12 @@ nir_lower_blend_instr(nir_builder *b, nir_instr *instr, void *data) * This can be done by calling nir_lower_io_arrays_to_elements_no_indirect(). */ void -nir_lower_blend(nir_shader *shader, nir_lower_blend_options options) +nir_lower_blend(nir_shader *shader, const nir_lower_blend_options *options) { assert(shader->info.stage == MESA_SHADER_FRAGMENT); nir_shader_instructions_pass(shader, nir_lower_blend_instr, - nir_metadata_block_index | nir_metadata_dominance, &options); + nir_metadata_block_index | + nir_metadata_dominance, + (void *)options); } diff --git a/src/compiler/nir/nir_lower_blend.h b/src/compiler/nir/nir_lower_blend.h index 4806bf8..24510c8 100644 --- a/src/compiler/nir/nir_lower_blend.h +++ b/src/compiler/nir/nir_lower_blend.h @@ -64,6 +64,7 @@ typedef struct { bool scalar_blend_const; } nir_lower_blend_options; -void nir_lower_blend(nir_shader *shader, nir_lower_blend_options options); +void nir_lower_blend(nir_shader *shader, + const nir_lower_blend_options *options); #endif diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index aef98e0..8c8cdd3 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -920,7 +920,7 @@ agx_update_shader(struct agx_context *ctx, struct agx_compiled_shader **out, }; memcpy(opts.rt, key->blend.rt, sizeof(opts.rt)); - NIR_PASS_V(nir, nir_lower_blend, opts); + NIR_PASS_V(nir, nir_lower_blend, &opts); } else if (key->blend.logicop_enable) { nir_lower_blend_options opts = { .format = { key->rt_formats[0] }, @@ -928,7 +928,7 @@ agx_update_shader(struct agx_context *ctx, struct agx_compiled_shader **out, .logicop_func = key->blend.logicop_func, }; - NIR_PASS_V(nir, nir_lower_blend, opts); + NIR_PASS_V(nir, nir_lower_blend, &opts); } if (stage == PIPE_SHADER_FRAGMENT) diff --git a/src/panfrost/lib/pan_blend.c b/src/panfrost/lib/pan_blend.c index d959300..efc7c6c 100644 --- a/src/panfrost/lib/pan_blend.c +++ b/src/panfrost/lib/pan_blend.c @@ -695,7 +695,7 @@ GENX(pan_blend_create_shader)(const struct panfrost_device *dev, options.src1 = s_src[1]; - NIR_PASS_V(b.shader, nir_lower_blend, options); + NIR_PASS_V(b.shader, nir_lower_blend, &options); nir_shader_instructions_pass(b.shader, pan_inline_blend_constants, nir_metadata_block_index | nir_metadata_dominance, (void *) state->constants); diff --git a/src/panfrost/vulkan/panvk_vX_shader.c b/src/panfrost/vulkan/panvk_vX_shader.c index 45306d5..bd4f7ca 100644 --- a/src/panfrost/vulkan/panvk_vX_shader.c +++ b/src/panfrost/vulkan/panvk_vX_shader.c @@ -464,7 +464,7 @@ panvk_lower_blend(struct panfrost_device *pdev, nir_remove_dead_variables(nir, nir_var_shader_out, NULL); #endif - NIR_PASS_V(nir, nir_lower_blend, options); + NIR_PASS_V(nir, nir_lower_blend, &options); if (static_blend_constants) { const nir_const_value constants[4] = { -- 2.7.4