On Thu, 19 Aug 2021 at 10:56, Jan Sikorski jsikorski@codeweavers.com wrote:
We can generally skip them, but make sure that subsequent barriers synchronize with all accumulated usages.
Is that safe? I don't much doubt that this should work in practice on common desktop GPUs, but what does the spec say? In particular, I'd be a little concerned that e.g. VK_PIPELINE_STAGE_VERTEX_INPUT_BIT barriers may not guarantee visibility to e.g. fragment stages.
+static inline bool vk_access_mask_is_read_only(VkAccessFlags flags) +{
- static const VkAccessFlags read_flags =
VK_ACCESS_INDIRECT_COMMAND_READ_BIT | VK_ACCESS_INDEX_READ_BIT | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT |
VK_ACCESS_UNIFORM_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT | VK_ACCESS_SHADER_READ_BIT |
VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT |
VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_HOST_READ_BIT | VK_ACCESS_MEMORY_READ_BIT |
VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV | VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT |
VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT | VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR |
VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR | VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT |
VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT;
- return (flags & read_flags) == flags;
+}
We typically break lines before operators, not after.