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]});