Skip to content

Commit b8b824c

Browse files
committed
GPU Display: Fix race condition
1 parent ddfe6d0 commit b8b824c

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

GPU/GPUTracking/display/render/GPUDisplayDraw.cxx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "GPUTPCGMPropagator.h"
2828
#include "GPUTPCMCInfo.h"
2929
#include "GPUParam.inc"
30+
#include "GPUCommonMath.h"
3031

3132
#include <type_traits>
3233

@@ -66,8 +67,12 @@ inline void GPUDisplay::insertVertexList(int32_t iSlice, size_t first, size_t la
6667
inline void GPUDisplay::drawPointLinestrip(int32_t iSlice, int32_t cid, int32_t id, int32_t id_limit)
6768
{
6869
mVertexBuffer[iSlice].emplace_back(mGlobalPos[cid].x, mGlobalPos[cid].y * mYFactor, mCfgH.projectXY ? 0 : mGlobalPos[cid].z);
69-
if (mGlobalPos[cid].w < id_limit) {
70-
mGlobalPos[cid].w = id;
70+
float curVal;
71+
while ((curVal = mGlobalPos[cid].w) < id_limit) {
72+
if (GPUCommonMath::AtomicCAS(&mGlobalPos[cid].w, curVal, (float)id)) {
73+
break;
74+
}
75+
curVal = mGlobalPos[cid].w;
7176
}
7277
}
7378

0 commit comments

Comments
 (0)