【发布时间】:2019-09-09 01:19:06
【问题描述】:
我试图了解管道何时开始在 Vulkan 中使用帧缓冲区附件。根据规范,对于图元着色流水线,以下阶段依次发生:
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
据我所知,当只使用一个附件时(没有多重采样,只有一个颜色附件),管道应该在光栅化阶段开始写入帧缓冲区附件(所以大约在 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT 之前的某个地方)。但是,根据规范,这不应该发生在VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT 阶段。那么,管道是否使用一些中间的、自分配的内存来执行所有片段操作,并且仅在 COLOR_ATTACHMENT_OUTPUT 阶段开始写入交换链图像?我大约两周前才开始与 Vulkan 合作,我觉得我的推理存在严重缺陷,所以如果有人能指出这一点,那就太好了。
【问题讨论】:
标签: vulkan