diff options
author | Simon Ser <contact@emersion.fr> | 2023-02-21 10:21:37 +0100 |
---|---|---|
committer | Alexander Orzechowski <alex@ozal.ski> | 2023-06-30 04:31:50 +0000 |
commit | aa1055134da5f5f4f25a5781b43305b7de79fd99 (patch) | |
tree | 820442f175cf01bc681fccd5ef69496026ea065a /backend/drm/atomic.c | |
parent | 7811f22250667af4cfb38b47413319be87bf112d (diff) |
backend/drm: handle output layer damage
Diffstat (limited to 'backend/drm/atomic.c')
-rw-r--r-- | backend/drm/atomic.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c index 4c95a3bb..7c5fc0ba 100644 --- a/backend/drm/atomic.c +++ b/backend/drm/atomic.c @@ -144,15 +144,12 @@ bool create_gamma_lut_blob(struct wlr_drm_backend *drm, } bool create_fb_damage_clips_blob(struct wlr_drm_backend *drm, - struct wlr_drm_fb *fb, const pixman_region32_t *damage, uint32_t *blob_id) { + int width, int height, const pixman_region32_t *damage, uint32_t *blob_id) { if (!pixman_region32_not_empty(damage)) { *blob_id = 0; return true; } - int width = fb->wlr_buf->width; - int height = fb->wlr_buf->height; - pixman_region32_t clipped; pixman_region32_init(&clipped); pixman_region32_intersect_rect(&clipped, damage, 0, 0, width, height); @@ -298,8 +295,8 @@ static bool atomic_crtc_commit(struct wlr_drm_connector *conn, uint32_t fb_damage_clips = 0; if ((state->base->committed & WLR_OUTPUT_STATE_DAMAGE) && crtc->primary->props.fb_damage_clips != 0) { - create_fb_damage_clips_blob(drm, state->primary_fb, - &state->base->damage, &fb_damage_clips); + create_fb_damage_clips_blob(drm, state->primary_fb->wlr_buf->width, + state->primary_fb->wlr_buf->height, &state->base->damage, &fb_damage_clips); } bool prev_vrr_enabled = |