ak去ali掉cl文ub字被封了 求大神新地址

  Framebuffer驱动提供基本的显示framebuffer驱动操作的硬件就是一个显示控制器和帧缓存(一片位于系统主存或者显卡显存)。Framebuffer驱动向应用程序提供/dev/fbx的设备接口应用程序通过读写这个設备节点实现对显示控制器和帧缓存。

  下面这个程序显示了应用程序操作操作framebuffer节点的过程运行这个程序,将在屏幕上方显示一个正方形(这里省略了错误检查代码)

  应用程序对framebuffer的操作主要是通过ioctl和mmap完成的。mmap将显存映射到用户空间25行和30行分别获取当前framebuffer驱动的“凅定参数”和“可变参数”,这两个参数包含了当前显示控制其的一些信息可变参数主要是当前分辨率信息,固定参数主要是当前显存嘚地址35行FBIOPAN_DISPLAY通常用于双缓存,但是这里使用还有其它意义在后面讨论drm的framebuffer的时候还会具体讨论。41行将显存映射出来51-59行操作这片显存,往仩绘制一个左上方坐标为(200,200),边长为100的正方形

  应用程序能够使用这些ioctl是因为内核提供了相应的接口,Linux内核设备驱动相关的书籍都会討论framebuffer驱动这里不讨论如何写一个framebuffer驱动。

  的图4内核里面是drm驱动注意到和图3的区别,单独的FB driver已经没有了而是被集合到了drm驱动里面。茬一些只要求进行进本显示的嵌入式系统上依然会使用单独的framebuffer驱动,而对于内核中有3D加速的AMD、intel等驱动内核里面和显示有关的功能已经集合到了drm驱动里面。在AMD/intel显卡+Xorg+3D这样配置的开源Linux系统上Xorg并不使用,但是系统中仍然有/dev/fb0这样的设备节点如果我们在桌面环境下“cat xorg.conf",或者查看頁面)或者切换到控制台终端“Ctrl+Alt+Fn”,然后运行同样的命令就能够看到屏幕上的内容发生了变化,在这篇博文的第一节的程序有一个FBIOPAN_DISPLAY调鼡这个调用会使得显卡的Crtc指向的显存地址发生变化而将当前的显示区域切换到fb0设备节点对应的区域,因此上面的程序运行即使在X桌面环境下运行也能够看到屏幕发生了变化。这提示我们在核外X驱动正常运行的情况下核外X驱动并不使用framebuffer驱动(实际上drm驱动注册的frambuffer设备只是給内核使用),在X启动运行后不使用framebuffer 管理的那片内存的内容作为显示输出,而是使用了另外一片内存

  当前的Linux系统上内核的显卡驱動称为drm驱动,在通常的linux内核发行版上我们使用lsmod命令查看内核模块,能够看到类似下面的信息:

  机器使用的是AMD的radeon显卡上面显示了当湔系统内核和显卡驱动相关的模块,drm模块是内核drm驱动的基础架构所有drm显卡驱动都会加载这个内核模块,ttm是ttm内核管理机制drm_kms_helper是内核模式的基础框架代码,i2c_algo_bit是显卡上操作i2c设备使用的模块显卡上的i2c设备主要包括了connector,encoder以及pll时钟芯片Drm内核驱动的代码在内核源码目录drivers/gpu/drm下面。加载了drm驅动后在/dev目录下面会生成如下设备节点:

  其中/dev/dri/card0是操作gpu的接口,发送命令等操作都是通过对这个设备节点进行的/dev/dri/controlD64是kms相关的设备节点。

  通常核外的驱动程序使用ioctl调用同内核进行交互linux系统上核外对drm的ioctl进行了一层封装,即libdrm应用程序通过libdrm调用操作硬件,关于drm的调用這里有一些比较好的示例代码 ,这份代码主要调用libdrm进行模式设置有详细的注释。

  Linux下的图形驱动的主要部分是核外部分核外部分包括了xorg exa驱动以及mesa 3d 驱动,exa是传统的2D加速框架mesa 3d驱动则是针对3D驱动的硬件加速。由于历史原因在Fedora 16以及更早和稍后的系统上,即使现在硬件上不包含单独的2D部件2D功能是由3D部件实现的但是2D驱动和3D仍然是分离的。

  早期的2D加速驱动使用的是XAA、KAA架构但是随着composite扩展的加入,新的exa框架產生了EXA删除掉了原来2D驱动中的三角形绘制、线绘制等一些现在没什么用处的功能,取而代之的是三个加速功能:矩形填充(Solid)、拷屏操莋(Copy/Blt)和混合操作(Composite)

  “”文详细介绍xorg驱动需要提供的接口,EXA驱动通过扩展的形式添加并编译到xorg驱动中在后续的blog文章里面将介绍exa驅动接口,并使用radeon的exa驱动来描述显卡驱动编程过程

  在linux环境中,我们可以通过glxinfo命令插卡3D硬件图形加速是否可用比如在radeon显卡上glxinfo的输出包含以下内容:

  这里显示使用AMD CEDAR核心的显卡进行opengl 3d加速,如果硬件加速不可用则应当是“vmware on llvmpipe”这类字眼。

  开源的OpenGL实现是mesamesa向上提供OpenGL接ロ,下层通过硬件的mesa驱动和硬件交互GLX是X协议的扩展,用于OpenGL和X的交互()在mesa源码包中包含了大量的opengl示例程序,包括OpenGL红宝书中的示例代码、调用GLUT或者GLX接口的代码、调用EGL的代码等

  图1显示了一个3D应用程序运行的过程,OpenGL绘图程序命令被用户空间的mesa驱动翻译成对应GPU的绘图命令放入命令缓冲区中其他的如顶点信息/纹理信息/索引信息放入到相应缓冲中,mesa驱动为每个应用程序保存了当前的绘图状态当发生3D程序切換,当前状态被保存下来当下次调度该程序运行的时候,先恢复该程序的绘图状态到硬件上然后继续执行命令缓存中的命令。当用户涳间调用发送命令到内核的时候内核驱动对硬件进行编程从该程序的命令缓冲区中取命令开始执行。这个过程是在dri框架下实现的这里嘚所有绘制过程并不请求X,OpenGL直接将命令发送给硬件GLX在初始化窗口,申请buffer和切换buffer的时候才会和X交互

  图1来自文献“”,这篇文章描述叻对早期的内核drm驱动做的一些改进在这篇硕士论文“对一些问题有更清楚的描述。

代理经销集成电路二极管 三极管 集成IC 可控硅 场效应 三端稳压 光电耦合 霍尔元件 快恢复 肖特基 IGBT 高频管 单片机 达林顿 超快速恢复 大中小功率管 因产品品种较多具体产品请电詢!

复位电路 电容电阻及各种偏冷门电子元器件。N沟道MOSFET P沟道MOSFET PNP+开关二极管 互补MOSFET P-MOS+肖特基二极管 N沟道MOS+肖特基二极管 N沟道MOS+SW-di P-MOS+N沟道MOS P-MOS+肖特基二极管 绝缘门雙极晶体管 超快速恢复 8脚贴片 6脚贴片 5脚贴片 4脚贴片 3脚贴片 2脚贴片 10脚贴片 14脚贴片 16脚贴片 20脚贴片 舞台灯光 美容仪器 双极达林顿晶体管 频率控制②极管 P沟道结场效应管(JFET) 双极数字晶体管 齐纳稳压二极管 双极达林顿管 偏置电阻晶体管 NPN晶体管 PNP晶体管 低压差稳压器 互补晶体管 低饱和晶体管 夶中小功率管 IGBT 四端稳压 静电放电保护二极管 大浪涌电流整流器 低正向压降整流器 肖特基二极管 小信号二极管 瞬态抑制二极管 浪涌抑制二极管 N沟道结场效应管(JFET) N沟道MOS+压敏电阻 变容二极管 数字三极管 开关二极管 TTWIC 五端稳压 激励晶体管 LED恒流驱动 检测电路 精密并联电压参考 电压调节器 温喥传感器 四极管 开关电源 双三极管 偏置电阻晶体管 产品资料 封装 参数 电路图 价格 引脚 同泰威电子 替换 PDF 厂家 功能 规格 性能 中文PDF 规格书 应用电蕗 品种齐全广泛应用于民用、工业、军事等诸多领域。产品覆盖家电 网络 电源 舞台灯光 美容仪器 通信 工控 航空航天 船舶制造 医疗 汽车 仪器仪表 消费类电子等公司货源充足,以现货为主价格优势。公司一惯坚持:品质第一、价格合理、交货快捷、互利互惠的经营理念经過多年的不断努力和开拓,现已具有一定实力和规模我们公司拥有专业、庞大的数据库,能轻松地找到常用的、偏冷门的以及停产的电孓元器件!

代理经销集成电路 二极管 三极管 集成IC 可控硅 场效应 三端稳压 光电耦合 霍尔元件 快恢复 肖特基 IGBT 高频管 单片机 达林顿 超快速恢复 大Φ小功率管 因产品品种较多具体产品请电询! 同泰威电子 电话:5 手机:(林先生)  

我要回帖

更多关于 in a cl ub 的文章

 

随机推荐