Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
A
angle
  • Project
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Chen Yisong
  • angle
  • Repository

Switch branch/tag
  • angle
  • src
  • libANGLE
  • renderer
  • vulkan
  • vk_helpers.cpp
Find file
BlameHistoryPermalink
  • Shahbaz Youssefi's avatar
    Vulkan: fix pipeline stages of memory barriers · 471358f3
    Shahbaz Youssefi authored Nov 28, 2018
    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT was used for barriers, but TOP and
    BOTTOM bits can only be used for execution barriers.  These stages don't
    access memory, so they don't participate in memory barriers at all.  A
    validation error is generated as our current barriers violate this:
    
    https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184
    
    A note from the spec (see second paragraph in particular):
    
    > An execution dependency with only VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
    > in the destination stage mask will only prevent that stage from
    > executing in subsequently submitted commands. As this stage does not
    > perform any actual execution, this is not observable - in effect, it
    > does not delay processing of subsequent commands. Similarly an execution
    > dependency with only VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT in the source
    > stage mask will effectively not wait for any prior commands to complete.
    
    > When defining a memory dependency, using only
    > VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT or
    > VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT would never make any accesses
    > available and/or visible because these stages do not access memory.
    
    > VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT and
    > VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT are useful for accomplishing layout
    > transitions and queue ownership operations when the required execution
    > dependency is satisfied by other means - for example, semaphore
    > operations between queues.
    
    Bug: angleproject:2958
    Change-Id: Ic616dcad7583db6b386d7d01a774b3ebd71a7081
    Reviewed-on: https://chromium-review.googlesource.com/c/1352733
    Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
    Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    471358f3
vk_helpers.cpp 58.3 KB
EditWeb IDE
×

Replace vk_helpers.cpp

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.