From 7c7722304b40df20380b5decbd533ab7a700690c Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 8 Jul 2021 11:35:31 -0700 Subject: [PATCH] freedreno+turnip: Get device name from device-info table Signed-off-by: Rob Clark Part-of: --- src/freedreno/common/freedreno_dev_info.c | 11 +++++ src/freedreno/common/freedreno_dev_info.h | 2 + src/freedreno/common/freedreno_devices.py | 47 +++++++++++-------- src/freedreno/vulkan/tu_device.c | 3 +- src/freedreno/vulkan/tu_private.h | 2 +- .../drivers/freedreno/freedreno_screen.c | 4 +- 6 files changed, 43 insertions(+), 26 deletions(-) diff --git a/src/freedreno/common/freedreno_dev_info.c b/src/freedreno/common/freedreno_dev_info.c index 6e04d7ebde4..4334cb9570c 100644 --- a/src/freedreno/common/freedreno_dev_info.c +++ b/src/freedreno/common/freedreno_dev_info.c @@ -38,3 +38,14 @@ fd_dev_info(uint32_t gpu_id) } return NULL; } + +const char * +fd_dev_name(uint32_t gpu_id) +{ + for (int i = 0; i < fd_dev_ids_count; i++) { + if (gpu_id == fd_dev_ids[i].gpu_id) { + return fd_dev_ids[i].name; + } + } + return NULL; +} diff --git a/src/freedreno/common/freedreno_dev_info.h b/src/freedreno/common/freedreno_dev_info.h index d87fb0d8b55..c61506dc672 100644 --- a/src/freedreno/common/freedreno_dev_info.h +++ b/src/freedreno/common/freedreno_dev_info.h @@ -107,6 +107,7 @@ struct fd_dev_info { struct fd_dev_id { uint32_t gpu_id; + const char *name; const struct fd_dev_info *info; }; @@ -122,6 +123,7 @@ struct fd_dev_id { #define A6XX_CCU_GMEM_COLOR_SIZE (16 * 1024) const struct fd_dev_info * fd_dev_info(uint32_t gpu_id); +const char * fd_dev_name(uint32_t gpu_id); #ifdef __cplusplus } /* end of extern "C" */ diff --git a/src/freedreno/common/freedreno_devices.py b/src/freedreno/common/freedreno_devices.py index 08cfc7b6262..119598aef79 100644 --- a/src/freedreno/common/freedreno_devices.py +++ b/src/freedreno/common/freedreno_devices.py @@ -51,6 +51,13 @@ def add_gpus(ids, info): for id in ids: s.gpus[id] = info +class GPUId(object): + def __init__(self, gpu_id, name=None): + self.gpu_id = gpu_id + if name == None: + name = "FD%d" % gpu_id + self.name = name + class Struct(object): """A helper class that stringifies itself to a 'C' struct initializer """ @@ -123,10 +130,10 @@ class A6xxGPUInfo(GPUInfo): # a2xx is really two sub-generations, a20x and a22x, but we don't currently # capture that in the device-info tables add_gpus([ - 200, - 201, - 205, - 220, + GPUId(200), + GPUId(201), + GPUId(205), + GPUId(220), ], GPUInfo( gmem_align_w = 32, gmem_align_h = 32, tile_align_w = 32, tile_align_h = 32, @@ -136,10 +143,10 @@ add_gpus([ )) add_gpus([ - 305, - 307, - 320, - 330, + GPUId(305), + GPUId(307), + GPUId(320), + GPUId(330), ], GPUInfo( gmem_align_w = 32, gmem_align_h = 32, tile_align_w = 32, tile_align_h = 32, @@ -149,9 +156,9 @@ add_gpus([ )) add_gpus([ - 405, - 420, - 430, + GPUId(405), + GPUId(420), + GPUId(430), ], GPUInfo( gmem_align_w = 32, gmem_align_h = 32, tile_align_w = 32, tile_align_h = 32, @@ -161,9 +168,9 @@ add_gpus([ )) add_gpus([ - 510, - 530, - 540, + GPUId(510), + GPUId(530), + GPUId(540), ], GPUInfo( gmem_align_w = 64, gmem_align_h = 32, tile_align_w = 64, tile_align_h = 32, @@ -206,8 +213,8 @@ a6xx_gen3 = dict( ) add_gpus([ - 615, - 618, + GPUId(615), + GPUId(618), ], A6xxGPUInfo( a6xx_gen1, num_sp_cores = 1, @@ -218,7 +225,7 @@ add_gpus([ )) add_gpus([ - 630, + GPUId(630), ], A6xxGPUInfo( a6xx_gen1, num_sp_cores = 2, @@ -229,7 +236,7 @@ add_gpus([ )) add_gpus([ - 640, + GPUId(640), ], A6xxGPUInfo( a6xx_gen2, num_sp_cores = 2, @@ -240,7 +247,7 @@ add_gpus([ )) add_gpus([ - 650, + GPUId(650), ], A6xxGPUInfo( a6xx_gen3, num_sp_cores = 3, @@ -285,7 +292,7 @@ static const struct fd_dev_info __info${s.info_index(info)} = ${str(info)}; const struct fd_dev_id fd_dev_ids[] = { %for id, info in s.gpus.items(): - { ${id}, &__info${s.info_index(info)} }, + { ${id.gpu_id}, "${id.name}", &__info${s.info_index(info)} }, %endfor }; const unsigned fd_dev_ids_count = ${len(s.gpus)}; diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index 7651ca0e489..3db44572d74 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -192,8 +192,7 @@ tu_physical_device_init(struct tu_physical_device *device, { VkResult result = VK_SUCCESS; - memset(device->name, 0, sizeof(device->name)); - sprintf(device->name, "FD%d", device->gpu_id); + device->name = fd_dev_name(device->gpu_id); const struct fd_dev_info *info = fd_dev_info(device->gpu_id); if (!info) { diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h index 514d28b701a..683eeb89725 100644 --- a/src/freedreno/vulkan/tu_private.h +++ b/src/freedreno/vulkan/tu_private.h @@ -194,7 +194,7 @@ struct tu_physical_device struct tu_instance *instance; - char name[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; + const char *name; uint8_t driver_uuid[VK_UUID_SIZE]; uint8_t device_uuid[VK_UUID_SIZE]; uint8_t cache_uuid[VK_UUID_SIZE]; diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index 26fe62eae30..2e589facea7 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -107,9 +107,7 @@ bool fd_binning_enabled = true; static const char * fd_screen_get_name(struct pipe_screen *pscreen) { - static char buffer[128]; - snprintf(buffer, sizeof(buffer), "FD%03d", fd_screen(pscreen)->device_id); - return buffer; + return fd_dev_name(fd_screen(pscreen)->gpu_id); } static const char *