• Home
  • Raw
  • Download

Lines Matching full:prog

109                           struct zink_shader *zs, struct zink_gfx_program *prog,  in gather_shader_module_info()  argument
119 …if (zs->can_inline && (screen->is_cpu || prog->inlined_variant_count[stage] < ZINK_MAX_INLINED_VAR… in gather_shader_module_info()
130 struct zink_shader *zs, struct zink_gfx_program *prog, in create_shader_module_for_stage() argument
152 … zm->obj = zink_shader_tcs_compile(screen, zs, patch_vertices, prog->base.uses_shobj, &prog->base); in create_shader_module_for_stage()
154 …mpile(screen, prog->base.uses_shobj, zs, zink_shader_blob_deserialize(screen, &prog->blobs[stage])… in create_shader_module_for_stage()
160 zm->shobj = prog->base.uses_shobj; in create_shader_module_for_stage()
185 … !shadow_needs_shader_swizzle && !inline_size && !util_dynarray_contains(&prog->shader_cache[stage… in create_shader_module_for_stage()
187 prog->inlined_variant_count[stage]++; in create_shader_module_for_stage()
188 …util_dynarray_append(&prog->shader_cache[stage][has_nonseamless ? 0 : !!nonseamless_size][!!inline… in create_shader_module_for_stage()
194 struct zink_shader *zs, struct zink_gfx_program *prog, in get_shader_module_for_stage() argument
207 …struct util_dynarray *shader_cache = &prog->shader_cache[stage][!has_nonseamless ? !!nonseamless_s… in get_shader_module_for_stage()
240 struct zink_shader *zs, struct zink_gfx_program *prog, in create_shader_module_for_stage_optimal() argument
248 if (zs == prog->last_vertex_stage) { in create_shader_module_for_stage_optimal()
270 … zm->obj = zink_shader_tcs_compile(screen, zs, patch_vertices, prog->base.uses_shobj, &prog->base); in create_shader_module_for_stage_optimal()
272 …zm->obj = zink_shader_compile(screen, prog->base.uses_shobj, zs, zink_shader_blob_deserialize(scre… in create_shader_module_for_stage_optimal()
273 …ink_shader_key*)key, shadow_needs_shader_swizzle ? &ctx->di.zs_swizzle[stage] : NULL, &prog->base); in create_shader_module_for_stage_optimal()
279 zm->shobj = prog->base.uses_shobj; in create_shader_module_for_stage_optimal()
290 zm->default_variant = !util_dynarray_contains(&prog->shader_cache[stage][0][0], void*); in create_shader_module_for_stage_optimal()
291 util_dynarray_append(&prog->shader_cache[stage][0][0], void*, zm); in create_shader_module_for_stage_optimal()
297 struct zink_shader *zs, struct zink_gfx_program *prog, in get_shader_module_for_stage_optimal() argument
306 if (zs == prog->last_vertex_stage) { in get_shader_module_for_stage_optimal()
316 struct util_dynarray *shader_cache = &prog->shader_cache[stage][0][0]; in get_shader_module_for_stage_optimal()
368 struct zink_gfx_program *prog, uint32_t mask, in update_gfx_shader_modules() argument
375 assert(prog->objs[MESA_SHADER_VERTEX].mod); in update_gfx_shader_modules()
376 uint32_t variant_hash = prog->last_variant_hash; in update_gfx_shader_modules()
377 prog->has_edgeflags = prog->shaders[MESA_SHADER_VERTEX]->has_edgeflags; in update_gfx_shader_modules()
382 assert(prog->shaders[i]); in update_gfx_shader_modules()
385 …gather_shader_module_info(ctx, screen, prog->shaders[i], prog, state, has_inline, has_nonseamless,… in update_gfx_shader_modules()
386 …zink_shader_module *zm = get_shader_module_for_stage(ctx, screen, prog->shaders[i], prog, i, state, in update_gfx_shader_modules()
389 zm = create_shader_module_for_stage(ctx, screen, prog->shaders[i], prog, i, state, in update_gfx_shader_modules()
392 if (prog->objs[i].mod == zm->obj.mod) in update_gfx_shader_modules()
394 prog->optimal_keys &= !prog->shaders[i]->non_fs.is_generated; in update_gfx_shader_modules()
395 variant_hash ^= prog->module_hash[i]; in update_gfx_shader_modules()
398 prog->objs[i] = zm->obj; in update_gfx_shader_modules()
399 prog->objects[i] = zm->obj.obj; in update_gfx_shader_modules()
400 prog->module_hash[i] = zm->hash; in update_gfx_shader_modules()
403 prog->inline_variants |= BITFIELD_BIT(i); in update_gfx_shader_modules()
405 prog->inline_variants &= ~BITFIELD_BIT(i); in update_gfx_shader_modules()
407 variant_hash ^= prog->module_hash[i]; in update_gfx_shader_modules()
412 prog->last_variant_hash = prog->default_variant_hash; in update_gfx_shader_modules()
414 prog->last_variant_hash = variant_hash; in update_gfx_shader_modules()
421 …t zink_context *ctx, struct zink_screen *screen, struct zink_gfx_program *prog, struct zink_gfx_pi… in generate_gfx_program_modules() argument
423 assert(!prog->objs[MESA_SHADER_VERTEX].mod); in generate_gfx_program_modules()
427 if (!(prog->stages_present & BITFIELD_BIT(i))) in generate_gfx_program_modules()
430 assert(prog->shaders[i]); in generate_gfx_program_modules()
433 gather_shader_module_info(ctx, screen, prog->shaders[i], prog, state, in generate_gfx_program_modules()
436 …k_shader_module *zm = create_shader_module_for_stage(ctx, screen, prog->shaders[i], prog, i, state, in generate_gfx_program_modules()
440 prog->objs[i] = zm->obj; in generate_gfx_program_modules()
441 prog->objects[i] = zm->obj.obj; in generate_gfx_program_modules()
442 prog->module_hash[i] = zm->hash; in generate_gfx_program_modules()
444 prog->inline_variants |= BITFIELD_BIT(i); in generate_gfx_program_modules()
446 variant_hash ^= prog->module_hash[i]; in generate_gfx_program_modules()
451 prog->last_variant_hash = variant_hash; in generate_gfx_program_modules()
453 prog->default_variant_hash = prog->last_variant_hash; in generate_gfx_program_modules()
457 …t zink_context *ctx, struct zink_screen *screen, struct zink_gfx_program *prog, struct zink_gfx_pi… in generate_gfx_program_modules_optimal() argument
459 assert(!prog->objs[MESA_SHADER_VERTEX].mod); in generate_gfx_program_modules_optimal()
461 if (!(prog->stages_present & BITFIELD_BIT(i))) in generate_gfx_program_modules_optimal()
464 assert(prog->shaders[i]); in generate_gfx_program_modules_optimal()
466 …module *zm = create_shader_module_for_stage_optimal(ctx, screen, prog->shaders[i], prog, i, state); in generate_gfx_program_modules_optimal()
467 prog->objs[i] = zm->obj; in generate_gfx_program_modules_optimal()
468 prog->objects[i] = zm->obj.obj; in generate_gfx_program_modules_optimal()
472 prog->last_variant_hash = state->optimal_key; in generate_gfx_program_modules_optimal()
574 update_gfx_program_nonseamless(struct zink_context *ctx, struct zink_gfx_program *prog, bool has_no… in update_gfx_program_nonseamless() argument
577 if (screen->driconf.inline_uniforms || prog->needs_inlining) in update_gfx_program_nonseamless()
578 update_gfx_shader_modules(ctx, screen, prog, in update_gfx_program_nonseamless()
579 … ctx->dirty_gfx_stages & prog->stages_present, &ctx->gfx_pipeline_state, in update_gfx_program_nonseamless()
582 update_gfx_shader_modules(ctx, screen, prog, in update_gfx_program_nonseamless()
583 … ctx->dirty_gfx_stages & prog->stages_present, &ctx->gfx_pipeline_state, in update_gfx_program_nonseamless()
588 update_gfx_program(struct zink_context *ctx, struct zink_gfx_program *prog) in update_gfx_program() argument
592 update_gfx_program_nonseamless(ctx, prog, true); in update_gfx_program()
594 update_gfx_program_nonseamless(ctx, prog, false); in update_gfx_program()
609 struct zink_gfx_program *prog = NULL; in zink_gfx_program_update() local
615 /* this must be done before prog is updated */ in zink_gfx_program_update()
619 prog = (struct zink_gfx_program*)entry->data; in zink_gfx_program_update()
621 if (prog->stages_present & ~ctx->dirty_gfx_stages & BITFIELD_BIT(i)) in zink_gfx_program_update()
622 ctx->gfx_pipeline_state.modules[i] = prog->objs[i].mod; in zink_gfx_program_update()
625 ctx->dirty_gfx_stages |= prog->stages_present; in zink_gfx_program_update()
626 update_gfx_program(ctx, prog); in zink_gfx_program_update()
629prog = zink_create_gfx_program(ctx, ctx->gfx_stages, ctx->gfx_pipeline_state.dyn_state2.vertices_p… in zink_gfx_program_update()
630 zink_screen_get_pipeline_cache(zink_screen(ctx->base.screen), &prog->base, false); in zink_gfx_program_update()
631 _mesa_hash_table_insert_pre_hashed(ht, hash, prog->shaders, prog); in zink_gfx_program_update()
632 prog->base.removed = false; in zink_gfx_program_update()
633 … generate_gfx_program_modules(ctx, zink_screen(ctx->base.screen), prog, &ctx->gfx_pipeline_state); in zink_gfx_program_update()
636 if (prog && prog != ctx->curr_program) in zink_gfx_program_update()
637 zink_batch_reference_program(&ctx->batch, &prog->base); in zink_gfx_program_update()
638 ctx->curr_program = prog; in zink_gfx_program_update()
652 update_gfx_shader_module_optimal(struct zink_context *ctx, struct zink_gfx_program *prog, gl_shader… in update_gfx_shader_module_optimal() argument
656 util_queue_fence_wait(&prog->base.cache_fence); in update_gfx_shader_module_optimal()
657 …_module *zm = get_shader_module_for_stage_optimal(ctx, screen, prog->shaders[pstage], prog, pstage… in update_gfx_shader_module_optimal()
659 …zm = create_shader_module_for_stage_optimal(ctx, screen, prog->shaders[pstage], prog, pstage, &ctx… in update_gfx_shader_module_optimal()
663 bool changed = prog->objs[pstage].mod != zm->obj.mod; in update_gfx_shader_module_optimal()
664 prog->objs[pstage] = zm->obj; in update_gfx_shader_module_optimal()
665 prog->objects[pstage] = zm->obj.obj; in update_gfx_shader_module_optimal()
670 update_gfx_program_optimal(struct zink_context *ctx, struct zink_gfx_program *prog) in update_gfx_program_optimal() argument
672 …const union zink_shader_key_optimal *optimal_key = (union zink_shader_key_optimal*)&prog->last_var… in update_gfx_program_optimal()
674 assert(!prog->is_separable); in update_gfx_program_optimal()
675 … bool changed = update_gfx_shader_module_optimal(ctx, prog, ctx->last_vertex_stage->info.stage); in update_gfx_program_optimal()
682 assert(!prog->is_separable); in update_gfx_program_optimal()
683 bool changed = update_gfx_shader_module_optimal(ctx, prog, MESA_SHADER_FRAGMENT); in update_gfx_program_optimal()
686 struct zink_shader_module **pzm = prog->shader_cache[MESA_SHADER_FRAGMENT][0][0].data; in update_gfx_program_optimal()
690 …if (prog->shaders[MESA_SHADER_TESS_CTRL] && prog->shaders[MESA_SHADER_TESS_CTRL]->non_fs.is_genera… in update_gfx_program_optimal()
692 assert(!prog->is_separable); in update_gfx_program_optimal()
693 bool changed = update_gfx_shader_module_optimal(ctx, prog, MESA_SHADER_TESS_CTRL); in update_gfx_program_optimal()
696 prog->last_variant_hash = ctx->gfx_pipeline_state.optimal_key; in update_gfx_program_optimal()
700 …separable_prog(struct zink_screen *screen, struct hash_entry *entry, struct zink_gfx_program *prog) in replace_separable_prog() argument
702 struct zink_gfx_program *real = prog->full_prog; in replace_separable_prog()
706 zink_gfx_program_reference(screen, &prog->full_prog, NULL); in replace_separable_prog()
707 prog->base.removed = true; in replace_separable_prog()
716 struct zink_gfx_program *prog = NULL; in zink_gfx_program_update_optimal() local
726 prog = (struct zink_gfx_program*)entry->data; in zink_gfx_program_update_optimal()
727 if (prog->is_separable && !(zink_debug & ZINK_DEBUG_NOOPT)) { in zink_gfx_program_update_optimal()
730 util_queue_fence_wait(&prog->base.cache_fence); in zink_gfx_program_update_optimal()
732 if (util_queue_fence_is_signalled(&prog->base.cache_fence)) { in zink_gfx_program_update_optimal()
733 prog = replace_separable_prog(screen, entry, prog); in zink_gfx_program_update_optimal()
736 update_gfx_program_optimal(ctx, prog); in zink_gfx_program_update_optimal()
739prog = create_gfx_program_separable(ctx, ctx->gfx_stages, ctx->gfx_pipeline_state.dyn_state2.verti… in zink_gfx_program_update_optimal()
740 prog->base.removed = false; in zink_gfx_program_update_optimal()
741 _mesa_hash_table_insert_pre_hashed(ht, hash, prog->shaders, prog); in zink_gfx_program_update_optimal()
742 if (!prog->is_separable) { in zink_gfx_program_update_optimal()
743 zink_screen_get_pipeline_cache(screen, &prog->base, false); in zink_gfx_program_update_optimal()
745 generate_gfx_program_modules_optimal(ctx, screen, prog, &ctx->gfx_pipeline_state); in zink_gfx_program_update_optimal()
749 if (prog && prog != ctx->curr_program) in zink_gfx_program_update_optimal()
750 zink_batch_reference_program(&ctx->batch, &prog->base); in zink_gfx_program_update_optimal()
751 ctx->curr_program = prog; in zink_gfx_program_update_optimal()
758 struct zink_gfx_program *prog = ctx->curr_program; in zink_gfx_program_update_optimal() local
760 util_queue_fence_wait(&prog->base.cache_fence); in zink_gfx_program_update_optimal()
767 ctx->curr_program = replace_separable_prog(screen, entry, prog); in zink_gfx_program_update_optimal()
787 …pipeline = zink_create_gfx_pipeline_combined(screen, pc_entry->prog, pc_entry->gpl.ikey->pipeline,… in optimized_compile_job()
789 …pipeline = zink_create_gfx_pipeline(screen, pc_entry->prog, pc_entry->prog->objs, &pc_entry->state… in optimized_compile_job()
807 …pc_entry->pipeline = zink_create_gfx_pipeline(screen, pc_entry->prog, objs, &pc_entry->state, NULL… in optimized_shobj_compile_job()
818 if (pc_entry->prog->base.uses_shobj) in zink_gfx_program_compile_queue()
824 … pc_entry->prog->base.uses_shobj ? optimized_shobj_compile_job : optimized_compile_job, NULL, 0); in zink_gfx_program_compile_queue()
1005 create_lib_cache(struct zink_gfx_program *prog, bool generated_tcs) in create_lib_cache() argument
1008 libs->stages_present = prog->stages_present; in create_lib_cache()
1020 find_or_create_lib_cache(struct zink_screen *screen, struct zink_gfx_program *prog) in find_or_create_lib_cache() argument
1022 unsigned stages_present = prog->stages_present; in find_or_create_lib_cache()
1023 …bool generated_tcs = prog->shaders[MESA_SHADER_TESS_CTRL] && prog->shaders[MESA_SHADER_TESS_CTRL]-… in find_or_create_lib_cache()
1028 const uint32_t hash = prog->gfx_hash; in find_or_create_lib_cache()
1032 struct set_entry *entry = _mesa_set_search_or_add_pre_hashed(ht, hash, prog->shaders, &found); in find_or_create_lib_cache()
1037 libs = create_lib_cache(prog, generated_tcs); in find_or_create_lib_cache()
1038 memcpy(libs->shaders, prog->shaders, sizeof(prog->shaders)); in find_or_create_lib_cache()
1042 if (prog->shaders[i] && (!generated_tcs || i != MESA_SHADER_TESS_CTRL)) { in find_or_create_lib_cache()
1043 simple_mtx_lock(&prog->shaders[i]->lock); in find_or_create_lib_cache()
1044 … util_dynarray_append(&prog->shaders[i]->pipeline_libs, struct zink_gfx_lib_cache*, libs); in find_or_create_lib_cache()
1045 simple_mtx_unlock(&prog->shaders[i]->lock); in find_or_create_lib_cache()
1062 struct zink_gfx_program *prog = create_program(ctx, false); in zink_create_gfx_program() local
1063 if (!prog) in zink_create_gfx_program()
1066 prog->ctx = ctx; in zink_create_gfx_program()
1067 prog->gfx_hash = gfx_hash; in zink_create_gfx_program()
1068 prog->base.removed = true; in zink_create_gfx_program()
1069 prog->optimal_keys = screen->optimal_keys; in zink_create_gfx_program()
1073 prog->has_edgeflags = prog->shaders[MESA_SHADER_VERTEX] && in zink_create_gfx_program()
1074 prog->shaders[MESA_SHADER_VERTEX]->has_edgeflags; in zink_create_gfx_program()
1076 util_dynarray_init(&prog->shader_cache[i][0][0], prog); in zink_create_gfx_program()
1077 util_dynarray_init(&prog->shader_cache[i][0][1], prog); in zink_create_gfx_program()
1078 util_dynarray_init(&prog->shader_cache[i][1][0], prog); in zink_create_gfx_program()
1079 util_dynarray_init(&prog->shader_cache[i][1][1], prog); in zink_create_gfx_program()
1081 prog->shaders[i] = stages[i]; in zink_create_gfx_program()
1082 prog->stages_present |= BITFIELD_BIT(i); in zink_create_gfx_program()
1084 prog->optimal_keys &= !prog->shaders[i]->non_fs.is_generated; in zink_create_gfx_program()
1085 prog->needs_inlining |= prog->shaders[i]->needs_inlining; in zink_create_gfx_program()
1092 prog->shaders[MESA_SHADER_TESS_EVAL]->non_fs.generated_tcs = in zink_create_gfx_program()
1093 prog->shaders[MESA_SHADER_TESS_CTRL] = in zink_create_gfx_program()
1095 prog->stages_present |= BITFIELD_BIT(MESA_SHADER_TESS_CTRL); in zink_create_gfx_program()
1097 prog->stages_remaining = prog->stages_present; in zink_create_gfx_program()
1102 zink_shader_serialize_blob(nir[i], &prog->blobs[i]); in zink_create_gfx_program()
1108 prog->last_vertex_stage = stages[MESA_SHADER_GEOMETRY]; in zink_create_gfx_program()
1110 prog->last_vertex_stage = stages[MESA_SHADER_TESS_EVAL]; in zink_create_gfx_program()
1112 prog->last_vertex_stage = stages[MESA_SHADER_VERTEX]; in zink_create_gfx_program()
1114 for (int r = 0; r < ARRAY_SIZE(prog->pipelines); ++r) { in zink_create_gfx_program()
1115 for (int i = 0; i < ARRAY_SIZE(prog->pipelines[0]); ++i) { in zink_create_gfx_program()
1116 …_mesa_hash_table_init(&prog->pipelines[r][i], prog, NULL, zink_get_gfx_pipeline_eq_func(screen, pr… in zink_create_gfx_program()
1119 i == (prog->last_vertex_stage->info.stage == MESA_SHADER_TESS_EVAL ? 4 : 3)) in zink_create_gfx_program()
1125 prog->libs = find_or_create_lib_cache(screen, prog); in zink_create_gfx_program()
1126 if (prog->libs) in zink_create_gfx_program()
1127 p_atomic_inc(&prog->libs->refcount); in zink_create_gfx_program()
1132 if (prog->shaders[i]) { in zink_create_gfx_program()
1133 simple_mtx_lock(&prog->shaders[i]->lock); in zink_create_gfx_program()
1134 _mesa_set_add(prog->shaders[i]->programs, prog); in zink_create_gfx_program()
1135 simple_mtx_unlock(&prog->shaders[i]->lock); in zink_create_gfx_program()
1136 zink_gfx_program_reference(screen, NULL, prog); in zink_create_gfx_program()
1137 _mesa_sha1_update(&sctx, prog->shaders[i]->base.sha1, sizeof(prog->shaders[i]->base.sha1)); in zink_create_gfx_program()
1140 _mesa_sha1_final(&sctx, prog->base.sha1); in zink_create_gfx_program()
1141 p_atomic_dec(&prog->base.reference.count); in zink_create_gfx_program()
1143 if (!zink_descriptor_program_init(ctx, &prog->base)) in zink_create_gfx_program()
1146 return prog; in zink_create_gfx_program()
1149 if (prog) in zink_create_gfx_program()
1150 zink_destroy_gfx_program(screen, prog); in zink_create_gfx_program()
1160 struct zink_gfx_program *prog = data; in create_linked_separable_job() local
1161 prog->full_prog = zink_create_gfx_program(prog->ctx, prog->shaders, 0, prog->gfx_hash); in create_linked_separable_job()
1163 zink_gfx_program_reference(zink_screen(prog->ctx->base.screen), NULL, prog->full_prog); in create_linked_separable_job()
1164 precompile_job(prog->full_prog, gdata, thread_index); in create_linked_separable_job()
1189 struct zink_gfx_program *prog = create_program(ctx, false); in create_gfx_program_separable() local
1190 if (!prog) in create_gfx_program_separable()
1193 prog->ctx = ctx; in create_gfx_program_separable()
1194 prog->is_separable = true; in create_gfx_program_separable()
1195 prog->gfx_hash = ctx->gfx_hash; in create_gfx_program_separable()
1196 prog->base.uses_shobj = screen->info.have_EXT_shader_object; in create_gfx_program_separable()
1198 prog->stages_remaining = prog->stages_present = ctx->shader_stages; in create_gfx_program_separable()
1199 memcpy(prog->shaders, stages, sizeof(prog->shaders)); in create_gfx_program_separable()
1200 prog->last_vertex_stage = ctx->last_vertex_stage; in create_gfx_program_separable()
1203 prog->shaders[MESA_SHADER_TESS_CTRL] = stages[MESA_SHADER_TESS_EVAL]->non_fs.generated_tcs; in create_gfx_program_separable()
1204 prog->stages_present |= BITFIELD_BIT(MESA_SHADER_TESS_CTRL); in create_gfx_program_separable()
1208 prog->libs = create_lib_cache(prog, false); in create_gfx_program_separable()
1210 p_atomic_set(&prog->libs->refcount, 1); in create_gfx_program_separable()
1215 if (prog->shaders[i]) { in create_gfx_program_separable()
1216 simple_mtx_lock(&prog->shaders[i]->lock); in create_gfx_program_separable()
1217 _mesa_set_add(prog->shaders[i]->programs, prog); in create_gfx_program_separable()
1218 simple_mtx_unlock(&prog->shaders[i]->lock); in create_gfx_program_separable()
1220 if (!prog->objects[i]) in create_gfx_program_separable()
1221 prog->objects[i] = prog->shaders[i]->precompile.obj.obj; in create_gfx_program_separable()
1226 /* We can do this add after the _mesa_set_adds above because we know the prog->shaders[] are in create_gfx_program_separable()
1229 p_atomic_add(&prog->base.reference.count, refs - 1); in create_gfx_program_separable()
1231 for (int r = 0; r < ARRAY_SIZE(prog->pipelines); ++r) { in create_gfx_program_separable()
1232 for (int i = 0; i < ARRAY_SIZE(prog->pipelines[0]); ++i) { in create_gfx_program_separable()
1233 …_mesa_hash_table_init(&prog->pipelines[r][i], prog, NULL, zink_get_gfx_pipeline_eq_func(screen, pr… in create_gfx_program_separable()
1236 i == (prog->last_vertex_stage->info.stage == MESA_SHADER_TESS_EVAL ? 4 : 3)) in create_gfx_program_separable()
1242 if (!prog->shaders[i] || !prog->shaders[i]->precompile.dsl) in create_gfx_program_separable()
1245 prog->base.dd.binding_usage |= BITFIELD_BIT(idx); in create_gfx_program_separable()
1246 prog->base.dsl[idx] = prog->shaders[i]->precompile.dsl; in create_gfx_program_separable()
1248 if (prog->shaders[i]->precompile.dsl) in create_gfx_program_separable()
1249 prog->base.num_dsl = idx + 1; in create_gfx_program_separable()
1250 prog->base.dd.bindless |= prog->shaders[i]->bindless; in create_gfx_program_separable()
1252 if (prog->base.dd.bindless) { in create_gfx_program_separable()
1253prog->base.num_dsl = screen->compact_descriptors ? ZINK_DESCRIPTOR_ALL_TYPES - ZINK_DESCRIPTOR_COM… in create_gfx_program_separable()
1254 prog->base.dsl[screen->desc_set_id[ZINK_DESCRIPTOR_BINDLESS]] = screen->bindless_layout; in create_gfx_program_separable()
1256prog->base.layout = zink_pipeline_layout_create(screen, prog->base.dsl, prog->base.num_dsl, false,… in create_gfx_program_separable()
1258 prog->last_variant_hash = ctx->gfx_pipeline_state.optimal_key; in create_gfx_program_separable()
1267 gkey->optimal_key = prog->last_variant_hash; in create_gfx_program_separable()
1269 …gkey->pipeline = zink_create_gfx_pipeline_combined(screen, prog, VK_NULL_HANDLE, libs, 2, VK_NULL_… in create_gfx_program_separable()
1270 _mesa_set_add(&prog->libs->libs, gkey); in create_gfx_program_separable()
1274 …util_queue_add_job(&screen->cache_get_thread, prog, &prog->base.cache_fence, create_linked_separab… in create_gfx_program_separable()
1276 return prog; in create_gfx_program_separable()
1278 if (prog) in create_gfx_program_separable()
1279 zink_destroy_gfx_program(screen, prog); in create_gfx_program_separable()
1481 struct zink_gfx_program *prog = (void*)pg; in zink_program_num_bindings_typed() local
1483 if (prog->shaders[i]) in zink_program_num_bindings_typed()
1484 num_bindings += get_num_bindings(prog->shaders[i], type); in zink_program_num_bindings_typed()
1513 struct zink_gfx_program *prog) in zink_destroy_gfx_program() argument
1515 unsigned max_idx = ARRAY_SIZE(prog->pipelines[0]); in zink_destroy_gfx_program()
1518 if ((prog->stages_present & in zink_destroy_gfx_program()
1527 if (prog->is_separable) in zink_destroy_gfx_program()
1528 zink_gfx_program_reference(screen, &prog->full_prog, NULL); in zink_destroy_gfx_program()
1529 for (unsigned r = 0; r < ARRAY_SIZE(prog->pipelines); r++) { in zink_destroy_gfx_program()
1531 hash_table_foreach(&prog->pipelines[r][i], entry) { in zink_destroy_gfx_program()
1542 deinit_program(screen, &prog->base); in zink_destroy_gfx_program()
1545 if (prog->shaders[i]) { in zink_destroy_gfx_program()
1546 _mesa_set_remove_key(prog->shaders[i]->programs, prog); in zink_destroy_gfx_program()
1547 prog->shaders[i] = NULL; in zink_destroy_gfx_program()
1549 if (!prog->is_separable) { in zink_destroy_gfx_program()
1550 destroy_shader_cache(screen, &prog->shader_cache[i][0][0]); in zink_destroy_gfx_program()
1551 destroy_shader_cache(screen, &prog->shader_cache[i][0][1]); in zink_destroy_gfx_program()
1552 destroy_shader_cache(screen, &prog->shader_cache[i][1][0]); in zink_destroy_gfx_program()
1553 destroy_shader_cache(screen, &prog->shader_cache[i][1][1]); in zink_destroy_gfx_program()
1554 blob_finish(&prog->blobs[i]); in zink_destroy_gfx_program()
1557 if (prog->libs) in zink_destroy_gfx_program()
1558 zink_gfx_lib_cache_unref(screen, prog->libs); in zink_destroy_gfx_program()
1560 ralloc_free(prog); in zink_destroy_gfx_program()
1945 nir = zink_tgsi_to_nir(pctx->screen, shader->prog); in zink_create_cs_state()
1947 nir = (struct nir_shader *)shader->prog; in zink_create_cs_state()
2011 /* caller must lock prog->libs->lock */
2013 zink_create_pipeline_lib(struct zink_screen *screen, struct zink_gfx_program *prog, struct zink_gfx… in zink_create_pipeline_lib() argument
2024 gkey->modules[i] = prog->objs[i].mod; in zink_create_pipeline_lib()
2025 gkey->pipeline = zink_create_gfx_pipeline_library(screen, prog); in zink_create_pipeline_lib()
2026 _mesa_set_add(&prog->libs->libs, gkey); in zink_create_pipeline_lib()
2120 struct zink_gfx_program *prog = data; in precompile_job() local
2126 generate_gfx_program_modules_optimal(NULL, screen, prog, &state); in precompile_job()
2127 zink_screen_get_pipeline_cache(screen, &prog->base, true); in precompile_job()
2129 simple_mtx_lock(&prog->libs->lock); in precompile_job()
2130 zink_create_pipeline_lib(screen, prog, &state); in precompile_job()
2131 simple_mtx_unlock(&prog->libs->lock); in precompile_job()
2133 zink_screen_update_pipeline_cache(screen, &prog->base, true); in precompile_job()
2185 struct zink_gfx_program *prog = zink_create_gfx_program(ctx, zshaders, 3, hash); in zink_link_gfx_shader() local
2187 assert(prog->shaders[i]); in zink_link_gfx_shader()
2188 _mesa_hash_table_insert_pre_hashed(ht, hash, prog->shaders, prog); in zink_link_gfx_shader()
2189 prog->base.removed = false; in zink_link_gfx_shader()
2194 generate_gfx_program_modules_optimal(ctx, screen, prog, &ctx->gfx_pipeline_state); in zink_link_gfx_shader()
2196 generate_gfx_program_modules(ctx, screen, prog, &ctx->gfx_pipeline_state); in zink_link_gfx_shader()
2197 … VkPipeline pipeline = zink_create_gfx_pipeline(screen, prog, prog->objs, &ctx->gfx_pipeline_state, in zink_link_gfx_shader()
2203prog->base.uses_shobj = !BITSET_TEST(zshaders[MESA_SHADER_FRAGMENT]->info.system_values_read, SYST… in zink_link_gfx_shader()
2205 precompile_job(prog, pctx->screen, 0); in zink_link_gfx_shader()
2207 …util_queue_add_job(&zink_screen(pctx->screen)->cache_get_thread, prog, &prog->base.cache_fence, pr… in zink_link_gfx_shader()