LunarG 核心验证层将结构重置为零
LunarG core validation layer resetting structure to zero
我正在实现一个基本的纹理立方体示例,并且 运行 遇到了一个有趣的问题 - 在将我的 DescriptorWriteSet
结构传递给 UpdateDescriptorSets
API 调用之后,所有字段都已清零。之后尝试读取字段的任何代码都会出现空指针异常(因为 DescriptorBufferInfo 指针现在为空)。 仅在启用VK_LAYER_LUNARG_core_validation时发生,如果我禁用它,API调用似乎工作正常。
我的样本不完整,所以我不能说它是否适用于禁用的层,或者我的 my 代码是否有错误。然而,我一直盯着传递给这个调用的值,做完整性检查,因为我确定 I 没有传递空指针。这是错误,还是预期的行为?
- Windows10
- 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 上提出这样的问题,因为一半以上的时间都是我的错导致了这个问题。
VK_LAYER_LUNARG_core_validation 层不应修改 vkUpdateDescriptorSets 中 pDescriptorWrites 指向的结构。如果您认为它正在对传入的结构进行这种修改,请 post 连同 repo 案例一起发布到 https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues.
我正在实现一个基本的纹理立方体示例,并且 运行 遇到了一个有趣的问题 - 在将我的 DescriptorWriteSet
结构传递给 UpdateDescriptorSets
API 调用之后,所有字段都已清零。之后尝试读取字段的任何代码都会出现空指针异常(因为 DescriptorBufferInfo 指针现在为空)。 仅在启用VK_LAYER_LUNARG_core_validation时发生,如果我禁用它,API调用似乎工作正常。
我的样本不完整,所以我不能说它是否适用于禁用的层,或者我的 my 代码是否有错误。然而,我一直盯着传递给这个调用的值,做完整性检查,因为我确定 I 没有传递空指针。这是错误,还是预期的行为?
- Windows10
- 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 上提出这样的问题,因为一半以上的时间都是我的错导致了这个问题。
VK_LAYER_LUNARG_core_validation 层不应修改 vkUpdateDescriptorSets 中 pDescriptorWrites 指向的结构。如果您认为它正在对传入的结构进行这种修改,请 post 连同 repo 案例一起发布到 https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues.