Lines Matching defs:comp
289 update_cs_shader_module(struct zink_context *ctx, struct zink_compute_program *comp)
292 struct zink_shader *zs = comp->shader;
300 if (screen->is_cpu || comp->inlined_variant_count < ZINK_MAX_INLINED_VARIANTS)
310 LIST_FOR_EACH_ENTRY_SAFE(iter, next, &comp->shader_cache[!!nonseamless_size], list) {
318 zm = comp->module;
326 mod = zink_shader_compile(screen, zs, comp->shader->nir, key);
344 comp->inlined_variant_count++;
347 list_add(&zm->list, &comp->shader_cache[!!nonseamless_size]);
348 if (comp->curr == zm)
351 comp->curr = zm;
512 zink_program_update_compute_pipeline_state(struct zink_context *ctx, struct zink_compute_program *comp, const uint block[3])
514 struct zink_shader *zs = comp->shader;
547 struct zink_compute_program *comp = rzalloc(NULL, struct zink_compute_program);
548 if (!comp)
551 pipe_reference_init(&comp->base.reference, 1);
552 util_queue_fence_init(&comp->base.cache_fence);
553 comp->base.is_compute = true;
555 comp->curr = comp->module = CALLOC_STRUCT(zink_shader_module);
556 assert(comp->module);
557 comp->module->shader = zink_shader_compile(screen, shader, shader->nir, NULL);
558 assert(comp->module->shader);
559 list_inithead(&comp->shader_cache[0]);
560 list_inithead(&comp->shader_cache[1]);
562 comp->pipelines = _mesa_hash_table_create(NULL, NULL,
565 _mesa_set_add(shader->programs, comp);
566 comp->shader = shader;
567 memcpy(comp->base.sha1, shader->base.sha1, sizeof(shader->base.sha1));
569 if (!screen->descriptor_program_init(ctx, &comp->base))
572 zink_screen_get_pipeline_cache(screen, &comp->base);
573 return comp;
576 if (comp)
577 zink_destroy_compute_program(ctx, comp);
662 struct zink_compute_program *comp = (void*)pg;
663 return get_num_bindings(comp->shader, type);
732 struct zink_compute_program *comp)
735 util_queue_fence_wait(&comp->base.cache_fence);
736 if (comp->base.layout)
737 VKSCR(DestroyPipelineLayout)(screen->dev, comp->base.layout, NULL);
739 if (comp->shader)
740 _mesa_set_remove_key(comp->shader->programs, comp);
741 destroy_shader_cache(screen, &comp->shader_cache[0]);
742 destroy_shader_cache(screen, &comp->shader_cache[1]);
744 hash_table_foreach(comp->pipelines, entry) {
750 _mesa_hash_table_destroy(comp->pipelines, NULL);
751 VKSCR(DestroyShaderModule)(screen->dev, comp->module->shader, NULL);
752 free(comp->module);
753 if (comp->base.pipeline_cache)
754 VKSCR(DestroyPipelineCache)(screen->dev, comp->base.pipeline_cache, NULL);
755 screen->descriptor_program_deinit(ctx, &comp->base);
757 ralloc_free(comp);
890 struct zink_compute_program *comp,
904 entry = _mesa_hash_table_search_pre_hashed(comp->pipelines, state->final_hash, state);
907 util_queue_fence_wait(&comp->base.cache_fence);
908 VkPipeline pipeline = zink_create_compute_pipeline(screen, comp, state);
920 entry = _mesa_hash_table_insert_pre_hashed(comp->pipelines, state->final_hash, pc_entry, pc_entry);
950 struct zink_compute_program *comp = zink_create_compute_program(ctx, shader);
951 _mesa_hash_table_insert(&ctx->compute_program_cache, comp->shader, comp);
953 ctx->curr_compute = comp;