Lines Matching refs:variants
349 struct panfrost_shader_state *shader_state = &cso->variants[i];
364 free(cso->variants);
390 /* We don't currently have vertex shader variants */
474 struct panfrost_shader_variants *variants,
477 unsigned variant = variants->variant_count++;
479 if (variants->variant_count > variants->variant_space) {
480 unsigned old_space = variants->variant_space;
482 variants->variant_space *= 2;
483 if (variants->variant_space == 0)
484 variants->variant_space = 1;
487 * creating an unbounded number of shader variants. */
488 assert(variants->variant_space < 1024);
491 variants->variants = realloc(variants->variants,
492 variants->variant_space * msize);
494 memset(&variants->variants[old_space], 0,
495 (variants->variant_space - old_space) * msize);
498 variants->variants[variant].key = *key;
500 struct panfrost_shader_state *shader_state = &variants->variants[variant];
505 variants->nir, shader_state);
508 shader_state->stream_output = variants->stream_output;
538 /* No shader variants for compute */
552 struct panfrost_shader_variants *variants = ctx->shader[type];
554 simple_mtx_lock(&variants->lock);
557 .fixed_varying_mask = variants->fixed_varying_mask
560 panfrost_build_key(ctx, &key, variants->nir);
562 for (unsigned i = 0; i < variants->variant_count; ++i) {
563 if (memcmp(&key, &variants->variants[i].key, sizeof(key)) == 0) {
570 variant = panfrost_new_variant_locked(ctx, variants, &key);
572 variants->active_variant = variant;
577 simple_mtx_unlock(&variants->lock);