技术关键词:mesa、OpenGL、meson
目录
前言:meson 构建系统
一、静态库列表(.a文件)
二、动态库列表(.so文件)
三、模块关系
前言:meson 构建系统
在详述mesa模块功能和关系前,先来说下如何分析mesa的模块和关系。很简单,熟悉mesa的构建系统:meson。meson 是一个生成 ninja 文件的构建系统,不同的构建系统有不同的语法,但万变不离其宗:程序的编译、链接。通过跟踪分析meson.build里的static_library、executable、shared_library生成目标文件的语句,就可以把整个模块关系图梳理出来。
一、静态库列表(.a文件)
库名称 | 库功能 | 库详细描述 |
---|---|---|
libglx | 实现linux系统上的render context创建与管理 | 类似于windows上的wgl。负责linux平台上的一些可新概念的的初始化和管理,如display、screen、context |
libmesa | 用户态gl*函数的入口库,维护opengl 状态 | |
libloader | 负责后端驱动加载 | 提供环境变量、dri配置文件、pci id、 device driver四种加载方式 |
libloader_dri3_helper | dri3 扩展的实现 | 对接使用xserver的dri3+present扩展进行送显 |
libdri | linux dri的支持 | gallium frontends |
lib*** | 显卡厂商的用户态驱动核心部分,负责组织硬件接收的数据 | gallium driver。例如ADM的radeonsi,则生成的库就是libradeonsi.a |
lib***winsys | 负责对接linux内核驱动 | gallium winsys,封装与操作系统相关的内容 |
二、动态库列表(.so文件)
库名称 | 库功能 | 库详细描述 |
---|---|---|
libGL | gl的初始化库 | 由libglx.a、libloader.a、libloader_dri3_helper.a组成,负责初始化gl,加载后端驱动 |
libEGL | egl库 | 负责egl的具体api规范的实现 |
libglapi | gl函数的dispatch库 | 负责gl函数的入口分发 |
libgbm | graph buffer manager,统一bo的管理 | 该库是想统一设备内存的管理,提供一个统一的与后端驱动无关的存储管理接口 |
libgallium_dri | 厂商实现的后端驱动 | 由libdri.a、lib***.a、lib***winsys.a组成,厂商的用户态驱动 |
三、模块关系
一图胜千言。模块关系图如下,该图罗列了mesa的核心模块的包含和依赖关系。本图在上一篇文章mesa 概述中也有涉及,但该图给出了更多的模块内部的细节。后续内容会也会看到该类似图,但每次出现,都会有新内容。
文章来源:https://www.toymoban.com/news/detail-626596.html
mesa 模块关系图 文章来源地址https://www.toymoban.com/news/detail-626596.html
到了这里,关于mesa库的模块功能和关系详述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!