Mesa (main): vulkan/device_select: force default device if environment variable set

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 28 08:36:20 UTC 2022


Module: Mesa
Branch: main
Commit: 09e4fd1d84b045da640d9acf24a3368ec44d5040
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=09e4fd1d84b045da640d9acf24a3368ec44d5040

Author: prashanth <yogesh.mohanmarimuthu at amd.com>
Date:   Sat Mar 26 00:19:44 2022 +0530

vulkan/device_select: force default device if environment variable set

Force default device if MESA_VK_DEVICE_SELECT_FORCE_DEFAULT_DEVICE
environment variable set. This will not give multiple device
options to app. There are apps that selects gpu to use based on its
own criteria, this patch can force default behaviour for these apps
by giving only one gpu device to select from.

v2: return 0 if no physical device present (Mihai Preda)
v3: document environment variables (Mihai Preda)(Marek Olšák)

Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohanmarimuthu at amd.com>
Reviewed-by: Mihai Preda <mhpreda at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15585>

---

 docs/envvars.rst                                     | 13 +++++++++++++
 src/vulkan/device-select-layer/device_select_layer.c |  5 +++++
 2 files changed, 18 insertions(+)

diff --git a/docs/envvars.rst b/docs/envvars.rst
index 4635bc1013c..1101b6aaa1b 100644
--- a/docs/envvars.rst
+++ b/docs/envvars.rst
@@ -437,6 +437,19 @@ DRI environment variables
    disable MSAA for GLX/EGL MSAA visuals
 
 
+Vulkan mesa device select layer environment variables
+-----------------------------------------------------
+
+:envvar:`MESA_VK_DEVICE_SELECT`
+   when set to "list" prints the list of devices.
+   when set to "vid:did" number from pci device. That pci device is
+   selected as default. The default device is returned as the first
+   device in vkEnumeratePhysicalDevices api.
+:envvar:`MESA_VK_DEVICE_SELECT_FORCE_DEFAULT_DEVICE`
+   when set to 1, the device identified as default will be the only
+   one returned in vkEnumeratePhysicalDevices api.
+
+
 EGL environment variables
 -------------------------
 
diff --git a/src/vulkan/device-select-layer/device_select_layer.c b/src/vulkan/device-select-layer/device_select_layer.c
index 89d6b1899ed..c84f2ef76ea 100644
--- a/src/vulkan/device-select-layer/device_select_layer.c
+++ b/src/vulkan/device-select-layer/device_select_layer.c
@@ -528,6 +528,11 @@ static VkResult device_select_EnumeratePhysicalDevices(VkInstance instance,
 
    assert(result == VK_SUCCESS);
 
+   /* do not give multiple device option to app if force default device */
+   const char *force_default_device = getenv("MESA_VK_DEVICE_SELECT_FORCE_DEFAULT_DEVICE");
+   if (force_default_device && !strcmp(force_default_device, "1") && selected_physical_device_count != 0)
+      selected_physical_device_count = 1;
+
    for (unsigned i = 0; i < selected_physical_device_count; i++) {
       vk_outarray_append_typed(VkPhysicalDevice, &out, ent) {
          *ent = selected_physical_devices[i];



More information about the mesa-commit mailing list