Copy to avoid deadlock

This commit is contained in:
Lander Gallastegi 2025-04-22 20:49:38 +02:00
parent e2f56feb8b
commit 442a7ee509

View File

@ -469,11 +469,13 @@ bool Rasterizer::BindResources(const Pipeline* pipeline) {
// First, import any queued host memory, then sync every mapped
// region that is cached on GPU memory.
buffer_cache.CoverQueuedRegions();
{
// I feel bad for doing this copy
auto mapped_ranges_copy = ([this]() {
std::shared_lock lock(mapped_ranges_mutex);
for (const auto& range : mapped_ranges) {
buffer_cache.SynchronizeRange(range.lower(), range.upper() - range.lower());
}
return mapped_ranges;
})();
for (const auto& range : mapped_ranges_copy) {
buffer_cache.SynchronizeRange(range.lower(), range.upper() - range.lower());
}
buffer_cache.ResetFaultReadbackBuffer();
}