Merge branch 'rerender-node' into 'master'

wlr_scene: Add WLR_SCENE_DEBUG_DAMAGE_RENDERER_NODE

See merge request wlroots/wlroots!3662
This commit is contained in:
Alexander Orzechowski 2026-02-28 17:22:55 -05:00
commit 1506d82639
3 changed files with 15 additions and 5 deletions

View file

@ -190,6 +190,7 @@ struct wlr_scene *wlr_scene_create(void) {
const char *debug_damage_options[] = {
"none",
"rerender",
"rerender_node",
"highlight",
NULL
};
@ -981,14 +982,22 @@ void wlr_scene_buffer_set_buffer_with_options(struct wlr_scene_buffer *scene_buf
}
pixman_region32_t trans_damage;
pixman_region32_init(&trans_damage);
wlr_region_transform(&trans_damage, damage,
scene_buffer->transform, buffer->width, buffer->height);
struct wlr_scene *scene = scene_node_get_root(&scene_buffer->node);
if (scene->debug_damage_option == WLR_SCENE_DEBUG_DAMAGE_RERENDER_NODE) {
pixman_region32_init_rect(&trans_damage, 0, 0, buffer->width, buffer->height);
wlr_region_transform(&trans_damage, &trans_damage,
scene_buffer->transform, buffer->width, buffer->height);
} else {
pixman_region32_init(&trans_damage);
wlr_region_transform(&trans_damage, damage,
scene_buffer->transform, buffer->width, buffer->height);
}
pixman_region32_intersect_rect(&trans_damage, &trans_damage,
box.x, box.y, box.width, box.height);
pixman_region32_translate(&trans_damage, -box.x, -box.y);
struct wlr_scene *scene = scene_node_get_root(&scene_buffer->node);
struct wlr_scene_output *scene_output;
wl_list_for_each(scene_output, &scene->outputs, link) {
float output_scale = scene_output->output->scale;