[vulkan] Implement external semaphore support for Fuchsia
This corresponds to the VK_FUCHSIA_external_semaphore extension
which uses a Zircon event object to communicate across processes.
Bug: b/140421726
Change-Id: I47b235d4ff7d787491738422bda6fdf853803ab7
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/35969
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Tested-by: David Turner <digit@google.com>
diff --git a/src/Vulkan/VkSemaphore.hpp b/src/Vulkan/VkSemaphore.hpp
index d691c41..c0a8b04 100644
--- a/src/Vulkan/VkSemaphore.hpp
+++ b/src/Vulkan/VkSemaphore.hpp
@@ -18,6 +18,10 @@
#include "VkConfig.h"
#include "VkObject.hpp"
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+#include <zircon/types.h>
+#endif
+
namespace vk
{
@@ -44,6 +48,11 @@
VkResult exportFd(int* pFd) const;
#endif
+#if SWIFTSHADER_EXTERNAL_SEMAPHORE_ZIRCON_EVENT
+ VkResult importHandle(zx_handle_t handle, bool temporaryImport);
+ VkResult exportHandle(zx_handle_t *pHandle) const;
+#endif
+
private:
class External;
class Impl;