]> granicus.if.org Git - imagemagick/commitdiff
Fixed bug in OpenCL kernel and fixed name of method.
authordirk <dirk@git.imagemagick.org>
Sat, 23 Apr 2016 18:40:54 +0000 (20:40 +0200)
committerdirk <dirk@git.imagemagick.org>
Sat, 23 Apr 2016 18:41:22 +0000 (20:41 +0200)
MagickCore/accelerate-private.h
MagickCore/accelerate.c
MagickCore/opencl.c

index 0b7db5d2e217e4002c36746063108535a2ce272c..a9a0563e863d56aae9a930afbdad9a8c3738650f 100644 (file)
@@ -2719,10 +2719,13 @@ OPENCL_ENDIF()
 
       if (itemID < actualNumPixelInThisChunk)
       {
-        float density = densityCache[itemID];
-        float gamma = gammaCache[itemID];
         float4 filteredPixel = outputPixelCache[itemID];
 
+        float gamma = 0.0f;
+        if ((number_channels == 4) || (number_channels == 2))
+          gamma = gammaCache[itemID];
+
+        float density = densityCache[itemID];
         if ((density != 0.0f) && (density != 1.0f))
         {
           density = PerceptibleReciprocal(density);
@@ -2880,10 +2883,13 @@ OPENCL_ENDIF()
 
       if (itemID < actualNumPixelInThisChunk)
       {
-        float density = densityCache[itemID];
-        float gamma = gammaCache[itemID];
         float4 filteredPixel = outputPixelCache[itemID];
 
+        float gamma = 0.0f;
+        if ((number_channels == 4) || (number_channels == 2))
+          gamma = gammaCache[itemID];
+
+        float density = densityCache[itemID];
         if ((density != 0.0f) && (density != 1.0f))
         {
           density = PerceptibleReciprocal(density);
index de9be6c2a79c0cf45820ffefb22230af208d05ce..17e9faf0b9b674ff6c1a849fc7000b9a8e77f398 100644 (file)
@@ -4534,7 +4534,7 @@ static MagickBooleanType resizeHorizontalFilter(MagickCLEnv clEnv,
     resizeWindowType;
 
   MagickBooleanType
-    status = MagickFalse;
+    status;
 
   size_t
     gammaAccumulatorLocalMemorySize,
@@ -4680,7 +4680,6 @@ RestoreMSCWarning
   local_work_size[0] = workgroupSize;
   local_work_size[1] = 1;
   clStatus = clEnv->library->clEnqueueNDRangeKernel(queue, horizontalKernel, 2, NULL, global_work_size, local_work_size, 0, NULL, &event);
-  (void) local_work_size;
   if (clStatus != CL_SUCCESS)
   {
     (void) OpenCLThrowMagickException(device,exception, GetMagickModule(), ResourceLimitWarning, "clEnv->library->clEnqueueNDRangeKernel failed.", "'%s'", ".");
@@ -4731,7 +4730,7 @@ static MagickBooleanType resizeVerticalFilter(MagickCLEnv clEnv,
     resizeWindowType;
 
   MagickBooleanType
-    status = MagickFalse;
+    status;
 
   size_t
     gammaAccumulatorLocalMemorySize,
index f7e8ba930ca1ca997163dade46aec843855829d9..48281461b01a6bbe8c8d3fbe2ab1b7c8ea2c2d95 100644 (file)
@@ -1202,7 +1202,7 @@ static MagickBooleanType LoadCachedOpenCLKernel(MagickCLDevice device,
     MagickTrue);
 }
 
-static void LogOpenCLBuildFature(MagickCLDevice device,const char *kernel,
+static void LogOpenCLBuildFailure(MagickCLDevice device,const char *kernel,
   ExceptionInfo *exception)
 {
   char
@@ -1215,6 +1215,7 @@ static void LogOpenCLBuildFature(MagickCLDevice device,const char *kernel,
   (void) FormatLocaleString(filename,MagickPathExtent,"%s%s%s",
     GetOpenCLCacheDirectory(),DirectorySeparator,"magick_badcl.cl");
 
+  (void) remove_utf8(filename);
   (void) BlobToFile(filename,kernel,strlen(kernel),exception);
 
   openCL_library->clGetProgramBuildInfo(device->program,device->deviceID,
@@ -1226,6 +1227,7 @@ static void LogOpenCLBuildFature(MagickCLDevice device,const char *kernel,
   (void) FormatLocaleString(filename,MagickPathExtent,"%s%s%s",
     GetOpenCLCacheDirectory(),DirectorySeparator,"magick_badcl.log");
 
+  (void) remove_utf8(filename);
   (void) BlobToFile(filename,log,logSize,exception);
 }
 
@@ -1292,7 +1294,7 @@ static MagickBooleanType CompileOpenCLKernel(MagickCLDevice device,
   {
     (void) ThrowMagickException(exception,GetMagickModule(),DelegateWarning,
       "clBuildProgram failed.","(%d)",(int)status);
-    LogOpenCLBuildFature(device,kernel,exception);
+    LogOpenCLBuildFailure(device,kernel,exception);
     return(MagickFalse);
   }