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];