Fix a bug found on Intel OpenCL SDK.
authorpeng xiao <hisenxpress@gmail.com>
Tue, 23 Apr 2013 07:34:40 +0000 (15:34 +0800)
committerpeng xiao <hisenxpress@gmail.com>
Tue, 23 Apr 2013 07:34:40 +0000 (15:34 +0800)
modules/ocl/src/opencl/stereobp.cl

index 3196e581ad86c38c9c9869b90005e3b591d614e1..4d13f807bbd4923880767e1620bcccb46fe0f475 100644 (file)
@@ -185,10 +185,10 @@ __kernel void data_step_down(__global T *src, int src_rows,
         for (int d = 0; d < cndisp; ++d)
         {
             float dst_reg;
-            dst_reg  = src[(d * src_rows + (2*y+0)) * src_step + 2*x+0];
-            dst_reg += src[(d * src_rows + (2*y+1)) * src_step + 2*x+0];
-            dst_reg += src[(d * src_rows + (2*y+0)) * src_step + 2*x+1];
-            dst_reg += src[(d * src_rows + (2*y+1)) * src_step + 2*x+1];
+            dst_reg  = src[(d * src_rows + min(2*y+0, src_rows-1)) * src_step + 2*x+0];
+            dst_reg += src[(d * src_rows + min(2*y+1, src_rows-1)) * src_step + 2*x+0];
+            dst_reg += src[(d * src_rows + min(2*y+0, src_rows-1)) * src_step + 2*x+1];
+            dst_reg += src[(d * src_rows + min(2*y+1, src_rows-1)) * src_step + 2*x+1];
 
             dst[(d * dst_rows + y) * dst_step + x] = saturate_cast(dst_reg);
         }