Mesa用户态驱动

参考资料: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软渲染器