Приложение Vulkan.hpp Supbass нарушает слой проверки - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть следующий код инициализации 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

Насколько я вижу, обе инициализации метода эквивалентны, что я облажался?

1 Ответ

0 голосов
/ 09 апреля 2019

Проблема была в порядке параметров. Параметры, которые я передаю, не соответствуют сигнатуре функции, правильная версия:

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

Для учета 2 неиспользуемых параметров.

...