render/gles2: scissor region on render pass

The scissor step in the rendering has been drop when moving from the legacy rendering API to the
current render pass API. Clipping on the CPU allows smaller draws, which can improve both GPU and
IO bandwidth on tiled renderer GPUs like on the Raspberry PI.
This commit is contained in:
Simon Zeni 2026-03-11 15:13:08 -04:00
parent c393fb6bfa
commit 9839535691

View file

@ -90,6 +90,10 @@ static void render(const struct wlr_box *box, const pixman_region32_t *clip, GLi
return;
}
glEnable(GL_SCISSOR_TEST);
glScissor(region.extents.x1, region.extents.y1, region.extents.x2 - region.extents.x1,
region.extents.y2 - region.extents.y1);
glEnableVertexAttribArray(attrib);
for (int i = 0; i < rects_len;) {
@ -120,6 +124,7 @@ static void render(const struct wlr_box *box, const pixman_region32_t *clip, GLi
}
glDisableVertexAttribArray(attrib);
glDisable(GL_SCISSOR_TEST);
pixman_region32_fini(&region);
}