一:概述
一個 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
-