Open4

WSL1にはmemfdが無いのでEGLを使えない問題

okuokuokuoku

いやこれどうしようも無いな。。Mesaをリビルドしてみる。。?

memfd_create("mesa-shared", MFD_CLOEXEC|MFD_ALLOW_SEALING) = -1 ENOSYS (Function not implemented)
writev(2, [{iov_base="libEGL debug: ", iov_len=14}, {iov_base="EGL user error 0x3003 (EGL_BAD_A"..., iov_len=89}], 2libEGL debug: EGL user error 0x3003 (EGL_BAD_ALLOC) in eglMakeCurrent: failed to allocate color buffer
) = 103
writev(2, [{iov_base="\n", iov_len=1}, {iov_base=NULL, iov_len=0}], 2
) = 1

というかfallback無いの。。?

https://gitlab.freedesktop.org/mesa/mesa/-/blob/98a86f874327233a2509987268f72dc309c10602/src/util/anon_file.c#L122

okuokuokuoku

動いた

適当にmemfdを検出しないパスにしたら動いた。

というかLinuxはもうmemfd必須にできるのか。。

パッケージ

doas apk add glslang rust py3-mako byacc flex

Rustは要らないかも。

Configure

meson setup -Degl=enabled -Dgles1=enabled -Dgles2=enabled \
 -Dgallium-drivers=swrast -Dplatforms=wayland -Dglx=disabled \
 -Dmicrosoft-clc=disabled -Dvulkan-drivers= --prefix /opt/mesa build
okuokuokuoku

ブラウザも動いた

とんでもねぇ重さで笑ってしまう。そりゃまぁLLVM一切使わないソフトウェアレンダリングだもんな。。

$ export WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1
$ export XDG_RUNTIME_DIR=/tmp
$ export DISPLAY=:0
$ export LD_LIBRARY_PATH=/opt/mesa/lib
$ export GALLIUM_DRIVER=softpipe
$ epiphany
okuokuokuoku

OpenGLとGLES1は抜いておいても良いか

meson setup -Degl=enabled -Dopengl=false -Dgles1=disabled -Dgles2=enabled \
  -Dgallium-drivers=swrast -Dplatforms=wayland -Dglx=disabled -Dvulkan-drivers= \
  --prefix /opt/mesa build

あとLLVMpipeでも動くけど、スクロールが多少速くなるくらいしか利点が無かった。。

export WEBKIT_DISABLE_SANDBOX_THIS_IS_DANGEROUS=1
export XDG_RUNTIME_DIR=/tmp
export DISPLAY=:0
export LD_LIBRARY_PATH=/opt/mesa/lib
export GALLIUM_DRIVER=llvmpipe
epiphany