• Home
  • Raw
  • Download

Lines Matching full:info

139 	/** video memory type info*/
326 has_tmz_support(ac_drm_device *dev, struct radeon_info *info, uint32_t ids_flags) in has_tmz_support() argument
336 if (info->drm_minor >= 40) in has_tmz_support()
340 if (info->gfx_level < GFX9) in has_tmz_support()
343 if (info->drm_minor < 36) in has_tmz_support()
357 static void set_custom_cu_en_mask(struct radeon_info *info) in set_custom_cu_en_mask() argument
359 info->spi_cu_en = ~0; in set_custom_cu_en_mask()
458 spi_cu_en &= BITFIELD_MASK(info->max_good_cu_per_sa); in set_custom_cu_en_mask()
465 if (info->has_graphics) { in set_custom_cu_en_mask()
466 uint32_t min_full_cu_mask = BITFIELD_MASK(info->min_good_cu_per_sa); in set_custom_cu_en_mask()
479 ac_compute_late_alloc(info, false, false, false, &unused, &cu_mask_ge); in set_custom_cu_en_mask()
497 info->spi_cu_en = spi_cu_en; in set_custom_cu_en_mask()
498 info->spi_cu_en_has_effect = spi_cu_en & BITFIELD_MASK(info->max_good_cu_per_sa); in set_custom_cu_en_mask()
503 static bool ac_query_pci_bus_info(int fd, struct radeon_info *info) in ac_query_pci_bus_info() argument
507 /* Get PCI info. */ in ac_query_pci_bus_info()
511 info->pci.valid = false; in ac_query_pci_bus_info()
514 info->pci.domain = devinfo->businfo.pci->domain; in ac_query_pci_bus_info()
515 info->pci.bus = devinfo->businfo.pci->bus; in ac_query_pci_bus_info()
516 info->pci.dev = devinfo->businfo.pci->dev; in ac_query_pci_bus_info()
517 info->pci.func = devinfo->businfo.pci->func; in ac_query_pci_bus_info()
518 info->pci.valid = true; in ac_query_pci_bus_info()
524 static void handle_env_var_force_family(struct radeon_info *info) in handle_env_var_force_family() argument
533 get_radeon_info(info, &ac_fake_hw_db[i]); in handle_env_var_force_family()
534 info->name = "NOOP"; in handle_env_var_force_family()
535 info->family_overridden = true; in handle_env_var_force_family()
536 info->chip_rev = 1; in handle_env_var_force_family()
545 bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info, in ac_query_gpu_info() argument
566 handle_env_var_force_family(info); in ac_query_gpu_info()
568 if (!ac_query_pci_bus_info(fd, info)) { in ac_query_gpu_info()
573 assert(info->drm_major == 3); in ac_query_gpu_info()
574 info->is_amdgpu = true; in ac_query_gpu_info()
576 if (info->drm_minor < 27) { in ac_query_gpu_info()
579 info->drm_major, info->drm_minor, info->drm_patchlevel); in ac_query_gpu_info()
611 if (info->drm_minor >= 48 && ip_info.ip_discovery_version) { in ac_query_gpu_info()
612 info->ip[ip_type].ver_major = (ip_info.ip_discovery_version >> 16) & 0xff; in ac_query_gpu_info()
613 info->ip[ip_type].ver_minor = (ip_info.ip_discovery_version >> 8) & 0xff; in ac_query_gpu_info()
614 info->ip[ip_type].ver_rev = ip_info.ip_discovery_version & 0xff; in ac_query_gpu_info()
616 info->ip[ip_type].ver_major = ip_info.hw_ip_version_major; in ac_query_gpu_info()
617 info->ip[ip_type].ver_minor = ip_info.hw_ip_version_minor; in ac_query_gpu_info()
624 info->ip[AMD_IP_GFX].ver_minor = info->ip[AMD_IP_COMPUTE].ver_minor = 1; in ac_query_gpu_info()
630 info->ip[AMD_IP_GFX].ver_minor = info->ip[AMD_IP_COMPUTE].ver_minor = 3; in ac_query_gpu_info()
632 info->ip[ip_type].num_queues = util_bitcount(ip_info.available_rings); in ac_query_gpu_info()
637 info->ip[ip_type].num_instances = num_instances; in ac_query_gpu_info()
644 info->ip[ip_type].ib_alignment = MAX3(ip_info.ib_start_alignment, in ac_query_gpu_info()
649 info->ip[AMD_IP_GFX].ib_pad_dw_mask = 0x7; in ac_query_gpu_info()
650 info->ip[AMD_IP_COMPUTE].ib_pad_dw_mask = 0x7; in ac_query_gpu_info()
651 info->ip[AMD_IP_SDMA].ib_pad_dw_mask = 0xf; in ac_query_gpu_info()
652 info->ip[AMD_IP_UVD].ib_pad_dw_mask = 0xf; in ac_query_gpu_info()
653 info->ip[AMD_IP_VCE].ib_pad_dw_mask = 0x3f; in ac_query_gpu_info()
654 info->ip[AMD_IP_UVD_ENC].ib_pad_dw_mask = 0x3f; in ac_query_gpu_info()
655 info->ip[AMD_IP_VCN_DEC].ib_pad_dw_mask = 0xf; in ac_query_gpu_info()
656 info->ip[AMD_IP_VCN_ENC].ib_pad_dw_mask = 0x3f; in ac_query_gpu_info()
657 info->ip[AMD_IP_VCN_JPEG].ib_pad_dw_mask = 0xf; in ac_query_gpu_info()
658 info->ip[AMD_IP_VPE].ib_pad_dw_mask = 0xf; in ac_query_gpu_info()
661 if (!info->ip[AMD_IP_GFX].num_queues && !info->ip[AMD_IP_COMPUTE].num_queues) { in ac_query_gpu_info()
666 r = ac_drm_query_firmware_version(dev, AMDGPU_INFO_FW_GFX_ME, 0, 0, &info->me_fw_version, in ac_query_gpu_info()
667 &info->me_fw_feature); in ac_query_gpu_info()
673 r = ac_drm_query_firmware_version(dev, AMDGPU_INFO_FW_GFX_MEC, 0, 0, &info->mec_fw_version, in ac_query_gpu_info()
674 &info->mec_fw_feature); in ac_query_gpu_info()
680 r = ac_drm_query_firmware_version(dev, AMDGPU_INFO_FW_GFX_PFP, 0, 0, &info->pfp_fw_version, in ac_query_gpu_info()
681 &info->pfp_fw_feature); in ac_query_gpu_info()
687 if (info->ip[AMD_IP_VCN_DEC].num_queues || info->ip[AMD_IP_VCN_UNIFIED].num_queues) { in ac_query_gpu_info()
693 info->vcn_dec_version = (vidip_fw_version & 0x0F000000) >> 24; in ac_query_gpu_info()
694 info->vcn_enc_major_version = (vidip_fw_version & 0x00F00000) >> 20; in ac_query_gpu_info()
695 info->vcn_enc_minor_version = (vidip_fw_version & 0x000FF000) >> 12; in ac_query_gpu_info()
698 if (info->ip[AMD_IP_VCE].num_queues) { in ac_query_gpu_info()
704 info->vce_fw_version = vidip_fw_version; in ac_query_gpu_info()
707 if (info->ip[AMD_IP_UVD].num_queues) { in ac_query_gpu_info()
713 info->uvd_fw_version = vidip_fw_version; in ac_query_gpu_info()
717 r = ac_drm_query_sw_info(dev, amdgpu_sw_info_address32_hi, &info->address32_hi); in ac_query_gpu_info()
732 info->gart_size_kb = DIV_ROUND_UP(meminfo.gtt.total_heap_size, 1024); in ac_query_gpu_info()
733 info->vram_size_kb = DIV_ROUND_UP(fix_vram_size(meminfo.vram.total_heap_size), 1024); in ac_query_gpu_info()
734 info->vram_vis_size_kb = DIV_ROUND_UP(meminfo.cpu_accessible_vram.total_heap_size, 1024); in ac_query_gpu_info()
736 if (info->drm_minor >= 41) { in ac_query_gpu_info()
738 sizeof(info->dec_caps), &(info->dec_caps)); in ac_query_gpu_info()
740 sizeof(info->enc_caps), &(info->enc_caps)); in ac_query_gpu_info()
744 info->all_vram_visible = info->vram_size_kb * 0.9 < info->vram_vis_size_kb; in ac_query_gpu_info()
747 info->pci_id = device_info.device_id; in ac_query_gpu_info()
748 info->pci_rev_id = device_info.pci_rev; in ac_query_gpu_info()
749 info->vce_harvest_config = device_info.vce_harvest_config; in ac_query_gpu_info()
753 info->family = CHIP_##chipname; \ in ac_query_gpu_info()
754 info->name = #chipname; \ in ac_query_gpu_info()
758 if (!info->family_overridden) { in ac_query_gpu_info()
847 if (info->ip[AMD_IP_GFX].ver_major == 12 && info->ip[AMD_IP_GFX].ver_minor == 0) in ac_query_gpu_info()
848 info->gfx_level = GFX12; in ac_query_gpu_info()
849 else if (info->ip[AMD_IP_GFX].ver_major == 11 && info->ip[AMD_IP_GFX].ver_minor == 5) in ac_query_gpu_info()
850 info->gfx_level = GFX11_5; in ac_query_gpu_info()
851 else if (info->ip[AMD_IP_GFX].ver_major == 11 && info->ip[AMD_IP_GFX].ver_minor == 0) in ac_query_gpu_info()
852 info->gfx_level = GFX11; in ac_query_gpu_info()
853 else if (info->ip[AMD_IP_GFX].ver_major == 10 && info->ip[AMD_IP_GFX].ver_minor == 3) in ac_query_gpu_info()
854 info->gfx_level = GFX10_3; in ac_query_gpu_info()
855 else if (info->ip[AMD_IP_GFX].ver_major == 10 && info->ip[AMD_IP_GFX].ver_minor == 1) in ac_query_gpu_info()
856 info->gfx_level = GFX10; in ac_query_gpu_info()
857 else if (info->ip[AMD_IP_GFX].ver_major == 9 || info->ip[AMD_IP_COMPUTE].ver_major == 9) in ac_query_gpu_info()
858 info->gfx_level = GFX9; in ac_query_gpu_info()
859 else if (info->ip[AMD_IP_GFX].ver_major == 8) in ac_query_gpu_info()
860 info->gfx_level = GFX8; in ac_query_gpu_info()
861 else if (info->ip[AMD_IP_GFX].ver_major == 7) in ac_query_gpu_info()
862 info->gfx_level = GFX7; in ac_query_gpu_info()
863 else if (info->ip[AMD_IP_GFX].ver_major == 6) in ac_query_gpu_info()
864 info->gfx_level = GFX6; in ac_query_gpu_info()
867 info->ip[AMD_IP_GFX].ver_major, info->ip[AMD_IP_GFX].ver_minor); in ac_query_gpu_info()
871 info->family_id = device_info.family; in ac_query_gpu_info()
872 info->chip_external_rev = device_info.external_rev; in ac_query_gpu_info()
873 info->chip_rev = device_info.chip_rev; in ac_query_gpu_info()
874 info->marketing_name = ac_drm_get_marketing_name(dev); in ac_query_gpu_info()
875 info->is_pro_graphics = info->marketing_name && (strstr(info->marketing_name, "Pro") || in ac_query_gpu_info()
876 strstr(info->marketing_name, "PRO") || in ac_query_gpu_info()
877 strstr(info->marketing_name, "Frontier")); in ac_query_gpu_info()
880 if (!info->name) { in ac_query_gpu_info()
886 memset(info->lowercase_name, 0, sizeof(info->lowercase_name)); in ac_query_gpu_info()
887 for (unsigned i = 0; info->name[i] && i < ARRAY_SIZE(info->lowercase_name) - 1; i++) in ac_query_gpu_info()
888 info->lowercase_name[i] = tolower(info->name[i]); in ac_query_gpu_info()
892 UNUSED int _result = readlink(proc_fd, info->dev_filename, sizeof(info->dev_filename)); in ac_query_gpu_info()
897 if (!info->ip[i].num_queues) in ac_query_gpu_info()
900 switch(VCN_IP_VERSION(info->ip[i].ver_major, in ac_query_gpu_info()
901 info->ip[i].ver_minor, in ac_query_gpu_info()
902 info->ip[i].ver_rev)) { in ac_query_gpu_info()
904 info->vcn_ip_version = VCN_1_0_0; in ac_query_gpu_info()
907 info->vcn_ip_version = VCN_1_0_1; in ac_query_gpu_info()
910 info->vcn_ip_version = VCN_2_0_0; in ac_query_gpu_info()
913 info->vcn_ip_version = VCN_2_0_2; in ac_query_gpu_info()
916 info->vcn_ip_version = VCN_2_0_3; in ac_query_gpu_info()
919 info->vcn_ip_version = VCN_2_2_0; in ac_query_gpu_info()
922 info->vcn_ip_version = VCN_2_5_0; in ac_query_gpu_info()
925 info->vcn_ip_version = VCN_2_6_0; in ac_query_gpu_info()
931 info->vcn_ip_version = (info->family != CHIP_NAVI24) ? VCN_3_0_0 : VCN_3_0_33; in ac_query_gpu_info()
934 info->vcn_ip_version = VCN_3_0_2; in ac_query_gpu_info()
937 info->vcn_ip_version = VCN_3_0_16; in ac_query_gpu_info()
940 info->vcn_ip_version = VCN_3_0_33; in ac_query_gpu_info()
943 info->vcn_ip_version = VCN_3_1_1; in ac_query_gpu_info()
946 info->vcn_ip_version = VCN_3_1_2; in ac_query_gpu_info()
949 info->vcn_ip_version = VCN_4_0_0; in ac_query_gpu_info()
952 info->vcn_ip_version = VCN_4_0_2; in ac_query_gpu_info()
955 info->vcn_ip_version = VCN_4_0_3; in ac_query_gpu_info()
958 info->vcn_ip_version = VCN_4_0_4; in ac_query_gpu_info()
961 info->vcn_ip_version = VCN_4_0_5; in ac_query_gpu_info()
964 info->vcn_ip_version = VCN_4_0_6; in ac_query_gpu_info()
967 info->vcn_ip_version = VCN_5_0_0; in ac_query_gpu_info()
970 info->vcn_ip_version = VCN_5_0_1; in ac_query_gpu_info()
973 info->vcn_ip_version = VCN_UNKNOWN; in ac_query_gpu_info()
979 info->has_dedicated_vram = !(device_info.ids_flags & AMDGPU_IDS_FLAGS_FUSION); in ac_query_gpu_info()
984 if (info->has_dedicated_vram) in ac_query_gpu_info()
985 info->max_heap_size_kb = info->vram_size_kb; in ac_query_gpu_info()
987 info->max_heap_size_kb = info->gart_size_kb; in ac_query_gpu_info()
989 info->vram_type = device_info.vram_type; in ac_query_gpu_info()
990 info->memory_bus_width = device_info.vram_bit_width; in ac_query_gpu_info()
993 info->has_l2_uncached = info->gfx_level >= GFX9; in ac_query_gpu_info()
997 info->max_gpu_freq_mhz = device_info.max_engine_clock / 1000; in ac_query_gpu_info()
998 info->memory_freq_mhz_effective = info->memory_freq_mhz = device_info.max_memory_clock / 1000; in ac_query_gpu_info()
999 info->max_tcc_blocks = device_info.num_tcc_blocks; in ac_query_gpu_info()
1000 info->max_se = device_info.num_shader_engines; in ac_query_gpu_info()
1001 info->max_sa_per_se = device_info.num_shader_arrays_per_engine; in ac_query_gpu_info()
1002 info->num_cu_per_sh = device_info.num_cu_per_sh; in ac_query_gpu_info()
1003 info->enabled_rb_mask = device_info.enabled_rb_pipes_mask; in ac_query_gpu_info()
1004 if (info->drm_minor >= 52) in ac_query_gpu_info()
1005 info->enabled_rb_mask |= (uint64_t)device_info.enabled_rb_pipes_mask_hi << 32; in ac_query_gpu_info()
1007 info->memory_freq_mhz_effective *= ac_memory_ops_per_clock(info->vram_type); in ac_query_gpu_info()
1009 info->has_userptr = !info->is_virtio; in ac_query_gpu_info()
1010 info->has_syncobj = true; in ac_query_gpu_info()
1011 info->has_timeline_syncobj = !info->is_virtio && has_timeline_syncobj(fd); in ac_query_gpu_info()
1012 info->has_fence_to_handle = true; in ac_query_gpu_info()
1013 info->has_local_buffers = !info->is_virtio; in ac_query_gpu_info()
1014 info->has_bo_metadata = true; in ac_query_gpu_info()
1015 info->has_eqaa_surface_allocator = info->gfx_level < GFX11; in ac_query_gpu_info()
1019 info->has_sparse_vm_mappings = info->gfx_level >= GFX7; in ac_query_gpu_info()
1020 info->has_scheduled_fence_dependency = info->drm_minor >= 28; in ac_query_gpu_info()
1021 info->has_gang_submit = info->drm_minor >= 49; in ac_query_gpu_info()
1022 info->has_gpuvm_fault_query = info->drm_minor >= 55; in ac_query_gpu_info()
1023 info->has_tmz_support = has_tmz_support(dev, info, device_info.ids_flags); in ac_query_gpu_info()
1024 info->kernel_has_modifiers = has_modifiers(fd); in ac_query_gpu_info()
1025 info->uses_kernel_cu_mask = false; /* Not implemented in the kernel. */ in ac_query_gpu_info()
1026 info->has_graphics = info->ip[AMD_IP_GFX].num_queues > 0; in ac_query_gpu_info()
1032 info->has_trap_handler_support = info->gfx_level == GFX8; in ac_query_gpu_info()
1034 info->pa_sc_tile_steering_override = device_info.pa_sc_tile_steering_override; in ac_query_gpu_info()
1035 info->max_render_backends = device_info.num_rb_pipes; in ac_query_gpu_info()
1037 if (info->family == CHIP_KAVERI) in ac_query_gpu_info()
1038 info->max_render_backends = 2; in ac_query_gpu_info()
1040 info->clock_crystal_freq = device_info.gpu_counter_freq; in ac_query_gpu_info()
1041 if (!info->clock_crystal_freq) { in ac_query_gpu_info()
1043 info->clock_crystal_freq = 1; in ac_query_gpu_info()
1046 if (info->gfx_level >= GFX10) { in ac_query_gpu_info()
1047 info->tcc_cache_line_size = info->gfx_level >= GFX12 ? 256 : 128; in ac_query_gpu_info()
1049 if (info->drm_minor >= 35) { in ac_query_gpu_info()
1050info->num_tcc_blocks = info->max_tcc_blocks - util_bitcount64(device_info.tcc_disabled_mask); in ac_query_gpu_info()
1053 info->num_tcc_blocks = info->vram_size_kb / (512 * 1024); in ac_query_gpu_info()
1054 if (info->num_tcc_blocks > info->max_tcc_blocks) in ac_query_gpu_info()
1055 info->num_tcc_blocks /= 2; in ac_query_gpu_info()
1058 if (!info->has_graphics && info->family >= CHIP_MI200) in ac_query_gpu_info()
1059 info->tcc_cache_line_size = 128; in ac_query_gpu_info()
1061 info->tcc_cache_line_size = 64; in ac_query_gpu_info()
1063 info->num_tcc_blocks = info->max_tcc_blocks; in ac_query_gpu_info()
1066 info->tcc_rb_non_coherent = info->gfx_level < GFX12 && in ac_query_gpu_info()
1067 !util_is_power_of_two_or_zero(info->num_tcc_blocks) && in ac_query_gpu_info()
1068 info->num_rb != info->num_tcc_blocks; in ac_query_gpu_info()
1069 info->cp_sdma_ge_use_system_memory_scope = info->gfx_level == GFX12; in ac_query_gpu_info()
1070 info->cp_dma_use_L2 = info->gfx_level >= GFX7 && !info->cp_sdma_ge_use_system_memory_scope; in ac_query_gpu_info()
1072 if (info->drm_minor >= 52) { in ac_query_gpu_info()
1073 info->sqc_inst_cache_size = device_info.sqc_inst_cache_size * 1024; in ac_query_gpu_info()
1074 info->sqc_scalar_cache_size = device_info.sqc_data_cache_size * 1024; in ac_query_gpu_info()
1075 info->num_sqc_per_wgp = device_info.num_sqc_per_wgp; in ac_query_gpu_info()
1080 if (info->gfx_level >= GFX11 && info->drm_minor >= 52 && info->family != CHIP_NAVI33) { in ac_query_gpu_info()
1081 info->tcp_cache_size = device_info.tcp_cache_size * 1024; in ac_query_gpu_info()
1082 info->l1_cache_size = device_info.gl1c_cache_size * 1024; in ac_query_gpu_info()
1083 info->l2_cache_size = device_info.gl2c_cache_size * 1024; in ac_query_gpu_info()
1084 info->l3_cache_size_mb = DIV_ROUND_UP(device_info.mall_size, 1024 * 1024); in ac_query_gpu_info()
1086 if (info->gfx_level >= GFX11) { in ac_query_gpu_info()
1087 info->tcp_cache_size = 32768; in ac_query_gpu_info()
1088 info->l1_cache_size = 256 * 1024; in ac_query_gpu_info()
1090 info->tcp_cache_size = 16384; in ac_query_gpu_info()
1091 info->l1_cache_size = 128 * 1024; in ac_query_gpu_info()
1094 if (info->gfx_level >= GFX10_3 && info->has_dedicated_vram) { in ac_query_gpu_info()
1095 info->l3_cache_size_mb = info->num_tcc_blocks * in ac_query_gpu_info()
1096 (info->family == CHIP_NAVI21 || in ac_query_gpu_info()
1097 info->family == CHIP_NAVI22 ? 8 : 4); in ac_query_gpu_info()
1100 switch (info->family) { in ac_query_gpu_info()
1109 info->l2_cache_size = info->num_tcc_blocks * 64 * 1024; in ac_query_gpu_info()
1121 info->l2_cache_size = info->num_tcc_blocks * 128 * 1024; in ac_query_gpu_info()
1124 info->l2_cache_size = info->num_tcc_blocks * 256 * 1024; in ac_query_gpu_info()
1128 info->l2_cache_size = info->num_tcc_blocks * 512 * 1024; in ac_query_gpu_info()
1133 info->mc_arb_ramcfg = amdinfo.mc_arb_ramcfg; in ac_query_gpu_info()
1134 if (!info->family_overridden) in ac_query_gpu_info()
1135 info->gb_addr_config = amdinfo.gb_addr_cfg; in ac_query_gpu_info()
1136 if (info->gfx_level >= GFX9) { in ac_query_gpu_info()
1137 if (!info->has_graphics && info->family >= CHIP_GFX940) in ac_query_gpu_info()
1138 info->gb_addr_config = 0; in ac_query_gpu_info()
1140 info->num_tile_pipes = 1 << G_0098F8_NUM_PIPES(info->gb_addr_config); in ac_query_gpu_info()
1141 info->pipe_interleave_bytes = 256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX9(info->gb_addr_config); in ac_query_gpu_info()
1144 info->num_tile_pipes = ac_pipe_config_to_num_pipes(pipe_config); in ac_query_gpu_info()
1145 info->pipe_interleave_bytes = 256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX6(info->gb_addr_config); in ac_query_gpu_info()
1147 info->r600_has_virtual_memory = true; in ac_query_gpu_info()
1156 info->lds_size_per_workgroup = info->gfx_level >= GFX10 ? 128 * 1024 in ac_query_gpu_info()
1157 : info->gfx_level >= GFX7 ? 64 * 1024 in ac_query_gpu_info()
1163 info->lds_encode_granularity = info->gfx_level >= GFX7 ? 128 * 4 : 64 * 4; in ac_query_gpu_info()
1164info->lds_alloc_granularity = info->gfx_level >= GFX10_3 ? 256 * 4 : info->lds_encode_granularity; in ac_query_gpu_info()
1170 info->has_clear_state = info->gfx_level >= GFX7 && info->gfx_level < GFX12; in ac_query_gpu_info()
1172 info->has_distributed_tess = in ac_query_gpu_info()
1173 info->gfx_level >= GFX10 || (info->gfx_level >= GFX8 && info->max_se >= 2); in ac_query_gpu_info()
1175 info->has_dcc_constant_encode = in ac_query_gpu_info()
1176 info->family == CHIP_RAVEN2 || info->family == CHIP_RENOIR || info->gfx_level >= GFX10; in ac_query_gpu_info()
1184 info->has_tc_compatible_htile = info->gfx_level >= GFX8 && info->gfx_level < GFX12 && in ac_query_gpu_info()
1185 info->family != CHIP_TONGA && info->family != CHIP_ICELAND; in ac_query_gpu_info()
1187 info->has_etc_support = info->family == CHIP_STONEY || info->family == CHIP_VEGA10 || in ac_query_gpu_info()
1188 info->family == CHIP_RAVEN || info->family == CHIP_RAVEN2; in ac_query_gpu_info()
1190 info->has_rbplus = info->family == CHIP_STONEY || info->gfx_level >= GFX9; in ac_query_gpu_info()
1195 info->rbplus_allowed = in ac_query_gpu_info()
1196 info->has_rbplus && in ac_query_gpu_info()
1197 (info->family == CHIP_STONEY || info->family == CHIP_VEGA12 || info->family == CHIP_RAVEN || in ac_query_gpu_info()
1198 info->family == CHIP_RAVEN2 || info->family == CHIP_RENOIR || info->gfx_level >= GFX10_3); in ac_query_gpu_info()
1200 info->has_out_of_order_rast = in ac_query_gpu_info()
1201 info->gfx_level >= GFX8 && info->gfx_level <= GFX9 && info->max_se >= 2; in ac_query_gpu_info()
1204 info->has_packed_math_16bit = info->gfx_level >= GFX9; in ac_query_gpu_info()
1209 info->has_accelerated_dot_product = in ac_query_gpu_info()
1210 info->family == CHIP_VEGA20 || in ac_query_gpu_info()
1211 (info->family >= CHIP_MI100 && info->family != CHIP_NAVI10); in ac_query_gpu_info()
1214 info->has_load_ctx_reg_pkt = in ac_query_gpu_info()
1215 info->gfx_level >= GFX9 || (info->gfx_level >= GFX8 && info->me_fw_feature >= 41); in ac_query_gpu_info()
1217 info->cpdma_prefetch_writes_memory = info->gfx_level <= GFX8; in ac_query_gpu_info()
1219 info->has_gfx9_scissor_bug = info->family == CHIP_VEGA10 || info->family == CHIP_RAVEN; in ac_query_gpu_info()
1221 info->has_tc_compat_zrange_bug = info->gfx_level >= GFX8 && info->gfx_level <= GFX9; in ac_query_gpu_info()
1223 info->has_small_prim_filter_sample_loc_bug = in ac_query_gpu_info()
1224 (info->family >= CHIP_POLARIS10 && info->family <= CHIP_POLARIS12) || in ac_query_gpu_info()
1225 info->family == CHIP_VEGA10 || info->family == CHIP_RAVEN; in ac_query_gpu_info()
1227 info->has_ls_vgpr_init_bug = info->family == CHIP_VEGA10 || info->family == CHIP_RAVEN; in ac_query_gpu_info()
1232 info->has_pops_missed_overlap_bug = info->family == CHIP_VEGA10 || info->family == CHIP_RAVEN; in ac_query_gpu_info()
1237 info->has_null_index_buffer_clamping_bug = info->gfx_level == GFX6; in ac_query_gpu_info()
1240 info->has_zero_index_buffer_bug = info->gfx_level == GFX10; in ac_query_gpu_info()
1245 info->has_image_load_dcc_bug = info->family == CHIP_NAVI23 || in ac_query_gpu_info()
1246 info->family == CHIP_VANGOGH || in ac_query_gpu_info()
1247 info->family == CHIP_REMBRANDT; in ac_query_gpu_info()
1252 info->has_two_planes_iterate256_bug = info->gfx_level == GFX10; in ac_query_gpu_info()
1255 info->has_vgt_flush_ngg_legacy_bug = info->gfx_level == GFX10 || in ac_query_gpu_info()
1256 info->family == CHIP_NAVI21; in ac_query_gpu_info()
1261 info->has_vrs_ds_export_bug = info->family == CHIP_NAVI21 || in ac_query_gpu_info()
1262 info->family == CHIP_NAVI22 || in ac_query_gpu_info()
1263 info->family == CHIP_VANGOGH; in ac_query_gpu_info()
1273 info->has_cs_regalloc_hang_bug = info->gfx_level == GFX6 || in ac_query_gpu_info()
1274 info->family == CHIP_BONAIRE || in ac_query_gpu_info()
1275 info->family == CHIP_KABINI; in ac_query_gpu_info()
1281 info->has_async_compute_threadgroup_bug = info->family == CHIP_ICELAND || in ac_query_gpu_info()
1282 info->family == CHIP_TONGA; in ac_query_gpu_info()
1287 info->has_async_compute_align32_bug = info->gfx_level == GFX7; in ac_query_gpu_info()
1292 info->has_32bit_predication = (info->gfx_level >= GFX10 && in ac_query_gpu_info()
1293 info->me_fw_feature >= 32) || in ac_query_gpu_info()
1294 (info->gfx_level == GFX9 && in ac_query_gpu_info()
1295 info->me_fw_feature >= 52); in ac_query_gpu_info()
1300 info->has_taskmesh_indirect0_bug = info->gfx_level == GFX10_3 && in ac_query_gpu_info()
1301 info->mec_fw_version < 100; in ac_query_gpu_info()
1303 info->has_export_conflict_bug = info->gfx_level == GFX11; in ac_query_gpu_info()
1309 info->needs_llvm_wait_wa = info->gfx_level == GFX11; in ac_query_gpu_info()
1312 info->sdma_ip_version = in ac_query_gpu_info()
1313 (enum sdma_version)SDMA_VERSION_VALUE(info->ip[AMD_IP_SDMA].ver_major, in ac_query_gpu_info()
1314 info->ip[AMD_IP_SDMA].ver_minor); in ac_query_gpu_info()
1317 info->sdma_supports_sparse = info->sdma_ip_version >= SDMA_4_0; in ac_query_gpu_info()
1320info->sdma_supports_compression = info->sdma_ip_version >= SDMA_5_0 && info->family != CHIP_NAVI10; in ac_query_gpu_info()
1323 info->num_cu = 0; in ac_query_gpu_info()
1324 for (i = 0; i < info->max_se; i++) { in ac_query_gpu_info()
1325 for (j = 0; j < info->max_sa_per_se; j++) { in ac_query_gpu_info()
1326 if (info->gfx_level >= GFX11) { in ac_query_gpu_info()
1327 assert(info->max_sa_per_se <= 2); in ac_query_gpu_info()
1328 info->cu_mask[i][j] = device_info.cu_bitmap[i % 4][(i / 4) * 2 + j]; in ac_query_gpu_info()
1329 } else if (info->family == CHIP_MI100) { in ac_query_gpu_info()
1330 /* The CU bitmap in amd gpu info structure is in ac_query_gpu_info()
1341 assert(info->max_sa_per_se == 1); in ac_query_gpu_info()
1342 info->cu_mask[i][0] = device_info.cu_bitmap[i % 4][i / 4]; in ac_query_gpu_info()
1344 info->cu_mask[i][j] = device_info.cu_bitmap[i][j]; in ac_query_gpu_info()
1346 info->num_cu += util_bitcount(info->cu_mask[i][j]); in ac_query_gpu_info()
1350 if (info->gfx_level >= GFX10_3 && info->max_se > 1) { in ac_query_gpu_info()
1354 for (unsigned se = 0; se < info->max_se; se++) { in ac_query_gpu_info()
1355 for (unsigned sa = 0; sa < info->max_sa_per_se; sa++) { in ac_query_gpu_info()
1356 if (info->cu_mask[se][sa]) { in ac_query_gpu_info()
1362 info->num_se = util_bitcount(enabled_se_mask); in ac_query_gpu_info()
1367 if (info->gfx_level >= GFX12) { in ac_query_gpu_info()
1368 unsigned num_rb_per_se = info->max_render_backends / info->max_se; in ac_query_gpu_info()
1370 for (unsigned se = 0; se < info->max_se; se++) { in ac_query_gpu_info()
1372 info->enabled_rb_mask &= ~(BITFIELD_MASK(num_rb_per_se) << (se * num_rb_per_se)); in ac_query_gpu_info()
1377 info->num_se = info->max_se; in ac_query_gpu_info()
1380 info->num_rb = util_bitcount64(info->enabled_rb_mask); in ac_query_gpu_info()
1385 unsigned cu_group = info->gfx_level >= GFX10 ? 2 : 1; in ac_query_gpu_info()
1386 info->max_good_cu_per_sa = in ac_query_gpu_info()
1387 DIV_ROUND_UP(info->num_cu, (info->num_se * info->max_sa_per_se * cu_group)) * in ac_query_gpu_info()
1389 info->min_good_cu_per_sa = in ac_query_gpu_info()
1390 (info->num_cu / (info->num_se * info->max_sa_per_se * cu_group)) * cu_group; in ac_query_gpu_info()
1392 if (!info->family_overridden) in ac_query_gpu_info()
1393 memcpy(info->si_tile_mode_array, amdinfo.gb_tile_mode, sizeof(amdinfo.gb_tile_mode)); in ac_query_gpu_info()
1395 memcpy(info->cik_macrotile_mode_array, amdinfo.gb_macro_tile_mode, in ac_query_gpu_info()
1398 info->pte_fragment_size = device_info.pte_fragment_size; in ac_query_gpu_info()
1399 info->gart_page_size = device_info.gart_page_size; in ac_query_gpu_info()
1401 info->gfx_ib_pad_with_type2 = info->gfx_level == GFX6; in ac_query_gpu_info()
1403 info->has_cp_dma = info->has_graphics || info->family < CHIP_GFX940; in ac_query_gpu_info()
1405 if (info->gfx_level >= GFX11 && info->gfx_level < GFX12) { in ac_query_gpu_info()
1409 info->use_display_dcc_with_retile_blit = info->num_cu >= 4; in ac_query_gpu_info()
1410 } else if (info->gfx_level == GFX10_3) { in ac_query_gpu_info()
1415 info->use_display_dcc_with_retile_blit = info->num_cu > 4; in ac_query_gpu_info()
1416 } else if (info->gfx_level == GFX9 && !info->has_dedicated_vram && in ac_query_gpu_info()
1417 info->drm_minor >= 31) { in ac_query_gpu_info()
1418 if (info->max_render_backends == 1) { in ac_query_gpu_info()
1419 info->use_display_dcc_unaligned = true; in ac_query_gpu_info()
1422 info->use_display_dcc_with_retile_blit = info->num_cu > 4; in ac_query_gpu_info()
1426 info->has_stable_pstate = info->drm_minor >= 45; in ac_query_gpu_info()
1428 if (info->gfx_level >= GFX12) { in ac_query_gpu_info()
1430 } else if (info->gfx_level >= GFX11) { in ac_query_gpu_info()
1431 info->pc_lines = 1024; in ac_query_gpu_info()
1432 info->pbb_max_alloc_count = 16; /* minimum is 2, maximum is 256 */ in ac_query_gpu_info()
1433 } else if (info->gfx_level >= GFX9 && info->has_graphics) { in ac_query_gpu_info()
1436 switch (info->family) { in ac_query_gpu_info()
1465 info->pc_lines = pc_lines; in ac_query_gpu_info()
1467 if (info->gfx_level >= GFX10) { in ac_query_gpu_info()
1468 info->pbb_max_alloc_count = pc_lines / 3; in ac_query_gpu_info()
1470 info->pbb_max_alloc_count = MIN2(128, pc_lines / (4 * info->max_se)); in ac_query_gpu_info()
1474 if (info->gfx_level >= GFX10_3) in ac_query_gpu_info()
1475 info->max_waves_per_simd = 16; in ac_query_gpu_info()
1476 else if (info->gfx_level == GFX10) in ac_query_gpu_info()
1477 info->max_waves_per_simd = 20; in ac_query_gpu_info()
1478 else if (info->family >= CHIP_POLARIS10 && info->family <= CHIP_VEGAM) in ac_query_gpu_info()
1479 info->max_waves_per_simd = 8; in ac_query_gpu_info()
1481 info->max_waves_per_simd = 10; in ac_query_gpu_info()
1483 if (info->gfx_level >= GFX10) { in ac_query_gpu_info()
1484 info->num_physical_sgprs_per_simd = 128 * info->max_waves_per_simd; in ac_query_gpu_info()
1485 info->min_sgpr_alloc = 128; in ac_query_gpu_info()
1486 info->sgpr_alloc_granularity = 128; in ac_query_gpu_info()
1487 } else if (info->gfx_level >= GFX8) { in ac_query_gpu_info()
1488 info->num_physical_sgprs_per_simd = 800; in ac_query_gpu_info()
1489 info->min_sgpr_alloc = 16; in ac_query_gpu_info()
1490 info->sgpr_alloc_granularity = 16; in ac_query_gpu_info()
1492 info->num_physical_sgprs_per_simd = 512; in ac_query_gpu_info()
1493 info->min_sgpr_alloc = 8; in ac_query_gpu_info()
1494 info->sgpr_alloc_granularity = 8; in ac_query_gpu_info()
1497 info->has_3d_cube_border_color_mipmap = info->has_graphics || info->family == CHIP_MI100; in ac_query_gpu_info()
1498 info->has_image_opcodes = debug_get_bool_option("AMD_IMAGE_OPCODES", in ac_query_gpu_info()
1499info->has_graphics || info->family < CHIP_GFX940); in ac_query_gpu_info()
1500 info->never_stop_sq_perf_counters = info->gfx_level == GFX10 || in ac_query_gpu_info()
1501 info->gfx_level == GFX10_3; in ac_query_gpu_info()
1502 info->never_send_perfcounter_stop = info->gfx_level == GFX11; in ac_query_gpu_info()
1503 info->has_sqtt_rb_harvest_bug = (info->family == CHIP_NAVI23 || in ac_query_gpu_info()
1504 info->family == CHIP_NAVI24 || in ac_query_gpu_info()
1505 info->family == CHIP_REMBRANDT || in ac_query_gpu_info()
1506 info->family == CHIP_VANGOGH) && in ac_query_gpu_info()
1507 util_bitcount64(info->enabled_rb_mask) != in ac_query_gpu_info()
1508 info->max_render_backends; in ac_query_gpu_info()
1511 info->has_sqtt_auto_flush_mode_bug = info->gfx_level == GFX10_3; in ac_query_gpu_info()
1513 info->max_sgpr_alloc = info->family == CHIP_TONGA || info->family == CHIP_ICELAND ? 96 : 104; in ac_query_gpu_info()
1515 if (!info->has_graphics && info->family >= CHIP_MI200) { in ac_query_gpu_info()
1516 info->min_wave64_vgpr_alloc = 8; in ac_query_gpu_info()
1517 info->max_vgpr_alloc = 512; in ac_query_gpu_info()
1518 info->wave64_vgpr_alloc_granularity = 8; in ac_query_gpu_info()
1520 info->min_wave64_vgpr_alloc = 4; in ac_query_gpu_info()
1521 info->max_vgpr_alloc = 256; in ac_query_gpu_info()
1522 info->wave64_vgpr_alloc_granularity = 4; in ac_query_gpu_info()
1525 /* Some GPU info was broken before DRM 3.45.0. */ in ac_query_gpu_info()
1526 if (info->drm_minor >= 45 && device_info.num_shader_visible_vgprs) { in ac_query_gpu_info()
1530 if (info->gfx_level >= GFX10) in ac_query_gpu_info()
1531 info->num_physical_wave64_vgprs_per_simd = device_info.num_shader_visible_vgprs / 2; in ac_query_gpu_info()
1533 info->num_physical_wave64_vgprs_per_simd = device_info.num_shader_visible_vgprs; in ac_query_gpu_info()
1534 } else if (info->gfx_level >= GFX10) { in ac_query_gpu_info()
1535 info->num_physical_wave64_vgprs_per_simd = 512; in ac_query_gpu_info()
1537 info->num_physical_wave64_vgprs_per_simd = 256; in ac_query_gpu_info()
1540 info->num_simd_per_compute_unit = info->gfx_level >= GFX10 ? 2 : 4; in ac_query_gpu_info()
1545 info->discardable_allows_big_page = info->gfx_level >= GFX10_3 && info->gfx_level < GFX12 && in ac_query_gpu_info()
1546 info->has_dedicated_vram && in ac_query_gpu_info()
1547 info->drm_minor >= 47; in ac_query_gpu_info()
1555info->max_scratch_waves = MAX2(32 * info->min_good_cu_per_sa * info->max_sa_per_se * info->num_se, in ac_query_gpu_info()
1557 info->has_scratch_base_registers = info->gfx_level >= GFX11 || in ac_query_gpu_info()
1558 (!info->has_graphics && info->family >= CHIP_GFX940); in ac_query_gpu_info()
1559info->max_gflops = (info->gfx_level >= GFX11 ? 256 : 128) * info->num_cu * info->max_gpu_freq_mhz … in ac_query_gpu_info()
1560info->memory_bandwidth_gbps = DIV_ROUND_UP(info->memory_freq_mhz_effective * info->memory_bus_widt… in ac_query_gpu_info()
1561 info->has_pcie_bandwidth_info = info->drm_minor >= 51; in ac_query_gpu_info()
1563 if (info->has_pcie_bandwidth_info) { in ac_query_gpu_info()
1564 info->pcie_gen = device_info.pcie_gen; in ac_query_gpu_info()
1565 info->pcie_num_lanes = device_info.pcie_num_lanes; in ac_query_gpu_info()
1568 switch (info->pcie_gen) { in ac_query_gpu_info()
1570 info->pcie_bandwidth_mbps = info->pcie_num_lanes * 0.25 * 1024; in ac_query_gpu_info()
1573 info->pcie_bandwidth_mbps = info->pcie_num_lanes * 0.5 * 1024; in ac_query_gpu_info()
1576 info->pcie_bandwidth_mbps = info->pcie_num_lanes * 0.985 * 1024; in ac_query_gpu_info()
1579 info->pcie_bandwidth_mbps = info->pcie_num_lanes * 1.969 * 1024; in ac_query_gpu_info()
1582 info->pcie_bandwidth_mbps = info->pcie_num_lanes * 3.938 * 1024; in ac_query_gpu_info()
1585 info->pcie_bandwidth_mbps = info->pcie_num_lanes * 7.563 * 1024; in ac_query_gpu_info()
1588 info->pcie_bandwidth_mbps = info->pcie_num_lanes * 15.125 * 1024; in ac_query_gpu_info()
1599 sizeof(info->max_submitted_ibs), info->max_submitted_ibs); in ac_query_gpu_info()
1605 info->max_submitted_ibs[i] = 50; in ac_query_gpu_info()
1607 info->max_submitted_ibs[AMD_IP_GFX] = info->gfx_level >= GFX7 ? 192 : 144; in ac_query_gpu_info()
1608 info->max_submitted_ibs[AMD_IP_COMPUTE] = 124; in ac_query_gpu_info()
1609 info->max_submitted_ibs[AMD_IP_VCN_JPEG] = 16; in ac_query_gpu_info()
1612 if (!info->ip[i].num_queues) in ac_query_gpu_info()
1613 info->max_submitted_ibs[i] = 0; in ac_query_gpu_info()
1617 if (info->gfx_level >= GFX11) { in ac_query_gpu_info()
1620 if (info->gfx_level >= GFX12) { in ac_query_gpu_info()
1621 info->attribute_ring_size_per_se = 1024 * 1024; in ac_query_gpu_info()
1624 } else if (info->l3_cache_size_mb || info->family_overridden) { in ac_query_gpu_info()
1625 info->attribute_ring_size_per_se = 1400 * 1024; in ac_query_gpu_info()
1627 assert(info->num_se == 1); in ac_query_gpu_info()
1629 if (info->l2_cache_size >= 2 * 1024 * 1024) in ac_query_gpu_info()
1630 info->attribute_ring_size_per_se = 768 * 1024; in ac_query_gpu_info()
1632 info->attribute_ring_size_per_se = info->l2_cache_size / 2; in ac_query_gpu_info()
1636 info->attribute_ring_size_per_se = align(info->attribute_ring_size_per_se, 64 * 1024); in ac_query_gpu_info()
1637 assert(info->attribute_ring_size_per_se * info->max_se <= 16 * 1024 * 1024); in ac_query_gpu_info()
1640 info->pos_ring_size_per_se = align(num_pos_exports * 16, 32); in ac_query_gpu_info()
1641 info->prim_ring_size_per_se = align(num_prim_exports * 4, 32); in ac_query_gpu_info()
1642 assert(info->gfx_level >= GFX12 || in ac_query_gpu_info()
1643 (!info->pos_ring_size_per_se && !info->prim_ring_size_per_se)); in ac_query_gpu_info()
1645 uint32_t max_se_squared = info->max_se * info->max_se; in ac_query_gpu_info()
1646 uint32_t attribute_ring_size = info->attribute_ring_size_per_se * info->max_se; in ac_query_gpu_info()
1647 uint32_t pos_ring_size = align(info->pos_ring_size_per_se * max_se_squared, 64 * 1024); in ac_query_gpu_info()
1648 uint32_t prim_ring_size = align(info->prim_ring_size_per_se * max_se_squared, 64 * 1024); in ac_query_gpu_info()
1650 info->pos_ring_offset = attribute_ring_size; in ac_query_gpu_info()
1651 info->prim_ring_offset = info->pos_ring_offset + pos_ring_size; in ac_query_gpu_info()
1652 info->total_attribute_pos_prim_ring_size = info->prim_ring_offset + prim_ring_size; in ac_query_gpu_info()
1654 info->conformant_trunc_coord = in ac_query_gpu_info()
1655 info->drm_minor >= 52 && in ac_query_gpu_info()
1659 if (info->gfx_level >= GFX11 && debug_get_bool_option("AMD_USERQ", false)) { in ac_query_gpu_info()
1668 info->has_fw_based_shadowing = true; in ac_query_gpu_info()
1669 info->fw_based_mcbp.shadow_size = fw_info.gfx.shadow_size; in ac_query_gpu_info()
1670 info->fw_based_mcbp.shadow_alignment = fw_info.gfx.shadow_alignment; in ac_query_gpu_info()
1671 info->fw_based_mcbp.csa_size = fw_info.gfx.csa_size; in ac_query_gpu_info()
1672 info->fw_based_mcbp.csa_alignment = fw_info.gfx.csa_alignment; in ac_query_gpu_info()
1673 } else if (info->gfx_level >= GFX11 && device_info.shadow_size > 0) { in ac_query_gpu_info()
1674 info->has_fw_based_shadowing = true; in ac_query_gpu_info()
1675 info->fw_based_mcbp.shadow_size = device_info.shadow_size; in ac_query_gpu_info()
1676 info->fw_based_mcbp.shadow_alignment = device_info.shadow_alignment; in ac_query_gpu_info()
1677 info->fw_based_mcbp.csa_size = device_info.csa_size; in ac_query_gpu_info()
1678 info->fw_based_mcbp.csa_alignment = device_info.csa_alignment; in ac_query_gpu_info()
1682 info->register_shadowing_required = device_info.ids_flags & AMDGPU_IDS_FLAGS_PREEMPTION && in ac_query_gpu_info()
1683 info->gfx_level < GFX11; in ac_query_gpu_info()
1685 if (info->gfx_level >= GFX12) { in ac_query_gpu_info()
1686 info->has_set_context_pairs = true; in ac_query_gpu_info()
1687 info->has_set_sh_pairs = true; in ac_query_gpu_info()
1688 info->has_set_uconfig_pairs = true; in ac_query_gpu_info()
1689 } else if (info->gfx_level >= GFX11 && info->has_dedicated_vram) { in ac_query_gpu_info()
1690 info->has_set_context_pairs_packed = true; in ac_query_gpu_info()
1691 info->has_set_sh_pairs_packed = info->register_shadowing_required; in ac_query_gpu_info()
1694 set_custom_cu_en_mask(info); in ac_query_gpu_info()
1716 .gfx_level = info->gfx_level, in ac_query_gpu_info()
1717 .family = info->family, in ac_query_gpu_info()
1739 void ac_compute_device_uuid(const struct radeon_info *info, char *uuid, size_t size) in ac_compute_device_uuid() argument
1746 * Use the device info directly instead of using a sha1. GL/VK UUIDs in ac_compute_device_uuid()
1751 if (!info->pci.valid) { in ac_compute_device_uuid()
1753 "ac_compute_device_uuid's output is based on invalid pci bus info.\n"); in ac_compute_device_uuid()
1755 uint_uuid[0] = info->pci.domain; in ac_compute_device_uuid()
1756 uint_uuid[1] = info->pci.bus; in ac_compute_device_uuid()
1757 uint_uuid[2] = info->pci.dev; in ac_compute_device_uuid()
1758 uint_uuid[3] = info->pci.func; in ac_compute_device_uuid()
1761 void ac_print_gpu_info(const struct radeon_info *info, FILE *f) in ac_print_gpu_info() argument
1763 fprintf(f, "Device info:\n"); in ac_print_gpu_info()
1764 fprintf(f, " name = %s\n", info->name); in ac_print_gpu_info()
1765 fprintf(f, " marketing_name = %s\n", info->marketing_name); in ac_print_gpu_info()
1766 fprintf(f, " dev_filename = %s\n", info->dev_filename); in ac_print_gpu_info()
1767 fprintf(f, " num_se = %i\n", info->num_se); in ac_print_gpu_info()
1768 fprintf(f, " num_rb = %i\n", info->num_rb); in ac_print_gpu_info()
1769 fprintf(f, " num_cu = %i\n", info->num_cu); in ac_print_gpu_info()
1770 fprintf(f, " max_gpu_freq = %i MHz\n", info->max_gpu_freq_mhz); in ac_print_gpu_info()
1771 fprintf(f, " max_gflops = %u GFLOPS\n", info->max_gflops); in ac_print_gpu_info()
1773 if (info->sqc_inst_cache_size) { in ac_print_gpu_info()
1775 DIV_ROUND_UP(info->sqc_inst_cache_size, 1024), info->num_sqc_per_wgp); in ac_print_gpu_info()
1777 if (info->sqc_scalar_cache_size) { in ac_print_gpu_info()
1779 DIV_ROUND_UP(info->sqc_scalar_cache_size, 1024), info->num_sqc_per_wgp); in ac_print_gpu_info()
1782 fprintf(f, " tcp_cache_size = %i KB\n", DIV_ROUND_UP(info->tcp_cache_size, 1024)); in ac_print_gpu_info()
1784 if (info->gfx_level >= GFX10 && info->gfx_level < GFX12) in ac_print_gpu_info()
1785 fprintf(f, " l1_cache_size = %i KB\n", DIV_ROUND_UP(info->l1_cache_size, 1024)); in ac_print_gpu_info()
1787 fprintf(f, " l2_cache_size = %i KB\n", DIV_ROUND_UP(info->l2_cache_size, 1024)); in ac_print_gpu_info()
1789 if (info->l3_cache_size_mb) in ac_print_gpu_info()
1790 fprintf(f, " l3_cache_size = %i MB\n", info->l3_cache_size_mb); in ac_print_gpu_info()
1792 fprintf(f, " memory_channels = %u (TCC blocks)\n", info->num_tcc_blocks); in ac_print_gpu_info()
1794 DIV_ROUND_UP(info->vram_size_kb, (1024 * 1024)), in ac_print_gpu_info()
1795 DIV_ROUND_UP(info->vram_size_kb, 1024)); in ac_print_gpu_info()
1796 fprintf(f, " memory_freq = %u GHz\n", DIV_ROUND_UP(info->memory_freq_mhz_effective, 1000)); in ac_print_gpu_info()
1797 fprintf(f, " memory_bus_width = %u bits\n", info->memory_bus_width); in ac_print_gpu_info()
1798 fprintf(f, " memory_bandwidth = %u GB/s\n", info->memory_bandwidth_gbps); in ac_print_gpu_info()
1799 fprintf(f, " pcie_gen = %u\n", info->pcie_gen); in ac_print_gpu_info()
1800 fprintf(f, " pcie_num_lanes = %u\n", info->pcie_num_lanes); in ac_print_gpu_info()
1801 fprintf(f, " pcie_bandwidth = %1.1f GB/s\n", info->pcie_bandwidth_mbps / 1024.0); in ac_print_gpu_info()
1802 fprintf(f, " clock_crystal_freq = %i KHz\n", info->clock_crystal_freq); in ac_print_gpu_info()
1805 if (info->ip[i].num_queues) { in ac_print_gpu_info()
1807 ac_get_ip_type_string(info, i), in ac_print_gpu_info()
1808 info->ip[i].ver_major, info->ip[i].ver_minor, info->ip[i].num_queues, in ac_print_gpu_info()
1809 info->ip[i].ib_alignment, info->ip[i].ib_pad_dw_mask); in ac_print_gpu_info()
1814 if (info->pci.valid) in ac_print_gpu_info()
1815 … fprintf(f, " pci (domain:bus:dev.func): %04x:%02x:%02x.%x\n", info->pci.domain, info->pci.bus, in ac_print_gpu_info()
1816 info->pci.dev, info->pci.func); in ac_print_gpu_info()
1819 fprintf(f, " pci_id = 0x%x\n", info->pci_id); in ac_print_gpu_info()
1820 fprintf(f, " pci_rev_id = 0x%x\n", info->pci_rev_id); in ac_print_gpu_info()
1821 fprintf(f, " family = %i\n", info->family); in ac_print_gpu_info()
1822 fprintf(f, " gfx_level = %i\n", info->gfx_level); in ac_print_gpu_info()
1823 fprintf(f, " family_id = %i\n", info->family_id); in ac_print_gpu_info()
1824 fprintf(f, " chip_external_rev = %i\n", info->chip_external_rev); in ac_print_gpu_info()
1825 fprintf(f, " chip_rev = %i\n", info->chip_rev); in ac_print_gpu_info()
1828 fprintf(f, " family_overridden = %u\n", info->family_overridden); in ac_print_gpu_info()
1829 fprintf(f, " is_pro_graphics = %u\n", info->is_pro_graphics); in ac_print_gpu_info()
1830 fprintf(f, " has_graphics = %i\n", info->has_graphics); in ac_print_gpu_info()
1831 fprintf(f, " has_clear_state = %u\n", info->has_clear_state); in ac_print_gpu_info()
1832 fprintf(f, " has_distributed_tess = %u\n", info->has_distributed_tess); in ac_print_gpu_info()
1833 fprintf(f, " has_dcc_constant_encode = %u\n", info->has_dcc_constant_encode); in ac_print_gpu_info()
1834 fprintf(f, " has_rbplus = %u\n", info->has_rbplus); in ac_print_gpu_info()
1835 fprintf(f, " rbplus_allowed = %u\n", info->rbplus_allowed); in ac_print_gpu_info()
1836 fprintf(f, " has_load_ctx_reg_pkt = %u\n", info->has_load_ctx_reg_pkt); in ac_print_gpu_info()
1837 fprintf(f, " has_out_of_order_rast = %u\n", info->has_out_of_order_rast); in ac_print_gpu_info()
1838 fprintf(f, " cpdma_prefetch_writes_memory = %u\n", info->cpdma_prefetch_writes_memory); in ac_print_gpu_info()
1839 fprintf(f, " has_gfx9_scissor_bug = %i\n", info->has_gfx9_scissor_bug); in ac_print_gpu_info()
1840 fprintf(f, " has_tc_compat_zrange_bug = %i\n", info->has_tc_compat_zrange_bug); in ac_print_gpu_info()
1841 …fprintf(f, " has_small_prim_filter_sample_loc_bug = %i\n", info->has_small_prim_filter_sample_l… in ac_print_gpu_info()
1842 fprintf(f, " has_ls_vgpr_init_bug = %i\n", info->has_ls_vgpr_init_bug); in ac_print_gpu_info()
1843 fprintf(f, " has_pops_missed_overlap_bug = %i\n", info->has_pops_missed_overlap_bug); in ac_print_gpu_info()
1844 fprintf(f, " has_32bit_predication = %i\n", info->has_32bit_predication); in ac_print_gpu_info()
1845 fprintf(f, " has_3d_cube_border_color_mipmap = %i\n", info->has_3d_cube_border_color_mipmap); in ac_print_gpu_info()
1846 fprintf(f, " has_image_opcodes = %i\n", info->has_image_opcodes); in ac_print_gpu_info()
1847 fprintf(f, " never_stop_sq_perf_counters = %i\n", info->never_stop_sq_perf_counters); in ac_print_gpu_info()
1848 fprintf(f, " has_sqtt_rb_harvest_bug = %i\n", info->has_sqtt_rb_harvest_bug); in ac_print_gpu_info()
1849 fprintf(f, " has_sqtt_auto_flush_mode_bug = %i\n", info->has_sqtt_auto_flush_mode_bug); in ac_print_gpu_info()
1850 fprintf(f, " never_send_perfcounter_stop = %i\n", info->never_send_perfcounter_stop); in ac_print_gpu_info()
1851 fprintf(f, " discardable_allows_big_page = %i\n", info->discardable_allows_big_page); in ac_print_gpu_info()
1852 fprintf(f, " has_taskmesh_indirect0_bug = %i\n", info->has_taskmesh_indirect0_bug); in ac_print_gpu_info()
1853 fprintf(f, " has_set_context_pairs = %i\n", info->has_set_context_pairs); in ac_print_gpu_info()
1854 fprintf(f, " has_set_context_pairs_packed = %i\n", info->has_set_context_pairs_packed); in ac_print_gpu_info()
1855 fprintf(f, " has_set_sh_pairs = %i\n", info->has_set_sh_pairs); in ac_print_gpu_info()
1856 fprintf(f, " has_set_sh_pairs_packed = %i\n", info->has_set_sh_pairs_packed); in ac_print_gpu_info()
1857 fprintf(f, " has_set_uconfig_pairs = %i\n", info->has_set_uconfig_pairs); in ac_print_gpu_info()
1858 fprintf(f, " conformant_trunc_coord = %i\n", info->conformant_trunc_coord); in ac_print_gpu_info()
1860 if (info->gfx_level < GFX12) { in ac_print_gpu_info()
1862 fprintf(f, " use_display_dcc_unaligned = %u\n", info->use_display_dcc_unaligned); in ac_print_gpu_info()
1863 … fprintf(f, " use_display_dcc_with_retile_blit = %u\n", info->use_display_dcc_with_retile_blit); in ac_print_gpu_info()
1866 fprintf(f, "Memory info:\n"); in ac_print_gpu_info()
1867 fprintf(f, " pte_fragment_size = %u\n", info->pte_fragment_size); in ac_print_gpu_info()
1868 fprintf(f, " gart_page_size = %u\n", info->gart_page_size); in ac_print_gpu_info()
1869 fprintf(f, " gart_size = %i MB\n", (int)DIV_ROUND_UP(info->gart_size_kb, 1024)); in ac_print_gpu_info()
1870 fprintf(f, " vram_size = %i MB\n", (int)DIV_ROUND_UP(info->vram_size_kb, 1024)); in ac_print_gpu_info()
1871 fprintf(f, " vram_vis_size = %i MB\n", (int)DIV_ROUND_UP(info->vram_vis_size_kb, 1024)); in ac_print_gpu_info()
1872 fprintf(f, " vram_type = %i\n", info->vram_type); in ac_print_gpu_info()
1873 fprintf(f, " max_heap_size_kb = %i MB\n", (int)DIV_ROUND_UP(info->max_heap_size_kb, 1024)); in ac_print_gpu_info()
1874 fprintf(f, " min_alloc_size = %u\n", info->min_alloc_size); in ac_print_gpu_info()
1875 fprintf(f, " address32_hi = 0x%x\n", info->address32_hi); in ac_print_gpu_info()
1876 fprintf(f, " has_dedicated_vram = %u\n", info->has_dedicated_vram); in ac_print_gpu_info()
1877 fprintf(f, " all_vram_visible = %u\n", info->all_vram_visible); in ac_print_gpu_info()
1878 fprintf(f, " max_tcc_blocks = %i\n", info->max_tcc_blocks); in ac_print_gpu_info()
1879 fprintf(f, " tcc_cache_line_size = %u\n", info->tcc_cache_line_size); in ac_print_gpu_info()
1880 fprintf(f, " tcc_rb_non_coherent = %u\n", info->tcc_rb_non_coherent); in ac_print_gpu_info()
1881 …fprintf(f, " cp_sdma_ge_use_system_memory_scope = %u\n", info->cp_sdma_ge_use_system_memory_sco… in ac_print_gpu_info()
1882 fprintf(f, " pc_lines = %u\n", info->pc_lines); in ac_print_gpu_info()
1883 fprintf(f, " lds_size_per_workgroup = %u\n", info->lds_size_per_workgroup); in ac_print_gpu_info()
1884 fprintf(f, " lds_alloc_granularity = %i\n", info->lds_alloc_granularity); in ac_print_gpu_info()
1885 fprintf(f, " lds_encode_granularity = %i\n", info->lds_encode_granularity); in ac_print_gpu_info()
1886 fprintf(f, " max_memory_clock = %i MHz\n", info->memory_freq_mhz); in ac_print_gpu_info()
1888 fprintf(f, "CP info:\n"); in ac_print_gpu_info()
1889 fprintf(f, " gfx_ib_pad_with_type2 = %i\n", info->gfx_ib_pad_with_type2); in ac_print_gpu_info()
1890 fprintf(f, " has_cp_dma = %i\n", info->has_cp_dma); in ac_print_gpu_info()
1891 fprintf(f, " me_fw_version = %i\n", info->me_fw_version); in ac_print_gpu_info()
1892 fprintf(f, " me_fw_feature = %i\n", info->me_fw_feature); in ac_print_gpu_info()
1893 fprintf(f, " mec_fw_version = %i\n", info->mec_fw_version); in ac_print_gpu_info()
1894 fprintf(f, " mec_fw_feature = %i\n", info->mec_fw_feature); in ac_print_gpu_info()
1895 fprintf(f, " pfp_fw_version = %i\n", info->pfp_fw_version); in ac_print_gpu_info()
1896 fprintf(f, " pfp_fw_feature = %i\n", info->pfp_fw_feature); in ac_print_gpu_info()
1898 fprintf(f, "Multimedia info:\n"); in ac_print_gpu_info()
1899 if (info->ip[AMD_IP_VCN_DEC].num_queues || info->ip[AMD_IP_VCN_UNIFIED].num_queues) { in ac_print_gpu_info()
1900 if (info->family >= CHIP_NAVI31 || info->family == CHIP_GFX940) in ac_print_gpu_info()
1901 fprintf(f, " vcn_unified = %u\n", info->ip[AMD_IP_VCN_UNIFIED].num_instances); in ac_print_gpu_info()
1903 fprintf(f, " vcn_decode = %u\n", info->ip[AMD_IP_VCN_DEC].num_instances); in ac_print_gpu_info()
1904 fprintf(f, " vcn_encode = %u\n", info->ip[AMD_IP_VCN_ENC].num_instances); in ac_print_gpu_info()
1906 fprintf(f, " vcn_enc_major_version = %u\n", info->vcn_enc_major_version); in ac_print_gpu_info()
1907 fprintf(f, " vcn_enc_minor_version = %u\n", info->vcn_enc_minor_version); in ac_print_gpu_info()
1908 fprintf(f, " vcn_dec_version = %u\n", info->vcn_dec_version); in ac_print_gpu_info()
1909 } else if (info->ip[AMD_IP_VCE].num_queues) { in ac_print_gpu_info()
1910 fprintf(f, " vce_encode = %u\n", info->ip[AMD_IP_VCE].num_queues); in ac_print_gpu_info()
1911 fprintf(f, " vce_fw_version = %u\n", info->vce_fw_version); in ac_print_gpu_info()
1912 fprintf(f, " vce_harvest_config = %i\n", info->vce_harvest_config); in ac_print_gpu_info()
1913 } else if (info->ip[AMD_IP_UVD].num_queues) in ac_print_gpu_info()
1914 fprintf(f, " uvd_fw_version = %u\n", info->uvd_fw_version); in ac_print_gpu_info()
1916 if (info->ip[AMD_IP_VCN_JPEG].num_queues) in ac_print_gpu_info()
1917 fprintf(f, " jpeg_decode = %u\n", info->ip[AMD_IP_VCN_JPEG].num_instances); in ac_print_gpu_info()
1919 if ((info->drm_minor >= 41) && in ac_print_gpu_info()
1920 (info->ip[AMD_IP_VCN_DEC].num_queues || info->ip[AMD_IP_VCN_UNIFIED].num_queues in ac_print_gpu_info()
1921 || info->ip[AMD_IP_VCE].num_queues || info->ip[AMD_IP_UVD].num_queues)) { in ac_print_gpu_info()
1936 if (info->dec_caps.codec_info[i].valid) in ac_print_gpu_info()
1937 sprintf(max_res_dec, "%ux%u", info->dec_caps.codec_info[i].max_width, in ac_print_gpu_info()
1938 info->dec_caps.codec_info[i].max_height); in ac_print_gpu_info()
1941 if (info->enc_caps.codec_info[i].valid) in ac_print_gpu_info()
1942 sprintf(max_res_enc, "%ux%u", info->enc_caps.codec_info[i].max_width, in ac_print_gpu_info()
1943 info->enc_caps.codec_info[i].max_height); in ac_print_gpu_info()
1947 info->dec_caps.codec_info[i].valid ? "*" : "-", max_res_dec, in ac_print_gpu_info()
1948 info->enc_caps.codec_info[i].valid ? "*" : "-", max_res_enc); in ac_print_gpu_info()
1953 fprintf(f, " drm = %i.%i.%i\n", info->drm_major, info->drm_minor, info->drm_patchlevel); in ac_print_gpu_info()
1954 fprintf(f, " has_userptr = %i\n", info->has_userptr); in ac_print_gpu_info()
1955 fprintf(f, " has_timeline_syncobj = %u\n", info->has_timeline_syncobj); in ac_print_gpu_info()
1956 fprintf(f, " has_local_buffers = %u\n", info->has_local_buffers); in ac_print_gpu_info()
1957 fprintf(f, " has_bo_metadata = %u\n", info->has_bo_metadata); in ac_print_gpu_info()
1958 fprintf(f, " has_eqaa_surface_allocator = %u\n", info->has_eqaa_surface_allocator); in ac_print_gpu_info()
1959 fprintf(f, " has_sparse_vm_mappings = %u\n", info->has_sparse_vm_mappings); in ac_print_gpu_info()
1960 fprintf(f, " has_stable_pstate = %u\n", info->has_stable_pstate); in ac_print_gpu_info()
1961 fprintf(f, " has_scheduled_fence_dependency = %u\n", info->has_scheduled_fence_dependency); in ac_print_gpu_info()
1962 fprintf(f, " has_gang_submit = %u\n", info->has_gang_submit); in ac_print_gpu_info()
1963 fprintf(f, " has_gpuvm_fault_query = %u\n", info->has_gpuvm_fault_query); in ac_print_gpu_info()
1964 fprintf(f, " register_shadowing_required = %u\n", info->register_shadowing_required); in ac_print_gpu_info()
1965 fprintf(f, " has_fw_based_shadowing = %u\n", info->has_fw_based_shadowing); in ac_print_gpu_info()
1966 if (info->has_fw_based_shadowing) { in ac_print_gpu_info()
1968 info->fw_based_mcbp.shadow_size, in ac_print_gpu_info()
1969 info->fw_based_mcbp.shadow_alignment); in ac_print_gpu_info()
1971 info->fw_based_mcbp.csa_size, in ac_print_gpu_info()
1972 info->fw_based_mcbp.csa_alignment); in ac_print_gpu_info()
1975 fprintf(f, " has_tmz_support = %u\n", info->has_tmz_support); in ac_print_gpu_info()
1976 fprintf(f, " has_trap_handler_support = %u\n", info->has_trap_handler_support); in ac_print_gpu_info()
1978 if (info->max_submitted_ibs[i]) { in ac_print_gpu_info()
1979 fprintf(f, " IP %-7s max_submitted_ibs = %u\n", ac_get_ip_type_string(info, i), in ac_print_gpu_info()
1980 info->max_submitted_ibs[i]); in ac_print_gpu_info()
1983 fprintf(f, " kernel_has_modifiers = %u\n", info->kernel_has_modifiers); in ac_print_gpu_info()
1984 fprintf(f, " uses_kernel_cu_mask = %u\n", info->uses_kernel_cu_mask); in ac_print_gpu_info()
1986 fprintf(f, "Shader core info:\n"); in ac_print_gpu_info()
1987 for (unsigned i = 0; i < info->max_se; i++) { in ac_print_gpu_info()
1988 for (unsigned j = 0; j < info->max_sa_per_se; j++) { in ac_print_gpu_info()
1990 info->cu_mask[i][j], util_bitcount(info->cu_mask[i][j]), in ac_print_gpu_info()
1991 info->spi_cu_en & BITFIELD_MASK(util_bitcount(info->cu_mask[i][j]))); in ac_print_gpu_info()
1994 fprintf(f, " spi_cu_en_has_effect = %i\n", info->spi_cu_en_has_effect); in ac_print_gpu_info()
1995 fprintf(f, " max_good_cu_per_sa = %i\n", info->max_good_cu_per_sa); in ac_print_gpu_info()
1996 fprintf(f, " min_good_cu_per_sa = %i\n", info->min_good_cu_per_sa); in ac_print_gpu_info()
1997 fprintf(f, " max_se = %i\n", info->max_se); in ac_print_gpu_info()
1998 fprintf(f, " max_sa_per_se = %i\n", info->max_sa_per_se); in ac_print_gpu_info()
1999 fprintf(f, " num_cu_per_sh = %i\n", info->num_cu_per_sh); in ac_print_gpu_info()
2000 fprintf(f, " max_waves_per_simd = %i\n", info->max_waves_per_simd); in ac_print_gpu_info()
2001 fprintf(f, " num_physical_sgprs_per_simd = %i\n", info->num_physical_sgprs_per_simd); in ac_print_gpu_info()
2003 info->num_physical_wave64_vgprs_per_simd); in ac_print_gpu_info()
2004 fprintf(f, " num_simd_per_compute_unit = %i\n", info->num_simd_per_compute_unit); in ac_print_gpu_info()
2005 fprintf(f, " min_sgpr_alloc = %i\n", info->min_sgpr_alloc); in ac_print_gpu_info()
2006 fprintf(f, " max_sgpr_alloc = %i\n", info->max_sgpr_alloc); in ac_print_gpu_info()
2007 fprintf(f, " sgpr_alloc_granularity = %i\n", info->sgpr_alloc_granularity); in ac_print_gpu_info()
2008 fprintf(f, " min_wave64_vgpr_alloc = %i\n", info->min_wave64_vgpr_alloc); in ac_print_gpu_info()
2009 fprintf(f, " max_vgpr_alloc = %i\n", info->max_vgpr_alloc); in ac_print_gpu_info()
2010 fprintf(f, " wave64_vgpr_alloc_granularity = %i\n", info->wave64_vgpr_alloc_granularity); in ac_print_gpu_info()
2011 fprintf(f, " max_scratch_waves = %i\n", info->max_scratch_waves); in ac_print_gpu_info()
2012 fprintf(f, " has_scratch_base_registers = %i\n", info->has_scratch_base_registers); in ac_print_gpu_info()
2013 fprintf(f, "Ring info:\n"); in ac_print_gpu_info()
2015 DIV_ROUND_UP(info->attribute_ring_size_per_se, 1024)); in ac_print_gpu_info()
2016 if (info->gfx_level >= GFX12) { in ac_print_gpu_info()
2017 … fprintf(f, " pos_ring_size_per_se = %u KB\n", DIV_ROUND_UP(info->pos_ring_size_per_se, 1024)); in ac_print_gpu_info()
2018 …fprintf(f, " prim_ring_size_per_se = %u KB\n", DIV_ROUND_UP(info->prim_ring_size_per_se, 1024)); in ac_print_gpu_info()
2021 DIV_ROUND_UP(info->total_attribute_pos_prim_ring_size, 1024)); in ac_print_gpu_info()
2023 fprintf(f, "Render backend info:\n"); in ac_print_gpu_info()
2024 fprintf(f, " pa_sc_tile_steering_override = 0x%x\n", info->pa_sc_tile_steering_override); in ac_print_gpu_info()
2025 fprintf(f, " max_render_backends = %i\n", info->max_render_backends); in ac_print_gpu_info()
2026 fprintf(f, " num_tile_pipes = %i\n", info->num_tile_pipes); in ac_print_gpu_info()
2027 fprintf(f, " pipe_interleave_bytes = %i\n", info->pipe_interleave_bytes); in ac_print_gpu_info()
2028 fprintf(f, " enabled_rb_mask = 0x%" PRIx64 "\n", info->enabled_rb_mask); in ac_print_gpu_info()
2029 fprintf(f, " max_alignment = %u\n", (unsigned)info->max_alignment); in ac_print_gpu_info()
2030 fprintf(f, " pbb_max_alloc_count = %u\n", info->pbb_max_alloc_count); in ac_print_gpu_info()
2032 fprintf(f, "GB_ADDR_CONFIG: 0x%08x\n", info->gb_addr_config); in ac_print_gpu_info()
2033 if (info->gfx_level >= GFX12) { in ac_print_gpu_info()
2034 fprintf(f, " num_pipes = %u\n", 1 << G_0098F8_NUM_PIPES(info->gb_addr_config)); in ac_print_gpu_info()
2036 256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX9(info->gb_addr_config)); in ac_print_gpu_info()
2037 fprintf(f, " num_pkrs = %u\n", 1 << G_0098F8_NUM_PKRS(info->gb_addr_config)); in ac_print_gpu_info()
2038 } else if (info->gfx_level >= GFX10) { in ac_print_gpu_info()
2039 fprintf(f, " num_pipes = %u\n", 1 << G_0098F8_NUM_PIPES(info->gb_addr_config)); in ac_print_gpu_info()
2041 256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX9(info->gb_addr_config)); in ac_print_gpu_info()
2043 1 << G_0098F8_MAX_COMPRESSED_FRAGS(info->gb_addr_config)); in ac_print_gpu_info()
2044 if (info->gfx_level >= GFX10_3) in ac_print_gpu_info()
2045 fprintf(f, " num_pkrs = %u\n", 1 << G_0098F8_NUM_PKRS(info->gb_addr_config)); in ac_print_gpu_info()
2046 } else if (info->gfx_level == GFX9) { in ac_print_gpu_info()
2047 fprintf(f, " num_pipes = %u\n", 1 << G_0098F8_NUM_PIPES(info->gb_addr_config)); in ac_print_gpu_info()
2049 256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX9(info->gb_addr_config)); in ac_print_gpu_info()
2051 1 << G_0098F8_MAX_COMPRESSED_FRAGS(info->gb_addr_config)); in ac_print_gpu_info()
2053 1 << G_0098F8_BANK_INTERLEAVE_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2054 fprintf(f, " num_banks = %u\n", 1 << G_0098F8_NUM_BANKS(info->gb_addr_config)); in ac_print_gpu_info()
2056 16 << G_0098F8_SHADER_ENGINE_TILE_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2058 1 << G_0098F8_NUM_SHADER_ENGINES_GFX9(info->gb_addr_config)); in ac_print_gpu_info()
2059 fprintf(f, " num_gpus = %u (raw)\n", G_0098F8_NUM_GPUS_GFX9(info->gb_addr_config)); in ac_print_gpu_info()
2061 G_0098F8_MULTI_GPU_TILE_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2062 fprintf(f, " num_rb_per_se = %u\n", 1 << G_0098F8_NUM_RB_PER_SE(info->gb_addr_config)); in ac_print_gpu_info()
2063 fprintf(f, " row_size = %u\n", 1024 << G_0098F8_ROW_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2064 … fprintf(f, " num_lower_pipes = %u (raw)\n", G_0098F8_NUM_LOWER_PIPES(info->gb_addr_config)); in ac_print_gpu_info()
2065 fprintf(f, " se_enable = %u (raw)\n", G_0098F8_SE_ENABLE(info->gb_addr_config)); in ac_print_gpu_info()
2067 fprintf(f, " num_pipes = %u\n", 1 << G_0098F8_NUM_PIPES(info->gb_addr_config)); in ac_print_gpu_info()
2069 256 << G_0098F8_PIPE_INTERLEAVE_SIZE_GFX6(info->gb_addr_config)); in ac_print_gpu_info()
2071 1 << G_0098F8_BANK_INTERLEAVE_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2073 1 << G_0098F8_NUM_SHADER_ENGINES_GFX6(info->gb_addr_config)); in ac_print_gpu_info()
2075 16 << G_0098F8_SHADER_ENGINE_TILE_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2076 fprintf(f, " num_gpus = %u (raw)\n", G_0098F8_NUM_GPUS_GFX6(info->gb_addr_config)); in ac_print_gpu_info()
2078 G_0098F8_MULTI_GPU_TILE_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2079 fprintf(f, " row_size = %u\n", 1024 << G_0098F8_ROW_SIZE(info->gb_addr_config)); in ac_print_gpu_info()
2080 … fprintf(f, " num_lower_pipes = %u (raw)\n", G_0098F8_NUM_LOWER_PIPES(info->gb_addr_config)); in ac_print_gpu_info()
2091 if (ac_get_supported_modifiers(info, &modifier_options, PIPE_FORMAT_R8G8B8A8_UNORM, in ac_print_gpu_info()
2136 void ac_get_raster_config(const struct radeon_info *info, uint32_t *raster_config_p, in ac_get_raster_config() argument
2141 switch (info->family) { in ac_get_raster_config()
2202 if (info->family == CHIP_KAVERI && !info->is_amdgpu) in ac_get_raster_config()
2208 if (info->family == CHIP_FIJI && info->cik_macrotile_mode_array[0] == 0x000000e8) { in ac_get_raster_config()
2217 se_tile_repeat = MAX2(se_width, se_height) * info->max_se; in ac_get_raster_config()
2225 void ac_get_harvested_configs(const struct radeon_info *info, unsigned raster_config, in ac_get_harvested_configs() argument
2228 unsigned sh_per_se = MAX2(info->max_sa_per_se, 1); in ac_get_harvested_configs()
2229 unsigned num_se = MAX2(info->max_se, 1); in ac_get_harvested_configs()
2230 unsigned rb_mask = info->enabled_rb_mask; in ac_get_harvested_configs()
2231 unsigned num_rb = MIN2(info->max_render_backends, 16); in ac_get_harvested_configs()
2246 if (info->gfx_level >= GFX7) { in ac_get_harvested_configs()
2324 ac_get_compute_resource_limits(const struct radeon_info *info, unsigned waves_per_threadgroup, in ac_get_compute_resource_limits() argument
2329 if (info->gfx_level >= GFX7) { in ac_get_compute_resource_limits()
2330 unsigned num_cu_per_se = info->num_cu / info->num_se; in ac_get_compute_resource_limits()
2333 if (info->gfx_level == GFX9 && !max_waves_per_sh) { in ac_get_compute_resource_limits()
2334 max_waves_per_sh = info->max_good_cu_per_sa * info->num_simd_per_compute_unit * in ac_get_compute_resource_limits()
2335 info->max_waves_per_simd; in ac_get_compute_resource_limits()
2339 if (info->gfx_level >= GFX12) in ac_get_compute_resource_limits()
2340 max_waves_per_sh *= info->max_sa_per_se; in ac_get_compute_resource_limits()
2362 void ac_get_hs_info(const struct radeon_info *info, in ac_get_hs_info() argument
2365 bool double_offchip_buffers = info->gfx_level >= GFX7 && in ac_get_hs_info()
2366 info->family != CHIP_CARRIZO && in ac_get_hs_info()
2367 info->family != CHIP_STONEY; in ac_get_hs_info()
2374 info->family == CHIP_HAWAII ? 4096 : 8192; in ac_get_hs_info()
2388 if (info->gfx_level >= GFX11) { in ac_get_hs_info()
2390 } else if (info->gfx_level >= GFX10) { in ac_get_hs_info()
2392 } else if (info->family == CHIP_VEGA12 || info->family == CHIP_VEGA20) { in ac_get_hs_info()
2399 max_offchip_buffers = max_offchip_buffers_per_se * info->max_se; in ac_get_hs_info()
2405 assert(info->family == CHIP_HAWAII); in ac_get_hs_info()
2412 switch (info->gfx_level) { in ac_get_hs_info()
2429 if (info->gfx_level >= GFX11) { in ac_get_hs_info()
2433 } else if (info->gfx_level >= GFX10_3) { in ac_get_hs_info()
2436 } else if (info->gfx_level >= GFX7) { in ac_get_hs_info()
2437 if (info->gfx_level >= GFX8) in ac_get_hs_info()
2447 hs->tess_factor_ring_size = 48 * 1024 * info->max_se; in ac_get_hs_info()
2477 void ac_get_task_info(const struct radeon_info *info, in ac_get_task_info() argument
2480 const uint16_t num_entries = get_task_num_entries(info->family); in ac_get_task_info()
2516 uint32_t ac_gfx103_get_cu_mask_ps(const struct radeon_info *info) in ac_gfx103_get_cu_mask_ps() argument
2525 return u_bit_consecutive(0, info->min_good_cu_per_sa); in ac_gfx103_get_cu_mask_ps()