From 5116388e0ba98f080de91e37249e195421e78c0b Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 24 Sep 2021 12:28:31 -0700 Subject: [PATCH] turnip: Expose a device name similar to the blob. We add "Turnip" so that users (and vulkan.gpuinfo.org) can distinguish us without requiring VK_KHR_driver_properties. This will be a lot more user-friendly than "FD618", though. I made some little vk_asprintf helpers, because I figure other drivers setting up deviceName's will want them too. Part-of: --- src/freedreno/ci/gitlab-ci.yml | 5 +++-- src/freedreno/vulkan/tu_device.c | 13 ++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/freedreno/ci/gitlab-ci.yml b/src/freedreno/ci/gitlab-ci.yml index df3f0a83711..02a39621ba3 100644 --- a/src/freedreno/ci/gitlab-ci.yml +++ b/src/freedreno/ci/gitlab-ci.yml @@ -24,6 +24,7 @@ variables: DEQP_VER: vk VK_DRIVER: freedreno + DEQP_EXPECTED_RENDERER: "Turnip Adreno (TM) 630" MESA_VK_IGNORE_CONFORMANCE_WARNING: 1 .freedreno-test-traces: @@ -163,8 +164,8 @@ a630_gles_asan: a630_vk: extends: - - .baremetal-deqp-test-freedreno-vk - .a630-test + - .baremetal-deqp-test-freedreno-vk parallel: 3 variables: DEQP_VER: vk @@ -183,8 +184,8 @@ a630_vk_full: # Clicking play can show you some useful areas for fixing turnip, though. a630_vk_asan: extends: - - .baremetal-deqp-test-freedreno-vk - .a630-test + - .baremetal-deqp-test-freedreno-vk - .baremetal-arm64-asan-test - .test-manual variables: diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index 9976d4f1ba1..855409db3ee 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -202,7 +202,16 @@ tu_physical_device_init(struct tu_physical_device *device, { VkResult result = VK_SUCCESS; - device->name = fd_dev_name(&device->dev_id); + const char *fd_name = fd_dev_name(&device->dev_id); + if (strncmp(fd_name, "FD", 2) == 0) { + device->name = vk_asprintf(&instance->vk.alloc, + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE, + "Turnip Adreno (TM) %s", &fd_name[2]); + } else { + device->name = vk_strdup(&instance->vk.alloc, fd_name, + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE); + + } const struct fd_dev_info *info = fd_dev_info(&device->dev_id); if (!info) { @@ -277,6 +286,8 @@ tu_physical_device_finish(struct tu_physical_device *device) if (device->master_fd != -1) close(device->master_fd); + vk_free(&device->instance->vk.alloc, (void *)device->name); + vk_physical_device_finish(&device->vk); }