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 // First, import any queued host memory, then sync every mapped
// region that is cached on GPU memory. // region that is cached on GPU memory.
buffer_cache.CoverQueuedRegions(); buffer_cache.CoverQueuedRegions();
{ // I feel bad for doing this copy
auto mapped_ranges_copy = ([this]() {
std::shared_lock lock(mapped_ranges_mutex); std::shared_lock lock(mapped_ranges_mutex);
for (const auto& range : mapped_ranges) { return mapped_ranges;
buffer_cache.SynchronizeRange(range.lower(), range.upper() - range.lower()); })();
} for (const auto& range : mapped_ranges_copy) {
buffer_cache.SynchronizeRange(range.lower(), range.upper() - range.lower());
} }
buffer_cache.ResetFaultReadbackBuffer(); buffer_cache.ResetFaultReadbackBuffer();
} }