我正在使用Ubuntu 16.4和NVIDIA驱动程序384.111,我遇到与this one类似的问题。
我以与链接讨论中描述的相同方式将最小GLSL顶点着色器(一个输入和一个空主函数)编译到SPIR-V。当我加载并专门化它时,专业化不成功,信息日志只包含随机数据。
我决定发布这个问题,因为链接评论中引用的讨论不再存在,已经超过一年了。 我在这里或在NVIDIA开发论坛上找不到任何其他对此问题的引用。
是否有任何错误可能合法地产生损坏的信息日志或这是一个驱动程序错误? 在某种程度上,这个问题似乎不太可能存在超过一年,而且没有人讨论过它。
我的GLSL着色器看起来像这样:
#version 330
layout(location = 0) in vec3 vPosition;
void main() {
}
我使用以下命令将代码编译为SPIR-V:
./ glslangValidator -G quad.vert -o quad.vert.spv
以下代码加载着色器:
glShaderBinary(1, &shader, GL_SHADER_BINARY_FORMAT_SPIR_V_ARB, shader_source.data(), (GLsizei)shader_source.size());
glSpecializeShader(shader, "main", 0, nullptr, nullptr);