Vulkan: Make ExternalSemaphoreHandle match SystemHandle::Handle
Change-Id: I83be7ab47db3c492fec25eb1e48135fe03afc8ab
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/206614
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/native/vulkan/ExternalHandle.h b/src/dawn/native/vulkan/ExternalHandle.h
index 894304c..e62d7f2 100644
--- a/src/dawn/native/vulkan/ExternalHandle.h
+++ b/src/dawn/native/vulkan/ExternalHandle.h
@@ -32,29 +32,31 @@
namespace dawn::native::vulkan {
+// ExternalSemaphoreHandle
+#if DAWN_PLATFORM_IS(WINDOWS)
+using ExternalSemaphoreHandle = HANDLE;
+const ExternalSemaphoreHandle kNullExternalSemaphoreHandle = nullptr;
+#elif DAWN_PLATFORM_IS(FUCHSIA)
+using ExternalSemaphoreHandle = zx_handle_t;
+const ExternalSemaphoreHandle kNullExternalSemaphoreHandle = ZX_HANDLE_INVALID;
+#elif DAWN_PLATFORM_IS(POSIX)
+using ExternalSemaphoreHandle = int;
+const ExternalSemaphoreHandle kNullExternalSemaphoreHandle = -1;
+#else
+#error "Platform not supported."
+#endif
+
+// ExternalMemoryHandle
#if DAWN_PLATFORM_IS(ANDROID)
-// AHardwareBuffer
using ExternalMemoryHandle = struct AHardwareBuffer*;
-// File descriptor
-using ExternalSemaphoreHandle = int;
-const ExternalSemaphoreHandle kNullExternalSemaphoreHandle = -1;
#elif DAWN_PLATFORM_IS(LINUX)
-// File descriptor
using ExternalMemoryHandle = int;
-// File descriptor
-using ExternalSemaphoreHandle = int;
-const ExternalSemaphoreHandle kNullExternalSemaphoreHandle = -1;
#elif DAWN_PLATFORM_IS(FUCHSIA)
// Really a Zircon vmo handle.
using ExternalMemoryHandle = zx_handle_t;
-// Really a Zircon event handle.
-using ExternalSemaphoreHandle = zx_handle_t;
-const ExternalSemaphoreHandle kNullExternalSemaphoreHandle = ZX_HANDLE_INVALID;
#else
-// Generic types so that the Null service can compile, not used for real handles
+// Generic types so that the rest of the Vulkan backend compiles.
using ExternalMemoryHandle = void*;
-using ExternalSemaphoreHandle = void*;
-const ExternalSemaphoreHandle kNullExternalSemaphoreHandle = nullptr;
#endif
} // namespace dawn::native::vulkan
diff --git a/src/dawn/native/vulkan/QueueVk.cpp b/src/dawn/native/vulkan/QueueVk.cpp
index 037dbff..2697ae0 100644
--- a/src/dawn/native/vulkan/QueueVk.cpp
+++ b/src/dawn/native/vulkan/QueueVk.cpp
@@ -358,16 +358,8 @@
for (const auto& fence : fences) {
// All semaphores are binary semaphores.
DAWN_ASSERT(fence.signaledValue == 1u);
- ExternalSemaphoreHandle semaphoreHandle = [&]() {
- if constexpr (std::is_same_v<ExternalSemaphoreHandle, SystemHandle::Handle>) {
- return ToBackend(fence.object)->GetHandle().Get();
- } else {
- // TODO(crbug.com/dawn/1745): Remove this path and make the semaphore
- // service use SystemHandle.
- DAWN_UNREACHABLE();
- return ExternalSemaphoreHandle{};
- }
- }();
+ ExternalSemaphoreHandle semaphoreHandle =
+ ToBackend(fence.object)->GetHandle().Get();
VkSemaphore semaphore;
DAWN_TRY_ASSIGN(semaphore, device->GetExternalSemaphoreService()->ImportSemaphore(