Lunarg核心验证层重置结构为零



我正在实现一个基本的纹理立方体示例,并遇到了一个有趣的问题 - 将我的DescriptorWriteSet结构传递给UpdateDescriptorSets API调用后,所有字段都已归零。在此之后尝试读取字段的任何代码都会获得零指针异常(因为描述性指针现在为null)。此仅在启用vk_layer_lunarg_core_validation时发生发生,如果我禁用它,API调用似乎正常。

我的示例不完整,所以我不能说它是否适用于禁用图层,或者我在我的代码中是否有错误。但是,我一直在盯着传递给这个电话的值,进行理智检查,因为我可以确定 i 并没有传递到空指针中。这是一个错误,还是这种预期的行为?

  • 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。犹豫不决地将类似的事情作为GitHub上的问题,因为我遇到问题是我的错。

vk_layer_lunarg_core_validation层不应修改vkupdedescriptorsets中的pdescriptorwrites指向的结构。如果您认为正在对传递的结构进行这种修改,请发布发行案例案例,https://github.com/khronosgroup/vulkan-loaderandvalidationlayers/issues。

最新更新