macOS Mojave(10.14.1)安装Vulkan依赖的工具链SPIR-V Toolchain

目前在研究学习VulkanVulkan使用SPIR-V工具链进行编译,在macOS Mojave(10.14.1)中使用如下命令安装工具链:

$ brew info glslang
glslang: stable 7.10.2984 (bottled), HEAD
OpenGL and OpenGL ES reference compiler for shading languages
https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/glslang.rb
==> Dependencies
Build: cmake ✘
==> Options
--HEAD
	Install HEAD version
==> Analytics
install: 1,147 (30 days), 1,770 (90 days), 2,664 (365 days)
install_on_request: 383 (30 days), 696 (90 days), 1,537 (365 days)
build_error: 0 (30 days)

$  brew install glslang
==> Downloading https://homebrew.bintray.com/bottles/glslang-7.10.2984.mojave.bo
######################################################################## 100.0%
==> Pouring glslang-7.10.2984.mojave.bottle.tar.gz
?  /usr/local/Cellar/glslang/7.10.2984: 58 files, 6.7MB

$ glslangValidator -v
Glslang Version: 7.10.2984
ESSL Version: OpenGL ES GLSL 3.20 glslang Khronos. 10.2984
GLSL Version: 4.60 glslang Khronos. 10.2984
SPIR-V Version 0x00010300, Revision 1
GLSL.std.450 Version 100, Revision 1
Khronos Tool ID 8
SPIR-V Generator Version 7
GL_KHR_vulkan_glsl version 100
ARB_GL_gl_spirv version 100

但是,需要注意的是,使用HomeBrew安装的版本,缺少部分功能,如果使用"-Os"(代码大小优化)参数的时候,会报告错误,如下:

$ glslangValidator -V -Os
glslangValidator: Error -Os not available; optimizer not linked (use -h for usage)

这是由于代码大小优化部分需要spirv-tools执行,然而HomeBrew编译的版本没有关联spirv-tools导致安装的程序没办法使用这个功能。

如果需要这部分功能,我们只能手动编译安装:

# 移除brew安装的版本
$ brew remove glslang

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

$ 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

关于GLSL语言比较有用的参考资料如下:

SPIR-V White Paper

也可在本站查看如下:

The SPIR-V Specification v1.2

也可在本站查看如下:

官方GLSL语法手册

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注