xf86drmMode: add drmModeCloseFB()
authorSimon Ser <contact@emersion.fr>
Fri, 27 Oct 2023 11:58:12 +0000 (13:58 +0200)
committerSimon Ser <contact@emersion.fr>
Mon, 20 Nov 2023 12:55:31 +0000 (12:55 +0000)
Add a wrapper for the new CLOSEFB IOCTL, to close a framebuffer
without implicitly disabling planes or CRTCs.

See https://lore.kernel.org/dri-devel/20231020101926.145327-2-contact@emersion.fr/

Signed-off-by: Simon Ser <contact@emersion.fr>
core-symbols.txt
xf86drmMode.c
xf86drmMode.h

index 8b22f3a1a7603c09783eb9fd51ac86154b294cc2..766c342d3b6cbb80e7f3a3ee7f7f087718ddede6 100644 (file)
@@ -104,6 +104,7 @@ drmModeAtomicGetCursor
 drmModeAtomicMerge
 drmModeAtomicSetCursor
 drmModeAttachMode
+drmModeCloseFB
 drmModeConnectorGetPossibleCrtcs
 drmModeConnectorSetProperty
 drmModeCreateDumbBuffer
index 65d54d78f415248b312f5928532218867adbc365..a4873a0fa0b4ec280efde0291ad26d11e8ec0205 100644 (file)
@@ -320,6 +320,16 @@ drm_public int drmModeRmFB(int fd, uint32_t bufferId)
        return DRM_IOCTL(fd, DRM_IOCTL_MODE_RMFB, &bufferId);
 }
 
+drm_public int drmModeCloseFB(int fd, uint32_t buffer_id)
+{
+       struct drm_mode_closefb closefb;
+
+       memclear(closefb);
+       closefb.fb_id = buffer_id;
+
+       return DRM_IOCTL(fd, DRM_IOCTL_MODE_CLOSEFB, &closefb);
+}
+
 drm_public drmModeFBPtr drmModeGetFB(int fd, uint32_t buf)
 {
        struct drm_mode_fb_cmd info;
index b6410ab8c8659f447218d1e0f5193c0173398850..0848788799a36d73232a1edbb5cf05a09ba2cd13 100644 (file)
@@ -314,6 +314,13 @@ int drmModeAddFB2WithModifiers(int fd, uint32_t width, uint32_t height,
  */
 extern int drmModeRmFB(int fd, uint32_t bufferId);
 
+/**
+ * Close a framebuffer.
+ *
+ * Same as drmModeRmFB(), except it doesn't implicitly disable planes and CRTCs.
+ */
+extern int drmModeCloseFB(int fd, uint32_t buffer_id);
+
 /**
  * Mark a region of a framebuffer as dirty.
  */