vm_tools: sommelier: Add XWAYLAND_VK_ICD_FILENAMES
Set it to /usr/share/vulkan/icd.d/10_magma_intel_icd.x86_64.json
by default.
Change-Id: I46f4decd115a242e4c2f7c5f5553996673854bc9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3349587
Reviewed-by: Craig Stout <cstout@google.com>
Commit-Queue: David Reveman <reveman@chromium.org>
Tested-by: David Reveman <reveman@chromium.org>
diff --git a/vm_tools/sommelier/BUILD.gn b/vm_tools/sommelier/BUILD.gn
index ac9b973..d7d3502 100644
--- a/vm_tools/sommelier/BUILD.gn
+++ b/vm_tools/sommelier/BUILD.gn
@@ -32,6 +32,11 @@
xwayland_shm_driver = "\"virtwl-dmabuf\""
}
+# Set this to the VK ICD filenames to use for Xwayland.
+if (!defined(xwayland_vk_icd_filenames)) {
+ xwayland_vk_icd_filenames = "\"/usr/share/vulkan/icd.d/10_magma_intel_icd.x86_64.json\""
+}
+
# Set this to the shm driver to use for wayland clients.
if (!defined(shm_driver)) {
shm_driver = "\"virtwl-dmabuf\""
@@ -109,6 +114,7 @@
"XWAYLAND_PATH=${xwayland_path}",
"XWAYLAND_GL_DRIVER_PATH=${xwayland_gl_driver_path}",
"XWAYLAND_SHM_DRIVER=${xwayland_shm_driver}",
+ "XWAYLAND_VK_ICD_FILENAMES=${xwayland_vk_icd_filenames}",
"SHM_DRIVER=${shm_driver}",
"VIRTWL_DEVICE=${virtwl_device}",
"PEER_CMD_PREFIX=${peer_cmd_prefix}",
diff --git a/vm_tools/sommelier/meson.build b/vm_tools/sommelier/meson.build
index 66d2c7a..9411072 100644
--- a/vm_tools/sommelier/meson.build
+++ b/vm_tools/sommelier/meson.build
@@ -149,6 +149,7 @@
'-DXWAYLAND_PATH="' + get_option('xwayland_path') + '"',
'-DXWAYLAND_GL_DRIVER_PATH="' + get_option('xwayland_gl_driver_path') + '"',
'-DXWAYLAND_SHM_DRIVER="' + get_option('xwayland_shm_driver') + '"',
+ '-DXWAYLAND_VK_ICD_FILENAMES="' + get_option('xwayland_vk_icd_filenames') + '"',
'-DSHM_DRIVER="' + get_option('shm_driver') + '"',
'-DPEER_CMD_PREFIX="' + peer_cmd_prefix + '"',
'-DFRAME_COLOR="' + get_option('frame_color') + '"',
diff --git a/vm_tools/sommelier/meson_options.txt b/vm_tools/sommelier/meson_options.txt
index f0c6cbd..fc70fdc 100644
--- a/vm_tools/sommelier/meson_options.txt
+++ b/vm_tools/sommelier/meson_options.txt
@@ -20,6 +20,12 @@
description: 'shm driver to use for Xwayland'
)
+option('xwayland_vk_icd_filenames',
+ type: 'string',
+ value: '/usr/share/vulkan/icd.d/10_magma_intel_icd.x86_64.json',
+ description: 'the VK ICD filenames to use for Xwayland'
+)
+
option('shm_driver',
type: 'string',
value: 'virtwl-dmabuf',
diff --git a/vm_tools/sommelier/sommelier.cc b/vm_tools/sommelier/sommelier.cc
index 8988bcd..f7c0b6d 100644
--- a/vm_tools/sommelier/sommelier.cc
+++ b/vm_tools/sommelier/sommelier.cc
@@ -60,6 +60,9 @@
#ifndef XWAYLAND_SHM_DRIVER
#error XWAYLAND_SHM_DRIVER must be defined
#endif
+#ifndef XWAYLAND_VK_ICD_FILENAMES
+#error XWAYLAND_VK_ICD_FILENAMES must be defined
+#endif
#ifndef SHM_DRIVER
#error SHM_DRIVER must be defined
#endif
@@ -4040,6 +4043,8 @@
const char* xwayland_path = getenv("SOMMELIER_XWAYLAND_PATH");
const char* xwayland_gl_driver_path =
getenv("SOMMELIER_XWAYLAND_GL_DRIVER_PATH");
+ const char* xwayland_vk_icd_filenames =
+ getenv("SOMMELIER_XWAYLAND_VK_ICD_FILENAMES");
const char* xauth_path = getenv("SOMMELIER_XAUTH_PATH");
const char* xfont_path = getenv("SOMMELIER_XFONT_PATH");
const char* socket_name = "wayland-0";
@@ -4687,6 +4692,14 @@
setenv("LIBGL_DRIVERS_PATH", XWAYLAND_GL_DRIVER_PATH, 1);
}
+ if (xwayland_vk_icd_filenames) {
+ if (*xwayland_vk_icd_filenames) {
+ setenv("VK_ICD_FILENAMES", xwayland_vk_icd_filenames, 1);
+ }
+ } else if (XWAYLAND_VK_ICD_FILENAMES && *XWAYLAND_VK_ICD_FILENAMES) {
+ setenv("VK_ICD_FILENAMES", XWAYLAND_VK_ICD_FILENAMES, 1);
+ }
+
sl_execvp(args[0], const_cast<char* const*>(args), sv[1]);
_exit(EXIT_FAILURE);
}