diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c index de784e066e5..b9a6a5c3022 100644 --- a/src/intel/blorp/blorp_clear.c +++ b/src/intel/blorp/blorp_clear.c @@ -214,8 +214,9 @@ blorp_params_get_layer_offset_vs(struct blorp_batch *batch, .base = BLORP_BASE_KEY_INIT(BLORP_SHADER_TYPE_LAYER_OFFSET_VS), }; - if (params->wm_prog_data) - blorp_key.num_inputs = params->wm_prog_data->num_varying_inputs; + struct brw_wm_prog_data *wm_prog_data = params->wm_prog_data; + if (wm_prog_data) + blorp_key.num_inputs = wm_prog_data->num_varying_inputs; if (blorp->lookup_shader(batch, &blorp_key, sizeof(blorp_key), ¶ms->vs_prog_kernel, ¶ms->vs_prog_data)) diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h index f4816e292c9..6abdee1b98a 100644 --- a/src/intel/blorp/blorp_genX_exec.h +++ b/src/intel/blorp/blorp_genX_exec.h @@ -246,15 +246,17 @@ emit_urb_config(struct blorp_batch *batch, * * where 'n' stands for number of varying inputs expressed as vec4s. */ - const unsigned num_varyings = - params->wm_prog_data ? params->wm_prog_data->num_varying_inputs : 0; - const unsigned total_needed = 16 + 16 + num_varyings * 16; + struct brw_wm_prog_data *wm_prog_data = params->wm_prog_data; + const unsigned num_varyings = + wm_prog_data ? wm_prog_data->num_varying_inputs : 0; + const unsigned total_needed = 16 + 16 + num_varyings * 16; /* The URB size is expressed in units of 64 bytes (512 bits) */ const unsigned vs_entry_size = DIV_ROUND_UP(total_needed, 64); + ASSERTED struct brw_sf_prog_data *sf_prog_data = params->sf_prog_data; ASSERTED const unsigned sf_entry_size = - params->sf_prog_data ? params->sf_prog_data->urb_entry_size : 0; + sf_prog_data ? sf_prog_data->urb_entry_size : 0; #if GFX_VER >= 7 assert(sf_entry_size == 0); @@ -347,8 +349,9 @@ blorp_emit_input_varying_data(struct blorp_batch *batch, const unsigned vec4_size_in_bytes = 4 * sizeof(float); const unsigned max_num_varyings = DIV_ROUND_UP(sizeof(params->wm_inputs), vec4_size_in_bytes); + struct brw_wm_prog_data *wm_prog_data = params->wm_prog_data; const unsigned num_varyings = - params->wm_prog_data ? params->wm_prog_data->num_varying_inputs : 0; + wm_prog_data ? wm_prog_data->num_varying_inputs : 0; *size = 16 + num_varyings * vec4_size_in_bytes; @@ -369,7 +372,7 @@ blorp_emit_input_varying_data(struct blorp_batch *batch, for (unsigned i = 0; i < max_num_varyings; i++) { const gl_varying_slot attr = VARYING_SLOT_VAR0 + i; - const int input_index = params->wm_prog_data->urb_setup[attr]; + const int input_index = wm_prog_data->urb_setup[attr]; if (input_index < 0) continue; @@ -474,8 +477,9 @@ static void blorp_emit_vertex_elements(struct blorp_batch *batch, const struct blorp_params *params) { + struct brw_wm_prog_data *wm_prog_data = params->wm_prog_data; const unsigned num_varyings = - params->wm_prog_data ? params->wm_prog_data->num_varying_inputs : 0; + wm_prog_data ? wm_prog_data->num_varying_inputs : 0; bool need_ndc = batch->blorp->compiler->devinfo->ver <= 5; const unsigned num_elements = 2 + need_ndc + num_varyings; diff --git a/src/intel/blorp/blorp_priv.h b/src/intel/blorp/blorp_priv.h index 9e31882090c..be51ba0828d 100644 --- a/src/intel/blorp/blorp_priv.h +++ b/src/intel/blorp/blorp_priv.h @@ -231,13 +231,13 @@ struct blorp_params unsigned num_draw_buffers; unsigned num_layers; uint32_t vs_prog_kernel; - struct brw_vs_prog_data *vs_prog_data; + void *vs_prog_data; uint32_t sf_prog_kernel; - struct brw_sf_prog_data *sf_prog_data; + void *sf_prog_data; uint32_t wm_prog_kernel; - struct brw_wm_prog_data *wm_prog_data; + void *wm_prog_data; uint32_t cs_prog_kernel; - struct brw_cs_prog_data *cs_prog_data; + void *cs_prog_data; bool use_pre_baked_binding_table; uint32_t pre_baked_binding_table_offset;