Я пытаюсь получить запросы, работающие со вторичными буферами команд, и получаю это предупреждение:
Уровень проверки: vkCmdExecuteCommands () вызвал недействительный буфер Cmd 0x1d0e4a08fe0, который имеет недопустимый активный пул запросов 0xda,Статистика конвейера запрашивается, поэтому в буфере команд должны быть установлены все биты в queryPool.Спецификация Vulkan гласит: если в commandBuffer активен запрос VK_QUERY_TYPE_PIPELINE_STATISTICS, то каждый элемент pCommandBuffers должен быть записан с помощью VkCommandBufferInheritanceInfo :: pipelineStatistics, имеющего все биты, которые установлены в VkQueryPool, который используется в запросе 100 * **
У меня есть все биты в pipeStatistics в pInheritanceInfo, поэтому я не понимаю, почему я получу это предупреждение.
Это мой pInheritanceInfo:
VkCommandBufferInheritanceInfo commandBufferInheritanceInfo;
commandBufferInheritanceInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;
commandBufferInheritanceInfo.pNext = nullptr;
commandBufferInheritanceInfo.renderPass = vulkanFramebuffer->getRenderPass();
commandBufferInheritanceInfo.subpass = 0;
commandBufferInheritanceInfo.framebuffer = vulkanFramebuffer->getFramebuffer(vulkanDevice->currentImageIndex);
commandBufferInheritanceInfo.occlusionQueryEnable = VK_TRUE;
commandBufferInheritanceInfo.queryFlags = 0;
commandBufferInheritanceInfo.pipelineStatistics = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT |
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT |
VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT |
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT |
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT |
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT |
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT |
VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT;
И пул запросов:
VkQueryPoolCreateInfo statisticsQueryPoolCreateInfo;
statisticsQueryPoolCreateInfo.sType = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO;
statisticsQueryPoolCreateInfo.pNext = nullptr;
statisticsQueryPoolCreateInfo.flags = 0;
statisticsQueryPoolCreateInfo.queryType = VK_QUERY_TYPE_PIPELINE_STATISTICS;
statisticsQueryPoolCreateInfo.queryCount = vulkanDevice->imageCount;
statisticsQueryPoolCreateInfo.pipelineStatistics =
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT |
VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT |
VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT |
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT |
VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT |
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT |
VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT |
VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT;
VK_ASSERT(vkCreateQueryPool(vulkanDevice->device, &statisticsQueryPoolCreateInfo, nullptr, &queryPool_));