aboutsummaryrefslogtreecommitdiff
path: root/include/backend
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2023-06-12 12:13:21 +0200
committerKenny Levinsen <kl@kl.wtf>2023-06-12 20:38:03 +0000
commit4339c37f99aa311e300205a7d27c43e470ae93da (patch)
tree98cfb853d890683927cba03e0f591d7f8a101686 /include/backend
parenta09bb1314de6296545aae5146658ac1259ae6c40 (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.h4
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