中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 8221|回复: 13

请教:FrameBuffer与显卡的关系

[复制链接]
发表于 2013-8-13 10:51:48 | 显示全部楼层 |阅读模式
最近在看Linux下的显卡驱动时,遇到一些问题,在此想请各位指点迷津:
o 我们通常所说的在PC上的GPU,是不是相当于一个SoC系统上的LCD controller, 当然我是指它们在系统中所充当的角色,而不是它们的功能。我的理解是,GPU是PC系统里的显卡,它可以控制显示器在屏幕上画出各种图形,而SoC系统里的LCD controller也是控制LCD屏输出图像,不知道我的理解是否正确。

o 通常的显卡驱动实际上可以分为两种:用户空间驱动程序(这个是不是就是当我们给机器装了OS后,再从相应的GPU厂商的官网上下载的显卡驱动呢)
另一种就是操作系统的显卡驱动 (比如Linux下的drivers/video/i810就是给Intel 810这个GPU写的驱动程序,就是说我在显卡为i810的机器上装上Linux系统,不用再安装上面说的用户空间驱动程序,我的显示屏也可以工作,但有可能性能不能达到最好,比如分辨率无法设置到最大),我的理解对吗?


发表于 2013-8-14 00:13:49 | 显示全部楼层
"我们通常所说的在PC上的GPU,是不是相当于一个SoC系统上的LCD controller, 当然我是指它们在系统中所充当的角色"
SoC系统上可能同时包含LCD controller和GPU,可以认为PC机上的显卡包含了这两者。

“就是说我在显卡为i810的机器上装上Linux系统,不用再安装上面说的用户空间驱动程序,我的显示屏也可以工作,但有可能性能不能达到最好,比如分辨率无法设置到最大)”
linux内核显卡驱动只是提供了模式设置、内存管理、中断处理机制和命令通道,linux系统下显卡驱动的主体部分在核外,l如果不安装核外驱动,基本上显卡就只有一个类似LCD controller的功能,2D/3D加速都会是软件做的
发表于 2013-8-14 00:18:39 | 显示全部楼层
KM是对整个显卡作为单一组件的管理,比如显存分配、命令的发射、数据返回、中断、上下文切换。而UM主要是针对进程的,比如怎么去实现GL的API,怎么去管理内存中的资源副本等等。
 楼主| 发表于 2013-8-14 08:32:12 | 显示全部楼层
shoemaker 发表于 2013-8-14 00:13
"我们通常所说的在PC上的GPU,是不是相当于一个SoC系统上的LCD controller, 当然我是指它们在系统中所充当 ...

drivers/video/下的各种fb是不是就是linux内核显卡驱动呢?你说的提供了命令通道指的是ioctl吗?
 楼主| 发表于 2013-8-14 08:36:36 | 显示全部楼层
空明流转 发表于 2013-8-14 00:18
KM是对整个显卡作为单一组件的管理,比如显存分配、命令的发射、数据返回、中断、上下文切换。而UM主要是针 ...

请问:KM, UM分别代表什么,它们在Linux源码公树里有对应的源码目录吗?
新手初来乍到,还请多多指教。:-)
发表于 2013-8-14 15:21:03 | 显示全部楼层
michael_618 发表于 2013-8-14 08:32
drivers/video/下的各种fb是不是就是linux内核显卡驱动呢?你说的提供了命令通道指的是ioctl吗? ...

drivers/gpu/drm目录
发表于 2013-10-26 16:10:37 | 显示全部楼层
shoemaker 发表于 2013-8-14 00:13
"我们通常所说的在PC上的GPU,是不是相当于一个SoC系统上的LCD controller, 当然我是指它们在系统中所充当 ...

“linux系统下显存驱动的主题部分在核外”  这个应该是UM吧,KM如果不提供显卡驱动支持,那么UM部分只是软件实现而已,UM部分做得到再好,如果没有KM的支持,那么你的显卡再好也没有起到什么作用。
发表于 2013-10-26 16:12:35 | 显示全部楼层
michael_618 发表于 2013-8-14 08:36
请问:KM, UM分别代表什么,它们在Linux源码公树里有对应的源码目录吗?
新手初来乍到,还请多多指教。:- ...

Linux kernel source code中并没有对主流GPU进行支持,很多都是反汇编的结果。KM:kernel module UM:应该就是user module了。
发表于 2013-10-26 19:46:51 | 显示全部楼层
chinahhucai 发表于 2013-10-26 16:12
Linux kernel source code中并没有对主流GPU进行支持,很多都是反汇编的结果。KM:kernel module UM:应该 ...

Intel的都有
对AMD的显卡支持还比较全吧,只是性能比商用驱动差一些
NV的大部分市反汇编的
发表于 2013-10-27 12:54:17 | 显示全部楼层
shoemaker 发表于 2013-10-26 19:46
Intel的都有
对AMD的显卡支持还比较全吧,只是性能比商用驱动差一些
NV的大部分市反汇编的 ...

Intel的集显支持得确实很好,AMD提供了很全面的文档,在X.org上都可以下载的了,不过根据前些日子有人做了性能分析比较,opensource的越来越来好。NV也开始支持nouveau了。
 楼主| 发表于 2013-11-7 11:12:54 | 显示全部楼层
chinahhucai 发表于 2013-10-27 12:54
Intel的集显支持得确实很好,AMD提供了很全面的文档,在X.org上都可以下载的了,不过根据前些日子有人做 ...

Linux内核源码树是从哪个版本加入DRM的?DRM是整个DRI框架的一部分是吗?DRI应该包括X server, X client,
kernel-level drivers, 还有一大堆库,是这样吗?
发表于 2014-7-30 10:14:51 | 显示全部楼层
michael_618 发表于 2013-11-7 11:12
Linux内核源码树是从哪个版本加入DRM的?DRM是整个DRI框架的一部分是吗?DRI应该包括X server, X client, ...

具体哪个版本可以去查历史。。。dri是个协议,目前是dri3,通过dri协议,mesa等用户空间的driver不必经过x server就可以直接发送命令到kernel。
drm是linux kernel的一部分,即所谓的km部分,mesa提供了基于dri的driver架构, 比如intel的官方mesa驱动就是基于dri,这是um部分,um通过libdrm和drm通讯. um实现渲染的逻辑,比如hw state的设置,设置更新surface,texture, shader等等。km则负责硬件初始化以及mem/ring/context的管理以及kms部分控制display controller.
发表于 2017-10-14 20:23:35 | 显示全部楼层
早期有单独的fb卡。
发表于 2018-10-16 18:24:03 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2019-1-23 16:26 , Processed in 0.068967 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表