Lines Matching refs:sscreen
915 bool si_shader_binary_upload(struct si_screen *sscreen, struct si_shader *shader,
919 if (!si_shader_binary_open(sscreen, shader, &binary))
924 &sscreen->b,
925 (sscreen->info.cpdma_prefetch_writes_memory ? 0 : SI_RESOURCE_FLAG_READ_ONLY) |
937 u.rx_ptr = sscreen->ws->buffer_map(sscreen->ws,
945 if (sscreen->debug_flags & DBG(SQTT)) {
952 sscreen->ws->buffer_unmap(sscreen->ws, shader->bo->buf);
1020 struct si_screen *sscreen = shader->selector->screen;
1023 unsigned lds_increment = get_lds_granularity(sscreen, shader->selector->stage);
1027 max_simd_waves = sscreen->info.max_wave64_per_simd;
1056 MIN2(max_simd_waves, sscreen->info.num_physical_sgprs_per_simd / conf->num_sgprs);
1062 unsigned max_vgprs = sscreen->info.num_physical_wave64_vgprs_per_simd;
1066 unsigned max_lds_per_simd = sscreen->info.lds_size_per_workgroup / 4;
1097 static void si_shader_dump_stats(struct si_screen *sscreen, struct si_shader *shader, FILE *file,
1102 if (!check_debug_option || si_can_dump_shader(sscreen, shader->selector->stage)) {
1124 shader->info.private_mem_vgprs, si_get_shader_binary_size(sscreen, shader),
1125 conf->lds_size * get_lds_granularity(sscreen, shader->selector->stage),
1165 void si_shader_dump(struct si_screen *sscreen, struct si_shader *shader,
1170 if (!check_debug_option || si_can_dump_shader(sscreen, stage))
1184 (si_can_dump_shader(sscreen, stage) && !(sscreen->debug_flags & DBG(NO_ASM)))) {
1189 si_shader_dump_disassembly(sscreen, &shader->prolog->binary, stage, shader->wave_size, debug,
1192 si_shader_dump_disassembly(sscreen, &shader->previous_stage->binary, stage,
1194 si_shader_dump_disassembly(sscreen, &shader->binary, stage, shader->wave_size, debug, "main",
1198 si_shader_dump_disassembly(sscreen, &shader->epilog->binary, stage, shader->wave_size, debug,
1203 si_shader_dump_stats(sscreen, shader, file, check_debug_option);
1777 bool si_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *compiler,
1826 if (si_can_dump_shader(sscreen, sel->stage) &&
1827 !(sscreen->debug_flags & DBG(NO_NIR))) {
1873 if (!si_llvm_compile_shader(sscreen, compiler, shader, &so, debug, nir, free_nir))
1880 shader->gs_copy_shader = si_generate_gs_copy_shader(sscreen, compiler, sel, &so, debug);
1928 sscreen->info.num_physical_wave64_vgprs_per_simd * (shader->wave_size == 32 ? 2 : 1);
1929 unsigned max_sgprs = sscreen->info.num_physical_sgprs_per_simd;
1967 si_shader_dump_stats_for_shader_db(sscreen, shader, debug);
1974 * \param sscreen screen
1985 si_get_shader_part(struct si_screen *sscreen, struct si_shader_part **list,
1993 simple_mtx_lock(&sscreen->shader_parts_mutex);
1998 simple_mtx_unlock(&sscreen->shader_parts_mutex);
2008 sel.screen = sscreen;
2040 si_llvm_context_init(&ctx, sscreen, compiler, wave32 ? 32 : 64);
2050 if (!si_compile_llvm(sscreen, &result->binary, &result->config, compiler, &ctx.ac, debug,
2062 simple_mtx_unlock(&sscreen->shader_parts_mutex);
2066 static bool si_get_vs_prolog(struct si_screen *sscreen, struct ac_llvm_compiler *compiler,
2082 si_get_shader_part(sscreen, &sscreen->vs_prologs, MESA_SHADER_VERTEX, true, &prolog_key,
2090 static bool si_shader_select_vs_parts(struct si_screen *sscreen, struct ac_llvm_compiler *compiler,
2093 return si_get_vs_prolog(sscreen, compiler, shader, debug, shader, &shader->key.ge.part.vs.prolog);
2110 static bool si_shader_select_tcs_parts(struct si_screen *sscreen, struct ac_llvm_compiler *compiler,
2113 if (sscreen->info.gfx_level >= GFX9) {
2116 if (!si_get_vs_prolog(sscreen, compiler, shader, debug, ls_main_part,
2127 shader->epilog = si_get_shader_part(sscreen, &sscreen->tcs_epilogs, MESA_SHADER_TESS_CTRL, false,
2136 static bool si_shader_select_gs_parts(struct si_screen *sscreen, struct ac_llvm_compiler *compiler,
2139 if (sscreen->info.gfx_level >= GFX9) {
2148 !si_get_vs_prolog(sscreen, compiler, shader, debug, es_main_part,
2320 static bool si_shader_select_ps_parts(struct si_screen *sscreen, struct ac_llvm_compiler *compiler,
2332 si_get_shader_part(sscreen, &sscreen->ps_prologs, MESA_SHADER_FRAGMENT, true, &prolog_key,
2342 si_get_shader_part(sscreen, &sscreen->ps_epilogs, MESA_SHADER_FRAGMENT, false, &epilog_key,
2405 void si_multiwave_lds_size_workaround(struct si_screen *sscreen, unsigned *lds_size)
2416 if (sscreen->info.family == CHIP_BONAIRE || sscreen->info.family == CHIP_KABINI)
2420 void si_fix_resource_usage(struct si_screen *sscreen, struct si_shader *shader)
2428 si_multiwave_lds_size_workaround(sscreen, &shader->config.lds_size);
2432 bool si_create_shader_variant(struct si_screen *sscreen, struct ac_llvm_compiler *compiler,
2451 if (!si_compile_shader(sscreen, compiler, shader, debug))
2481 if (!si_shader_select_vs_parts(sscreen, compiler, shader, debug))
2485 if (!si_shader_select_tcs_parts(sscreen, compiler, shader, debug))
2491 if (!si_shader_select_gs_parts(sscreen, compiler, shader, debug))
2518 if (!si_shader_select_ps_parts(sscreen, compiler, shader, debug))
2572 } else if (sscreen->info.gfx_level >= GFX9 && sel->stage == MESA_SHADER_GEOMETRY) {
2577 sscreen->use_ngg &&
2585 shader->uses_gs_state_outprim = sscreen->use_ngg &&
2606 si_fix_resource_usage(sscreen, shader);
2609 bool ok = si_shader_binary_upload(sscreen, shader, 0);
2610 si_shader_dump(sscreen, shader, debug, stderr, true);