惠州网站建设系统,浏览器网站设置在哪里,济南公司建站,网站建设常用模板下载接前一篇文章#xff1a;libdrm全解析三十七 —— 源码全解析#xff08;34#xff09; 本文参考以下博文#xff1a;
DRM 驱动程序开发#xff08;VKMS#xff09;
特此致谢#xff01; 前一篇文章讲解完了drmModeSetCrtc(crtc_id, fb_id, connector_id, mode)#…接前一篇文章libdrm全解析三十七 —— 源码全解析34 本文参考以下博文
DRM 驱动程序开发VKMS
特此致谢 前一篇文章讲解完了drmModeSetCrtc(crtc_id, fb_id, connector_id, mode)DRM一般流程的也就讲完了。但是实际上还有一部分没有在一般流程中但其也是很重要且必不可少的这就是资源的释放。这其中包括了很多函数drmModeRmFB()、munmap()、drmIoctl(DRM_IOCTL_MODE_DESTROY_DUMB)、drmModeFreeConnector()、drmModeFreeResources()。这些函数都是一般流程各步骤所调用函数的反函数。下边对于这些函数逐个来进行分析。
先来看drmModeRmFB函数。它与drmModeAddFB()是一对。
75. DRM_IOCTL_MODE_RMFB
第75个宏是DRM_IOCTL_MODE_RMFB相应代码如下
#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xAF, unsigned int)
结合之前文章中的_IOWR(type,nr,size)的最终定义得到如下代码
#define DRM_IOCTL_MODE_RMFB ( ((3) 30) | ((d) 8) | ((0xAF) 0) | ((sizeof(unsigned int)) 16) )
DRM_IOCTL_MODE_RMFB对应的Userspace API为drmModeRMFB()。该函数在xf86drmMode.c中代码如下
drm_public int drmModeRmFB(int fd, uint32_t bufferId)
{return DRM_IOCTL(fd, DRM_IOCTL_MODE_RMFB, bufferId);
}
函数的作用是销毁指定的framebuffer object之前通过drmModeAddFB函数向DRM驱动注册的framebuffer object。
实例代码片段如下
uint32_t fb_id;
……
drmModeAddFB(fd, create.width, create.height, 24, 32, create.pitch,create.handle, fb_id);
……
drmModeRmFB(fd, fb_id);
资源释放流程中的其余函数将在后续文章中进行解析。