c++ - Vulkan.hpp Supbass 附件违反验证层

标签 c++ graphics gpu vulkan

我有以下 vulkan 初始化代码:

vk::AttachmentReference color_attachment_ref(0,
    vk::ImageLayout::eColorAttachmentOptimal);

auto colorAttachment = *(VkAttachmentDescription*)&color_attachment;
auto colorAttachmentRef = (VkAttachmentReference)color_attachment_ref;

/*vk::SubpassDescription spass({}, vk::PipelineBindPoint::eGraphics, 1,
    &color_attachment_ref);
auto subpass = (VkSubpassDescription) spass;*/
VkSubpassDescription subpass = {};
subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
subpass.colorAttachmentCount = 1;
subpass.pColorAttachments = &colorAttachmentRef;

但是,当我尝试重构代码以使用 vulkan.hpp 中的对象时,效果非常好:

vk::AttachmentReference color_attachment_ref(0,
    vk::ImageLayout::eColorAttachmentOptimal);

auto colorAttachment = *(VkAttachmentDescription*)&color_attachment;
auto colorAttachmentRef = (VkAttachmentReference)color_attachment_ref;

vk::SubpassDescription spass({}, vk::PipelineBindPoint::eGraphics, 1,
    &color_attachment_ref);
auto subpass = (VkSubpassDescription) spass;
/*VkSubpassDescription subpass = {};
subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
subpass.colorAttachmentCount = 1;
subpass.pColorAttachments = &colorAttachmentRef;*/

我得到:

validation layer: Layout for input attachment is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL but can only be READ_ONLY_OPTIMAL or GENERAL.
UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout

据我所知,两种方法初始化是等效的,我搞砸了什么?

最佳答案

问题出在参数的顺序上。我传递的参数与函数签名不对应,正确的版本是:

vk::SubpassDescription spass({}, vk::PipelineBindPoint::eGraphics, 0, nullptr, 1,
&color_attachment_ref);

考虑 2 个未使用的参数。

关于c++ - Vulkan.hpp Supbass 附件违反验证层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545018/

相关文章:

python - Tensorflow 在批处理上是独一无二的

macos - 无法让 Theano 链接到 OSX 上的 CUDNN

c++ - 光线追踪/Phong 模型漫反射组件

Java - 图形像素未正确更新?

amazon-web-services - AWS EC2 实例在重启后失去 GPU 支持

python - 我可以从 C++ 调用用 cupy 代码编写的 cuda 代码吗?

linux - Nvidia驱动安装未满足的依赖

c++ - 在 C/C++ 中使用多核支持

c++ - 禁用设备

c++ - 如何在 C++ 中找到 vector 的第 m 个和第 n 个元素之间的最大元素?