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