Ошибка CoreValidation-DrawState-InvalidImageLayout в буфере подчиненных команд - PullRequest
0 голосов
/ 11 марта 2019

Я не могу понять, почему я получаю эту ошибку

Сообщение: [UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout] Object: 0x55f38f345890 (Type = 6) |Буфер отправленных команд ожидает, что изображение 0x1e (подресурс: layerMask 0x1 слой массива 0, уровень mip 0) будет находиться в макете VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL - вместо этого текущий макет изображения 0x1e - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR. * 100 * * 100 * * * * *буфер для перетаскивания изображения из кадрового буфера в текущее текущее изображение, подобное этому

    command_buffer.transitionImageLayout(
  framebuffer_image, ImageLayout::COLOR_ATTACHMENT_OPTIMAL, ImageLayout::TRANSFERT_SRC_OPTIMAL);

command_buffer.transitionImageLayout(
  current_image, ImageLayout::PRESENT_SRC, ImageLayout::TRANSFERT_DST_OPTIMAL);

command_buffer.blitImage(
  framebuffer_image, current_image, framebuffer_image.extent(), m_extent);

command_buffer.transitionImageLayout(
  framebuffer_image, ImageLayout::TRANSFERT_SRC_OPTIMAL, ImageLayout::COLOR_ATTACHMENT_OPTIMAL);

command_buffer.transitionImageLayout(
  current_image, ImageLayout::TRANSFERT_DST_OPTIMAL, ImageLayout::PRESENT_SRC);

ошибка запускается при отправке в буфер команд

я активировал слой VK_LAYER_LUNARG_api_dump и получаю это:

https://pastebin.com/AFyePUpM

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

Сообщение об ошибке довольно простое.

Сначала вы используете изображение как VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL в буфере команд. Мы можем увидеть и проверить, что:

command_buffer.transitionImageLayout( framebuffer_image, ImageLayout::COLOR_ATTACHMENT_OPTIMAL // etc

Ошибка информирует вас, что изображение вместо VK_IMAGE_LAYOUT_PRESENT_SRC_KHR. Как это произошло, зависит от остальной части вашего кода. Вы, должно быть, перевели изображение в этот макет раньше (случайно). Это будет либо через какой-то предыдущий vkCmdPipelineBarrier, либо через renderpass finalLayout.

(или менее вероятно, что есть ошибка в слоях проверки. В этом случае сообщите об этом KhronosGroup / Vulkan-ValidationLayers .)

0 голосов
/ 11 марта 2019

Ваш framebuffer_image исходит из образа подкачки? Если да, кажется, что он все еще находится в VK_IMAGE_LAYOUT_PRESENT_SRC_KHR макете - возможно, эту проблему можно исправить, изменив первую строку.

...