参考资料:www.mesa3d.org
概述
- 图形软件栈
- 应用程序,比如游戏
- 中间件,比如游戏引擎
- 图形API,比如OpenGL、Vulkan
- 用户态驱动,比如Mesa
- 内核态驱动,比如DRM、KMS
- GPU
- Mesa的功能
- 向上支持图形API
- 将Shader编译为GPU指令
- 兼容窗口系统
- 实现状态管理、存储管理、任务调度
- 向下通过内核态驱动,向GPU发送指令和数据
- 一般的驱动程序是指内核态驱动。图形驱动程序的特殊之处在于,它的用户态驱动远远大于内核态驱动,原因是用户态驱动相当于一个(GPU的)编译器、一个(GPU的)操作系统。这和通用计算软件栈是一致的
- 应用程序,比如AI
- 中间件,比如AI框架
- 通用计算API,比如CUDA
- 上层驱动,比如NVCC、CUDA Runtime
- 下层驱动,比如CUDA Driver
- GPU
Mesa的组成部分
- Mesa支持的图形API、通用计算API
- Mesa支持的GPU
- Shader编译器
- X窗口系统、Wayland窗口系统兼容层
- 直接渲染基础设施(DRI)
- EGL、OpenGL、Vulkan的状态管理
- 软渲染器(Gallium的一部分)
- Softpipe –> 参考软渲染器
- LLVMpipe –> 高性能JIT软渲染器