GraphicsMagick 的 OpenCL 开发记录(二十九)

文章目录

  • 如何写`ScaleImage()`的硬件加速函数(三)

如何写ScaleImage()的硬件加速函数(三)

在“如何写ScaleImage()的硬件加速函数(二)”中介绍的kernel函数的写法可能会产生如下现象:

  1. ScaleFilter()不是总能被成功调用。
  2. 每次修改过ScaleFilter()后,有时在~.cache/GraphicsMagick目录中不会生成新的.bin文件。
  3. 这种情况下,调试发现在getOpenCLEnvironment(exception);处就失败返回。
MagickPrivate Image *AccelerateScaleImage(const Image *image,
  const size_t scaledColumns,const size_t scaledRows,
  ExceptionInfo *exception)
{
  Image
    *filteredImage;

  MagickCLEnv
    clEnv;

  assert(image != NULL);
  assert(exception != (ExceptionInfo *) NULL);

  if (checkAccelerateCondition(image) == MagickFalse)
    return((Image *) NULL);

  clEnv=getOpenCLEnvironment(exception);
  if (clEnv == (MagickCLEnv) NULL)
    return((Image *) NULL);

  filteredImage=ComputeScaleImage(image,clEnv,scaledColumns,scaledRows,
    exception);
  return(filteredImage);
}
  1. 重启电脑似乎不能校正这种问题,但第二天开机这个问题就没有了,难道我的ScaleFilter()函数让CPU或者GPU内部错乱了?
  2. 没添加额外调试输出前,没有找到任何异常日志。
  3. 忘说了一个关键问题,这两天电脑已经发现死机两次,包括今天早上这次,刚输入完密码回车后就死机。

commit:fake run: AccelerateScaleImage(), still trying。

你可能感兴趣的:(GraphicsMagick,的,OpenCL,开发,GraphicsMagick,ImageMagick,OpenCL,c++)