intel/blorp: Plumb the stage through blorp upload_shader
Vulkan uses that for its own upload function -- even though for BLORP it doesn't really currently care. Neither Iris and i965 makes use of it at the moment. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4170> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4170>
This commit is contained in:
@@ -956,7 +956,7 @@ bool iris_blorp_lookup_shader(struct blorp_batch *blorp_batch,
|
|||||||
uint32_t key_size,
|
uint32_t key_size,
|
||||||
uint32_t *kernel_out,
|
uint32_t *kernel_out,
|
||||||
void *prog_data_out);
|
void *prog_data_out);
|
||||||
bool iris_blorp_upload_shader(struct blorp_batch *blorp_batch,
|
bool iris_blorp_upload_shader(struct blorp_batch *blorp_batch, uint32_t stage,
|
||||||
const void *key, uint32_t key_size,
|
const void *key, uint32_t key_size,
|
||||||
const void *kernel, uint32_t kernel_size,
|
const void *kernel, uint32_t kernel_size,
|
||||||
const struct brw_stage_prog_data *prog_data,
|
const struct brw_stage_prog_data *prog_data,
|
||||||
|
@@ -221,7 +221,7 @@ iris_blorp_lookup_shader(struct blorp_batch *blorp_batch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
iris_blorp_upload_shader(struct blorp_batch *blorp_batch,
|
iris_blorp_upload_shader(struct blorp_batch *blorp_batch, uint32_t stage,
|
||||||
const void *key, uint32_t key_size,
|
const void *key, uint32_t key_size,
|
||||||
const void *kernel, UNUSED uint32_t kernel_size,
|
const void *kernel, UNUSED uint32_t kernel_size,
|
||||||
const struct brw_stage_prog_data *prog_data_templ,
|
const struct brw_stage_prog_data *prog_data_templ,
|
||||||
|
@@ -292,7 +292,8 @@ blorp_ensure_sf_program(struct blorp_batch *batch,
|
|||||||
&prog_data_tmp, &vue_map, &program_size);
|
&prog_data_tmp, &vue_map, &program_size);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(batch, &key, sizeof(key), program, program_size,
|
blorp->upload_shader(batch, MESA_SHADER_NONE,
|
||||||
|
&key, sizeof(key), program, program_size,
|
||||||
(void *)&prog_data_tmp, sizeof(prog_data_tmp),
|
(void *)&prog_data_tmp, sizeof(prog_data_tmp),
|
||||||
¶ms->sf_prog_kernel, ¶ms->sf_prog_data);
|
¶ms->sf_prog_kernel, ¶ms->sf_prog_data);
|
||||||
|
|
||||||
|
@@ -49,6 +49,7 @@ struct blorp_context {
|
|||||||
const void *key, uint32_t key_size,
|
const void *key, uint32_t key_size,
|
||||||
uint32_t *kernel_out, void *prog_data_out);
|
uint32_t *kernel_out, void *prog_data_out);
|
||||||
bool (*upload_shader)(struct blorp_batch *batch,
|
bool (*upload_shader)(struct blorp_batch *batch,
|
||||||
|
uint32_t stage,
|
||||||
const void *key, uint32_t key_size,
|
const void *key, uint32_t key_size,
|
||||||
const void *kernel, uint32_t kernel_size,
|
const void *kernel, uint32_t kernel_size,
|
||||||
const struct brw_stage_prog_data *prog_data,
|
const struct brw_stage_prog_data *prog_data,
|
||||||
|
@@ -1520,7 +1520,8 @@ brw_blorp_get_blit_kernel(struct blorp_batch *batch,
|
|||||||
&prog_data);
|
&prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(batch, prog_key, sizeof(*prog_key),
|
blorp->upload_shader(batch, MESA_SHADER_FRAGMENT,
|
||||||
|
prog_key, sizeof(*prog_key),
|
||||||
program, prog_data.base.program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
||||||
|
@@ -100,7 +100,8 @@ blorp_params_get_clear_kernel(struct blorp_batch *batch,
|
|||||||
&prog_data);
|
&prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(batch, &blorp_key, sizeof(blorp_key),
|
blorp->upload_shader(batch, MESA_SHADER_FRAGMENT,
|
||||||
|
&blorp_key, sizeof(blorp_key),
|
||||||
program, prog_data.base.program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
||||||
@@ -192,7 +193,8 @@ blorp_params_get_layer_offset_vs(struct blorp_batch *batch,
|
|||||||
blorp_compile_vs(blorp, mem_ctx, b.shader, &vs_prog_data);
|
blorp_compile_vs(blorp, mem_ctx, b.shader, &vs_prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(batch, &blorp_key, sizeof(blorp_key),
|
blorp->upload_shader(batch, MESA_SHADER_VERTEX,
|
||||||
|
&blorp_key, sizeof(blorp_key),
|
||||||
program, vs_prog_data.base.base.program_size,
|
program, vs_prog_data.base.base.program_size,
|
||||||
&vs_prog_data.base.base, sizeof(vs_prog_data),
|
&vs_prog_data.base.base, sizeof(vs_prog_data),
|
||||||
¶ms->vs_prog_kernel, ¶ms->vs_prog_data);
|
¶ms->vs_prog_kernel, ¶ms->vs_prog_data);
|
||||||
@@ -1170,7 +1172,8 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_batch *batch,
|
|||||||
&prog_data);
|
&prog_data);
|
||||||
|
|
||||||
bool result =
|
bool result =
|
||||||
blorp->upload_shader(batch, &blorp_key, sizeof(blorp_key),
|
blorp->upload_shader(batch, MESA_SHADER_FRAGMENT,
|
||||||
|
&blorp_key, sizeof(blorp_key),
|
||||||
program, prog_data.base.program_size,
|
program, prog_data.base.program_size,
|
||||||
&prog_data.base, sizeof(prog_data),
|
&prog_data.base, sizeof(prog_data),
|
||||||
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
¶ms->wm_prog_kernel, ¶ms->wm_prog_data);
|
||||||
|
@@ -51,7 +51,7 @@ lookup_blorp_shader(struct blorp_batch *batch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
upload_blorp_shader(struct blorp_batch *batch,
|
upload_blorp_shader(struct blorp_batch *batch, uint32_t stage,
|
||||||
const void *key, uint32_t key_size,
|
const void *key, uint32_t key_size,
|
||||||
const void *kernel, uint32_t kernel_size,
|
const void *kernel, uint32_t kernel_size,
|
||||||
const struct brw_stage_prog_data *prog_data,
|
const struct brw_stage_prog_data *prog_data,
|
||||||
@@ -69,12 +69,6 @@ upload_blorp_shader(struct blorp_batch *batch,
|
|||||||
.sampler_count = 0,
|
.sampler_count = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The stage in anv_shader_bin is only useful for pipeline shaders, so just pass
|
|
||||||
* a dummy value here so we don't need to change BLORP API.
|
|
||||||
*
|
|
||||||
* TODO: Plumb the stage information to BLORP.
|
|
||||||
*/
|
|
||||||
gl_shader_stage stage = MESA_SHADER_NONE;
|
|
||||||
struct anv_shader_bin *bin =
|
struct anv_shader_bin *bin =
|
||||||
anv_pipeline_cache_upload_kernel(&device->default_pipeline_cache, stage,
|
anv_pipeline_cache_upload_kernel(&device->default_pipeline_cache, stage,
|
||||||
key, key_size, kernel, kernel_size,
|
key, key_size, kernel, kernel_size,
|
||||||
|
@@ -53,7 +53,7 @@ brw_blorp_lookup_shader(struct blorp_batch *batch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
brw_blorp_upload_shader(struct blorp_batch *batch,
|
brw_blorp_upload_shader(struct blorp_batch *batch, uint32_t stage,
|
||||||
const void *key, uint32_t key_size,
|
const void *key, uint32_t key_size,
|
||||||
const void *kernel, uint32_t kernel_size,
|
const void *kernel, uint32_t kernel_size,
|
||||||
const struct brw_stage_prog_data *prog_data,
|
const struct brw_stage_prog_data *prog_data,
|
||||||
|
Reference in New Issue
Block a user