最新 SDK 的 vkCmdTraceRays 验证错误

问题描述 投票:0回答:1

我的光线追踪应用程序使用 SDK 1.3.240.0 运行良好。现在我更新到 1.3.280.1,我收到了由

vkCmdTraceRaysKHR
:

触发的奇怪验证错误

VUID-vkCmdTraceRaysKHR-None-08608

规格对此很清楚:

如果管道绑定到此命令使用的管道绑定点,则对于绑定到此命令使用的管道绑定点的 VkPipeline 对象中未指定为动态的任何状态,不得调用任何动态状态设置命令,因为该管道已绑定

现在的问题是,在光线跟踪管道绑定和跟踪光线调用之间只有推送常量。在跟踪之前有is一个绑定并实际使用视口和剪刀动态状态的管道,但它是一个图形管道。

规范说 “管道绑定到此命令使用的管道绑定点”,但这不只是

VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR
吗? (我猜,我在规格中找不到任何明确的确认)

为什么验证层在 1.3.240.0 中保持沉默?

vulkan
1个回答
0
投票

我终于找到问题所在了。

在光栅化管道绑定之前设置了视口和剪刀。光线跟踪发生在光栅化之后,因此光线跟踪管道在光栅化完成后绑定。 然而,在空场景的情况下,光栅化阶段被跳过。这导致在绑定光线跟踪管道之前直接设置视口和剪刀。

现在,我认为有点误导,它看起来像视口和剪刀动态状态,如果当前没有绑定管道,则会影响进行此类动态调用后绑定的第一个管道。

在我的例子中,如果跳过光栅化阶段,视口和剪刀动态状态会影响下一个要绑定的管道,即光线跟踪管道(不能有视口或剪刀动态状态),

验证错误消息清楚地表明因为管道已绑定这确实让我困惑,因为正如我最初所写的那样,管道的绑定和跟踪光线调用之间没有设置这样的状态。

© www.soinside.com 2019 - 2024. All rights reserved.