【问题标题】:Validation error when updating acceleration structure (VK_KHR_ray_tracing)更新加速结构时的验证错误(VK_KHR_ray_tracing)
【发布时间】:2021-02-28 16:38:09
【问题描述】:

最近,我以tutorial 为模板,在我的 Vulkan 框架中添加了对 VK_KHR_ray_tracing 扩展的支持。不幸的是,它不处理加速结构更新。

我发现重建与第一次构建非常相似。唯一的区别是将 VkAccelerationStructureBuildGeometryInfoKHR 上的更新字段设置为 VK_TRUE 并相应地设置 src 和 dst 加速结构。 目前,我对 src 和 dst 使用相同的 VkAccelerationStructureKHR,即它正在更新自身,这是根据规范:

如果 update 为 VK_TRUE,则 srcAccelerationStructure 和 dstAccelerationStructure 对象必须是同一对象或没有任何内存别名

在我的应用程序中,每帧(动态对象)都会重新构建 TLAS,除了不断收到验证错误外,它运行良好:

如果 update 为 VK_TRUE,则 srcAccelerationStructure 必须在 VkAccelerationStructureBuildGeometryInfoKHR::flags (https://vulkan.lunarg.com/doc/view/1.2.141.0/windows/1.2-extensions/vkspec.html#VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03538) 中设置 VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR 之前构建过

但是,在调试期间,VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR 标志会在每个 vkCmdBuildAccelerationStructureKHR 调用上设置。

我的最佳猜测是,这是 Nvidia (457.33) 的 vulkan beta 驱动程序中的一个错误,但也可能存在验证层未发现的其他错误。

有没有人使用过 VK_KHR_ray_tracing 扩展并设法让加速结构更新正常工作而没有任何验证错误?

编辑: 链接的教程还包含动画和 TLAS 更新的示例,请参阅here。运行此示例时,会出现相同的验证错误。

【问题讨论】:

    标签: vulkan


    【解决方案1】:

    确保使用最新的 Vulkan SDK 版本或自行构建层。上述验证层消息可能是由this bug in the validation layers 引起的,而不是由您的应用程序引起的。已针对 10 月发布的 SDK 1.2.154 进行了修复。

    【讨论】:

    • 非常感谢。我仍然落后一个版本,SDK 更新修复了它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多