xf86drmMode: add drmModeCloseFB()

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>
main
Simon Ser 2023-10-27 13:58:12 +02:00
parent 7b60986640
commit 07f4948bfc
3 changed files with 18 additions and 0 deletions

View File

@ -104,6 +104,7 @@ drmModeAtomicGetCursor
drmModeAtomicMerge drmModeAtomicMerge
drmModeAtomicSetCursor drmModeAtomicSetCursor
drmModeAttachMode drmModeAttachMode
drmModeCloseFB
drmModeConnectorGetPossibleCrtcs drmModeConnectorGetPossibleCrtcs
drmModeConnectorSetProperty drmModeConnectorSetProperty
drmModeCreateDumbBuffer drmModeCreateDumbBuffer

View File

@ -320,6 +320,16 @@ drm_public int drmModeRmFB(int fd, uint32_t bufferId)
return DRM_IOCTL(fd, DRM_IOCTL_MODE_RMFB, &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) drm_public drmModeFBPtr drmModeGetFB(int fd, uint32_t buf)
{ {
struct drm_mode_fb_cmd info; struct drm_mode_fb_cmd info;

View File

@ -314,6 +314,13 @@ int drmModeAddFB2WithModifiers(int fd, uint32_t width, uint32_t height,
*/ */
extern int drmModeRmFB(int fd, uint32_t bufferId); 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. * Mark a region of a framebuffer as dirty.
*/ */