CL_UNSIGNED_INT8和CL_RGB不兼容

时间:2015-01-29 09:23:26

标签: c++ c image-processing opencl gpgpu

你知道为什么不允许创建Image2D - 我正在使用C ++ API - 实例,它设置为具有

的图像格式(ImageFormat类)
  • CL_RGB(cl_channel_order)
  • CL_UNSIGNED_INT8(cl_channel_type)?

我现在看起来,如果我有一个RGB布局的图像,其中每个值(R,G和B)是一个8位数,我必须

  • 手动添加alpha值(允许CL_UNSIGNED_INT8和CL_RGBA)
  • 编写一个内核,接受图像为" unsigned char *"并且根本不使用Image2D类

以下是兼容性表:khronos page

总结:

  1. 为什么我无法创建CL_UNSIGNED_INT8和CL_RGB Image2D对象?
  2. 有办法解决这个问题吗?
  3. 我应该解决这个问题吗?或者我应该使用我的一种方式(" CL_UNSIGNED_INT8和CL_RGBA"或" unsigned char *")来处理图像?
  4. PS:我看过,例如this one,但它没有解释为什么会出现不兼容性。

1 个答案:

答案 0 :(得分:0)

请参阅OpenCL 1.1规范中的表“表5.7支持的图像格式的最小列表”。不需要实现来支持任何CL_RGB图像类型。您可以使用clGetSupportedImageFormats查询设备以查看它支持的格式,但似乎CL_RGB不是其中之一。使用CL_RGBA;它是大多数像素深度所必需的。