当指定 VkPipelineStageFlag 时,它意味着阶段的开始还是阶段的结束?
When specifying VkPipelineStageFlag does it mean start of the stage or end of the stage?
我想用事件实现某种关键部分 - 我需要知道何时能够主机更新顶点缓冲区。为此,我在记录命令缓冲区之前在主机 (vkSetEvent()
) 上设置了一个事件,然后记录了一个重置事件的命令 (vkCmdResetEvent
)。 vkCmdResetEvent
需要指定源阶段掩码以确定何时发出事件信号。在这里我不确定阶段,也无法在规范中找到所需的措辞。如果我使用 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
是否可以保证事件将在阶段结束时重置?还是舞台的开始?
stageFlags 用于指定要在哪些管道中插入同步操作。
这意味着对于 source 阶段,它在前面的命令完成阶段之后,对于 destination 阶段,它在以下命令之前可以从这些阶段开始。
源阶段掩码指定您正在同步的操作的源。如果您将源指定为顶点着色器阶段,那么您是说您尝试同步的操作发生在 VS 中或之前。
在 vkCmdResetEvent
的情况下,需要进行同步,以便在测试事件的命令发生之前不会执行重置命令。所以主机设置了事件,稍后一些命令测试它(可能使用 vkCmdWaitEvents
,使用 VK_PIPELINE_STAGE_HOST_BIT
作为它的源),并且 vkCmdResetEvent
需要重置它。那么,后一个命令需要使用 vkCmdWaitEvents
设置为其 目标 的阶段作为其来源。这确保在等待完成之前不会执行重置命令。
我想用事件实现某种关键部分 - 我需要知道何时能够主机更新顶点缓冲区。为此,我在记录命令缓冲区之前在主机 (vkSetEvent()
) 上设置了一个事件,然后记录了一个重置事件的命令 (vkCmdResetEvent
)。 vkCmdResetEvent
需要指定源阶段掩码以确定何时发出事件信号。在这里我不确定阶段,也无法在规范中找到所需的措辞。如果我使用 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
是否可以保证事件将在阶段结束时重置?还是舞台的开始?
stageFlags 用于指定要在哪些管道中插入同步操作。
这意味着对于 source 阶段,它在前面的命令完成阶段之后,对于 destination 阶段,它在以下命令之前可以从这些阶段开始。
源阶段掩码指定您正在同步的操作的源。如果您将源指定为顶点着色器阶段,那么您是说您尝试同步的操作发生在 VS 中或之前。
在 vkCmdResetEvent
的情况下,需要进行同步,以便在测试事件的命令发生之前不会执行重置命令。所以主机设置了事件,稍后一些命令测试它(可能使用 vkCmdWaitEvents
,使用 VK_PIPELINE_STAGE_HOST_BIT
作为它的源),并且 vkCmdResetEvent
需要重置它。那么,后一个命令需要使用 vkCmdWaitEvents
设置为其 目标 的阶段作为其来源。这确保在等待完成之前不会执行重置命令。