Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
S
swiftshader
  • 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
  • swiftshader
  • Repository

Switch branch/tag
  • swiftshader
  • src
  • Vulkan
  • VkSemaphore.cpp
Find file
BlameHistoryPermalink
  • David 'Digit' Turner's avatar
    [vulkan]: Support multiple external semaphore implementations. · 2aa80df1
    David 'Digit' Turner authored Dec 04, 2019
    This CL refactors the implementation of VkSemaphore objects
    in the following way:
    
    - Add the ability to support several external handle types
      concurrently. Before this CL, each platform could support
      a single handle type (e.g. on Linux,
      VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT only).
    
      The changes here will allow future CLs to support more than
      one type per platform (e.g. the Linux implementation may
      support OPAQUE_FD_BIT as well as SYNC_FD_BIT at the same
      time).
    
    - Better implementation of temporary imports. In particular,
      the following sequence now works properly:
    
        1) Create exportable semaphore A.
        2) Export A to an external handle/descriptor.
        3) Signal A.
        4) Temporarily import _another_ handle into A.
        5) A.wait()   // waits on the temporary payload, then discard it.
    
      Before the CL, A would end up, incorrectly, unsignalled. Because
      the export operation created an External instance that held
      the payload modified in 3), which was then discarded after
      the wait() in 5).
    
    - Improved and consistent handling of errors during import/export
      operations, through the use of templates.
    
    + Add a technical note in VkSemaphore.h explaining how everything
      works, since there are several subtle points in the spec.
    
    Bug: b/140421736
    
    Change-Id: I9b6935db3238fec7af8e0c81666e2f5c72075756
    Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/39880Tested-by: 's avatarDavid Turner <digit@google.com>
    Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
    Kokoro-Presubmit: David Turner <digit@google.com>
    Reviewed-by: 's avatarChris Forbes <chrisforbes@google.com>
    2aa80df1
VkSemaphore.cpp 8.92 KB
EditWeb IDE
×

Replace VkSemaphore.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.