From 33475c0cce3e98ac2d9dfcc451f0d24012c63805 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Sun, 17 May 2026 14:01:25 -0700 Subject: [PATCH] brw: Move key and prog_data to base compile params MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Iván Briano Part-of: --- src/gallium/drivers/iris/iris_program.c | 24 ++++---- src/gallium/drivers/iris/iris_program_cache.c | 4 +- src/intel/blorp/blorp_brw.c | 12 ++-- src/intel/compiler/brw/brw_compile_bs.cpp | 12 ++-- src/intel/compiler/brw/brw_compile_cs.cpp | 6 +- src/intel/compiler/brw/brw_compile_fs.cpp | 6 +- src/intel/compiler/brw/brw_compile_gs.cpp | 6 +- src/intel/compiler/brw/brw_compile_mesh.cpp | 12 ++-- src/intel/compiler/brw/brw_compile_tcs.cpp | 6 +- src/intel/compiler/brw/brw_compile_tes.cpp | 6 +- src/intel/compiler/brw/brw_compile_vs.cpp | 6 +- src/intel/compiler/brw/brw_compiler.h | 28 +-------- src/intel/compiler/brw/brw_shader.cpp | 2 + src/intel/vulkan/anv_internal_kernels.c | 8 +-- src/intel/vulkan/anv_shader_compile.c | 58 ++++++++++--------- src/intel/vulkan/anv_util.c | 12 ++-- 16 files changed, 105 insertions(+), 103 deletions(-) diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c index 2ef2a1e6c58..0fc40ac2773 100644 --- a/src/gallium/drivers/iris/iris_program.c +++ b/src/gallium/drivers/iris/iris_program.c @@ -1918,12 +1918,12 @@ iris_compile_vs(struct iris_screen *screen, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &brw_key.base, + .prog_data = (struct brw_stage_prog_data *)brw_prog_data, .log_data = dbg, .source_hash = ish->source_hash, .archiver = debug_archiver, }, - .key = &brw_key, - .prog_data = brw_prog_data, }; if (intel_use_jay(devinfo, nir->info.stage)) { @@ -2196,12 +2196,12 @@ iris_compile_tcs(struct iris_screen *screen, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &brw_key.base, + .prog_data = (struct brw_stage_prog_data *)brw_prog_data, .log_data = dbg, .source_hash = source_hash, .archiver = debug_archiver, }, - .key = &brw_key, - .prog_data = brw_prog_data, }; program = brw_compile(screen->brw, ¶ms.base); @@ -2406,12 +2406,12 @@ iris_compile_tes(struct iris_screen *screen, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &brw_key.base, + .prog_data = (struct brw_stage_prog_data *)brw_prog_data, .log_data = dbg, .source_hash = ish->source_hash, .archiver = debug_archiver, }, - .key = &brw_key, - .prog_data = brw_prog_data, .input_vue_map = &input_vue_map, }; @@ -2601,12 +2601,12 @@ iris_compile_gs(struct iris_screen *screen, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &brw_key.base, + .prog_data = (struct brw_stage_prog_data *)brw_prog_data, .log_data = dbg, .source_hash = ish->source_hash, .archiver = debug_archiver, }, - .key = &brw_key, - .prog_data = brw_prog_data, }; program = brw_compile(screen->brw, ¶ms.base); @@ -2804,12 +2804,12 @@ iris_compile_fs(struct iris_screen *screen, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &brw_key.base, + .prog_data = (struct brw_stage_prog_data *)brw_prog_data, .log_data = dbg, .source_hash = ish->source_hash, .archiver = debug_archiver, }, - .key = &brw_key, - .prog_data = brw_prog_data, .allow_spilling = true, .max_polygons = UCHAR_MAX, @@ -3168,12 +3168,12 @@ iris_compile_cs(struct iris_screen *screen, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &brw_key.base, + .prog_data = (struct brw_stage_prog_data *)brw_prog_data, .log_data = dbg, .source_hash = ish->source_hash, .archiver = debug_archiver, }, - .key = &brw_key, - .prog_data = brw_prog_data, }; if (intel_use_jay(devinfo, nir->info.stage)) { diff --git a/src/gallium/drivers/iris/iris_program_cache.c b/src/gallium/drivers/iris/iris_program_cache.c index 740c711f0c6..7209600f29c 100644 --- a/src/gallium/drivers/iris/iris_program_cache.c +++ b/src/gallium/drivers/iris/iris_program_cache.c @@ -435,13 +435,13 @@ iris_ensure_indirect_generation_shader(struct iris_batch *batch) struct brw_compile_fs_params params = { .base = { .nir = nir, + .key = &prog_key.fs.base, + .prog_data = (struct brw_stage_prog_data *)prog_data, .log_data = &ice->dbg, .debug_flag = DEBUG_WM, .stats = stats, .mem_ctx = nir, }, - .key = &prog_key.fs, - .prog_data = prog_data, }; program = brw_compile(screen->brw, ¶ms.base); assert(program); diff --git a/src/intel/blorp/blorp_brw.c b/src/intel/blorp/blorp_brw.c index 6db91a9473c..22e1823a6b3 100644 --- a/src/intel/blorp/blorp_brw.c +++ b/src/intel/blorp/blorp_brw.c @@ -80,12 +80,12 @@ blorp_compile_fs_brw(struct blorp_context *blorp, void *mem_ctx, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &wm_key.base, + .prog_data = (struct brw_stage_prog_data *)fs_prog_data, .log_data = blorp->driver_ctx, .debug_flag = DEBUG_BLORP, .archiver = archiver, }, - .key = &wm_key, - .prog_data = fs_prog_data, .use_rep_send = use_repclear, .max_polygons = 1, @@ -132,12 +132,12 @@ blorp_compile_vs_brw(struct blorp_context *blorp, void *mem_ctx, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &vs_key.base, + .prog_data = (struct brw_stage_prog_data *)vs_prog_data, .log_data = blorp->driver_ctx, .debug_flag = DEBUG_BLORP, .archiver = archiver, }, - .key = &vs_key, - .prog_data = vs_prog_data, }; const unsigned *kernel = brw_compile(compiler, ¶ms.base); @@ -239,12 +239,12 @@ blorp_compile_cs_brw(struct blorp_context *blorp, void *mem_ctx, .base = { .mem_ctx = mem_ctx, .nir = nir, + .key = &cs_key.base, + .prog_data = (struct brw_stage_prog_data *)cs_prog_data, .log_data = blorp->driver_ctx, .debug_flag = DEBUG_BLORP, .archiver = archiver, }, - .key = &cs_key, - .prog_data = cs_prog_data, }; const unsigned *kernel = brw_compile(compiler, ¶ms.base); diff --git a/src/intel/compiler/brw/brw_compile_bs.cpp b/src/intel/compiler/brw/brw_compile_bs.cpp index c28443c3115..0ff1216bbf0 100644 --- a/src/intel/compiler/brw/brw_compile_bs.cpp +++ b/src/intel/compiler/brw/brw_compile_bs.cpp @@ -140,7 +140,10 @@ brw_compile_bs(const struct brw_compiler *compiler, struct brw_compile_bs_params *params) { nir_shader *shader = params->base.nir; - struct brw_bs_prog_data *prog_data = params->prog_data; + const struct brw_bs_prog_key *key = + (const struct brw_bs_prog_key *)params->base.key; + struct brw_bs_prog_data *prog_data = + (struct brw_bs_prog_data *)params->base.prog_data; unsigned num_resume_shaders = params->num_resume_shaders; nir_shader **resume_shaders = params->resume_shaders; const bool debug_enabled = brw_should_print_shader(shader, DEBUG_RT, params->base.source_hash); @@ -162,7 +165,7 @@ brw_compile_bs(const struct brw_compiler *compiler, } prog_data->simd_size = - compile_single_bs(compiler, params, params->key, prog_data, + compile_single_bs(compiler, params, key, prog_data, shader, &g, params->base.stats, NULL, NULL); if (prog_data->simd_size == 0) return NULL; @@ -183,9 +186,8 @@ brw_compile_bs(const struct brw_compiler *compiler, /* TODO: Figure out shader stats etc. for resume shaders */ int offset = 0; uint8_t simd_size = - compile_single_bs(compiler, params, params->key, - prog_data, resume_shaders[i], &g, NULL, &offset, - &resume_sbt[i]); + compile_single_bs(compiler, params, key, prog_data, resume_shaders[i], + &g, NULL, &offset, &resume_sbt[i]); if (simd_size == 0) return NULL; diff --git a/src/intel/compiler/brw/brw_compile_cs.cpp b/src/intel/compiler/brw/brw_compile_cs.cpp index 4763a9019c4..a9c75a1f950 100644 --- a/src/intel/compiler/brw/brw_compile_cs.cpp +++ b/src/intel/compiler/brw/brw_compile_cs.cpp @@ -122,8 +122,10 @@ brw_compile_cs(const struct brw_compiler *compiler, { const struct intel_device_info *devinfo = compiler->devinfo; struct nir_shader *nir = params->base.nir; - const struct brw_cs_prog_key *key = params->key; - struct brw_cs_prog_data *prog_data = params->prog_data; + const struct brw_cs_prog_key *key = + (const struct brw_cs_prog_key *)params->base.key; + struct brw_cs_prog_data *prog_data = + (struct brw_cs_prog_data *)params->base.prog_data; const bool debug_enabled = brw_should_print_shader(nir, params->base.debug_flag ? diff --git a/src/intel/compiler/brw/brw_compile_fs.cpp b/src/intel/compiler/brw/brw_compile_fs.cpp index 294421bea2d..d5cf8709b1a 100644 --- a/src/intel/compiler/brw/brw_compile_fs.cpp +++ b/src/intel/compiler/brw/brw_compile_fs.cpp @@ -1448,8 +1448,10 @@ brw_compile_fs(const struct brw_compiler *compiler, struct brw_compile_fs_params *params) { struct nir_shader *nir = params->base.nir; - const struct brw_fs_prog_key *key = params->key; - struct brw_fs_prog_data *prog_data = params->prog_data; + const struct brw_fs_prog_key *key = + (const struct brw_fs_prog_key *)params->base.key; + struct brw_fs_prog_data *prog_data = + (struct brw_fs_prog_data *)params->base.prog_data; bool allow_spilling = params->allow_spilling; const bool debug_enabled = brw_should_print_shader(nir, params->base.debug_flag ? diff --git a/src/intel/compiler/brw/brw_compile_gs.cpp b/src/intel/compiler/brw/brw_compile_gs.cpp index d888cc4c1a7..00da268d963 100644 --- a/src/intel/compiler/brw/brw_compile_gs.cpp +++ b/src/intel/compiler/brw/brw_compile_gs.cpp @@ -121,8 +121,10 @@ brw_compile_gs(const struct brw_compiler *compiler, struct brw_compile_gs_params *params) { nir_shader *nir = params->base.nir; - const struct brw_gs_prog_key *key = params->key; - struct brw_gs_prog_data *prog_data = params->prog_data; + const struct brw_gs_prog_key *key = + (const struct brw_gs_prog_key *)params->base.key; + struct brw_gs_prog_data *prog_data = + (struct brw_gs_prog_data *)params->base.prog_data; const unsigned dispatch_width = brw_geometry_stage_dispatch_width(compiler->devinfo); struct intel_vue_map input_vue_map = {0}; diff --git a/src/intel/compiler/brw/brw_compile_mesh.cpp b/src/intel/compiler/brw/brw_compile_mesh.cpp index 42ce3b5caf2..db1742641a7 100644 --- a/src/intel/compiler/brw/brw_compile_mesh.cpp +++ b/src/intel/compiler/brw/brw_compile_mesh.cpp @@ -277,8 +277,10 @@ brw_compile_task(const struct brw_compiler *compiler, { const struct intel_device_info *devinfo = compiler->devinfo; struct nir_shader *nir = params->base.nir; - const struct brw_task_prog_key *key = params->key; - struct brw_task_prog_data *prog_data = params->prog_data; + const struct brw_task_prog_key *key = + (const struct brw_task_prog_key *)params->base.key; + struct brw_task_prog_data *prog_data = + (struct brw_task_prog_data *)params->base.prog_data; const bool debug_enabled = brw_should_print_shader(nir, DEBUG_TASK, params->base.source_hash); brw_pass_tracker pt_ = { @@ -963,8 +965,10 @@ brw_compile_mesh(const struct brw_compiler *compiler, { const struct intel_device_info *devinfo = compiler->devinfo; struct nir_shader *nir = params->base.nir; - const struct brw_mesh_prog_key *key = params->key; - struct brw_mesh_prog_data *prog_data = params->prog_data; + const struct brw_mesh_prog_key *key = + (const struct brw_mesh_prog_key *)params->base.key; + struct brw_mesh_prog_data *prog_data = + (struct brw_mesh_prog_data *)params->base.prog_data; const bool debug_enabled = brw_should_print_shader(nir, DEBUG_MESH, params->base.source_hash); brw_pass_tracker pt_ = { diff --git a/src/intel/compiler/brw/brw_compile_tcs.cpp b/src/intel/compiler/brw/brw_compile_tcs.cpp index 2e81ec40264..48b7875d2e8 100644 --- a/src/intel/compiler/brw/brw_compile_tcs.cpp +++ b/src/intel/compiler/brw/brw_compile_tcs.cpp @@ -176,8 +176,10 @@ brw_compile_tcs(const struct brw_compiler *compiler, { const struct intel_device_info *devinfo = compiler->devinfo; nir_shader *nir = params->base.nir; - const struct brw_tcs_prog_key *key = params->key; - struct brw_tcs_prog_data *prog_data = params->prog_data; + const struct brw_tcs_prog_key *key = + (const struct brw_tcs_prog_key *)params->base.key; + struct brw_tcs_prog_data *prog_data = + (struct brw_tcs_prog_data *)params->base.prog_data; struct brw_vue_prog_data *vue_prog_data = &prog_data->base; const unsigned dispatch_width = brw_geometry_stage_dispatch_width(compiler->devinfo); diff --git a/src/intel/compiler/brw/brw_compile_tes.cpp b/src/intel/compiler/brw/brw_compile_tes.cpp index 1b6d982ca4c..a3d5fcba29b 100644 --- a/src/intel/compiler/brw/brw_compile_tes.cpp +++ b/src/intel/compiler/brw/brw_compile_tes.cpp @@ -66,9 +66,11 @@ brw_compile_tes(const struct brw_compiler *compiler, { const struct intel_device_info *devinfo = compiler->devinfo; nir_shader *nir = params->base.nir; - const struct brw_tes_prog_key *key = params->key; + const struct brw_tes_prog_key *key = + (const struct brw_tes_prog_key *)params->base.key; struct intel_vue_map input_vue_map; - struct brw_tes_prog_data *prog_data = params->prog_data; + struct brw_tes_prog_data *prog_data = + (struct brw_tes_prog_data *)params->base.prog_data; const unsigned dispatch_width = brw_geometry_stage_dispatch_width(compiler->devinfo); const bool debug_enabled = brw_should_print_shader(nir, DEBUG_TES, params->base.source_hash); diff --git a/src/intel/compiler/brw/brw_compile_vs.cpp b/src/intel/compiler/brw/brw_compile_vs.cpp index 1a7733462ac..8953b49cbe9 100644 --- a/src/intel/compiler/brw/brw_compile_vs.cpp +++ b/src/intel/compiler/brw/brw_compile_vs.cpp @@ -47,8 +47,10 @@ brw_compile_vs(const struct brw_compiler *compiler, struct brw_compile_vs_params *params) { struct nir_shader *nir = params->base.nir; - const struct brw_vs_prog_key *key = params->key; - struct brw_vs_prog_data *prog_data = params->prog_data; + const struct brw_vs_prog_key *key = + (const struct brw_vs_prog_key *)params->base.key; + struct brw_vs_prog_data *prog_data = + (struct brw_vs_prog_data *)params->base.prog_data; const bool debug_enabled = brw_should_print_shader(nir, params->base.debug_flag ? params->base.debug_flag : DEBUG_VS, diff --git a/src/intel/compiler/brw/brw_compiler.h b/src/intel/compiler/brw/brw_compiler.h index c1caa5226f3..7389bd4d144 100644 --- a/src/intel/compiler/brw/brw_compiler.h +++ b/src/intel/compiler/brw/brw_compiler.h @@ -1308,6 +1308,9 @@ struct brw_compile_params { nir_shader *nir; + const struct brw_base_prog_key *key; + struct brw_stage_prog_data *prog_data; + struct genisa_stats *stats; void *log_data; @@ -1332,9 +1335,6 @@ brw_compile(const struct brw_compiler *compiler, */ struct brw_compile_vs_params { struct brw_compile_params base; - - const struct brw_vs_prog_key *key; - struct brw_vs_prog_data *prog_data; }; /** @@ -1344,9 +1344,6 @@ struct brw_compile_vs_params { */ struct brw_compile_tcs_params { struct brw_compile_params base; - - const struct brw_tcs_prog_key *key; - struct brw_tcs_prog_data *prog_data; }; /** @@ -1357,8 +1354,6 @@ struct brw_compile_tcs_params { struct brw_compile_tes_params { struct brw_compile_params base; - const struct brw_tes_prog_key *key; - struct brw_tes_prog_data *prog_data; const struct intel_vue_map *input_vue_map; }; @@ -1369,23 +1364,15 @@ struct brw_compile_tes_params { */ struct brw_compile_gs_params { struct brw_compile_params base; - - const struct brw_gs_prog_key *key; - struct brw_gs_prog_data *prog_data; }; struct brw_compile_task_params { struct brw_compile_params base; - - const struct brw_task_prog_key *key; - struct brw_task_prog_data *prog_data; }; struct brw_compile_mesh_params { struct brw_compile_params base; - const struct brw_mesh_prog_key *key; - struct brw_mesh_prog_data *prog_data; const struct brw_tue_map *tue_map; /** Load provoking vertex for wa_18019110168 @@ -1404,9 +1391,6 @@ struct brw_compile_mesh_params { struct brw_compile_fs_params { struct brw_compile_params base; - const struct brw_fs_prog_key *key; - struct brw_fs_prog_data *prog_data; - const struct intel_vue_map *vue_map; const struct brw_mue_map *mue_map; @@ -1430,9 +1414,6 @@ struct brw_compile_fs_params { */ struct brw_compile_cs_params { struct brw_compile_params base; - - const struct brw_cs_prog_key *key; - struct brw_cs_prog_data *prog_data; }; /** @@ -1443,9 +1424,6 @@ struct brw_compile_cs_params { struct brw_compile_bs_params { struct brw_compile_params base; - const struct brw_bs_prog_key *key; - struct brw_bs_prog_data *prog_data; - unsigned num_resume_shaders; struct nir_shader **resume_shaders; }; diff --git a/src/intel/compiler/brw/brw_shader.cpp b/src/intel/compiler/brw/brw_shader.cpp index 1b169235b07..1ad97cd3fc0 100644 --- a/src/intel/compiler/brw/brw_shader.cpp +++ b/src/intel/compiler/brw/brw_shader.cpp @@ -1056,6 +1056,8 @@ brw_compile(const struct brw_compiler *compiler, { assert(params); assert(params->nir); + assert(params->key); + assert(params->prog_data); switch (params->nir->info.stage) { case MESA_SHADER_VERTEX: diff --git a/src/intel/vulkan/anv_internal_kernels.c b/src/intel/vulkan/anv_internal_kernels.c index d3e0f11554a..1f614627049 100644 --- a/src/intel/vulkan/anv_internal_kernels.c +++ b/src/intel/vulkan/anv_internal_kernels.c @@ -171,13 +171,13 @@ compile_shader(struct anv_device *device, struct brw_compile_fs_params params = { .base = { .nir = nir, + .key = &key.fs.base, + .prog_data = (struct brw_stage_prog_data *)&prog_data.fs, .log_data = device, .debug_flag = DEBUG_WM, .stats = stats, .mem_ctx = temp_ctx, }, - .key = &key.fs, - .prog_data = &prog_data.fs, }; prog_data.base.push_sizes[0] = align(prog_data.base.push_sizes[0], REG_SIZE); program = brw_compile(compiler, ¶ms.base); @@ -208,13 +208,13 @@ compile_shader(struct anv_device *device, struct brw_compile_cs_params params = { .base = { .nir = nir, + .key = &key.cs.base, + .prog_data = (struct brw_stage_prog_data *)&prog_data.cs, .stats = &stats, .log_data = device, .debug_flag = DEBUG_CS, .mem_ctx = temp_ctx, }, - .key = &key.cs, - .prog_data = &prog_data.cs, }; program = brw_compile(compiler, ¶ms.base); diff --git a/src/intel/vulkan/anv_shader_compile.c b/src/intel/vulkan/anv_shader_compile.c index 7f74289f9bb..c3264fae901 100644 --- a/src/intel/vulkan/anv_shader_compile.c +++ b/src/intel/vulkan/anv_shader_compile.c @@ -942,21 +942,21 @@ anv_shader_compile_vs(struct anv_device *device, struct brw_compile_vs_params params = { .base = { .nir = nir, + .key = &shader_data->key.vs.base, + .prog_data = (struct brw_stage_prog_data *)&shader_data->prog_data.vs, .stats = shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = shader_data->source_hash, .archiver = shader_data->archiver, }, - .key = &shader_data->key.vs, - .prog_data = &shader_data->prog_data.vs, }; if (intel_use_jay(devinfo, nir->info.stage)) { struct jay_shader_bin *bin = jay_compile(devinfo, mem_ctx, nir, - (union brw_any_prog_data *) params.prog_data, - (union brw_any_prog_key *) params.key); + (union brw_any_prog_data *) params.base.prog_data, + (union brw_any_prog_key *) params.base.key); shader_data->code = (void *) bin->kernel; } else { @@ -983,14 +983,14 @@ anv_shader_compile_tcs(struct anv_device *device, struct brw_compile_tcs_params params = { .base = { .nir = nir, + .key = &shader_data->key.tcs.base, + .prog_data = (struct brw_stage_prog_data *)&shader_data->prog_data.tcs, .stats = shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = shader_data->source_hash, .archiver = shader_data->archiver, }, - .key = &shader_data->key.tcs, - .prog_data = &shader_data->prog_data.tcs, }; shader_data->code = (void *)brw_compile(compiler, ¶ms.base); @@ -1019,14 +1019,14 @@ anv_shader_compile_tes(struct anv_device *device, struct brw_compile_tes_params params = { .base = { .nir = nir, + .key = &tes_shader_data->key.tes.base, + .prog_data = (struct brw_stage_prog_data *)&tes_shader_data->prog_data.tes, .stats = tes_shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = tes_shader_data->source_hash, .archiver = tes_shader_data->archiver, }, - .key = &tes_shader_data->key.tes, - .prog_data = &tes_shader_data->prog_data.tes, .input_vue_map = tcs_shader_data ? &tcs_shader_data->prog_data.tcs.base.vue_map : NULL, }; @@ -1049,14 +1049,14 @@ anv_shader_compile_gs(struct anv_device *device, struct brw_compile_gs_params params = { .base = { .nir = nir, + .key = &shader_data->key.gs.base, + .prog_data = (struct brw_stage_prog_data *)&shader_data->prog_data.gs, .stats = shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = shader_data->source_hash, .archiver = shader_data->archiver, }, - .key = &shader_data->key.gs, - .prog_data = &shader_data->prog_data.gs, }; shader_data->code = (void *)brw_compile(compiler, ¶ms.base); @@ -1077,14 +1077,14 @@ anv_shader_compile_task(struct anv_device *device, struct brw_compile_task_params params = { .base = { .nir = nir, + .key = &shader_data->key.task.base, + .prog_data = (struct brw_stage_prog_data *)&shader_data->prog_data.task, .stats = shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = shader_data->source_hash, .archiver = shader_data->archiver, }, - .key = &shader_data->key.task, - .prog_data = &shader_data->prog_data.task, }; shader_data->code = (void *)brw_compile(compiler, ¶ms.base); @@ -1145,14 +1145,14 @@ anv_shader_compile_mesh(struct anv_device *device, struct brw_compile_mesh_params params = { .base = { .nir = nir, + .key = &mesh_shader_data->key.mesh.base, + .prog_data = (struct brw_stage_prog_data *)&mesh_shader_data->prog_data.mesh, .stats = mesh_shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = mesh_shader_data->source_hash, .archiver = mesh_shader_data->archiver, }, - .key = &mesh_shader_data->key.mesh, - .prog_data = &mesh_shader_data->prog_data.mesh, .tue_map = task_shader_data ? &task_shader_data->prog_data.task.map : NULL, @@ -1192,14 +1192,15 @@ anv_shader_compile_fs(struct anv_device *device, struct brw_compile_fs_params params = { .base = { .nir = nir, + .key = &shader_data->key.fs.base, + .prog_data = (struct brw_stage_prog_data *)&shader_data->prog_data.fs, .stats = shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = shader_data->source_hash, .archiver = shader_data->archiver, }, - .key = &shader_data->key.fs, - .prog_data = &shader_data->prog_data.fs, + .mue_map = shader_data->mue_map, .allow_spilling = true, @@ -1213,8 +1214,8 @@ anv_shader_compile_fs(struct anv_device *device, if (intel_use_jay(devinfo, nir->info.stage)) { struct jay_shader_bin *bin = jay_compile(devinfo, mem_ctx, nir, - (union brw_any_prog_data *) params.prog_data, - (union brw_any_prog_key *) params.key); + (union brw_any_prog_data *) params.base.prog_data, + (union brw_any_prog_key *) params.base.key); shader_data->code = (void *) bin->kernel; } else { @@ -1257,27 +1258,30 @@ anv_shader_compile_cs(struct anv_device *device, struct brw_compile_cs_params params = { .base = { .nir = nir, + .key = &shader_data->key.cs.base, + .prog_data = (struct brw_stage_prog_data *)&shader_data->prog_data.cs, .stats = shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = shader_data->source_hash, .archiver = shader_data->archiver, }, - .key = &shader_data->key.cs, - .prog_data = &shader_data->prog_data.cs, }; if (intel_use_jay(devinfo, nir->info.stage)) { struct jay_shader_bin *bin = jay_compile(devinfo, mem_ctx, nir, - (union brw_any_prog_data*)params.prog_data, - (union brw_any_prog_key*)params.key); + (union brw_any_prog_data*)params.base.prog_data, + (union brw_any_prog_key*)params.base.key); + + struct brw_cs_prog_data *prog_data = + (struct brw_cs_prog_data *)params.base.prog_data; shader_data->code = (void*)bin->kernel; shader_data->stats[0] = bin->stats; - params.prog_data->local_size[0] = nir->info.workgroup_size[0]; - params.prog_data->local_size[1] = nir->info.workgroup_size[1]; - params.prog_data->local_size[2] = nir->info.workgroup_size[2]; + prog_data->local_size[0] = nir->info.workgroup_size[0]; + prog_data->local_size[1] = nir->info.workgroup_size[1]; + prog_data->local_size[2] = nir->info.workgroup_size[2]; } else { shader_data->code = (void*)brw_compile(compiler, ¶ms.base); } @@ -1344,14 +1348,14 @@ anv_shader_compile_bs(struct anv_device *device, struct brw_compile_bs_params params = { .base = { .nir = nir, + .key = &shader_data->key.bs.base, + .prog_data = (struct brw_stage_prog_data *)&shader_data->prog_data.bs, .stats = shader_data->stats, .log_data = device, .mem_ctx = mem_ctx, .source_hash = shader_data->source_hash, .archiver = shader_data->archiver, }, - .key = &shader_data->key.bs, - .prog_data = &shader_data->prog_data.bs, .num_resume_shaders = num_resume_shaders, .resume_shaders = resume_shaders, }; diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c index 84844c7c6bf..22f9051698c 100644 --- a/src/intel/vulkan/anv_util.c +++ b/src/intel/vulkan/anv_util.c @@ -415,11 +415,11 @@ anv_device_init_rt_shaders(struct anv_device *device) struct brw_compile_cs_params params = { .base = { .nir = trampoline_nir, + .key = &trampoline_key.key.base, + .prog_data = (struct brw_stage_prog_data *)&trampoline_prog_data, .log_data = device, .mem_ctx = tmp_ctx, }, - .key = &trampoline_key.key, - .prog_data = &trampoline_prog_data, }; const unsigned *tramp_data = brw_compile(device->physical->compiler, ¶ms.base); @@ -473,11 +473,11 @@ anv_device_init_rt_shaders(struct anv_device *device) struct brw_compile_bs_params params = { .base = { .nir = trivial_return_nir, + .key = &return_key.key.base, + .prog_data = (struct brw_stage_prog_data *)&return_prog_data, .log_data = device, .mem_ctx = tmp_ctx, }, - .key = &return_key.key, - .prog_data = &return_prog_data, }; const unsigned *return_data = brw_compile(device->physical->compiler, ¶ms.base); @@ -531,11 +531,11 @@ anv_device_init_rt_shaders(struct anv_device *device) struct brw_compile_bs_params params = { .base = { .nir = null_ahs_nir, + .key = &null_return_key.key.base, + .prog_data = (struct brw_stage_prog_data *)&return_prog_data, .log_data = device, .mem_ctx = tmp_ctx, }, - .key = &null_return_key.key, - .prog_data = &return_prog_data, }; const unsigned *return_data = brw_compile(device->physical->compiler, ¶ms.base);