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:
David Turner <digit@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Kokoro-Presubmit: David Turner <digit@google.com>
Reviewed-by:
Chris Forbes <chrisforbes@google.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .vscode | Loading commit data... | |
| build | Loading commit data... | |
| build_overrides | Loading commit data... | |
| docs | Loading commit data... | |
| extensions | Loading commit data... | |
| include | Loading commit data... | |
| src | Loading commit data... | |
| tests | Loading commit data... | |
| third_party | Loading commit data... | |
| .clang-format | Loading commit data... | |
| .dir-locals.el | Loading commit data... | |
| .gitignore | Loading commit data... | |
| .gitmodules | Loading commit data... | |
| .travis.yml | Loading commit data... | |
| AUTHORS.txt | Loading commit data... | |
| Android.bp | Loading commit data... | |
| BUILD.gn | Loading commit data... | |
| CMakeLists.txt | Loading commit data... | |
| CMakeSettings.json | Loading commit data... | |
| CONTRIBUTING.txt | Loading commit data... | |
| CONTRIBUTORS.txt | Loading commit data... | |
| LICENSE.txt | Loading commit data... | |
| OWNERS | Loading commit data... | |
| README.md | Loading commit data... | |
| SwiftShader.sln | Loading commit data... | |
| codereview.settings | Loading commit data... |