一:概述
一个 OpenGL 应用程序调用 GPU 驱动的过程,主要是通过动态链接库(libGL.so
)来完成的。本文从上到下梳理一下整个调用链,包含 GLVND
、Mesa 或厂商驱动之间的关系。
二:调用关系
1. 首先一个 OpenGL 应用程序(比如游戏或图形渲染软件)在运行时会调用 OpenGL 提供的 API,例如 glDrawArrays()
、glClear()
等。这些 API 实际上是动态链接自系统提供的 OpenGL 库,通常是:
/usr/lib/x86_64-linux-gnu/libGL.so.1
2. 其次在现代 Linux 系统上,libGL.so.1
是由 GLVND(OpenGL Vendor Neutral Dispatch) 提供的。
-
它的作用是将 OpenGL 的调用 分发到正确的供应商实现(Vendor Library),如:
-
Mesa 的开源驱动(
radeonsi_dri.so
,iris_dri.so
-