Glsl SPIR-V能力(几何)要求是什么

Glsl SPIR-V能力(几何)要求是什么,glsl,vulkan,geometry-shader,spir-v,Glsl,Vulkan,Geometry Shader,Spir V,我有两个帧缓冲区。首先,一个是分层的。并将HDR图像渲染到立方体贴图。 在此Renderpass中,将使用几何体着色器 调试层给我以下错误消息 [VAL][VUID-VkShaderModuleCreateInfo-pCode-01091] Validation Error: [ VUID-VkShaderModuleCreateInfo-pCode-01091 ] Object 0: handle = 0x14f9a58bfe8, type = VK_OBJECT_TYPE_D

我有两个帧缓冲区。首先,一个是分层的。并将HDR图像渲染到立方体贴图。 在此Renderpass中,将使用几何体着色器

调试层给我以下错误消息

[VAL][VUID-VkShaderModuleCreateInfo-pCode-01091] Validation Error: [ VUID-VkShaderModuleCreateInfo-pCode-01091 ]
        Object 0: handle = 0x14f9a58bfe8, type = VK_OBJECT_TYPE_DEVICE;
        | MessageID = 0xa7bb8db6 | vkCreateShaderModule(): The SPIR-V Capability (Geometry) was declared, but none of the requirements were met to use it.
        The Vulkan spec states: If pCode declares any of the capabilities listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkShaderModuleCreateInfo-pCode-01091)
我搜索了SPIR-V几何体着色器要求,但找不到缺少的内容。 我的几何体着色器代码是

#version 450 core

layout(triangles, invocations = 6) in;
layout(triangle_strip, max_vertices = 3) out;

void main()
{
    for(int i = 0; i < 3; i++) 
    { 
        gl_Layer = gl_InvocationID ;
        gl_Position = gl_in[i].gl_Position + vec4(vec3(gl_InvocationID)/5 , 1);
        EmitVertex();
    }
    EndPrimitive();
} 
#版本450核心
布局(三角形,调用=6)英寸;
布局(三角形带,最大顶点=3)输出;
void main()
{
对于(int i=0;i<3;i++)
{ 
gl_层=gl_调用ID;
gl_Position=gl_in[i].gl_Position+vec4(vec3(gl_调用id)/5,1);
发射顶点();
}
EndPrimitive();
} 

SPIR-V规范概述。您在Vulkan设备中激活了哪些功能?你的问题不是关于SPIR-V;GLSL-to-SPIR-V编译器是输出SPIR-V功能的编译器;您需要做的是提供匹配的Vulkan功能。我只是启用了几何体着色器<代码>VkPhysicalDeviceFeatures设备特性{}
deviceFeatures.geometryShader=VK\u TRUE现在看来还可以。非常感谢。