Revert "ac: don't call ac_query_pci_bus_info from ac_query_gpu_info"

This reverts commit a48642400b.

Instead, add a new parameter require_pci_bus_info to control the behavior.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24759>
This commit is contained in:
Marek Olšák
2023-08-13 17:33:47 -04:00
committed by Marge Bot
parent b02b43eef1
commit 5d19a0a19b
4 changed files with 12 additions and 11 deletions

View File

@@ -547,7 +547,7 @@ static void set_custom_cu_en_mask(struct radeon_info *info)
} }
} }
bool ac_query_pci_bus_info(int fd, struct radeon_info *info) static bool ac_query_pci_bus_info(int fd, struct radeon_info *info)
{ {
drmDevicePtr devinfo; drmDevicePtr devinfo;
@@ -568,7 +568,8 @@ bool ac_query_pci_bus_info(int fd, struct radeon_info *info)
return true; return true;
} }
bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info) bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info,
bool require_pci_bus_info)
{ {
struct amdgpu_gpu_info amdinfo; struct amdgpu_gpu_info amdinfo;
struct drm_amdgpu_info_device device_info = {0}; struct drm_amdgpu_info_device device_info = {0};
@@ -587,6 +588,11 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info)
STATIC_ASSERT(AMDGPU_HW_IP_VCN_ENC == AMD_IP_VCN_ENC); STATIC_ASSERT(AMDGPU_HW_IP_VCN_ENC == AMD_IP_VCN_ENC);
STATIC_ASSERT(AMDGPU_HW_IP_VCN_JPEG == AMD_IP_VCN_JPEG); STATIC_ASSERT(AMDGPU_HW_IP_VCN_JPEG == AMD_IP_VCN_JPEG);
if (!ac_query_pci_bus_info(fd, info)) {
if (require_pci_bus_info)
return false;
}
assert(info->drm_major == 3); assert(info->drm_major == 3);
info->is_amdgpu = true; info->is_amdgpu = true;

View File

@@ -274,8 +274,8 @@ struct radeon_info {
bool has_fw_based_shadowing; bool has_fw_based_shadowing;
}; };
bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info); bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info,
bool ac_query_pci_bus_info(int fd, struct radeon_info *info); bool require_pci_bus_info);
void ac_compute_driver_uuid(char *uuid, size_t size); void ac_compute_driver_uuid(char *uuid, size_t size);

View File

@@ -42,7 +42,7 @@
static bool static bool
do_winsys_init(struct radv_amdgpu_winsys *ws, int fd) do_winsys_init(struct radv_amdgpu_winsys *ws, int fd)
{ {
if (!ac_query_gpu_info(fd, ws->dev, &ws->info)) if (!ac_query_gpu_info(fd, ws->dev, &ws->info, true))
return false; return false;
/* /*
@@ -57,9 +57,6 @@ do_winsys_init(struct radv_amdgpu_winsys *ws, int fd)
for (enum amd_ip_type ip_type = AMD_IP_UVD; ip_type <= AMD_IP_VCN_ENC; ip_type++) for (enum amd_ip_type ip_type = AMD_IP_UVD; ip_type <= AMD_IP_VCN_ENC; ip_type++)
ws->info.max_submitted_ibs[ip_type] = 1; ws->info.max_submitted_ibs[ip_type] = 1;
if (!ac_query_pci_bus_info(fd, &ws->info))
return false;
if (ws->info.drm_minor < 27) { if (ws->info.drm_minor < 27) {
fprintf(stderr, "radv/amdgpu: DRM 3.27+ is required (Linux kernel 4.20+)\n"); fprintf(stderr, "radv/amdgpu: DRM 3.27+ is required (Linux kernel 4.20+)\n");
return false; return false;

View File

@@ -75,11 +75,9 @@ static bool do_winsys_init(struct amdgpu_winsys *ws,
const struct pipe_screen_config *config, const struct pipe_screen_config *config,
int fd) int fd)
{ {
if (!ac_query_gpu_info(fd, ws->dev, &ws->info)) if (!ac_query_gpu_info(fd, ws->dev, &ws->info, false))
goto fail; goto fail;
ac_query_pci_bus_info(fd, &ws->info);
/* TODO: Enable this once the kernel handles it efficiently. */ /* TODO: Enable this once the kernel handles it efficiently. */
if (ws->info.has_dedicated_vram) if (ws->info.has_dedicated_vram)
ws->info.has_local_buffers = false; ws->info.has_local_buffers = false;