博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux的Graphics子系统分析
阅读量:2238 次
发布时间:2019-05-09

本文共 1157 字,大约阅读时间需要 3 分钟。

LinuxGraphics子系统旨在为Linux系统提供图形界面的支持。其系统架构如下图所示:

Ø LCD控制器驱动

   LCD控制器从字面上理解也知道,它是用来控制LCD液晶屏的,CPU可通过操作LCD控制器来实现对LCD的控制。对于不同型号的LCD控制器,Linux需要提供其驱动程序,如exynos4412LCD控制器驱动源码路径为:“drivers/video/exynos/s3cfb.c”。

Ø FB抽象接口驱动

   FrameBuffer Driver(帧缓存驱动) 是出现在 2.2.xx 内核当中的一种驱动程序接口。它屏蔽掉了不同显示设备硬件的差异性,为用户提供统一的显示屏操作视角(/dev/fbx),应用程序可以通过打开读写此设备文件而将视频及图像数据输出到显示设备上。其内核源码路径为:“/drivers/video/fbmem.c

Ø 应用层图形界面

 图形界面为用户提供友好的操作接口,常见的linux图形界面有:AndroidQTXwindowMiniGUIGTK等。

Ø OpenGL

Open Graphics Library定义了一个跨编程语言、跨平台的规格的专业的图形程序,它被用来绘制底层图形。什么是绘制底层图形,举个例子就清楚了,比如我们想画个圆只需要调用OpenGL接口()就可以了。OpenGL只是定义了诸如此类的接口,其具体内部实现可以是软件实现,也可以是硬件实现(通过DRM+GPU)。

OpenGL支持对2D3D图形的绘制,绘制标准流程如下图所示:

Ø DRMDirectRendering Manager

DirectRendering Manager(直接渲染管理器)从名字上我们就可以看出它是干什么的。渲染是一件非常复杂的事情,如果通过软件实现,想必是非常耗CPU资源的,DRM的作用就是将渲染工作交给GPU来完成。内核源码路径为:“drivers/gpu/drm/

提供直接图形渲染是DRM的主要功能,它还有一些其他功能,如GEMEDIDCRTC等,DRM功能框图如下图所示:

Ø 显卡及其驱动

  显卡一般由GPU、显存及一些显示器接口组成,其主要完成三维图像和特效的处理,核心技术有硬体T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。为了使用这些功能Linux需要为相应GPU提供驱动程序,如ARM@Mali系列的GPU源码路径为:“/drivers/gpu/arm/mali”。

Ø 显存、FBLCD控制器、GPU四者之间的关系

        FB驱动、LCD控制器驱动、GPU这三者都关联着显存,我们可以简单理解为FBGPU是显存内容的提供者,而LCD控制器是显存内容的消费者。其关系图如下图所示:

你可能感兴趣的文章
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>