当前位置: 首页 > news >正文

驱动开发系列11 - Linux Graphics 图形栈概述(二)

目录

一:GPU 和 硬件

        现代 GPU 功能概览:

        硬件结构:

         屏幕驱动:

        屏幕连接器:

        屏幕 CRT 控制器:

        CPU与GPU通信:

        现代主机通信总线介绍:

        通信方法:

        GPU 编程:通过 MMIO 访问寄存器

         CPU 和 GPU 内存请求路由:

        GPU 可访问的内存区域:

        GTT/GART 是 CPU 与 GPU 共享的通信缓冲区:

        GTT/GART 的使用:

        事件报告:中断请求(IRQ):

二:GPU驱动:

        GPU 需要主机(Host)执行的操作:

        图形堆栈的组成部分:

        Linux 图形栈的组成部分:

三:DRM:

        直接渲染管理器(DRM)功能:

        libDRM功能:

        内核模式设置 (KMS):

        图形缓冲区管理器:

        缓冲区管理的约束条件:

        检测何时需要缓冲区:

        自动重新分配缓冲区:

        DMA-Buf:

四: Mesa:

        Mesa 功能概览:

        mesa 经典:

        Gallium3D:

五:X11 和 XServer: 

        X11:X 协议版本 11

        XLib: 使用 X11 绘制应用程序:

        XCB:X 协议 C 语言绑定:

        XServer 目标:

        XServer基本加速功能:

        XServer 结构:

        XServer 2D 加速:

        XRandR(X 大小调整、旋转)

        OpenGL X 扩展 (GLX)

        GLX 直接渲染:

        GLX 间接渲染:

        XServer事件处理流程:

六:Wayland:

        Wayland协议概述:

        Wayland 合成器:

        Wayland 缓冲区共享的实现:

        Wayland事件处理流程:


一:GPU 和 硬件

        现代 GPU 功能概览:

        1. 在屏幕上显示内容加速

        2. 2D 运算加速

        3. 3D 运算解码视频

        4. 加速科学计算

        硬件结构:

        硬件结构概览:
        1.  图形处理器: 进行所有计算的地方
        2. VRAM: 存储纹理或通用数据
        3. 视频输出: 连接屏幕
        4. 电源模块: 降低电压,调节电流
        5. 主机通信总线: 与 CPU 通信

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 适合开发人员的网页爬虫工具DrissionPage
  • “精准学”官宣将公布中国首个语音端到端大模型
  • 深圳表哥告诉你“上位机和SCADA的区别”
  • 微知-linux内核中PCIe驱动扫描后驱动加载为什么有两种类型的resource?分别是什么?
  • JAVA后端程序拉取私人仓库的npm包并将该程序打包成jar包
  • C++学习笔记----4、用C++进行程序设计(五)---- 非复合与继承关系
  • react中的useCallback、useMemo、useRef 和 useContext
  • TypeScript 面试题汇总
  • 多系统萎缩不慌张,这些维生素是你的“守护神”✨
  • RabbitMQ(面试篇)
  • qt圆环饼状图,非常小的窗口都能显示
  • 探索AI大模型量化前沿技术:引领智能计算新潮流
  • SD Maid SE v1.2.3 — 老牌清理工具全面升级,更简洁,更流畅了
  • 如何使用 SQL Server 内置函数实现MD5加密
  • WebSocket的应用场景与案例解析
  • Docker 笔记(2):Dockerfile
  • JAVA多线程机制解析-volatilesynchronized
  • js中的正则表达式入门
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Python_OOP
  • 半理解系列--Promise的进化史
  • 电商搜索引擎的架构设计和性能优化
  • 对象管理器(defineProperty)学习笔记
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何利用MongoDB打造TOP榜小程序
  • No resource identifier found for attribute,RxJava之zip操作符
  • gunicorn工作原理
  • UI设计初学者应该如何入门?
  • 阿里云ACE认证学习知识点梳理
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​插件化DPI在商用WIFI中的价值
  • # Apache SeaTunnel 究竟是什么?
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (算法)大数的进制转换
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • ****三次握手和四次挥手
  • **PHP分步表单提交思路(分页表单提交)
  • .DFS.
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 快速重构概要1
  • .net 生成二级域名
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /bin/bash^M: bad interpreter: No such file or directory
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • []我的函数库
  • [BT]BUUCTF刷题第4天(3.22)
  • [C++] 从零实现一个ping服务