[dxvk] Fix potential iterator invalidation in deferClear/Discard

flushClears clears the deferred clear list, so we need to
break out of the loop on that code path.
This commit is contained in:
Philip Rebohle 2021-03-01 16:47:47 +01:00
parent 31063252eb
commit 9bdc491cb7
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
1 changed files with 6 additions and 2 deletions

View File

@ -1868,8 +1868,10 @@ namespace dxvk {
entry.clearValue.depthStencil.stencil = clearValue.depthStencil.stencil;
return;
} else if (entry.imageView->checkSubresourceOverlap(imageView))
} else if (entry.imageView->checkSubresourceOverlap(imageView)) {
this->flushClears(false);
break;
}
}
m_deferredClears.push_back({ imageView, 0, clearAspects, clearValue });
@ -1884,8 +1886,10 @@ namespace dxvk {
entry.discardAspects |= discardAspects;
entry.clearAspects &= ~discardAspects;
return;
} else if (entry.imageView->checkSubresourceOverlap(imageView))
} else if (entry.imageView->checkSubresourceOverlap(imageView)) {
this->flushClears(false);
break;
}
}
m_deferredClears.push_back({ imageView, discardAspects });