我有一个计算着色器:
#version 450
#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_gpu_shader_int64 : enable
layout(local_size_x_id = 0) in;
layout(set = 0, binding = 0) buffer Foo {
u64vec2[256] scratchpad;
} foo;
layout(set = 0, binding = 1) uniform Bar {
u64vec2 a;
u64vec2 b;
} bar;
void main() {
int foobar = 0;
int baz = 0;
}
我使用glslangValidator
LunarG SDK 1.0.65.0 编译它并使用它检查它spirv-val
,它没有返回任何内容。我shaderInt64
在创建VkDevice
. 使用加载此着色器时vkCreateShaderModule
出现此验证错误:
SPIR-V module not valid: Invalid instruction word count: 0
当我执行以下任何操作时,验证错误就会消失:
- 删除 64 位扩展并将所有类型更改为
int
- 删除其中一个
Foo
或Bar
缓冲区 - 删除任一变量
main
- 消除
layout(local_size_x_id = 0) in
我的问题是,这是编译器或验证层中的错误,还是我错误地使用了这些功能之一?