Fixed the race condition between inc and dec on the l_counter.

Signed-off-by: Zhigang Gong <zhigang.gong@intel.com>
This commit is contained in:
Zhigang Gong 2015-05-26 22:06:18 +08:00
parent b1a8e4f760
commit 0f7de40e66

View File

@ -431,10 +431,8 @@ __kernel void stage2_hysteresis(__global uchar *map_ptr, int map_step, int map_o
for (int i = 0; i < pix_per_thr; ++i)
{
int index = atomic_dec(&l_counter) - 1;
if (index < 0) {
atomic_inc(&l_counter);
if (index < 0)
continue;
}
ushort2 pos = l_stack[ index ];
#pragma unroll
@ -454,6 +452,9 @@ __kernel void stage2_hysteresis(__global uchar *map_ptr, int map_step, int map_o
}
}
barrier(CLK_LOCAL_MEM_FENCE);
if (l_counter < 0)
l_counter = 0;
barrier(CLK_LOCAL_MEM_FENCE);
while (p_counter > 0)
{