From 4339c37f99aa311e300205a7d27c43e470ae93da Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 12 Jun 2023 12:13:21 +0200 Subject: 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 --- include/backend/drm/iface.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include/backend/drm') 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 #include +#include #include #include @@ -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 -- cgit v1.2.3