}
__kernel void maxEigenValTask(__global float * dst, float qualityLevel,
- __global int * counter)
+ __global int * cornersptr)
{
float maxval = -FLT_MAX;
maxval = max(maxval, dst[x]);
dst[0] = maxval * qualityLevel;
- counter[0] = 0;
+ cornersptr[0] = 0;
}
#elif OP_FIND_CORNERS
#ifdef HAVE_MASK
__global const uchar * mask, int mask_step, int mask_offset,
#endif
- __global uchar * cornersptr, __global int * counter,
- int rows, int cols, __constant float * threshold, int max_corners)
+ __global uchar * cornersptr, int rows, int cols,
+ __constant float * threshold, int max_corners)
{
int x = get_global_id(0);
int y = get_global_id(1);
+ __global int* counter = (__global int*) cornersptr;
+ __global float2 * corners = (__global float2 *)(cornersptr + (int)sizeof(float2));
+
if (y < rows && x < cols
#ifdef HAVE_MASK
&& mask[mad24(y, mask_step, x + mask_offset)]
int ind = atomic_inc(counter);
if (ind < max_corners)
{
- __global float2 * corners = (__global float2 *)(cornersptr + ind * (int)sizeof(float2));
-
// pack and store eigenvalue and its coordinates
- corners[0].x = val;
- corners[0].y = as_float(y | (x << 16));
+ corners[ind].x = val;
+ corners[ind].y = as_float(y | (x << 16));
}
}
}