Lines Matching refs:key
42 struct v3d_key *key, size_t key_size);
45 struct v3d_key *key);
211 struct v3d_fs_key key = { in v3d_shader_precompile() local
217 key.cbufs |= 1 << 0; in v3d_shader_precompile()
219 key.cbufs |= 1 << (var->data.location - in v3d_shader_precompile()
224 key.logicop_func = PIPE_LOGICOP_COPY; in v3d_shader_precompile()
226 v3d_setup_shared_precompile_key(so, &key.base); in v3d_shader_precompile()
227 v3d_get_compiled_shader(v3d, &key.base, sizeof(key)); in v3d_shader_precompile()
229 struct v3d_gs_key key = { in v3d_shader_precompile() local
234 v3d_setup_shared_precompile_key(so, &key.base); in v3d_shader_precompile()
237 key.used_outputs, in v3d_shader_precompile()
238 &key.num_used_outputs); in v3d_shader_precompile()
240 v3d_get_compiled_shader(v3d, &key.base, sizeof(key)); in v3d_shader_precompile()
243 key.is_coord = true; in v3d_shader_precompile()
244 key.num_used_outputs = 0; in v3d_shader_precompile()
246 key.used_outputs[key.num_used_outputs++] = in v3d_shader_precompile()
250 v3d_get_compiled_shader(v3d, &key.base, sizeof(key)); in v3d_shader_precompile()
253 struct v3d_vs_key key = { in v3d_shader_precompile() local
259 v3d_setup_shared_precompile_key(so, &key.base); in v3d_shader_precompile()
262 key.used_outputs, in v3d_shader_precompile()
263 &key.num_used_outputs); in v3d_shader_precompile()
265 v3d_get_compiled_shader(v3d, &key.base, sizeof(key)); in v3d_shader_precompile()
268 key.is_coord = true; in v3d_shader_precompile()
269 key.num_used_outputs = 0; in v3d_shader_precompile()
271 key.used_outputs[key.num_used_outputs++] = in v3d_shader_precompile()
275 v3d_get_compiled_shader(v3d, &key.base, sizeof(key)); in v3d_shader_precompile()
372 struct v3d_key *key, in v3d_get_compiled_shader() argument
375 struct v3d_uncompiled_shader *shader_state = key->shader_state; in v3d_get_compiled_shader()
379 struct hash_entry *entry = _mesa_hash_table_search(ht, key); in v3d_get_compiled_shader()
389 shader = v3d_disk_cache_retrieve(v3d, key); in v3d_get_compiled_shader()
399 qpu_insts = v3d_compile(v3d->screen->compiler, key, in v3d_get_compiled_shader()
412 v3d_disk_cache_store(v3d, key, shader, qpu_insts, shader_size); in v3d_get_compiled_shader()
423 memcpy(dup_key, key, key_size); in v3d_get_compiled_shader()
455 v3d_setup_shared_key(struct v3d_context *v3d, struct v3d_key *key, in v3d_setup_shared_key() argument
460 key->num_tex_used = texstate->num_textures; in v3d_setup_shared_key()
461 key->num_samplers_used = texstate->num_textures; in v3d_setup_shared_key()
462 assert(key->num_tex_used == key->num_samplers_used); in v3d_setup_shared_key()
478 key->sampler[i].return_size = in v3d_setup_shared_key()
487 if (key->sampler[i].return_size == 16) { in v3d_setup_shared_key()
488 key->sampler[i].return_channels = 2; in v3d_setup_shared_key()
490 key->sampler[i].return_channels = 4; in v3d_setup_shared_key()
492 key->sampler[i].return_channels = in v3d_setup_shared_key()
497 if (key->sampler[i].return_size == 32 && devinfo->ver < 40) { in v3d_setup_shared_key()
498 memcpy(key->tex[i].swizzle, in v3d_setup_shared_key()
505 key->tex[i].swizzle[0] = PIPE_SWIZZLE_X; in v3d_setup_shared_key()
506 key->tex[i].swizzle[1] = PIPE_SWIZZLE_Y; in v3d_setup_shared_key()
507 key->tex[i].swizzle[2] = PIPE_SWIZZLE_Z; in v3d_setup_shared_key()
508 key->tex[i].swizzle[3] = PIPE_SWIZZLE_W; in v3d_setup_shared_key()
515 struct v3d_key *key) in v3d_setup_shared_precompile_key() argument
523 key->num_tex_used = s->info.num_textures; in v3d_setup_shared_precompile_key()
524 key->num_samplers_used = s->info.num_textures; in v3d_setup_shared_precompile_key()
526 key->sampler[i].return_size = 16; in v3d_setup_shared_precompile_key()
527 key->sampler[i].return_channels = 2; in v3d_setup_shared_precompile_key()
529 key->tex[i].swizzle[0] = PIPE_SWIZZLE_X; in v3d_setup_shared_precompile_key()
530 key->tex[i].swizzle[1] = PIPE_SWIZZLE_Y; in v3d_setup_shared_precompile_key()
531 key->tex[i].swizzle[2] = PIPE_SWIZZLE_Z; in v3d_setup_shared_precompile_key()
532 key->tex[i].swizzle[3] = PIPE_SWIZZLE_W; in v3d_setup_shared_precompile_key()
541 struct v3d_fs_key *key = &local_key; in v3d_update_compiled_fs() local
555 memset(key, 0, sizeof(*key)); in v3d_update_compiled_fs()
556 v3d_setup_shared_key(v3d, &key->base, &v3d->tex[PIPE_SHADER_FRAGMENT]); in v3d_update_compiled_fs()
557 key->base.shader_state = v3d->prog.bind_fs; in v3d_update_compiled_fs()
558 key->base.ucp_enables = v3d->rasterizer->base.clip_plane_enable; in v3d_update_compiled_fs()
559 key->is_points = (prim_mode == PIPE_PRIM_POINTS); in v3d_update_compiled_fs()
560 key->is_lines = (prim_mode >= PIPE_PRIM_LINES && in v3d_update_compiled_fs()
562 key->line_smoothing = (key->is_lines && in v3d_update_compiled_fs()
564 key->has_gs = v3d->prog.bind_gs != NULL; in v3d_update_compiled_fs()
566 key->logicop_func = v3d->blend->base.logicop_func; in v3d_update_compiled_fs()
568 key->logicop_func = PIPE_LOGICOP_COPY; in v3d_update_compiled_fs()
571 key->msaa = v3d->rasterizer->base.multisample; in v3d_update_compiled_fs()
572 key->sample_coverage = (v3d->rasterizer->base.multisample && in v3d_update_compiled_fs()
574 key->sample_alpha_to_coverage = v3d->blend->base.alpha_to_coverage; in v3d_update_compiled_fs()
575 key->sample_alpha_to_one = v3d->blend->base.alpha_to_one; in v3d_update_compiled_fs()
578 key->swap_color_rb = v3d->swap_color_rb; in v3d_update_compiled_fs()
589 key->cbufs |= 1 << i; in v3d_update_compiled_fs()
595 if (key->logicop_func != PIPE_LOGICOP_COPY) { in v3d_update_compiled_fs()
596 key->color_fmt[i].format = cbuf->format; in v3d_update_compiled_fs()
597 memcpy(key->color_fmt[i].swizzle, in v3d_update_compiled_fs()
600 sizeof(key->color_fmt[i].swizzle)); in v3d_update_compiled_fs()
608 key->f32_color_rb |= 1 << i; in v3d_update_compiled_fs()
613 key->uint_color_rb |= 1 << i; in v3d_update_compiled_fs()
615 key->int_color_rb |= 1 << i; in v3d_update_compiled_fs()
619 if (key->is_points) { in v3d_update_compiled_fs()
620 key->point_sprite_mask = in v3d_update_compiled_fs()
623 key->point_coord_upper_left = false; in v3d_update_compiled_fs()
627 v3d->prog.fs = v3d_get_compiled_shader(v3d, &key->base, sizeof(*key)); in v3d_update_compiled_fs()
661 struct v3d_gs_key *key = &local_key; in v3d_update_compiled_gs() local
677 memset(key, 0, sizeof(*key)); in v3d_update_compiled_gs()
678 v3d_setup_shared_key(v3d, &key->base, &v3d->tex[PIPE_SHADER_GEOMETRY]); in v3d_update_compiled_gs()
679 key->base.shader_state = v3d->prog.bind_gs; in v3d_update_compiled_gs()
680 key->base.ucp_enables = v3d->rasterizer->base.clip_plane_enable; in v3d_update_compiled_gs()
681 key->base.is_last_geometry_stage = true; in v3d_update_compiled_gs()
682 key->num_used_outputs = v3d->prog.fs->prog_data.fs->num_inputs; in v3d_update_compiled_gs()
683 STATIC_ASSERT(sizeof(key->used_outputs) == in v3d_update_compiled_gs()
685 memcpy(key->used_outputs, v3d->prog.fs->prog_data.fs->input_slots, in v3d_update_compiled_gs()
686 sizeof(key->used_outputs)); in v3d_update_compiled_gs()
688 key->per_vertex_point_size = in v3d_update_compiled_gs()
693 v3d_get_compiled_shader(v3d, &key->base, sizeof(*key)); in v3d_update_compiled_gs()
699 key->is_coord = true; in v3d_update_compiled_gs()
704 struct v3d_uncompiled_shader *shader_state = key->base.shader_state; in v3d_update_compiled_gs()
705 memcpy(key->used_outputs, shader_state->tf_outputs, in v3d_update_compiled_gs()
706 sizeof(*key->used_outputs) * shader_state->num_tf_outputs); in v3d_update_compiled_gs()
707 if (shader_state->num_tf_outputs < key->num_used_outputs) { in v3d_update_compiled_gs()
708 uint32_t size = sizeof(*key->used_outputs) * in v3d_update_compiled_gs()
709 (key->num_used_outputs - in v3d_update_compiled_gs()
711 memset(&key->used_outputs[shader_state->num_tf_outputs], in v3d_update_compiled_gs()
714 key->num_used_outputs = shader_state->num_tf_outputs; in v3d_update_compiled_gs()
718 v3d_get_compiled_shader(v3d, &key->base, sizeof(*key)); in v3d_update_compiled_gs()
735 struct v3d_vs_key *key = &local_key; in v3d_update_compiled_vs() local
747 memset(key, 0, sizeof(*key)); in v3d_update_compiled_vs()
748 v3d_setup_shared_key(v3d, &key->base, &v3d->tex[PIPE_SHADER_VERTEX]); in v3d_update_compiled_vs()
749 key->base.shader_state = v3d->prog.bind_vs; in v3d_update_compiled_vs()
750 key->base.ucp_enables = v3d->rasterizer->base.clip_plane_enable; in v3d_update_compiled_vs()
751 key->base.is_last_geometry_stage = !v3d->prog.bind_gs; in v3d_update_compiled_vs()
754 key->num_used_outputs = v3d->prog.fs->prog_data.fs->num_inputs; in v3d_update_compiled_vs()
755 STATIC_ASSERT(sizeof(key->used_outputs) == in v3d_update_compiled_vs()
757 memcpy(key->used_outputs, v3d->prog.fs->prog_data.fs->input_slots, in v3d_update_compiled_vs()
758 sizeof(key->used_outputs)); in v3d_update_compiled_vs()
760 key->num_used_outputs = v3d->prog.gs->prog_data.gs->num_inputs; in v3d_update_compiled_vs()
761 STATIC_ASSERT(sizeof(key->used_outputs) == in v3d_update_compiled_vs()
763 memcpy(key->used_outputs, v3d->prog.gs->prog_data.gs->input_slots, in v3d_update_compiled_vs()
764 sizeof(key->used_outputs)); in v3d_update_compiled_vs()
767 key->per_vertex_point_size = in v3d_update_compiled_vs()
787 key->va_swap_rb_mask |= 1 << location; in v3d_update_compiled_vs()
795 v3d_get_compiled_shader(v3d, &key->base, sizeof(*key)); in v3d_update_compiled_vs()
801 key->is_coord = true; in v3d_update_compiled_vs()
811 key->base.shader_state; in v3d_update_compiled_vs()
812 memcpy(key->used_outputs, shader_state->tf_outputs, in v3d_update_compiled_vs()
813 sizeof(*key->used_outputs) * in v3d_update_compiled_vs()
815 if (shader_state->num_tf_outputs < key->num_used_outputs) { in v3d_update_compiled_vs()
817 sizeof(*key->used_outputs) * in v3d_update_compiled_vs()
818 (key->num_used_outputs - in v3d_update_compiled_vs()
820 memset(&key->used_outputs[shader_state->num_tf_outputs], in v3d_update_compiled_vs()
823 key->num_used_outputs = shader_state->num_tf_outputs; in v3d_update_compiled_vs()
825 key->num_used_outputs = v3d->prog.gs_bin->prog_data.gs->num_inputs; in v3d_update_compiled_vs()
826 STATIC_ASSERT(sizeof(key->used_outputs) == in v3d_update_compiled_vs()
828 memcpy(key->used_outputs, v3d->prog.gs_bin->prog_data.gs->input_slots, in v3d_update_compiled_vs()
829 sizeof(key->used_outputs)); in v3d_update_compiled_vs()
833 v3d_get_compiled_shader(v3d, &key->base, sizeof(*key)); in v3d_update_compiled_vs()
852 struct v3d_key *key = &local_key; in v3d_update_compiled_cs() local
859 memset(key, 0, sizeof(*key)); in v3d_update_compiled_cs()
860 v3d_setup_shared_key(v3d, key, &v3d->tex[PIPE_SHADER_COMPUTE]); in v3d_update_compiled_cs()
861 key->shader_state = v3d->prog.bind_compute; in v3d_update_compiled_cs()
864 v3d_get_compiled_shader(v3d, key, sizeof(*key)); in v3d_update_compiled_cs()
872 fs_cache_hash(const void *key) in fs_cache_hash() argument
874 return _mesa_hash_data(key, sizeof(struct v3d_fs_key)); in fs_cache_hash()
878 gs_cache_hash(const void *key) in gs_cache_hash() argument
880 return _mesa_hash_data(key, sizeof(struct v3d_gs_key)); in gs_cache_hash()
884 vs_cache_hash(const void *key) in vs_cache_hash() argument
886 return _mesa_hash_data(key, sizeof(struct v3d_vs_key)); in vs_cache_hash()
890 cs_cache_hash(const void *key) in cs_cache_hash() argument
892 return _mesa_hash_data(key, sizeof(struct v3d_key)); in cs_cache_hash()
927 const struct v3d_key *key = entry->key; in v3d_shader_state_delete() local
930 if (key->shader_state != so) in v3d_shader_state_delete()