]> granicus.if.org Git - imagemagick/commitdiff
Added retry to OpenCL kernel execution.
authorDirk Lemstra <dirk@git.imagemagick.org>
Thu, 6 Apr 2017 10:46:19 +0000 (12:46 +0200)
committerDirk Lemstra <dirk@git.imagemagick.org>
Thu, 6 Apr 2017 10:47:04 +0000 (12:47 +0200)
MagickCore/opencl.c

index 23c5f15de713936875d1e7468dd9deae845bea98..13a62a3675789fbfd63b5bc5557cd8189fdf9b93 100644 (file)
@@ -1630,6 +1630,13 @@ MagickPrivate MagickBooleanType EnqueueOpenCLKernel(cl_command_queue queue,
     }
   status=openCL_library->clEnqueueNDRangeKernel(queue,kernel,work_dim,offset,
     gsize,lsize,event_count,events,&event);
+  /* This can fail due to memory issues and calling clFinish might help. */
+  if ((status != CL_SUCCESS) && (event_count > 0))
+    {
+      openCL_library->clFinish(queue);
+      status=openCL_library->clEnqueueNDRangeKernel(queue,kernel,work_dim,
+        offset,gsize,lsize,event_count,events,&event);
+    }
   if ((output_info != (CacheInfo *) NULL) &&
       (output_info->opencl->event_count > 0))
     events=(cl_event *) RelinquishMagickMemory(events);