Hello guys,
I have a question related to the dependency of a renderpass with 2 subpasses
in the first pass i render some stuff to a color attachment of an image i created exactly for this render pass. it's not used anywhere else
dependencies[0].src_subpass = vk::SUBPASS_EXTERNAL;
dependencies[0].dst_subpass = 0;
dependencies[0].src_stage_mask = vk::PipelineStageFlags::COLOR_ATTACHMENT_OUTPUT;
dependencies[0].src_access_mask = vk::AccessFlags::empty();
dependencies[0].dst_stage_mask = vk::PipelineStageFlags::COLOR_ATTACHMENT_OUTPUT;
dependencies[0].dst_access_mask = vk::AccessFlags::COLOR_ATTACHMENT_WRITE;
dependencies[0].dependency_flags = vk::DependencyFlags::BY_REGION;
This is clear to me
Now comes the second subpass. I this subpass i read the memory written in subpass 0 inside the fragment shader.
To make it work i used this: (note i understand that memory read and memory write are not the optimal access mask. but my question is about something else)
dependencies[1].src_subpass = 0;
dependencies[1].dst_subpass = 1;
dependencies[1].src_stage_mask = vk::PipelineStageFlags::COLOR_ATTACHMENT_OUTPUT;
dependencies[1].src_access_mask = vk::AccessFlags::COLOR_ATTACHMENT_WRITE;
dependencies[1].dst_stage_mask = vk::PipelineStageFlags::FRAGMENT_SHADER
| vk::PipelineStageFlags::COLOR_ATTACHMENT_OUTPUT;
dependencies[1].dst_access_mask =
vk::AccessFlags::MEMORY_READ | vk::AccessFlags::MEMORY_WRITE;
And it works.