mesa库的模块功能和关系详述

技术关键词: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_helperdri3 扩展的实现

对接使用xserver的dri3+present扩展进行送显

libdrilinux dri的支持

gallium frontends

lib***显卡厂商的用户态驱动核心部分,负责组织硬件接收的数据

gallium driver。例如ADM的radeonsi,则生成的库就是libradeonsi.a

lib***winsys负责对接linux内核驱动

gallium winsys,封装与操作系统相关的内容

二、动态库列表(.so文件)

库名称库功能库详细描述
libGLgl的初始化库由libglx.a、libloader.a、libloader_dri3_helper.a组成,负责初始化gl,加载后端驱动
libEGLegl库负责egl的具体api规范的实现
libglapigl函数的dispatch库负责gl函数的入口分发
libgbmgraph buffer manager,统一bo的管理该库是想统一设备内存的管理,提供一个统一的与后端驱动无关的存储管理接口
libgallium_dri厂商实现的后端驱动由libdri.a、lib***.a、lib***winsys.a组成,厂商的用户态驱动

三、模块关系

一图胜千言。模块关系图如下,该图罗列了mesa的核心模块的包含和依赖关系。本图在上一篇文章mesa 概述中也有涉及,但该图给出了更多的模块内部的细节。后续内容会也会看到该类似图,但每次出现,都会有新内容。

mesa 模块关系图 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值