Works on my device.
And has much better performance than llvmpipe and virpipe.
It improves only EGL+GLES2 performance, GL is untouched.
Vulkan implementation is planned.
llvmpipe
```
~ $ GALLIUM_DRIVER=llvmpipe glmark2-es2
libEGL warning: DRI3: Screen seems not DRI3 capable
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: Mesa
GL_RENDERER: llvmpipe (LLVM 19.1.2, 128 bits)
GL_VERSION: OpenGL ES 3.2 Mesa 24.2.6
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=32 stencil=0 samples=0
Surface Size: 800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 83 FrameTime: 12.083 ms
[build] use-vbo=true: FPS: 84 FrameTime: 12.045 ms
[texture] texture-filter=nearest: FPS: 120 FrameTime: 8.380 ms
[texture] texture-filter=linear: FPS: 104 FrameTime: 9.633 ms
[texture] texture-filter=mipmap: FPS: 73 FrameTime: 13.701 ms
[shading] shading=gouraud: FPS: 56 FrameTime: 18.162 ms
[shading] shading=blinn-phong-inf: FPS: 41 FrameTime: 24.862 ms
[shading] shading=phong: FPS: 33 FrameTime: 30.466 ms
[shading] shading=cel: FPS: 33 FrameTime: 30.941 ms
[bump] bump-render=high-poly: FPS: 22 FrameTime: 47.619 ms
[bump] bump-render=normals: FPS: 84 FrameTime: 11.934 ms
[bump] bump-render=height: FPS: 85 FrameTime: 11.835 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 35 FrameTime: 28.684 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 17 FrameTime: 62.301 ms
[pulsar] light=false:quads=5:texture=false: FPS: 83 FrameTime: 12.114 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 9 FrameTime: 119.660 ms
[desktop] effect=shadow:windows=4: FPS: 22 FrameTime: 45.672 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 31 FrameTime: 33.199 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 31 FrameTime: 33.106 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 31 FrameTime: 32.751 ms
[ideas] speed=duration: FPS: 53 FrameTime: 19.183 ms
[jellyfish] : FPS: 19 FrameTime: 53.189 ms
[terrain] : FPS: 2 FrameTime: 806.721 ms
[shadow] : FPS: 34 FrameTime: 30.071 ms
[refract] : FPS: 4 FrameTime: 263.993 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 70 FrameTime: 14.348 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 51 FrameTime: 19.955 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 70 FrameTime: 14.395 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 54 FrameTime: 18.733 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 35 FrameTime: 29.349 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 54 FrameTime: 18.767 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 54 FrameTime: 18.815 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 50 FrameTime: 20.332 ms
=======================================================
glmark2 Score: 48
=======================================================
```
virpipe+virglrenderer-android+angle-null backend
```
~ $ GALLIUM_DRIVER=virpipe glmark2-es2 # working with --angle-null
libEGL warning: DRI3: Screen seems not DRI3 capable
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: Mesa
GL_RENDERER: virgl (ANGLE (ARM, Vulkan 1.1.213 (Mali-G77 (0x90800011)), ...)
GL_VERSION: OpenGL ES 3.1 Mesa 24.2.7
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=32 stencil=0 samples=0
Surface Size: 800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 65 FrameTime: 15.385 ms
[build] use-vbo=true: FPS: 70 FrameTime: 14.330 ms
[texture] texture-filter=nearest: FPS: 68 FrameTime: 14.740 ms
[texture] texture-filter=linear: FPS: 68 FrameTime: 14.908 ms
[texture] texture-filter=mipmap: FPS: 68 FrameTime: 14.743 ms
[shading] shading=gouraud: FPS: 68 FrameTime: 14.796 ms
[shading] shading=blinn-phong-inf: FPS: 72 FrameTime: 14.043 ms
[shading] shading=phong: FPS: 69 FrameTime: 14.648 ms
[shading] shading=cel: FPS: 64 FrameTime: 15.642 ms
[bump] bump-render=high-poly: FPS: 58 FrameTime: 17.285 ms
[bump] bump-render=normals: FPS: 70 FrameTime: 14.305 ms
[bump] bump-render=height: FPS: 67 FrameTime: 14.947 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 64 FrameTime: 15.848 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 55 FrameTime: 18.233 ms
[pulsar] light=false:quads=5:texture=false: FPS: 69 FrameTime: 14.691 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 41 FrameTime: 24.937 ms
[desktop] effect=shadow:windows=4: FPS: 62 FrameTime: 16.260 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 41 FrameTime: 24.490 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 46 FrameTime: 21.968 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 44 FrameTime: 22.757 ms
[ideas] speed=duration: FPS: 46 FrameTime: 21.939 ms
[jellyfish] : FPS: 67 FrameTime: 15.058 ms
[terrain] : FPS: 23 FrameTime: 43.545 ms
[shadow] : FPS: 62 FrameTime: 16.190 ms
[refract] : FPS: 29 FrameTime: 35.364 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 73 FrameTime: 13.796 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 74 FrameTime: 13.571 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 68 FrameTime: 14.837 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 67 FrameTime: 15.129 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 66 FrameTime: 15.180 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 71 FrameTime: 14.213 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 66 FrameTime: 15.161 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 66 FrameTime: 15.173 ms
=======================================================
glmark2 Score: 59
=======================================================
```
termux-wsi-layer
```
~ $ glmark2-es2
=======================================================
glmark2 2023.01
=======================================================
OpenGL Information
GL_VENDOR: ARM
GL_RENDERER: Mali-G77
GL_VERSION: OpenGL ES 3.2 v1.r38p1-01bet0-mbs2v41_0.8320a750c7c9e2666df3500d139b434f
Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
Surface Size: 800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 318 FrameTime: 3.154 ms
[build] use-vbo=true: FPS: 344 FrameTime: 2.908 ms
[texture] texture-filter=nearest: FPS: 377 FrameTime: 2.657 ms
[texture] texture-filter=linear: FPS: 371 FrameTime: 2.698 ms
[texture] texture-filter=mipmap: FPS: 389 FrameTime: 2.577 ms
[shading] shading=gouraud: FPS: 317 FrameTime: 3.161 ms
[shading] shading=blinn-phong-inf: FPS: 314 FrameTime: 3.194 ms
[shading] shading=phong: FPS: 312 FrameTime: 3.212 ms
[shading] shading=cel: FPS: 302 FrameTime: 3.316 ms
[bump] bump-render=high-poly: FPS: 213 FrameTime: 4.698 ms
[bump] bump-render=normals: FPS: 415 FrameTime: 2.410 ms
[bump] bump-render=height: FPS: 415 FrameTime: 2.411 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 367 FrameTime: 2.732 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 274 FrameTime: 3.662 ms
[pulsar] light=false:quads=5:texture=false: FPS: 361 FrameTime: 2.771 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 326 FrameTime: 3.077 ms
[desktop] effect=shadow:windows=4: FPS: 404 FrameTime: 2.478 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 120 FrameTime: 8.339 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 110 FrameTime: 9.109 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 135 FrameTime: 7.430 ms
[ideas] speed=duration: FPS: 155 FrameTime: 6.453 ms
[jellyfish] : FPS: 284 FrameTime: 3.528 ms
[terrain] : FPS: 59 FrameTime: 17.181 ms
[shadow] : FPS: 350 FrameTime: 2.863 ms
[refract] : FPS: 84 FrameTime: 11.997 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 360 FrameTime: 2.781 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 360 FrameTime: 2.781 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 361 FrameTime: 2.776 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 370 FrameTime: 2.707 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 375 FrameTime: 2.668 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 370 FrameTime: 2.708 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 365 FrameTime: 2.744 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 360 FrameTime: 2.781 ms
=======================================================
glmark2 Score: 303
=======================================================
```
Works on my device. And has much better performance than llvmpipe and virpipe. It improves only EGL+GLES2 performance, GL is untouched. Vulkan implementation is planned.
llvmpipe
``` ~ $ GALLIUM_DRIVER=llvmpipe glmark2-es2 libEGL warning: DRI3: Screen seems not DRI3 capable ======================================================= glmark2 2023.01 ======================================================= OpenGL Information GL_VENDOR: Mesa GL_RENDERER: llvmpipe (LLVM 19.1.2, 128 bits) GL_VERSION: OpenGL ES 3.2 Mesa 24.2.6 Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=32 stencil=0 samples=0 Surface Size: 800x600 windowed ======================================================= [build] use-vbo=false: FPS: 83 FrameTime: 12.083 ms [build] use-vbo=true: FPS: 84 FrameTime: 12.045 ms [texture] texture-filter=nearest: FPS: 120 FrameTime: 8.380 ms [texture] texture-filter=linear: FPS: 104 FrameTime: 9.633 ms [texture] texture-filter=mipmap: FPS: 73 FrameTime: 13.701 ms [shading] shading=gouraud: FPS: 56 FrameTime: 18.162 ms [shading] shading=blinn-phong-inf: FPS: 41 FrameTime: 24.862 ms [shading] shading=phong: FPS: 33 FrameTime: 30.466 ms [shading] shading=cel: FPS: 33 FrameTime: 30.941 ms [bump] bump-render=high-poly: FPS: 22 FrameTime: 47.619 ms [bump] bump-render=normals: FPS: 84 FrameTime: 11.934 ms [bump] bump-render=height: FPS: 85 FrameTime: 11.835 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 35 FrameTime: 28.684 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 17 FrameTime: 62.301 ms [pulsar] light=false:quads=5:texture=false: FPS: 83 FrameTime: 12.114 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 9 FrameTime: 119.660 ms [desktop] effect=shadow:windows=4: FPS: 22 FrameTime: 45.672 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 31 FrameTime: 33.199 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 31 FrameTime: 33.106 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 31 FrameTime: 32.751 ms [ideas] speed=duration: FPS: 53 FrameTime: 19.183 ms [jellyfish]virpipe+virglrenderer-android+angle-null backend
``` ~ $ GALLIUM_DRIVER=virpipe glmark2-es2 # working with --angle-null libEGL warning: DRI3: Screen seems not DRI3 capable ======================================================= glmark2 2023.01 ======================================================= OpenGL Information GL_VENDOR: Mesa GL_RENDERER: virgl (ANGLE (ARM, Vulkan 1.1.213 (Mali-G77 (0x90800011)), ...) GL_VERSION: OpenGL ES 3.1 Mesa 24.2.7 Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=32 stencil=0 samples=0 Surface Size: 800x600 windowed ======================================================= [build] use-vbo=false: FPS: 65 FrameTime: 15.385 ms [build] use-vbo=true: FPS: 70 FrameTime: 14.330 ms [texture] texture-filter=nearest: FPS: 68 FrameTime: 14.740 ms [texture] texture-filter=linear: FPS: 68 FrameTime: 14.908 ms [texture] texture-filter=mipmap: FPS: 68 FrameTime: 14.743 ms [shading] shading=gouraud: FPS: 68 FrameTime: 14.796 ms [shading] shading=blinn-phong-inf: FPS: 72 FrameTime: 14.043 ms [shading] shading=phong: FPS: 69 FrameTime: 14.648 ms [shading] shading=cel: FPS: 64 FrameTime: 15.642 ms [bump] bump-render=high-poly: FPS: 58 FrameTime: 17.285 ms [bump] bump-render=normals: FPS: 70 FrameTime: 14.305 ms [bump] bump-render=height: FPS: 67 FrameTime: 14.947 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 64 FrameTime: 15.848 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 55 FrameTime: 18.233 ms [pulsar] light=false:quads=5:texture=false: FPS: 69 FrameTime: 14.691 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 41 FrameTime: 24.937 ms [desktop] effect=shadow:windows=4: FPS: 62 FrameTime: 16.260 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 41 FrameTime: 24.490 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 46 FrameTime: 21.968 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 44 FrameTime: 22.757 ms [ideas] speed=duration: FPS: 46 FrameTime: 21.939 ms [jellyfish]termux-wsi-layer
``` ~ $ glmark2-es2 ======================================================= glmark2 2023.01 ======================================================= OpenGL Information GL_VENDOR: ARM GL_RENDERER: Mali-G77 GL_VERSION: OpenGL ES 3.2 v1.r38p1-01bet0-mbs2v41_0.8320a750c7c9e2666df3500d139b434f Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0 Surface Size: 800x600 windowed ======================================================= [build] use-vbo=false: FPS: 318 FrameTime: 3.154 ms [build] use-vbo=true: FPS: 344 FrameTime: 2.908 ms [texture] texture-filter=nearest: FPS: 377 FrameTime: 2.657 ms [texture] texture-filter=linear: FPS: 371 FrameTime: 2.698 ms [texture] texture-filter=mipmap: FPS: 389 FrameTime: 2.577 ms [shading] shading=gouraud: FPS: 317 FrameTime: 3.161 ms [shading] shading=blinn-phong-inf: FPS: 314 FrameTime: 3.194 ms [shading] shading=phong: FPS: 312 FrameTime: 3.212 ms [shading] shading=cel: FPS: 302 FrameTime: 3.316 ms [bump] bump-render=high-poly: FPS: 213 FrameTime: 4.698 ms [bump] bump-render=normals: FPS: 415 FrameTime: 2.410 ms [bump] bump-render=height: FPS: 415 FrameTime: 2.411 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 367 FrameTime: 2.732 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 274 FrameTime: 3.662 ms [pulsar] light=false:quads=5:texture=false: FPS: 361 FrameTime: 2.771 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 326 FrameTime: 3.077 ms [desktop] effect=shadow:windows=4: FPS: 404 FrameTime: 2.478 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 120 FrameTime: 8.339 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 110 FrameTime: 9.109 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 135 FrameTime: 7.430 ms [ideas] speed=duration: FPS: 155 FrameTime: 6.453 ms [jellyfish]