vulkan - 当设备未启用几何着色器功能时,vkQueueSubmit() 调用包括一个设置了 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT 位的 stageMask
问题描述
首先,我是 Vulkan 的新手(我使用的是 LWJGL 提供的绑定)。我知道我应该复制/粘贴更多代码,但我什至不知道现在什么是相关的(所以不要犹豫,问我一些特定的代码)。
我试着做这样的事情:
- 使用 ComputeShader 计算像素缓冲区。
- 使用 vkCmdCopyBufferToImage 直接将此数组复制到帧缓冲区图像中。
所以,暂时没有顶点/片段着色器。
我分配了一个计算管道和一个帧缓冲区。我有一个 {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 是什么?
解决方案
好的,我发现了我的问题:pWaitDstStageMask 必须是一个与 pWaitSemaphores 大小相同的数组。
我只为 2 个信号量放置了 1 个阶段掩码。
推荐阅读
- http - 无需重置路由的最小 http 服务测试?
- javascript - 如何使用 Reactstrap 制作 Accordion 组件?
- javascript - 仅使用纯javascript在单击按钮时动态生成表单输入文件增量和减量
- android - 如何使用我的应用程序中的 wps 打开文件并编辑和保存,使用用于 oreo 设备的 fileuri
- ios - UIPageViewController 的 UIPageControl 在滚动到下一个视图控制器时有时不会更新
- typescript - 如何使用 .d.ts 文件键入我自己的节点模块
- django - 分配前引用的 /detail/1/ 局部变量“post”处的 UnboundLocalError
- python - Python中的Selenium:发送密钥并选择选项后没有返回任何内容
- javascript - 升级到最新的角度响应后,requestOptions 不起作用
- javascript - 如何将 Veracode 与 ReactJS 应用程序集成?