Загрузка SPIR-V в OpenGL не удалась
Я использую Ubuntu 16.4 с драйвером NVIDIA 384.111, и у меня есть проблема, аналогичная этой.
Я скомпилировал минимальный вершинный шейдер 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);