libdrm-----linux显卡应用层代码库

DRM

The Direct Rendering Manager (DRM) is a subsystem of the Linux kernel responsible for  
interfacing with GPUs of modern video cards. DRM exposes an API that user space programs  
can use to send commands and data to the GPU, and perform operations such as configuring  
the mode setting of the display. DRM was first developed as the kernel space component of  
the X Server's Direct Rendering Infrastructure,[1] but since then it has been used by other  
graphic stack alternatives such as Wayland.

drm驱动

内核的drm主要是为了实现图形的dri硬件加速而服务的,通过提供一系列ioctls的操作,使得应用层的软件可以直接对显卡硬件操作。驱动实际使用drm是经过libdrm封装之后的借口。内核drm主要包括:vblank事件处理,内存管理,输出管理,framebuffer管理,命令注册,fencing,suspend/resume 支持,dma服务等。

内核drm的核心是围绕structdrm_device结构展开(这个结构的定义见Documents/DocBook/drm.tmpl),每种显卡的drm都会声明一个静态的structdrm_device变量以radeon驱动为例(见drivers/gpu/drm/radeon/radeon_drv.c)。radeon是一家公司的显卡,i915intel集成显卡,驱动位于drivers/gpu/drm/i915/i915_drv.c


与应用程序接口

虽然应用程序可以直接通过系统调用openioctl等与drm交互,但是实际上在drm使用中为了方便总是在系统中安装了libdrmdrm

各个操作进行封装,这样更方便使用而不用去记忆那些ioctlnum和与之对应的函数。


libdrm

libdrm的编译:

(1)apt install libpthread-stubs0-dev

(2)apt install libpciaccess-dev

(3)./configure

(4)make

(5)make install


测试代码:

下载:https://download.csdn.net/download/xgbing/10338858


你可能感兴趣的:([linux],[linux-DRM显示驱动])