From cfad85eed07be2789a1dc37916977ec842c085d4 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Mon, 22 Jan 2024 22:08:11 -0800 Subject: [PATCH] intel/blorp: Simplify blorp_compile_fs() interface Take multisample_fbo parameter instead of a brw_wm_key. Reviewed-by: Kenneth Graunke Part-of: --- src/intel/blorp/blorp.c | 21 +++++++++------------ src/intel/blorp/blorp_blit.c | 6 ++---- src/intel/blorp/blorp_clear.c | 13 ++++--------- src/intel/blorp/blorp_priv.h | 3 +-- 4 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/intel/blorp/blorp.c b/src/intel/blorp/blorp.c index 42ab41cf731..37d7d30a951 100644 --- a/src/intel/blorp/blorp.c +++ b/src/intel/blorp/blorp.c @@ -250,13 +250,6 @@ blorp_params_init(struct blorp_params *params) params->num_layers = 1; } -void -brw_blorp_init_wm_prog_key(struct brw_wm_prog_key *wm_key) -{ - memset(wm_key, 0, sizeof(*wm_key)); - wm_key->nr_color_regions = 1; -} - void brw_blorp_init_cs_prog_key(struct brw_cs_prog_key *cs_key) { @@ -266,12 +259,11 @@ brw_blorp_init_cs_prog_key(struct brw_cs_prog_key *cs_key) const unsigned * blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx, struct nir_shader *nir, - struct brw_wm_prog_key *wm_key, + bool multisample_fbo, bool use_repclear, struct brw_wm_prog_data *wm_prog_data) { const struct brw_compiler *compiler = blorp->compiler; - nir->options = compiler->nir_options[MESA_SHADER_FRAGMENT]; memset(wm_prog_data, 0, sizeof(*wm_prog_data)); @@ -284,11 +276,16 @@ blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx, nir_remove_dead_variables(nir, nir_var_shader_in, NULL); nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); + struct brw_wm_prog_key wm_key; + memset(&wm_key, 0, sizeof(wm_key)); + wm_key.multisample_fbo = multisample_fbo ? BRW_ALWAYS : BRW_NEVER; + wm_key.nr_color_regions = 1; + if (blorp->compiler->devinfo->ver < 6) { if (nir->info.fs.uses_discard) - wm_key->iz_lookup |= BRW_WM_IZ_PS_KILL_ALPHATEST_BIT; + wm_key.iz_lookup |= BRW_WM_IZ_PS_KILL_ALPHATEST_BIT; - wm_key->input_slots_valid = nir->info.inputs_read | VARYING_BIT_POS; + wm_key.input_slots_valid = nir->info.inputs_read | VARYING_BIT_POS; } struct brw_compile_fs_params params = { @@ -298,7 +295,7 @@ blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx, .log_data = blorp->driver_ctx, .debug_flag = DEBUG_BLORP, }, - .key = wm_key, + .key = &wm_key, .prog_data = wm_prog_data, .use_rep_send = use_repclear, diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c index 218784cd1bd..d15378aa77e 100644 --- a/src/intel/blorp/blorp_blit.c +++ b/src/intel/blorp/blorp_blit.c @@ -1517,11 +1517,9 @@ blorp_get_blit_kernel_fs(struct blorp_batch *batch, nir->info.name = ralloc_strdup(nir, blorp_shader_type_to_name(key->base.shader_type)); - struct brw_wm_prog_key wm_key; - brw_blorp_init_wm_prog_key(&wm_key); - wm_key.multisample_fbo = key->rt_samples > 1 ? BRW_ALWAYS : BRW_NEVER; + const bool multisample_fbo = key->rt_samples > 1; - program = blorp_compile_fs(blorp, mem_ctx, nir, &wm_key, false, + program = blorp_compile_fs(blorp, mem_ctx, nir, multisample_fbo, false, &prog_data); bool result = diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c index c8ab0892f74..cc69340b1b6 100644 --- a/src/intel/blorp/blorp_clear.c +++ b/src/intel/blorp/blorp_clear.c @@ -90,12 +90,10 @@ blorp_params_get_clear_kernel_fs(struct blorp_batch *batch, frag_color->data.location = FRAG_RESULT_COLOR; nir_store_var(&b, frag_color, color, 0xf); - struct brw_wm_prog_key wm_key; - brw_blorp_init_wm_prog_key(&wm_key); - struct brw_wm_prog_data prog_data; + const bool multisample_fbo = false; const unsigned *program = - blorp_compile_fs(blorp, mem_ctx, b.shader, &wm_key, use_replicated_data, + blorp_compile_fs(blorp, mem_ctx, b.shader, multisample_fbo, use_replicated_data, &prog_data); bool result = @@ -1386,13 +1384,10 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_batch *batch, } nir_store_var(&b, frag_color, clear_color, 0xf); - struct brw_wm_prog_key wm_key; - brw_blorp_init_wm_prog_key(&wm_key); - wm_key.multisample_fbo = BRW_ALWAYS; - struct brw_wm_prog_data prog_data; + const bool multisample_fbo = true; const unsigned *program = - blorp_compile_fs(blorp, mem_ctx, b.shader, &wm_key, false, + blorp_compile_fs(blorp, mem_ctx, b.shader, multisample_fbo, false, &prog_data); bool result = diff --git a/src/intel/blorp/blorp_priv.h b/src/intel/blorp/blorp_priv.h index e7f6c0ead1a..25ff7f201f8 100644 --- a/src/intel/blorp/blorp_priv.h +++ b/src/intel/blorp/blorp_priv.h @@ -415,7 +415,6 @@ struct blorp_blit_prog_key bool blorp_blitter_supports_aux(const struct intel_device_info *devinfo, enum isl_aux_usage aux_usage); -void brw_blorp_init_wm_prog_key(struct brw_wm_prog_key *wm_key); void brw_blorp_init_cs_prog_key(struct brw_cs_prog_key *cs_key); const char *blorp_shader_type_to_name(enum blorp_shader_type type); @@ -424,7 +423,7 @@ const char *blorp_shader_pipeline_to_name(enum blorp_shader_pipeline pipe); const unsigned * blorp_compile_fs(struct blorp_context *blorp, void *mem_ctx, struct nir_shader *nir, - struct brw_wm_prog_key *wm_key, + bool multisample_fbo, bool use_repclear, struct brw_wm_prog_data *wm_prog_data);