[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;