Lines Matching refs:sel
823 const struct si_shader_selector *sel = shader->selector;
845 if (sel && screen->info.gfx_level >= GFX9 && !shader->is_gs_copy_shader &&
846 (sel->stage == MESA_SHADER_GEOMETRY ||
847 (sel->stage <= MESA_SHADER_GEOMETRY && shader->key.ge.as_ngg))) {
854 if (sel->stage == MESA_SHADER_GEOMETRY && shader->key.ge.as_ngg) {
867 .shader_type = sel->stage,
876 unsigned alloc_granularity = get_lds_granularity(screen, sel->stage);
1359 bool si_vs_needs_prolog(const struct si_shader_selector *sel,
1364 assert(sel->stage == MESA_SHADER_VERTEX);
1368 return sel->info.vs_needs_prolog || prolog_key->ls_vgpr_fix ||
1518 struct si_shader_selector *sel = shader->selector;
1528 sel->screen->info.gfx_level, sel->info.esgs_itemsize);
1535 sel->screen->info.gfx_level,
1538 util_last_bit64(sel->info.outputs_written),
1539 util_last_bit64(sel->info.patch_outputs_written),
1543 !(sel->info.base.inputs_read & ~sel->info.tcs_vgpr_only_inputs),
1544 sel->info.tessfactors_are_def_in_all_invocs, false);
1551 sel->screen->info.gfx_level, sel->info.esgs_itemsize);
1557 sel->screen->info.gfx_level, key->ge.mono.u.gs_tri_strip_adj_fix);
1564 struct nir_shader *si_deserialize_shader(struct si_shader_selector *sel)
1566 struct pipe_screen *screen = &sel->screen->b;
1568 pipe_shader_type_from_mesa(sel->stage));
1571 blob_reader_init(&blob_reader, sel->nir_binary, sel->nir_size);
1578 struct si_shader_selector *sel = shader->selector;
1584 if (sel->nir) {
1585 nir = sel->nir;
1586 } else if (sel->nir_binary) {
1587 nir = si_deserialize_shader(sel);
1607 if (sel->stage <= MESA_SHADER_GEOMETRY)
1612 si_get_inline_uniform_state((union si_shader_key*)key, sel->pipe_shader_type,
1663 if (sel->stage == MESA_SHADER_FRAGMENT && key->ps.mono.poly_line_smoothing)
1666 if (sel->stage == MESA_SHADER_FRAGMENT && key->ps.mono.point_smoothing)
1670 si_nir_opts(sel->screen, nir, true);
1688 progress2 |= ac_nir_lower_indirect_derefs(nir, sel->screen->info.gfx_level);
1693 si_nir_opts(sel->screen, nir, false);
1780 struct si_shader_selector *sel = shader->selector;
1785 if ((sel->stage == MESA_SHADER_VERTEX ||
1786 sel->stage == MESA_SHADER_TESS_EVAL ||
1787 (sel->stage == MESA_SHADER_GEOMETRY && shader->key.ge.as_ngg)) &&
1810 si_nir_assign_param_offsets(nir, &sel->info, slot_remap, &shader->info.nr_param_exports,
1816 shader->info.vs_output_param_mask |= BITFIELD64_BIT(sel->info.num_outputs);
1826 if (si_can_dump_shader(sscreen, sel->stage) &&
1839 shader->info.uses_instanceid = sel->info.uses_instanceid;
1879 if (sel->stage == MESA_SHADER_GEOMETRY && !shader->key.ge.as_ngg) {
1880 shader->gs_copy_shader = si_generate_gs_copy_shader(sscreen, compiler, sel, &so, debug);
1888 if ((sel->stage == MESA_SHADER_VERTEX ||
1889 sel->stage == MESA_SHADER_TESS_EVAL ||
1890 sel->stage == MESA_SHADER_GEOMETRY) &&
1894 if (sel->stage == MESA_SHADER_GEOMETRY && !shader->key.ge.as_ngg)
1899 unsigned num_outputs_with_prim_id = sel->info.num_outputs +
1903 unsigned semantic = sel->info.output_semantic[i];
1926 if (sel->stage == MESA_SHADER_COMPUTE) {
1955 if (sel->screen->info.gfx_level < GFX11 &&
1960 if (sel->stage == MESA_SHADER_FRAGMENT) {
2007 struct si_shader_selector sel = {};
2008 sel.screen = sscreen;
2011 shader.selector = &sel;
2435 struct si_shader_selector *sel = shader->selector;
2436 struct si_shader *mainp = *si_get_main_shader_part(sel, &shader->key);
2479 switch (sel->stage) {
2500 assert(sel->main_shader_part == mainp);
2501 assert(sel->main_shader_part->gs_copy_shader);
2502 assert(sel->main_shader_part->gs_copy_shader->bo);
2503 assert(!sel->main_shader_part->gs_copy_shader->previous_stage_sel);
2504 assert(!sel->main_shader_part->gs_copy_shader->scratch_bo);
2507 memcpy(shader->gs_copy_shader, sel->main_shader_part->gs_copy_shader,
2566 if (sel->stage <= MESA_SHADER_GEOMETRY && shader->key.ge.as_ngg) {
2572 } else if (sscreen->info.gfx_level >= GFX9 && sel->stage == MESA_SHADER_GEOMETRY) {
2573 gfx9_get_gs_info(shader->previous_stage_sel, sel, &shader->gs_info);
2579 ((sel->stage == MESA_SHADER_GEOMETRY &&
2580 util_rast_prim_is_triangles(sel->info.base.gs.output_primitive)) ||
2581 (sel->stage == MESA_SHADER_VERTEX &&
2587 sel->stage == MESA_SHADER_VERTEX &&
2590 if (sel->stage == MESA_SHADER_VERTEX) {
2591 shader->uses_base_instance = sel->info.uses_base_instance ||
2594 } else if (sel->stage == MESA_SHADER_TESS_CTRL) {
2599 } else if (sel->stage == MESA_SHADER_GEOMETRY) {