d3d: remove unnecessary event object in Queue{D3D11,D3D12}

Bug: chromium:335553337
Change-Id: I6bfd6d4d4d19913f35d4e7e2577d82139de5af0a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/184624
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/src/dawn/native/d3d/QueueD3D.h b/src/dawn/native/d3d/QueueD3D.h
index 090a91d..ee9e7a4 100644
--- a/src/dawn/native/d3d/QueueD3D.h
+++ b/src/dawn/native/d3d/QueueD3D.h
@@ -45,11 +45,11 @@
 
     virtual ResultOrError<Ref<SharedFence>> GetOrCreateSharedFence() = 0;
 
+    ResultOrError<bool> WaitForQueueSerial(ExecutionSerial serial, Nanoseconds timeout) override;
+
   private:
     virtual void SetEventOnCompletion(ExecutionSerial serial, HANDLE event) = 0;
 
-    ResultOrError<bool> WaitForQueueSerial(ExecutionSerial serial, Nanoseconds timeout) override;
-
     MutexProtected<SerialMap<ExecutionSerial, SystemEventReceiver>> mSystemEventReceivers;
 };
 
diff --git a/src/dawn/native/d3d11/QueueD3D11.cpp b/src/dawn/native/d3d11/QueueD3D11.cpp
index 2689909..a368d92 100644
--- a/src/dawn/native/d3d11/QueueD3D11.cpp
+++ b/src/dawn/native/d3d11/QueueD3D11.cpp
@@ -27,6 +27,7 @@
 
 #include "dawn/native/d3d11/QueueD3D11.h"
 
+#include <limits>
 #include <utility>
 
 #include "dawn/native/d3d/D3DError.h"
@@ -53,10 +54,6 @@
                               ->CreateFence(0, D3D11_FENCE_FLAG_SHARED, IID_PPV_ARGS(&mFence)),
                           "D3D11: creating fence"));
 
-    // Create the fence event.
-    mFenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
-    DAWN_ASSERT(mFenceEvent != nullptr);
-
     DAWN_TRY_ASSIGN(mSharedFence, SharedFence::Create(ToBackend(GetDevice()),
                                                       "Internal shared DXGI fence", mFence));
 
@@ -84,11 +81,6 @@
 }
 
 void Queue::DestroyImpl() {
-    if (mFenceEvent != nullptr) {
-        ::CloseHandle(mFenceEvent);
-        mFenceEvent = nullptr;
-    }
-
     // Release the shared fence here to prevent a ref-cycle with the device, but do not destroy the
     // underlying native fence so that we can return a SharedFence on EndAccess after destruction.
     mSharedFence = nullptr;
@@ -238,9 +230,9 @@
 MaybeError Queue::WaitForIdleForDestruction() {
     DAWN_TRY(NextSerial());
     // Wait for all in-flight commands to finish executing
-    DAWN_TRY(WaitForSerial(GetLastSubmittedCommandSerial()));
-
-    return {};
+    DAWN_TRY_ASSIGN(std::ignore, WaitForQueueSerial(GetLastSubmittedCommandSerial(),
+                                                    std::numeric_limits<Nanoseconds>::max()));
+    return CheckPassedSerials();
 }
 
 MaybeError Queue::NextSerial() {
@@ -257,18 +249,6 @@
     return {};
 }
 
-MaybeError Queue::WaitForSerial(ExecutionSerial serial) {
-    DAWN_TRY(CheckPassedSerials());
-    if (GetCompletedCommandSerial() >= serial) {
-        return {};
-    }
-
-    DAWN_TRY(CheckHRESULT(mFence->SetEventOnCompletion(uint64_t(serial), mFenceEvent),
-                          "D3D11 set event on completion"));
-    WaitForSingleObject(mFenceEvent, INFINITE);
-    return CheckPassedSerials();
-}
-
 void Queue::SetEventOnCompletion(ExecutionSerial serial, HANDLE event) {
     mFence->SetEventOnCompletion(static_cast<uint64_t>(serial), event);
 }
diff --git a/src/dawn/native/d3d11/QueueD3D11.h b/src/dawn/native/d3d11/QueueD3D11.h
index c20e72f..ef7a8c6 100644
--- a/src/dawn/native/d3d11/QueueD3D11.h
+++ b/src/dawn/native/d3d11/QueueD3D11.h
@@ -50,7 +50,6 @@
         SubmitMode submitMode);
     MaybeError SubmitPendingCommands() override;
     MaybeError NextSerial();
-    MaybeError WaitForSerial(ExecutionSerial serial);
 
     // Separated from creation because it creates resources, which is not valid before the
     // DeviceBase is fully created.
@@ -90,7 +89,6 @@
     MaybeError CheckAndMapReadyBuffers(ExecutionSerial completedSerial);
 
     ComPtr<ID3D11Fence> mFence;
-    HANDLE mFenceEvent = nullptr;
     Ref<SharedFence> mSharedFence;
     MutexProtected<CommandRecordingContext, CommandRecordingContextGuard> mPendingCommands;
     std::atomic<bool> mPendingCommandsNeedSubmit = false;
diff --git a/src/dawn/native/d3d12/QueueD3D12.cpp b/src/dawn/native/d3d12/QueueD3D12.cpp
index 39bd61b..a358f85 100644
--- a/src/dawn/native/d3d12/QueueD3D12.cpp
+++ b/src/dawn/native/d3d12/QueueD3D12.cpp
@@ -27,6 +27,7 @@
 
 #include "dawn/native/d3d12/QueueD3D12.h"
 
+#include <limits>
 #include <utility>
 
 #include "dawn/common/Math.h"
@@ -73,9 +74,6 @@
                                                    D3D12_FENCE_FLAG_SHARED, IID_PPV_ARGS(&mFence)),
                           "D3D12 create fence"));
 
-    mFenceEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr);
-    DAWN_ASSERT(mFenceEvent != nullptr);
-
     DAWN_TRY_ASSIGN(mSharedFence, SharedFence::Create(ToBackend(GetDevice()),
                                                       "Internal shared DXGI fence", mFence));
 
@@ -88,11 +86,6 @@
     mPendingCommands.Release();
     mCommandQueue.Reset();
 
-    if (mFenceEvent != nullptr) {
-        ::CloseHandle(mFenceEvent);
-        mFenceEvent = nullptr;
-    }
-
     // Release the shared fence here to prevent a ref-cycle with the device, but do not destroy the
     // underlying native fence so that we can return a SharedFence on EndAccess after destruction.
     mSharedFence = nullptr;
@@ -167,11 +160,9 @@
     if (GetCompletedCommandSerial() >= serial) {
         return {};
     }
-    DAWN_TRY(CheckHRESULT(mFence->SetEventOnCompletion(uint64_t(serial), mFenceEvent),
-                          "D3D12 set event on completion"));
-    WaitForSingleObject(mFenceEvent, INFINITE);
-    DAWN_TRY(CheckPassedSerials());
-    return {};
+    DAWN_TRY_ASSIGN(std::ignore,
+                    WaitForQueueSerial(serial, std::numeric_limits<Nanoseconds>::max()));
+    return CheckPassedSerials();
 }
 
 bool Queue::HasPendingCommands() const {
diff --git a/src/dawn/native/d3d12/QueueD3D12.h b/src/dawn/native/d3d12/QueueD3D12.h
index 22a88fc..8a997fb 100644
--- a/src/dawn/native/d3d12/QueueD3D12.h
+++ b/src/dawn/native/d3d12/QueueD3D12.h
@@ -79,7 +79,6 @@
     void SetLabelImpl() override;
 
     ComPtr<ID3D12Fence> mFence;
-    HANDLE mFenceEvent = nullptr;
     Ref<SharedFence> mSharedFence;
 
     CommandRecordingContext mPendingCommands;