c 做网站怎么居中,网站开发与实践题库,网站维护工作,工程建设标准化网站简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 人生格言#xff1a; 人生… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的理解DRM架构。 2.DRM和FrameBuffer对比优点
DRM是Android和Linux目前主流的图形显示框架比起FrameBuffer架构DRM有更多强大的功能。而FrameBuffer架构只支持单纯的显示。DRM支持VSYNC、DMA-BUF、异步更新、Fence等机制等等。DRM可以统一管理GPU渲染图形和Display显示控制它可谓是新的“图形大管家”。
3.DRM架构图 4.DRM模块组成 1.DRM从模块上划分分为三个部分包括libdrm、KMS、GEM。
libdrm 直接访问DRM驱动对访问DRM驱动的ioctl()接口进行封装 KMS KMS全称Kernel Mode Setting。它的主要工作内容设置显示参数和更新画面。 更新画面显示图形buffer切换多plane图层合成方式和plane显示位置。 参数参数刷新率(fps)、分辨率、亮屏与灭屏等。 GEM GEM全称Graphic Execution Manager功能为显示图形Buffer的分配和释放它是DRM与GPU衔接的接口。 plane是连接 framebuffer和crtc 的纽带而 encoder 则是连接 crtc 和 connector 的纽带。 与物理 buffer 直接打交道的是 gem 而不是 framebuffer。 5.KMS和GEM组成部分 KMSFrameBuffer、CRTC、ENCODER、CONNECTOR、PLANE、、VBLANK、Property GEMDUMB、PRIME、Fence DRM组层部分功能描述FrameBuffer表示单个图层的显示内容唯一一个和硬件无关的基本元素CRTC表示显示控制器对FrameBuffer数据进行扫描产生时序信号的硬件模块ENCODER将CRTC输出的timing时序转换成外部设备所需要的信号的模块如HDMI转换器或DSI ControllerCONNECTOR连接物理显示设备的连接器如HDMI、DisplayPort、DSI总线通常和Encoder驱动绑定在一起PLANE硬件图层有的Display硬件支持多层合成显示但所有的Display Controller至少要有1个planeVBLANK软件和硬件的同步机制RGB时序中的垂直消影区软件通常使用硬件VSYNC来实现Property任何你想设置的参数都可以做成property是DRM驱动中最灵活、最方便的Mode setting机制DUMB只支持连续物理内存基于kernel中通用CMA API实现多用于小分辨率简单场景PRIME连续、非连续物理内存都支持基于DMA-BUF机制可以实现buffer共享多用于大内存复杂场景Fencebuffer同步机制基于内核dma_fence机制实现用于防止显示内容出现异步问题
Refence