LunarG核心验证层将结构重置为零

时间:2016-06-15 20:58:26

标签: vulkan

我实现了一个基本的纹理多维数据集示例,并遇到了一个有趣的问题 - 在将DescriptorWriteSet结构传递给UpdateDescriptorSets API调用后,所有字段都已清零。尝试在之后读取字段的任何代码都会获得空指针异常(因为DescriptorBufferInfo指针现在为null)。启用VK_LAYER_LUNARG_core_validation时会发生 only ,如果我禁用它,则API调用似乎正常。

我的示例不完整,因此我无法说明是否可以禁用图层,或者我的我的代码中是否有错误。但是,我一直在盯着传入此调用的值,进行完整性检查,因为我确定没有传入空指针。这是一个错误,还是这种预期的行为?

  • Windows 10
  • LunarG SDK 1.0.8(我想要在1.0.13上,但这需要更新的AMD驱动程序,蓝屏我的电脑)

修改

它不只是将我给出的结构归零 - 我目前只传入一个常量数组中的第一个DescriptorWriteSet,并且它也将第二个归零。实际上,当我检查数组周围的内存时,该层触摸数组两侧的内存。这对我来说似乎更像是一个错误......

编辑2:

事实证明问题源于我的代码:

DescriptorSetLayoutBinding layout_bindings[]{
    DescriptorSetLayoutBinding()
        .Binding(0)
        .Descriptors(DescriptorType::UNIFORM_BUFFER, 1)
        .StageFlags(ShaderStageFlagBits::VERTEX),
    DescriptorSetLayoutBinding()
        .Binding(0)
        .Descriptors(DescriptorType::COMBINED_IMAGE_SAMPLER, 1)
        .StageFlags(ShaderStageFlagBits::FRAGMENT)
};

我的布局绑定都具有相同的绑定索引0.当然,我希望这会导致问题,但我不希望这会导致在将来的API调用中传递的结构归零...我'我总是犹豫着把这样的事情作为Github的问题提出来,因为超过一半的时间我的错是我得到了这个问题。

1 个答案:

答案 0 :(得分:3)

VK_LAYER_LUNARG_core_validation层不应该修改vkUpdateDescriptorSets中pDescriptorWrites指向的结构。如果您认为正在对传入的结构进行此修改,请将问题与回购案一起发布到https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues