CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT requires a memory barrier: shader buffer write -> host read. According to the spec, the data is only available after a call to glFinish or wait on sync: > The application must call MemoryBarrier with the > CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT set and then call FenceSync with > SYNC_GPU_COMMANDS_COMPLETE (or Finish). Then the CPU will see the > writes after the sync is complete. When a buffer is written to by the GPU, ANGLE calls onHostVisibleBufferWrite(), which ensures a "memory write -> host read" barrier is issued at the end of the command buffer. Additionally, persistently mapped buffers use VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, so there's no need for a call to vkInvalidateMappedMemoryRanges. As a result, there's nothing necessary in ANGLE to do for this barrier bit. Note that should persistenly mapped buffers start using non-coherent memory, this barrier should imply a call to vkInvalidateMappedMemoryRanges for the persistently mapped buffers. Bug: angleproject:5070 Change-Id: Iaeae019dadfa659a47d2dac41c0c09f1c15e584b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2689380 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by:Mohan Maiya <m.maiya@samsung.com> Reviewed-by:
Charlie Lao <cclao@google.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| android | Loading commit data... | |
| display | Loading commit data... | |
| doc | Loading commit data... | |
| fuchsia | Loading commit data... | |
| ggp | Loading commit data... | |
| headless | Loading commit data... | |
| mac | Loading commit data... | |
| shaders | Loading commit data... | |
| win32 | Loading commit data... | |
| xcb | Loading commit data... | |
| BUILD.gn | Loading commit data... | |
| BufferVk.cpp | Loading commit data... | |
| BufferVk.h | Loading commit data... | |
| CommandProcessor.cpp | Loading commit data... | |
| CommandProcessor.h | Loading commit data... | |
| CompilerVk.cpp | Loading commit data... | |
| CompilerVk.h | Loading commit data... | |
| ContextVk.cpp | Loading commit data... | |
| ContextVk.h | Loading commit data... | |
| DebugAnnotatorVk.cpp | Loading commit data... | |
| DebugAnnotatorVk.h | Loading commit data... | |
| DeviceVk.cpp | Loading commit data... | |
| DeviceVk.h | Loading commit data... | |
| DisplayVk.cpp | Loading commit data... | |
| DisplayVk.h | Loading commit data... | |
| DisplayVk_api.h | Loading commit data... | |
| FenceNVVk.cpp | Loading commit data... | |
| FenceNVVk.h | Loading commit data... | |
| FramebufferVk.cpp | Loading commit data... | |
| FramebufferVk.h | Loading commit data... | |
| GlslangWrapperVk.cpp | Loading commit data... | |
| GlslangWrapperVk.h | Loading commit data... | |
| ImageVk.cpp | Loading commit data... | |
| ImageVk.h | Loading commit data... | |
| MemoryObjectVk.cpp | Loading commit data... | |
| MemoryObjectVk.h | Loading commit data... | |
| OWNERS | Loading commit data... | |
| OverlayVk.cpp | Loading commit data... | |
| OverlayVk.h | Loading commit data... | |
| PersistentCommandPool.cpp | Loading commit data... | |
| PersistentCommandPool.h | Loading commit data... | |
| ProgramExecutableVk.cpp | Loading commit data... | |
| ProgramExecutableVk.h | Loading commit data... | |
| ProgramPipelineVk.cpp | Loading commit data... | |
| ProgramPipelineVk.h | Loading commit data... | |
| ProgramVk.cpp | Loading commit data... | |
| ProgramVk.h | Loading commit data... | |
| QueryVk.cpp | Loading commit data... | |
| QueryVk.h | Loading commit data... | |
| README.md | Loading commit data... | |
| RenderTargetVk.cpp | Loading commit data... | |
| RenderTargetVk.h | Loading commit data... | |
| RenderbufferVk.cpp | Loading commit data... | |
| RenderbufferVk.h | Loading commit data... | |
| RendererVk.cpp | Loading commit data... | |
| RendererVk.h | Loading commit data... | |
| ResourceVk.cpp | Loading commit data... | |
| ResourceVk.h | Loading commit data... | |
| SamplerVk.cpp | Loading commit data... | |
| SamplerVk.h | Loading commit data... | |
| SecondaryCommandBuffer.cpp | Loading commit data... | |
| SecondaryCommandBuffer.h | Loading commit data... | |
| SemaphoreVk.cpp | Loading commit data... | |
| SemaphoreVk.h | Loading commit data... | |
| ShaderVk.cpp | Loading commit data... | |
| ShaderVk.h | Loading commit data... | |
| SurfaceVk.cpp | Loading commit data... | |
| SurfaceVk.h | Loading commit data... | |
| SyncVk.cpp | Loading commit data... | |
| SyncVk.h | Loading commit data... | |
| TextureVk.cpp | Loading commit data... | |
| TextureVk.h | Loading commit data... | |
| TransformFeedbackVk.cpp | Loading commit data... | |
| TransformFeedbackVk.h | Loading commit data... | |
| UtilsVk.cpp | Loading commit data... | |
| UtilsVk.h | Loading commit data... | |
| VertexArrayVk.cpp | Loading commit data... | |
| VertexArrayVk.h | Loading commit data... | |
| gen_vk_format_table.py | Loading commit data... | |
| gen_vk_internal_shaders.py | Loading commit data... | |
| gen_vk_mandatory_format_support_table.py | Loading commit data... | |
| vk_cache_utils.cpp | Loading commit data... | |
| vk_cache_utils.h | Loading commit data... | |
| vk_caps_utils.cpp | Loading commit data... | |
| vk_caps_utils.h | Loading commit data... | |
| vk_format_map.json | Loading commit data... | |
| vk_format_table_autogen.cpp | Loading commit data... | |
| vk_format_utils.cpp | Loading commit data... | |
| vk_format_utils.h | Loading commit data... | |
| vk_helpers.cpp | Loading commit data... | |
| vk_helpers.h | Loading commit data... | |
| vk_internal_shaders_autogen.cpp | Loading commit data... | |
| vk_internal_shaders_autogen.gni | Loading commit data... | |
| vk_internal_shaders_autogen.h | Loading commit data... | |
| vk_mandatory_format_support_data.json | Loading commit data... | |
| vk_mandatory_format_support_table_autogen.cpp | Loading commit data... | |
| vk_mem_alloc_wrapper.cpp | Loading commit data... | |
| vk_mem_alloc_wrapper.h | Loading commit data... | |
| vk_utils.cpp | Loading commit data... | |
| vk_utils.h | Loading commit data... | |
| vk_wrapper.h | Loading commit data... |