编译 mesa

本文介绍了如何为Vulkan开发优化环境,包括升级工具版本(如安装高版本cmake和meson)、选择合适的老版本mesa,以及从源代码编译glslangValidator的过程。特别强调了使用最新稳定版本的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原则:llvm版本越高越好,cmake版本越高越好,meson也是,否则可能无法满足要求

还有一个策略就是构建比较旧的mesa版本,比如mesa19.1之类的,而不是最新的

一,环境设置

源代码安装cmake

如果是旧版本的python3.6而且卸载不掉的话,先安装高版本,再重新建立python3软连接到新版本:
apt install python3.8

ln -s   /usr/bin/python3.8 /usr/bin/python3  
python3 -m pip3


二,安装glslangValidator


开发 Vulkan 的时候,需要使用 glslangValidator 编译 Vulkan 代码。

如果是 ubuntu 19.10 版本,可以直接执行:

$ apt install glslang-tools

#$ sudo apt-get install vulkan-tools

# 目前ubuntu 20.04 最新需要使用如下命令 sudo apt-get install glslang-tools

$ sudo apt-get install vulkan-tools
 
# 目前ubuntu 20.04 最新需要使用如下命令 sudo apt-get install glslang-tools
如果低于这个版本,则只能从源代码编译安装了,如下:

# 编译安装 glslang
$ git clone https://github.com/KhronosGroup/glslang.git

# 也可本站下载一份拷贝 wget https://www.mobibrw.com/wp-content/uploads/2018/12/glslang.zip
$ cd glslang
 
# 目前(2018.12.17)的正式版,最稳定的版本,试过最新的版本,编译部分代码存在问题
$ git checkout 7.10.2984
 
# 下载 spirv-tools 部分的功能代码
$ python update_glslang_sources.py 
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

# 编译安装 glslang
$ git clone https://github.com/KhronosGroup/glslang.git
 
# 也可本站下载一份拷贝 wget https://www.mobibrw.com/wp-content/uploads/2018/12/glslang.zip
 
$ cd glslang
 
# 目前(2018.12.17)的正式版,最稳定的版本,试过最新的版本,编译部分代码存在问题
$ git checkout 7.10.2984
 
# 下载 spirv-tools 部分的功能代码
$ python update_glslang_sources.py 
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install


 

三,编译

# 安装编译工具及依赖
sudo apt build-dep mesa
sudo apt install meson
# 设置源码环境变量路径
export TOP=/home/examyes/dev/mesa-20.0.8
cd $TOP
meson build/
meson configure build/
meson configure build/ -Dprefix=/tmp/mesa-install
ninja -C build/
ninja -C build/ install
 

### Buildroot 中编译 Mesa 的依赖配置及解决方法 在 Buildroot 环境下编译 Mesa 及其依赖项是一项复杂的任务,因为 Mesa 是一个图形库集合,涉及多个底层硬件支持和软件组件。以下是详细的说明: #### 1. 配置选项注释 为了成功编译 Mesa,需要确保 Buildroot 的配置文件中启用了必要的选项。这些选项通常位于 `menuconfig` 或 `.config` 文件中。具体来说,以下是一些关键的配置选项[^1]: - **Toolchain**: 确保选择了合适的工具链(例如 GCC 版本),并启用 C++ 支持。 - **Graphics Support**: 启用 OpenGL 和 Vulkan 支持。 - `BR2_PACKAGE_MESA3D=y`: 这是核心选项,用于启用 Mesa 构建。 - `BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST=y`: 如果目标设备基于 ARM Mali GPU,则需要此驱动程序。 - `BR2_PACKAGE_MESA3D_LLVMPIPE=y`: 对于无专用 GPU 的环境,可以选择 LLVMpipe 软件渲染器。 #### 2. 目录结构分析 Mesa 的源码及相关依赖项存储在 Buildroot 的特定目录中。主要路径如下: - `/package/mesa3d/`: 包含 Mesa 的 Makefile 和补丁文件。 - `/toolchain/`: 工具链的相关设置会影响 Mesa 的构建过程。 如果需要自定义 Mesa 的功能或修复某些问题,可以通过编辑上述目录下的文件实现。 #### 3. 常见依赖项及其解决方案 Mesa 的构建可能依赖以下几个外部库或工具: - **Libdrm**: 提供对 DRM (Direct Rendering Manager) 接口的支持。确保已启用 `BR2_PACKAGE_LIBDRM` 并选择适合的目标平台驱动(如 Rockchip RK3588)[^3]。 - **LLVM**: 若使用 Gallium 驱动程序(如 Panfrost),则需要 LLVM 来生成优化后的着色器代码。通过启用 `BR2_PACKAGE_LLVM` 解决该需求。 - **Python**: 某些脚本可能会调用 Python,因此建议安装最新稳定版的 Python 支持。 - **Zlib/PNG/JPEG**: 图像处理相关的依赖项,可通过分别启用 `BR2_PACKAGE_ZLIB`, `BR2_PACKAGE_LIBPNG`, 和 `BR2_PACKAGE_JPEG` 添加。 对于版本控制问题,类似于 QT 的交叉编译流程[^4],可以在对应 mk 文件中指定所需的依赖版本号。例如,在 `/home/user/buildroot/package/zlib/Makefile.zlib.mk` 中更新 Zlib 的版本字段。 #### 4. 构建示例 完成以上配置后,运行以下命令启动构建过程[^2]: ```bash make -j$(nproc) sudo make install ``` #### 5. 使用技巧 - 如果遇到未满足的依赖关系错误,请仔细检查日志输出,并逐一确认缺失的功能模块是否已被正确定义。 - 利用 Buildroot 的调试模式 (`BR2_DEBUG`) 查看更详尽的日志信息以便定位潜在问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值