Fix GPU Buffer Map/Unmap pair to prevent stall if map fails on DX11

#942
This commit is contained in:
Wojtek Figat
2023-02-17 16:28:48 +01:00
parent 5dc63da4bf
commit 679757942f
7 changed files with 19 additions and 16 deletions

View File

@@ -104,15 +104,18 @@ int32 ParticleSystemInstance::GetParticlesCount() const
if (GPUParticlesCountReadback && GPUParticlesCountReadback->IsAllocated())
{
auto data = static_cast<uint32*>(GPUParticlesCountReadback->Map(GPUResourceMapMode::Read));
for (const auto& emitter : Emitters)
if (data)
{
if (emitter.Buffer && emitter.Buffer->Mode == ParticlesSimulationMode::GPU && emitter.Buffer->GPU.HasValidCount)
for (const auto& emitter : Emitters)
{
result += *data;
if (emitter.Buffer && emitter.Buffer->Mode == ParticlesSimulationMode::GPU && emitter.Buffer->GPU.HasValidCount)
{
result += *data;
}
++data;
}
++data;
GPUParticlesCountReadback->Unmap();
}
GPUParticlesCountReadback->Unmap();
}
else if (Emitters.HasItems())
{