From 9f40078223967e24d3c95479b5c3facb748e3993 Mon Sep 17 00:00:00 2001 From: Beq Date: Tue, 1 Oct 2024 23:06:38 +0100 Subject: [PATCH] FIRE-34600 - bugsplat fix (particle count mismatch on AVX2) Working on the assumption that AVX2 aggressive re-ordering is causing the off by one, place a barrier to compiler re-ordering --- indra/newview/llviewerpartsim.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 333c7b98ca..028c82c1ce 100644 --- a/indra/newview/llviewerpartsim.cpp +++ b/indra/newview/llviewerpartsim.cpp @@ -279,11 +279,15 @@ void LLViewerPartGroup::updateParticles(const F32 lastdt) LLVector3 gravity(0.f, 0.f, GRAVITY); + // FIRE-34600 off by one particle count triggering bugsplat (LL_ERR) + S32 end = (S32) mParticles.size(); LLViewerPartSim::checkParticleCount(static_cast(mParticles.size())); + std::atomic_signal_fence(std::memory_order_seq_cst); + // LLViewerCamera* camera = LLViewerCamera::getInstance(); LLViewerRegion *regionp = getRegion(); - S32 end = (S32) mParticles.size(); + //S32 end = (S32) mParticles.size();// FIRE-34600 off by one particle count triggering bugsplat (LL_ERR) for (S32 i = 0 ; i < (S32)mParticles.size();) { LLVector3 a(0.f, 0.f, 0.f);