diff --git a/core-symbols.txt b/core-symbols.txt index 8b22f3a1..766c342d 100644 --- a/core-symbols.txt +++ b/core-symbols.txt @@ -104,6 +104,7 @@ drmModeAtomicGetCursor drmModeAtomicMerge drmModeAtomicSetCursor drmModeAttachMode +drmModeCloseFB drmModeConnectorGetPossibleCrtcs drmModeConnectorSetProperty drmModeCreateDumbBuffer diff --git a/xf86drmMode.c b/xf86drmMode.c index 65d54d78..a4873a0f 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -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; diff --git a/xf86drmMode.h b/xf86drmMode.h index b6410ab8..08487887 100644 --- a/xf86drmMode.h +++ b/xf86drmMode.h @@ -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. */