Vulkan:几何着色器验证不正确?
Vulkan: Geometry Shader Validation incorrect?
我目前正在使用 NVIDIA GeForce GTX 780(来自技嘉,如果这很重要 - 我不知道板载 BIOS 会影响多少,我已经也安装了其中两个,但由于 Vulkans 无法使用 SLI,我在我的代码中一次只使用一个设备。但是在 NVIDIA 控制中心 SLI 被激活。我使用官方驱动程序版本 375.63)。该 GPU 当然完全具备几何着色器的能力。
我正在使用带有 Vulkan API 的几何着色器,它工作正常并且可以完成我期望它做的所有事情。但是我得到如下验证层报告:@[SC]: Shader requires VkPhysicalDeviceFeatures::geometryShader but is not enabled on the device
.
这是错误吗?有人有类似的问题吗?
PS: http://vulkan.gpuinfo.org/displayreport.php?id=777#features 表示对 "Geometry Shader" 的支持如预期的那样是 "true"。我正在使用 Vulkan 1.0.30.0 SDK。
Vulkan 功能与 OpenGL 扩展的工作方式不同。在 OpenGL 中,如果支持扩展,则它始终处于活动状态。在 Vulkan 中,功能可用这一事实是不够的。当您创建 VkDevice
时,您必须 明确询问 您打算使用的所有功能。
如果您没有要求几何着色器功能,那么您将无法使用 GS,即使 VkPhysicalDevice
宣传支持它。
所以步骤顺序应该是检查 VkPhysicalDevice
是否支持您要使用的功能,然后在调用 vkCreateDevice
时在 VkDeviceCreateInfo::pEnabledFeatures
中提供这些功能。
由于 Vulkan 不会对其大部分输入进行验证检查,因此实际的驱动程序可能会假设您启用了该功能,并且只是按照正常情况进行操作。但这不是必须的;使用尚未启用的功能是未定义的行为。所以验证层阻止你是对的。
我目前正在使用 NVIDIA GeForce GTX 780(来自技嘉,如果这很重要 - 我不知道板载 BIOS 会影响多少,我已经也安装了其中两个,但由于 Vulkans 无法使用 SLI,我在我的代码中一次只使用一个设备。但是在 NVIDIA 控制中心 SLI 被激活。我使用官方驱动程序版本 375.63)。该 GPU 当然完全具备几何着色器的能力。
我正在使用带有 Vulkan API 的几何着色器,它工作正常并且可以完成我期望它做的所有事情。但是我得到如下验证层报告:@[SC]: Shader requires VkPhysicalDeviceFeatures::geometryShader but is not enabled on the device
.
这是错误吗?有人有类似的问题吗?
PS: http://vulkan.gpuinfo.org/displayreport.php?id=777#features 表示对 "Geometry Shader" 的支持如预期的那样是 "true"。我正在使用 Vulkan 1.0.30.0 SDK。
Vulkan 功能与 OpenGL 扩展的工作方式不同。在 OpenGL 中,如果支持扩展,则它始终处于活动状态。在 Vulkan 中,功能可用这一事实是不够的。当您创建 VkDevice
时,您必须 明确询问 您打算使用的所有功能。
如果您没有要求几何着色器功能,那么您将无法使用 GS,即使 VkPhysicalDevice
宣传支持它。
所以步骤顺序应该是检查 VkPhysicalDevice
是否支持您要使用的功能,然后在调用 vkCreateDevice
时在 VkDeviceCreateInfo::pEnabledFeatures
中提供这些功能。
由于 Vulkan 不会对其大部分输入进行验证检查,因此实际的驱动程序可能会假设您启用了该功能,并且只是按照正常情况进行操作。但这不是必须的;使用尚未启用的功能是未定义的行为。所以验证层阻止你是对的。