Open2
素のWSL2 UbuntuでWSLgを使いたい

xeyes
とかは普通に動くけど、 mesa-utils
の eglinfo
を見ると llvmpipe
になっている。これはソフトウェアレンダラなので何とかホスト側のDirectX12を使って欲しい。

GALLIUM_DRIVER=d3d12
を指定してみる
okuoku@stripe:/mnt/c/Users/oku$ eglinfo
EGL client extensions string:
EGL_EXT_client_extensions, EGL_EXT_device_base,
EGL_EXT_device_enumeration, EGL_EXT_device_query, EGL_EXT_explicit_device,
EGL_EXT_platform_base, EGL_EXT_platform_device, EGL_EXT_platform_wayland,
EGL_EXT_platform_x11, EGL_EXT_platform_xcb,
EGL_KHR_client_get_all_proc_addresses, EGL_KHR_debug,
EGL_KHR_platform_gbm, EGL_KHR_platform_wayland, EGL_KHR_platform_x11,
EGL_MESA_platform_gbm, EGL_MESA_platform_surfaceless
GBM platform:
MESA-LOADER: failed to open vgem: /usr/lib/dri/vgem_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
MESA-LOADER: failed to open vgem: /usr/lib/dri/vgem_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
eglinfo: eglInitialize failed
Wayland platform:
eglinfo: eglInitialize failed
X11 platform:
libEGL warning: egl: failed to create dri2 screen
eglinfo: eglInitialize failed
Surfaceless platform:
libEGL warning: failed to open /dev/dri/renderD128: Permission denied
libEGL warning: egl: failed to create dri2 screen
eglinfo: eglInitialize failed
Device platform:
Device #0:
EGL device extensions string:
EGL_EXT_device_drm, EGL_EXT_device_drm_render_node
Platform Device platform:
libEGL warning: failed to open /dev/dri/renderD128: Permission denied
libEGL warning: NEEDS EXTENSION: falling back to kms_swrast
libEGL warning: egl: failed to create dri2 screen
eglinfo: eglInitialize failed
Device #1:
EGL device extensions string:
EGL_EXT_device_drm_render_node, EGL_MESA_device_software
Platform Device platform:
libEGL warning: egl: failed to create dri2 screen
libEGL warning: egl: failed to create dri2 screen
eglinfo: eglInitialize failed
warning: failed to open /dev/dri/renderD128: Permission denied
は通常のユーザーが render
グループに居ないのが原因のようだ。足せばOK。
okuoku@stripe:/mnt/c/Users/oku$ ls -al /dev/dri/
total 0
drwxr-xr-x 3 root root 100 Dec 26 17:10 .
drwxr-xr-x 16 root root 3540 Dec 26 17:10 ..
drwxr-xr-x 2 root root 80 Dec 26 17:10 by-path
crw-rw---- 1 root video 226, 0 Dec 26 17:10 card0
crw-rw---- 1 root render 226, 128 Dec 26 17:10 renderD128
ただ strace
で確認してみると、そもそも /dev/dxg
がopenできていない:
openat(AT_FDCWD, "/dev/dxg", O_RDONLY|O_CLOEXEC) = -1 EBADF (Bad file descriptor)
GPUドライバが古すぎるというオチのようだ。。(WDDM2.9以降が必要)