【ARM-Linux开发】DRM学习(一)
http://www.landley.NET/kdocs/htmldocs/drm.html
非常好的一个链接,直接把DRM说的很透。很多API的功能都写全了。
Table of Contents
- 1. Introduction2. DRM Internals
-
- Driver Initialization
-
- Driver InformationDriver Load
- Memory management
-
- The Translation Table Manager (TTM)The Graphics Execution Manager (GEM)
- Mode Setting
-
- Frame Buffer CreationOutput PollingLocking
- KMS Initialization and Cleanup
-
- CRTCs (struct drm_crtc)Planes (struct drm_plane)Encoders (struct drm_encoder)Connectors (struct drm_connector)CleanupOutput discovery and initialization exampleKMS API Functions
- Mode Setting Helper Functions
-
- Helper FunctionsCRTC Helper OperationsEncoder Helper OperationsConnector Helper OperationsModeset Helper Functions Referencefbdev Helper Functions ReferenceDisplay Port Helper Functions ReferenceEDID Helper Functions ReferenceRectangle Utilities ReferenceFlip-work Helper ReferenceVMA Offset Manager
- KMS PropertiesVertical BlankingOpen/Close, File Operations and IOCTLs
-
- Open and CloseFile OperationsIOCTLs
- Command submission & fencingSuspend/ResumeDMA services
- 3. Userland interfaces
-
- Render nodesVBlank event handling
http://www.docin.com/p-908833121.html
讲解KMS的使用。
DRM - Direct Rendering Manager
DRM是一个内核级的设备驱动,既可以编译到内核中也可以作为标准模块进行加载。DRM最初是在FreeBSD中出现的,后来被移植到Linux系统中,并成为Linux系统的标准部分。
DRM可以直接访问DRM clients的硬件。DRM驱动用来处理DMA,内存管理,资源锁以及安全硬件访问。为了同时支持多个3D应用,3D图形卡硬件必须作为一个共享资源,因此需要锁来提供互斥访问。DMA传输和AGP接口用来发送图形操作的buffers到显卡硬件,因此要防止客户端越权访问显卡硬件。
Linux DRM层用来支持那些复杂的显卡设备,这些显卡设备通常都包含可编程的流水线,非常适合3D图像加速。内核中的DRM层,使得这些显卡驱动在进行内存管理,中断处理和DMA操作中变得更容易,并且可以为上层应用提供统一的接口。
DRM代码位置
每一个3D硬件加速驱动都包含一个内核模块,并且都需要使用DRM支持代码。
DRI - Direct Rendering Infrastructure
DRM支持DRI的方式
- DRM提供到显卡硬件的同步访问。Direct rendering system有多个实体(比如X server,多个direct-rendering客户端,以及kernel)竞争访问显卡硬件。PC类的显卡在多个实体访问显卡硬件时会使用锁。DRM为每个显卡设备提供了一个锁,来同步硬件的访问。比如X server正在执行2D渲染,此direct-rendering客户端执行一个软件回调,这个软件回调会读写frame buffer。对于一些高端卡来说,由于硬件内部本身会对访问命令做排序,因此并不需要使用这个锁。
- DRM在访问显卡硬件时,强制执行DRI安全测策略。X server以root权限运行,在访问显卡的framebuffer和MMIO区域时,会用/dev/mem映射这些区域。direct-rendering 客户端,并不是运行在root权限的,但是仍然需要类似的映射。DRM设备接口允许客户端创建这些映射,但是必须遵守以下限制: *仅当客户端连接到X server时才能映射这些区域,这就迫使direct-rendering客户端遵守正常的X server安全策略。 * 仅当客户端能够打开/dev/drm?时才可以映射这些区域。这允许系统管理员可以配置direct rendering访问,仅可信的用户才能访问。 * 客户端只能映射X server允许映射的区域。
- DRM提供了一个通用的DMA引擎。大部分现代PC类计算机的显卡硬件提供command FIFO的DMA访问。DMA 访问比MMIO访问有更好的吞吐量性能。对于这些显卡,DRM 提供的DMA引擎包含下面的features: *
DRM和DRI关系
早期的Direct Rendering Infrastructure
转载于:https://www.cnblogs.com/huty/p/8517450.html
【ARM-Linux开发】DRM学习(一)相关推荐
- 移植中文TTS(ekho)到ARM linux开发板
移植ekho到arm linux,实现将中文转换为.wav格式的语音文件. 移植开源库libsndfile到arm linux开发板 1. 下载压缩源码包libsndfile-1.0.28.tar.g ...
- ARM嵌入式开发板学习路线指引
如何入门嵌入式?嵌入式开发学习方法步骤 如何入门嵌入式?嵌入式开发学习路线指引 嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有linux,android. 平台:Cortex-A9 ...
- linux开发需要学习什么,linux开发需要掌握哪些知识?
原标题:linux开发需要掌握哪些知识? 嵌入式linux开发的应用是非常广泛的.而且linux是开源的,各种技术也是非常成熟的.不过很多初学者在学习linux开发过程中感觉非常难,那么对于linux ...
- linux下s3c2440开发板,SAMSUNG S3C2440 ARM LINUX 开发板 上手初体验 --开发环境搭建
1,linux开发环境搭建 2,程序测试 easyOpentag驱动安装,打开连接,选择ARM-linux 1,环境搭建 我的系统版本 root@ubuntu:~# lsb_release -a No ...
- QEMU搭建ARM linux开发环境
qemu可以用来模拟嵌入式的开发板,很多的嵌入式开发技巧完全可以抛开开发板来做实验,甚至可以直接调试驱动.内核调试就更加方便了. 主要参考了:https://www.jianshu.com/p/948 ...
- 正点原子 linux 开发板学习 uboot 篇 一
源码选择 出厂可以直接使用 原子出厂源码, 出厂源码会随时修复bug或者添加新的驱动以兼容正点原子的其他模块 学习的时候 U-Boot 烧写与启动 uboot 启动位置根据拨码开关 烧写 通过.imx ...
- 极速搭建周立功IMX283A ARM Linux开发环境(1)
最近手特别痒,想自己买个开发板玩,由于周立功的imx283a的资料资源特别丰富,所以选择上手,以后会记录学习过程 搭建环境,阅读ARM9,了解接口 i.mx283A和i.mx287A比较 安装完成以后 ...
- 嵌入式ARM Linux开发板自启动,跳过输入root用户名和密码
1. 编译autologin.c程序. autologin.c文件内容 #include <unistd.h> int main() { execlp("login", ...
- 正点原子stm32f407开发板pcb图_#试用名单公布#正点原子ARM Linux开发板I.MX6ULL
活动报名链接: http://www.cirmall.com/bbs/thread-161572-1-1.html 恭喜以下五位获得试用资格,管理员会将确认邮件发送至各位获奖者邮箱,请在3个工作日内回 ...
- arm -linux开发产品,arm是什么意思_arm的翻译_音标_读音_用法_例句_爱词霸在线词典...
全部 四级 六级 高考 考研 Familiar consumer products are being adopted by businesses, government and the armed ...
最新文章
- cmake的使用-为什么要使用CMake
- 如何在客户端清除fileUpLoad控件的文件路径
- Linux系统【二】exec族函数及应用
- 网络诈骗是大数据的“原罪”吗
- 解决zabbix-4系列监控图形中文乱码问题
- “机海战术”已死!后智能手机时代靠什么才能赢?
- 深度学习的应用:语音识别、图像理解、自然语言处理
- SSL-Explorer 安装配置
- http接口开发与调用案例
- GIT 操作中 Reinitialized existing Git repository in.......解决方法?
- android 模拟器 电脑配置,手机安卓模拟器多开对电脑配置要求与占用浅谈
- css内联样式外联样式嵌套样式区别
- 配置和google浏览器版本一直的webdriver
- plc仿真实训软件_博途STEP7仿真软件与真实PLC的区别
- 蓝桥杯python组——明码
- chorme唤起Java开发的本地程序全采坑记
- exls表格搜索快捷键_excel搜索快捷键 常用的excel快捷键有哪些
- Java设计模式(六)装饰器模式-与代理模式的区别-项目实战应用
- 黑客电影《我是谁:没有绝对安全的系统》正片(含下载)
- 关于百度搜索引擎优化的常见问题