Lines Matching refs:key

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