From 8147ea59fec24bd8873c4724a48df10c4dc3a9f2 Mon Sep 17 00:00:00 2001 From: Aitor Camacho Date: Wed, 14 Jan 2026 11:11:06 +0900 Subject: [PATCH] kk: Bundle nir_to_msl options into a struct for easier option addition Reviewed-by: Arcady Goldmints-Orlov Signed-off-by: Aitor Camacho Part-of: --- src/kosmickrisp/compiler/nir_to_msl.c | 8 ++++---- src/kosmickrisp/compiler/nir_to_msl.h | 8 ++++++-- src/kosmickrisp/kosmicomp.c | 6 +++++- src/kosmickrisp/vulkan/kk_shader.c | 7 ++++++- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/kosmickrisp/compiler/nir_to_msl.c b/src/kosmickrisp/compiler/nir_to_msl.c index 08006c6a578..0e38bfac611 100644 --- a/src/kosmickrisp/compiler/nir_to_msl.c +++ b/src/kosmickrisp/compiler/nir_to_msl.c @@ -2064,7 +2064,7 @@ predeclare_ssa_values(struct nir_to_msl_ctx *ctx, nir_function_impl *impl) } char * -nir_to_msl(nir_shader *shader, void *mem_ctx, uint64_t disabled_workarounds) +nir_to_msl(nir_shader *shader, struct nir_to_msl_options *options) { /* Need to rename the entrypoint here since hardcoded shaders used by vk_meta * don't go through the preprocess step since we are the ones creating them. @@ -2073,8 +2073,8 @@ nir_to_msl(nir_shader *shader, void *mem_ctx, uint64_t disabled_workarounds) struct nir_to_msl_ctx ctx = { .shader = shader, - .text = _mesa_string_buffer_create(mem_ctx, 1024), - .disabled_workarounds = disabled_workarounds, + .text = _mesa_string_buffer_create(options->mem_ctx, 1024), + .disabled_workarounds = options->disabled_workarounds, }; nir_function_impl *impl = nir_shader_get_entrypoint(shader); msl_gather_info(&ctx); @@ -2109,7 +2109,7 @@ nir_to_msl(nir_shader *shader, void *mem_ctx, uint64_t disabled_workarounds) P(&ctx, "}\n"); char *ret = ctx.text->buf; _mesa_hash_table_destroy(ctx.types, NULL); - ralloc_steal(mem_ctx, ctx.text->buf); + ralloc_steal(options->mem_ctx, ctx.text->buf); ralloc_free(ctx.text); return ret; } diff --git a/src/kosmickrisp/compiler/nir_to_msl.h b/src/kosmickrisp/compiler/nir_to_msl.h index 89947a46b42..a9c53a6c982 100644 --- a/src/kosmickrisp/compiler/nir_to_msl.h +++ b/src/kosmickrisp/compiler/nir_to_msl.h @@ -10,9 +10,13 @@ enum pipe_format; +struct nir_to_msl_options { + void *mem_ctx; + uint64_t disabled_workarounds; +}; + /* Assumes nir_shader_gather_info has been called beforehand. */ -char *nir_to_msl(nir_shader *shader, void *mem_ctx, - uint64_t disabled_workarounds); +char *nir_to_msl(nir_shader *shader, struct nir_to_msl_options *options); /* Call this after all API-specific lowerings. It will bring the NIR out of SSA * at the end */ diff --git a/src/kosmickrisp/kosmicomp.c b/src/kosmickrisp/kosmicomp.c index 501ba4e0095..29b09096cd4 100644 --- a/src/kosmickrisp/kosmicomp.c +++ b/src/kosmickrisp/kosmicomp.c @@ -177,7 +177,11 @@ main(int argc, char **argv) optimize(shader); nir_print_shader(shader, stdout); - char *msl_text = nir_to_msl(shader, shader, 0u); + struct nir_to_msl_options translate_options = { + .mem_ctx = shader, + .disabled_workarounds = 0u, + }; + char *msl_text = nir_to_msl(shader, &translate_options); fputs(msl_text, stdout); diff --git a/src/kosmickrisp/vulkan/kk_shader.c b/src/kosmickrisp/vulkan/kk_shader.c index c966c056c8d..7a551348957 100644 --- a/src/kosmickrisp/vulkan/kk_shader.c +++ b/src/kosmickrisp/vulkan/kk_shader.c @@ -680,7 +680,12 @@ kk_compile_shader(struct kk_device *dev, struct vk_shader_compile_info *info, msl_lower_nir_late(nir); msl_optimize_nir(nir); modify_nir_info(nir); - shader->msl_code = nir_to_msl(nir, NULL, dev->disabled_workarounds); + + struct nir_to_msl_options translate_options = { + .mem_ctx = NULL, + .disabled_workarounds = dev->disabled_workarounds, + }; + shader->msl_code = nir_to_msl(nir, &translate_options); const char *entrypoint_name = nir_shader_get_entrypoint(nir)->function->name; /* We need to steal so it doesn't get destroyed with the nir. Needs to happen