intel/blorp: Avoid brw types in blorp_priv.h

Abuse void* here so there's one less file dependent on specific brw
types.  We can revisit if there's a need later, if we ever end up with
a common type for prog_data.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27581>
This commit is contained in:
Caio Oliveira 2024-01-23 15:12:48 -08:00 committed by Marge Bot
parent b28cf9123b
commit f4df4be7e7
3 changed files with 18 additions and 13 deletions

View file

@ -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),
&params->vs_prog_kernel, &params->vs_prog_data))

View file

@ -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;

View file

@ -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;