wlroots/render/gles2
Jose Maria Casanova Crespo f33853f861 render/gles2: add scissor-based clipping for tile-based renderers
Add an optional scissor-based clipping strategy to the GLES2 render
pass, it is enabled with WLR_GLES2_SCISSOR_CLIP=1 env var. And it is
disabled by default so it doesn't affect current users.

On tile-based renderers like V3D (Broadcom VideoCore, used in Raspberry
Pi), not using scissoring makes the GPU to render the full-surface.
If scissor is applied only the tiles affected are load/render/stored
reducing the GPU usage.

Patch backported to wlroots 0.19 with labwc on Raspberry Pi OS with
v3d running glxgear 300x300 on top left corner of screen:

- Before: labwc uses 21.5% of GPU render availability.
- After : labwc uses  3.3% of GPU render availability.

This patch over wlroots master with sway on Raspberry Pi OS with
v3d running glxgear half-screen and a terminal half screen:

- Before: sway uses 23.5% of GPU render availability.
- After : sway uses 13.6% of GPU render availability.
2026-03-12 22:00:03 +01:00
..
shaders render/gles2: skip glslang check when shaders are unchanged 2026-01-05 09:59:58 -05:00
meson.build render/gles2: validate shaders at build time 2024-12-15 13:59:42 +01:00
pass.c render/gles2: add scissor-based clipping for tile-based renderers 2026-03-12 22:00:03 +01:00
pixel_format.c render/gles2: add BGR161616F and BGR161616 2026-01-03 17:47:19 +00:00
renderer.c render/gles2: add scissor-based clipping for tile-based renderers 2026-03-12 22:00:03 +01:00
texture.c treewide: make type-check helpers take const pointers 2026-03-06 16:04:21 +08:00