From b02b43eef16ab83447ef1a645681c7b2007f0672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 27 Jul 2023 12:46:47 -0400 Subject: [PATCH] ac/gpu_info: add the /dev/dri/ filename into radeon_info Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/amd/common/ac_gpu_info.c | 10 ++++++++++ src/amd/common/ac_gpu_info.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index 2636ebf83c3..509c79f1758 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -324,10 +324,15 @@ static const char *amdgpu_get_marketing_name(amdgpu_device_handle dev) { return NULL; } +static intptr_t readlink(const char *path, char *buf, size_t bufsiz) +{ + return -1; +} #else #include "drm-uapi/amdgpu_drm.h" #include #include +#include #endif #define CIK_TILE_MODE_COLOR_2D 14 @@ -820,6 +825,10 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info) for (unsigned i = 0; info->name[i] && i < ARRAY_SIZE(info->lowercase_name) - 1; i++) info->lowercase_name[i] = tolower(info->name[i]); + char proc_fd[64]; + snprintf(proc_fd, sizeof(proc_fd), "/proc/self/fd/%u", fd); + UNUSED int _result = readlink(proc_fd, info->dev_filename, sizeof(info->dev_filename)); + if (info->ip[AMD_IP_GFX].ver_major == 11) info->gfx_level = GFX11; else if (info->ip[AMD_IP_GFX].ver_major == 10 && info->ip[AMD_IP_GFX].ver_minor == 3) @@ -1593,6 +1602,7 @@ void ac_print_gpu_info(const struct radeon_info *info, FILE *f) fprintf(f, "Device info:\n"); fprintf(f, " name = %s\n", info->name); fprintf(f, " marketing_name = %s\n", info->marketing_name); + fprintf(f, " dev_filename = %s\n", info->dev_filename); fprintf(f, " num_se = %i\n", info->num_se); fprintf(f, " num_rb = %i\n", info->num_rb); fprintf(f, " num_cu = %i\n", info->num_cu); diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h index 8f79698d72b..0ab58fa951a 100644 --- a/src/amd/common/ac_gpu_info.h +++ b/src/amd/common/ac_gpu_info.h @@ -32,6 +32,7 @@ struct radeon_info { const char *name; char lowercase_name[32]; const char *marketing_name; + char dev_filename[32]; uint32_t num_se; /* only enabled SEs */ uint32_t num_rb; /* only enabled RBs */ uint32_t num_cu; /* only enabled CUs */