Skip to content

Package swiftshader and gl4es

knuxify requested to merge knuxify/pmaports:swiftshader-glshim into master

This MR packages SwiftShader and gl4es. Fixes #23 (closed).

Current status

Both packages build correctly and can be installed properly. See below for known bugs.

SwiftShader

Tested with gl4es, see notes in the gl4es section.

Unfortunately Plasma Mobile doesn't seem to work due to a lack of proper Wayland support in the EGL library. There seems to be more Wayland progress in the Vulkan driver, but it doesn't seem like kwin supports Vulkan. This may also be related to the broken XWayland, or perhaps EGL is trying to look for GL stuff instead of GLES.

Current status: trying to get the tests to succeed on the most important architectures. Likely no point in doing this, unless the test failures are somehow linked to actual failures while using swiftshader with actual software.

GL4ES

Tested on armv7 with glxgears and swiftshader on the Galaxy Grand Neo. Runs at ~16fps in fullscreen mode, windowed breaks due to this bug. (For comparison, llvmpipe runs glxgears on the same device at about 70fps.)

Xwayland fails to relocate due to missing symbols, xvfb is missing the same things. ldd output:

samsung-baffinlite:~$ ldd /usr/bin/Xwayland 
	/lib/ld-musl-armhf.so.1 (0x400cb000)
	libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x403b6000)
	libXfont2.so.2 => /usr/lib/libXfont2.so.2 (0x404a1000)
	libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x404fc000)
	libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x40592000)
	libdrm.so.2 => /usr/lib/libdrm.so.2 (0x40609000)
	libepoxy.so.0 => /usr/lib/libepoxy.so.0 (0x4071f000)
	libgbm.so.1 => /usr/lib/libgbm.so.1 (0x40818000)
	libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0x40849000)
	libnettle.so.8 => /usr/lib/libnettle.so.8 (0x40948000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x40a20000)
	libGL.so.1 => /usr/lib/libGL.so.1 (0x40a36000)
	libc.musl-armv7.so.1 => /lib/ld-musl-armhf.so.1 (0x400cb000)
	libz.so.1 => /lib/libz.so.1 (0x40bc4000)
	libfontenc.so.1 => /usr/lib/libfontenc.so.1 (0x40bf9000)
	libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x40c9b000)
	libbsd.so.0 => /usr/lib/libbsd.so.0 (0x40d71000)
	libffi.so.7 => /usr/lib/libffi.so.7 (0x40e53000)
	libwayland-server.so.0 => /usr/lib/libwayland-server.so.0 (0x40e95000)
	libexpat.so.1 => /usr/lib/libexpat.so.1 (0x40eff000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x40ffc000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x41108000)
	libbz2.so.1 => /usr/lib/libbz2.so.1 (0x411e9000)
	libpng16.so.16 => /usr/lib/libpng16.so.16 (0x412c5000)
	libbrotlidec.so.1 => /usr/lib/libbrotlidec.so.1 (0x413b7000)
	libxcb.so.1 => /usr/lib/libxcb.so.1 (0x414c5000)
	libbrotlicommon.so.1 => /usr/lib/libbrotlicommon.so.1 (0x414fd000)
Error relocating /usr/bin/Xwayland: glConvolutionFilter1D: symbol not found
Error relocating /usr/bin/Xwayland: glGetConvolutionParameteriv: symbol not found
Error relocating /usr/bin/Xwayland: glGetColorTable: symbol not found
Error relocating /usr/bin/Xwayland: glGetColorTableParameteriv: symbol not found
Error relocating /usr/bin/Xwayland: glConvolutionParameteriv: symbol not found
Error relocating /usr/bin/Xwayland: glConvolutionParameterf: symbol not found
Error relocating /usr/bin/Xwayland: glMinmax: symbol not found
Error relocating /usr/bin/Xwayland: glGetMinmaxParameteriv: symbol not found
Error relocating /usr/bin/Xwayland: glGetMinmaxParameterfv: symbol not found
Error relocating /usr/bin/Xwayland: glResetMinmax: symbol not found
Error relocating /usr/bin/Xwayland: glCopyConvolutionFilter1D: symbol not found
Error relocating /usr/bin/Xwayland: glCopyColorSubTable: symbol not found
Error relocating /usr/bin/Xwayland: glGetHistogram: symbol not found
Error relocating /usr/bin/Xwayland: glConvolutionParameterfv: symbol not found
Error relocating /usr/bin/Xwayland: glGetConvolutionParameterfv: symbol not found
Error relocating /usr/bin/Xwayland: glGetHistogramParameteriv: symbol not found
Error relocating /usr/bin/Xwayland: glGetSeparableFilter: symbol not found
Error relocating /usr/bin/Xwayland: glSeparableFilter2D: symbol not found
Error relocating /usr/bin/Xwayland: glGetMinmax: symbol not found
Error relocating /usr/bin/Xwayland: glHistogram: symbol not found
Error relocating /usr/bin/Xwayland: glCopyConvolutionFilter2D: symbol not found
Error relocating /usr/bin/Xwayland: glConvolutionFilter2D: symbol not found
Error relocating /usr/bin/Xwayland: glConvolutionParameteri: symbol not found
Error relocating /usr/bin/Xwayland: glCopyColorTable: symbol not found
Error relocating /usr/bin/Xwayland: glResetHistogram: symbol not found
Error relocating /usr/bin/Xwayland: glGetConvolutionFilter: symbol not found
Error relocating /usr/bin/Xwayland: glColorTableParameteriv: symbol not found
Error relocating /usr/bin/Xwayland: glGetHistogramParameterfv: symbol not found
Error relocating /usr/bin/Xwayland: glColorSubTable: symbol not found
Error relocating /usr/bin/Xwayland: glGetColorTableParameterfv: symbol not found
Error relocating /usr/bin/Xwayland: glColorTableParameterfv: symbol not found
samsung-baffinlite:~$ 

Tests fail, as xvfb cannot be run due to missing symbols (see above). They pass happily when bash is not installed (that's a bug, of course, as the test scripts require bash).

glshim

Breaks, see this bug. No longer focusing on packaging it as gl4es provides pretty much the same functionality.

Edited by knuxify

Merge request reports