From 0cf643db5d47ed0d778eb2d9979b464867c2fc6c Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 14 May 2021 15:17:03 -0400 Subject: [PATCH] zink: remove shader_id now that shaders are per-program, shader_id is no longer useful Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 4 +--- src/gallium/drivers/zink/zink_compiler.h | 1 - src/gallium/drivers/zink/zink_context.c | 4 ++-- src/gallium/drivers/zink/zink_draw.c | 4 ++-- src/gallium/drivers/zink/zink_program.c | 8 ++------ src/gallium/drivers/zink/zink_screen.h | 2 -- src/gallium/drivers/zink/zink_shader_keys.h | 3 --- 7 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 40ca2c62a20..43770bba54b 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -931,7 +931,6 @@ zink_shader_create(struct zink_screen *screen, struct nir_shader *nir, struct zink_shader *ret = CALLOC_STRUCT(zink_shader); bool have_psiz = false; - ret->shader_id = p_atomic_inc_return(&screen->shader_id); ret->programs = _mesa_pointer_set_create(NULL); nir_variable_mode indirect_derefs_modes = nir_var_function_temp; @@ -1065,7 +1064,7 @@ zink_shader_free(struct zink_context *ctx, struct zink_shader *shader) set_foreach(shader->programs, entry) { if (shader->nir->info.stage == MESA_SHADER_COMPUTE) { struct zink_compute_program *comp = (void*)entry->key; - _mesa_hash_table_remove_key(ctx->compute_program_cache, &comp->shader->shader_id); + _mesa_hash_table_remove_key(ctx->compute_program_cache, comp->shader); comp->shader = NULL; bool in_use = comp == ctx->curr_compute; if (in_use) @@ -1123,7 +1122,6 @@ zink_shader_tcs_create(struct zink_context *ctx, struct zink_shader *vs) { unsigned vertices_per_patch = ctx->gfx_pipeline_state.vertices_per_patch; struct zink_shader *ret = CALLOC_STRUCT(zink_shader); - ret->shader_id = 0; //special value for internal shaders ret->programs = _mesa_pointer_set_create(NULL); nir_shader *nir = nir_shader_create(NULL, MESA_SHADER_TESS_CTRL, &zink_screen(ctx->base.screen)->nir_options, NULL); diff --git a/src/gallium/drivers/zink/zink_compiler.h b/src/gallium/drivers/zink/zink_compiler.h index 4f6a4ddfa77..94f4ffe158e 100644 --- a/src/gallium/drivers/zink/zink_compiler.h +++ b/src/gallium/drivers/zink/zink_compiler.h @@ -68,7 +68,6 @@ zink_tgsi_to_nir(struct pipe_screen *screen, const struct tgsi_token *tokens); struct zink_shader { struct util_live_shader base; - unsigned shader_id; struct nir_shader *nir; struct zink_so_info streamout; diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 0076942bb93..decdfba5624 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -3553,8 +3553,8 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags) hash_gfx_program, equals_gfx_program); ctx->compute_program_cache = _mesa_hash_table_create(NULL, - _mesa_hash_uint, - _mesa_key_uint_equal); + _mesa_hash_pointer, + _mesa_key_pointer_equal); ctx->render_pass_cache = _mesa_hash_table_create(NULL, hash_render_pass_state, equals_render_pass_state); diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index bf52d886109..8339922212c 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -167,10 +167,10 @@ update_compute_program(struct zink_context *ctx) if (ctx->dirty_shader_stages & bits) { struct zink_compute_program *comp = NULL; struct hash_entry *entry = _mesa_hash_table_search(ctx->compute_program_cache, - &ctx->compute_stage->shader_id); + ctx->compute_stage); if (!entry) { comp = zink_create_compute_program(ctx, ctx->compute_stage); - entry = _mesa_hash_table_insert(ctx->compute_program_cache, &comp->shader->shader_id, comp); + entry = _mesa_hash_table_insert(ctx->compute_program_cache, comp->shader, comp); } comp = (struct zink_compute_program*)(entry ? entry->data : NULL); if (comp && comp != ctx->curr_compute) { diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 9fd07a4010d..b1a6fcdc84a 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -114,7 +114,6 @@ shader_key_vs_gen(struct zink_context *ctx, struct zink_shader *zs, struct zink_vs_key *vs_key = &key->key.vs; key->size = sizeof(struct zink_vs_key); - vs_key->shader_id = zs->shader_id; vs_key->clip_halfz = ctx->rast_state->base.clip_halfz; switch (zs->nir->info.stage) { case MESA_SHADER_VERTEX: @@ -140,8 +139,6 @@ shader_key_fs_gen(struct zink_context *ctx, struct zink_shader *zs, struct zink_fs_key *fs_key = &key->key.fs; key->size = sizeof(struct zink_fs_key); - fs_key->shader_id = zs->shader_id; - /* if gl_SampleMask[] is written to, we have to ensure that we get a shader with the same sample count: * in GL, rast_samples==1 means ignore gl_SampleMask[] * in VK, gl_SampleMask[] is never ignored @@ -165,7 +162,6 @@ shader_key_tcs_gen(struct zink_context *ctx, struct zink_shader *zs, struct zink_tcs_key *tcs_key = &key->key.tcs; key->size = sizeof(struct zink_tcs_key); - tcs_key->shader_id = zs->shader_id; tcs_key->vertices_per_patch = ctx->gfx_pipeline_state.vertices_per_patch; tcs_key->vs_outputs_written = shaders[PIPE_SHADER_VERTEX]->nir->info.outputs_written; } @@ -548,14 +544,14 @@ zink_create_compute_program(struct zink_context *ctx, struct zink_shader *shader pipe_reference_init(&comp->base.reference, 1); comp->base.is_compute = true; /* TODO: cs shader keys placeholder for now */ - _mesa_hash_table_init(&comp->base.shader_cache[0], comp, _mesa_hash_u32, _mesa_key_u32_equal); + _mesa_hash_table_init(&comp->base.shader_cache[0], comp, _mesa_hash_pointer, _mesa_key_pointer_equal); comp->module = CALLOC_STRUCT(zink_shader_module); assert(comp->module); pipe_reference_init(&comp->module->reference, 1); comp->module->shader = zink_shader_compile(screen, shader, shader->nir, NULL); assert(comp->module->shader); - _mesa_hash_table_insert(&comp->base.shader_cache[0], &shader->shader_id, comp->module); + _mesa_hash_table_insert(&comp->base.shader_cache[0], shader, comp->module); struct zink_shader_module *zm = NULL; zink_shader_module_reference(zink_screen(ctx->base.screen), &zm, comp->module); diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index 470805bbf5d..b8af48f726c 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -92,8 +92,6 @@ struct zink_screen { uint64_t mem_cache_size; unsigned mem_cache_count; - unsigned shader_id; - uint64_t total_video_mem; uint64_t total_mem; diff --git a/src/gallium/drivers/zink/zink_shader_keys.h b/src/gallium/drivers/zink/zink_shader_keys.h index 6ce0a5ff4b7..867a0bff85f 100644 --- a/src/gallium/drivers/zink/zink_shader_keys.h +++ b/src/gallium/drivers/zink/zink_shader_keys.h @@ -27,14 +27,12 @@ # define ZINK_SHADER_KEYS_H struct zink_vs_key { - unsigned shader_id; bool clip_halfz; bool push_drawid; bool last_vertex_stage; }; struct zink_fs_key { - unsigned shader_id; uint8_t coord_replace_bits; bool coord_replace_yinvert; bool samples; @@ -42,7 +40,6 @@ struct zink_fs_key { }; struct zink_tcs_key { - unsigned shader_id; unsigned vertices_per_patch; uint64_t vs_outputs_written; };