Module: Mesa Branch: main Commit: d3c5688cf570d424ed00874e33cfae6160bd9d4f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d3c5688cf570d424ed00874e33cfae6160bd9d4f
Author: Faith Ekstrand <[email protected]> Date: Fri Nov 10 10:23:31 2023 -0600 nak: Plumb the nak_compiler through to lower_fs_input_intrin Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26181> --- src/nouveau/compiler/nak_nir.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/nouveau/compiler/nak_nir.c b/src/nouveau/compiler/nak_nir.c index c791b9bf543..27a467cf50a 100644 --- a/src/nouveau/compiler/nak_nir.c +++ b/src/nouveau/compiler/nak_nir.c @@ -567,14 +567,19 @@ load_frag_w(nir_builder *b, nir_def *bary) .dest_type = nir_type_float32); } +struct lower_fs_input_ctx { + const struct nak_compiler *nak; + const struct nak_fs_key *fs_key; +}; + static bool lower_fs_input_intrin(nir_builder *b, nir_intrinsic_instr *intrin, void *data) { - const struct nak_fs_key *fs_key = data; + const struct lower_fs_input_ctx *ctx = data; switch (intrin->intrinsic) { case nir_intrinsic_load_barycentric_pixel: { - if (!(fs_key && fs_key->force_sample_shading)) + if (!(ctx->fs_key && ctx->fs_key->force_sample_shading)) return false; intrin->intrinsic = nir_intrinsic_load_barycentric_sample; @@ -663,7 +668,7 @@ lower_fs_input_intrin(nir_builder *b, nir_intrinsic_instr *intrin, void *data) case nir_intrinsic_load_sample_mask_in: { if (!b->shader->info.fs.uses_sample_shading && - !(fs_key && fs_key->force_sample_shading)) + !(ctx->fs_key && ctx->fs_key->force_sample_shading)) return false; b->cursor = nir_after_instr(&intrin->instr); @@ -684,12 +689,18 @@ lower_fs_input_intrin(nir_builder *b, nir_intrinsic_instr *intrin, void *data) static bool nak_nir_lower_fs_inputs(nir_shader *nir, + const struct nak_compiler *nak, const struct nak_fs_key *fs_key) { NIR_PASS_V(nir, nak_nir_lower_varyings, nir_var_shader_in); + + const struct lower_fs_input_ctx fs_in_ctx = { + .nak = nak, + .fs_key = fs_key, + }; NIR_PASS_V(nir, nir_shader_intrinsics_pass, lower_fs_input_intrin, nir_metadata_block_index | nir_metadata_dominance, - (void *)fs_key); + (void *)&fs_in_ctx); return true; } @@ -850,7 +861,7 @@ nak_postprocess_nir(nir_shader *nir, break; case MESA_SHADER_FRAGMENT: - OPT(nir, nak_nir_lower_fs_inputs, fs_key); + OPT(nir, nak_nir_lower_fs_inputs, nak, fs_key); OPT(nir, nak_nir_lower_fs_outputs); break;
