diff options
author | Simon Ser <contact@emersion.fr> | 2023-06-12 12:13:21 +0200 |
---|---|---|
committer | Kenny Levinsen <kl@kl.wtf> | 2023-06-12 20:38:03 +0000 |
commit | 4339c37f99aa311e300205a7d27c43e470ae93da (patch) | |
tree | 98cfb853d890683927cba03e0f591d7f8a101686 /include/backend | |
parent | a09bb1314de6296545aae5146658ac1259ae6c40 (diff) |
backend/drm: clip FB damage
The kernel complains when the damage exceeds the FB bounds:
[73850.448326] i915 0000:00:02.0: [drm:drm_atomic_check_only] [PLANE:31:plane 1A] invalid damage clip 0 0 2147483647 2147483647
Make the DRM backend behave like the Wayland one and allow compositors
to damage (0, 0, INT32_MAX, INT32_MAX) to repaint everything without
needing to know the exact buffer size.
Closes: https://github.com/swaywm/sway/issues/7632
Diffstat (limited to 'include/backend')
-rw-r--r-- | include/backend/drm/iface.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/backend/drm/iface.h b/include/backend/drm/iface.h index c4bd62e4..f06acf9a 100644 --- a/include/backend/drm/iface.h +++ b/include/backend/drm/iface.h @@ -3,6 +3,7 @@ #include <stdbool.h> #include <stdint.h> +#include <pixman.h> #include <xf86drm.h> #include <xf86drmMode.h> @@ -10,6 +11,7 @@ struct wlr_drm_backend; struct wlr_drm_connector; struct wlr_drm_crtc; struct wlr_drm_connector_state; +struct wlr_drm_fb; // Used to provide atomic or legacy DRM functions struct wlr_drm_interface { @@ -33,5 +35,7 @@ bool create_mode_blob(struct wlr_drm_backend *drm, const struct wlr_drm_connector_state *state, uint32_t *blob_id); bool create_gamma_lut_blob(struct wlr_drm_backend *drm, size_t size, const uint16_t *lut, uint32_t *blob_id); +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); #endif |