如何理解显示卡的驱动模块(DDX,DRM,DRI,XVMC)

如何理解显示卡的驱动模块(DDX,DRM,DRI,XVMC)


1)DDX是什么
DDX是X服务器的2D驱动模块,例如via_drv.so。
2D的显示加速,包括xvideo也是由它负责。
它会初始化硬件,设置屏幕分辨率,色深,刷新频率等。在屏幕分辨率改变这样的操作,也是通过它去调用BIOS功能加以实现的。

2)DRM和DRI是什么
DRM是内核提供的模块。例如via显卡有个via.ko的模块就是drm的模块,所有对应某个显卡的内核模块都有一个父亲,是drm.ko。DRM作用很大,它可以知道显卡的中断以及DMA存取信息,并且能处理AGP和帧缓冲内存的分配。这个是核心和基础,如果nvidia提供了nvidia.ko的源代码,就公开了它所有的秘密了。
那DRI是什么呢?DRI的主要作用是让X客户机和X服务器直接控制硬件用的,为了确定屏幕哪个位置不用画图,哪个位置要画,DRI还提供了窗口位置大小盒怎样叠加的信息。因为DRI的应用程序都会对硬件加锁以独占的方式进行显卡硬件的操作,所以一旦异常,整个系统就很有可能死锁。至于DRI的应用程序如何同DRM内核模块进行通信,实际上是使用了libdrm库。
上面提到的是DRI绕过X协议做了一些事情。其实DRI也提供了X协议,供X客户机与X服务器通信使用。这点就和传统的X应用程序架构类似了。(这个似乎就是glx,以及aiglx的基础了。glx和alglx是实现类似vista 3D桌面所使用的基本技术。)
Linux OpenGL 3D的支持就是通过DRI实现的,最流行的就是Mesa了,是它提供了libGL.so给应用程序使用,使他们能够实现3D加速。

3)XVMC是什么?
为了加速mpeg2的解码,尤其为了实现1920*1080的高清全帧解码,很多显卡提供了mpeg硬件解码单元。而XVMC就是使用这个单元的一套规则。
在用户空间存在的就是类似libviaXvMC.so,libviaXvMCPro.so这样的库,它们负责和内核的DRM模块打交道,从而能使用硬件提供的mpeg解码加速功能。而每块视频卡对应的用户空间的xvmc库都不同,所以XvMC提供了一个包装盒,libXvMCW.so,它会向ddx询问应该使用哪个共享库,如果ddx没有回答,它就会使用/etc/X11/XvMCConfig文件来确定。

 

转载于:https://www.cnblogs.com/sun-frederick/p/4763420.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值