Use the max signaled value of pending fences in BeginAccess

Bug: 42241403
Change-Id: I3de9aba19bbab9aeea0f80ec0c56f58d9568b528
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/188120
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
diff --git a/src/dawn/native/SharedResourceMemory.cpp b/src/dawn/native/SharedResourceMemory.cpp
index d644fe6..e4ee6f9 100644
--- a/src/dawn/native/SharedResourceMemory.cpp
+++ b/src/dawn/native/SharedResourceMemory.cpp
@@ -168,12 +168,11 @@
     for (size_t i = 0; i < descriptor->fenceCount; ++i) {
         // Add the fences to mPendingFences if they are not already contained in the list.
         // This loop is O(n*m), but there shouldn't be very many fences.
-        auto it = std::find_if(mContents->mPendingFences.begin(), mContents->mPendingFences.end(),
-                               [&](const auto& fence) {
-                                   return fence.object.Get() == descriptor->fences[i] &&
-                                          fence.signaledValue == descriptor->signaledValues[i];
-                               });
+        auto it = std::find_if(
+            mContents->mPendingFences.begin(), mContents->mPendingFences.end(),
+            [&](const auto& fence) { return fence.object.Get() == descriptor->fences[i]; });
         if (it != mContents->mPendingFences.end()) {
+            it->signaledValue = std::max(it->signaledValue, descriptor->signaledValues[i]);
             continue;
         }
         mContents->mPendingFences.push_back({descriptor->fences[i], descriptor->signaledValues[i]});