mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
blorp: add blorp string in shader keys
Upon looking at caching the raytracing shader (in particular the trampoline one) I kind of got afraid that some of the keys used for blorp would end up matching other keys. This is because blorp keys are fairly simple. There is no SPIRV module hash included. This change includes a "blorp" string at the beginning of the queue to ensure we don't collide with other keys. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8637>
This commit is contained in:
parent
7479fe6ae0
commit
ab77aeb488
4 changed files with 28 additions and 16 deletions
|
|
@ -267,8 +267,7 @@ blorp_compile_vs(struct blorp_context *blorp, void *mem_ctx,
|
|||
}
|
||||
|
||||
struct blorp_sf_key {
|
||||
enum blorp_shader_type shader_type; /* Must be BLORP_SHADER_TYPE_GFX4_SF */
|
||||
|
||||
struct brw_blorp_base_key base;
|
||||
struct brw_sf_prog_key key;
|
||||
};
|
||||
|
||||
|
|
@ -285,7 +284,7 @@ blorp_ensure_sf_program(struct blorp_batch *batch,
|
|||
return true;
|
||||
|
||||
struct blorp_sf_key key = {
|
||||
.shader_type = BLORP_SHADER_TYPE_GFX4_SF,
|
||||
.base = BRW_BLORP_BASE_KEY_INIT(BLORP_SHADER_TYPE_GFX4_SF),
|
||||
};
|
||||
|
||||
/* Everything gets compacted in vertex setup, so we just need a
|
||||
|
|
|
|||
|
|
@ -1490,7 +1490,8 @@ brw_blorp_get_blit_kernel(struct blorp_batch *batch,
|
|||
struct brw_wm_prog_data prog_data;
|
||||
|
||||
nir_shader *nir = brw_blorp_build_nir_shader(blorp, mem_ctx, prog_key);
|
||||
nir->info.name = ralloc_strdup(nir, blorp_shader_type_to_name(prog_key->shader_type));
|
||||
nir->info.name =
|
||||
ralloc_strdup(nir, blorp_shader_type_to_name(prog_key->base.shader_type));
|
||||
|
||||
struct brw_wm_prog_key wm_key;
|
||||
brw_blorp_init_wm_prog_key(&wm_key);
|
||||
|
|
@ -2364,7 +2365,7 @@ blorp_blit(struct blorp_batch *batch,
|
|||
isl_format_get_layout(params.src.view.format);
|
||||
|
||||
struct brw_blorp_blit_prog_key wm_prog_key = {
|
||||
.shader_type = BLORP_SHADER_TYPE_BLIT,
|
||||
.base = BRW_BLORP_BASE_KEY_INIT(BLORP_SHADER_TYPE_BLIT),
|
||||
.filter = filter,
|
||||
.sint32_to_uint = src_fmtl->channels.r.bits == 32 &&
|
||||
isl_format_has_sint_channel(params.src.view.format) &&
|
||||
|
|
@ -2651,7 +2652,7 @@ blorp_copy(struct blorp_batch *batch,
|
|||
dst_layer, ISL_FORMAT_UNSUPPORTED, true);
|
||||
|
||||
struct brw_blorp_blit_prog_key wm_prog_key = {
|
||||
.shader_type = BLORP_SHADER_TYPE_COPY,
|
||||
.base = BRW_BLORP_BASE_KEY_INIT(BLORP_SHADER_TYPE_COPY),
|
||||
.filter = BLORP_FILTER_NONE,
|
||||
.need_src_offset = src_surf->tile_x_sa || src_surf->tile_y_sa,
|
||||
.need_dst_offset = dst_surf->tile_x_sa || dst_surf->tile_y_sa,
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
#pragma pack(push, 1)
|
||||
struct brw_blorp_const_color_prog_key
|
||||
{
|
||||
enum blorp_shader_type shader_type; /* Must be BLORP_SHADER_TYPE_CLEAR */
|
||||
struct brw_blorp_base_key base;
|
||||
bool use_simd16_replicated_data;
|
||||
bool clear_rgb_as_red;
|
||||
};
|
||||
|
|
@ -52,7 +52,7 @@ blorp_params_get_clear_kernel(struct blorp_batch *batch,
|
|||
struct blorp_context *blorp = batch->blorp;
|
||||
|
||||
const struct brw_blorp_const_color_prog_key blorp_key = {
|
||||
.shader_type = BLORP_SHADER_TYPE_CLEAR,
|
||||
.base = BRW_BLORP_BASE_KEY_INIT(BLORP_SHADER_TYPE_CLEAR),
|
||||
.use_simd16_replicated_data = use_replicated_data,
|
||||
.clear_rgb_as_red = clear_rgb_as_red,
|
||||
};
|
||||
|
|
@ -65,7 +65,7 @@ blorp_params_get_clear_kernel(struct blorp_batch *batch,
|
|||
|
||||
nir_builder b;
|
||||
blorp_nir_init_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT,
|
||||
blorp_shader_type_to_name(blorp_key.shader_type));
|
||||
blorp_shader_type_to_name(blorp_key.base.shader_type));
|
||||
|
||||
nir_variable *v_color =
|
||||
BLORP_CREATE_NIR_INPUT(b.shader, clear_color, glsl_vec4_type());
|
||||
|
|
@ -113,7 +113,7 @@ blorp_params_get_clear_kernel(struct blorp_batch *batch,
|
|||
|
||||
#pragma pack(push, 1)
|
||||
struct layer_offset_vs_key {
|
||||
enum blorp_shader_type shader_type;
|
||||
struct brw_blorp_base_key base;
|
||||
unsigned num_inputs;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
|
@ -131,7 +131,7 @@ blorp_params_get_layer_offset_vs(struct blorp_batch *batch,
|
|||
{
|
||||
struct blorp_context *blorp = batch->blorp;
|
||||
struct layer_offset_vs_key blorp_key = {
|
||||
.shader_type = BLORP_SHADER_TYPE_LAYER_OFFSET_VS,
|
||||
.base = BRW_BLORP_BASE_KEY_INIT(BLORP_SHADER_TYPE_LAYER_OFFSET_VS),
|
||||
};
|
||||
|
||||
if (params->wm_prog_data)
|
||||
|
|
@ -145,7 +145,7 @@ blorp_params_get_layer_offset_vs(struct blorp_batch *batch,
|
|||
|
||||
nir_builder b;
|
||||
blorp_nir_init_shader(&b, mem_ctx, MESA_SHADER_VERTEX,
|
||||
blorp_shader_type_to_name(blorp_key.shader_type));
|
||||
blorp_shader_type_to_name(blorp_key.base.shader_type));
|
||||
|
||||
const struct glsl_type *uvec4_type = glsl_vector_type(GLSL_TYPE_UINT, 4);
|
||||
|
||||
|
|
@ -1145,7 +1145,7 @@ blorp_nir_bit(nir_builder *b, nir_ssa_def *src, unsigned bit)
|
|||
#pragma pack(push, 1)
|
||||
struct blorp_mcs_partial_resolve_key
|
||||
{
|
||||
enum blorp_shader_type shader_type;
|
||||
struct brw_blorp_base_key base;
|
||||
bool indirect_clear_color;
|
||||
bool int_format;
|
||||
uint32_t num_samples;
|
||||
|
|
@ -1158,7 +1158,7 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_batch *batch,
|
|||
{
|
||||
struct blorp_context *blorp = batch->blorp;
|
||||
const struct blorp_mcs_partial_resolve_key blorp_key = {
|
||||
.shader_type = BLORP_SHADER_TYPE_MCS_PARTIAL_RESOLVE,
|
||||
.base = BRW_BLORP_BASE_KEY_INIT(BLORP_SHADER_TYPE_MCS_PARTIAL_RESOLVE),
|
||||
.indirect_clear_color = params->dst.clear_color_addr.buffer != NULL,
|
||||
.int_format = isl_format_has_int_channel(params->dst.view.format),
|
||||
.num_samples = params->num_samples,
|
||||
|
|
@ -1172,7 +1172,7 @@ blorp_params_get_mcs_partial_resolve_kernel(struct blorp_batch *batch,
|
|||
|
||||
nir_builder b;
|
||||
blorp_nir_init_shader(&b, mem_ctx, MESA_SHADER_FRAGMENT,
|
||||
blorp_shader_type_to_name(blorp_key.shader_type));
|
||||
blorp_shader_type_to_name(blorp_key.base.shader_type));
|
||||
|
||||
nir_variable *v_color =
|
||||
BLORP_CREATE_NIR_INPUT(b.shader, clear_color, glsl_vec4_type());
|
||||
|
|
|
|||
|
|
@ -233,9 +233,21 @@ enum blorp_shader_type {
|
|||
BLORP_SHADER_TYPE_GFX4_SF,
|
||||
};
|
||||
|
||||
struct brw_blorp_base_key
|
||||
{
|
||||
char name[8];
|
||||
enum blorp_shader_type shader_type;
|
||||
};
|
||||
|
||||
#define BRW_BLORP_BASE_KEY_INIT(_type) \
|
||||
(struct brw_blorp_base_key) { \
|
||||
.name = "blorp", \
|
||||
.shader_type = _type, \
|
||||
}
|
||||
|
||||
struct brw_blorp_blit_prog_key
|
||||
{
|
||||
enum blorp_shader_type shader_type; /* Must be BLORP_SHADER_TYPE_BLIT */
|
||||
struct brw_blorp_base_key base;
|
||||
|
||||
/* Number of samples per pixel that have been configured in the surface
|
||||
* state for texturing from.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue