当设备未启用geometryShader功能时,vkQueueSubmit()调用包含一个具有VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT位置1的stageMask

时间:2018-06-26 05:05:37

标签: vulkan

首先,我是Vulkan的新手(我使用的是LWJGL提供的绑定)。我知道我应该复制/粘贴更多代码,但是我什至不知道现在有什么意义(所以不要犹豫,问我一些特定的代码)。

我试图做这样的事情:

  • 使用ComputeShader计算像素缓冲区。
  • 使用vkCmdCopyBufferToImage直接将此数组复制到帧缓冲区图像中。

因此,目前没有顶点/片段着色器。

我分配了一条计算管道和一个FrameBuffer。我有一个{Queue / CommandPool / CommandBuffer}用于计算,另一个用于渲染。

当我尝试通过以下方式提交图形队列时:

vkQueueSubmit(graphicQueue, renderPipeline.getFrameSubmission().getSubmitInfo(imageIndex));

我从验证中获得以下错误消息:

ERROR OCCURED: Object: VK_NULL_HANDLE (Type = 0) | vkQueueSubmit() call includes a stageMask with VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT bit set when device does not have geometryShader feature enabled. The spec valid usage text states 'If the geometry shaders feature is not enabled, each element of pWaitDstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkSubmitInfo-pWaitDstStageMask-00076)
ERROR OCCURED: Object: VK_NULL_HANDLE (Type = 0) | vkQueueSubmit() call includes a stageMask with VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT and/or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT bit(s) set when device does not have tessellationShader feature enabled. The spec valid usage text states 'If the tessellation shaders feature is not enabled, each element of pWaitDstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-VkSubmitInfo-pWaitDstStageMask-00077)

我试图将VkSubmitInfo.pWaitDstStageMask更改为不同的值(例如VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT ...),但没有任何变化。

那么,对于我的用例而言,最好的pWaitDstStageMask是什么?

1 个答案:

答案 0 :(得分:0)

好的,我发现了我的问题: pWaitDstStageMask必须是与pWaitSemaphores具有相同大小的数组。

我只戴了1个舞台面具,换了2个信号灯。