您知道为什么不允许创建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。
总结一下:
为什么我无法创建CL_UNSIGNED_INT8和CL_RGB Image2D对象?
有办法解决此问题吗?
我是否应该解决此问题?还是应该只使用我的一种方式(“ CL_UNSIGNED_INT8和CL_RGBA”或“未签名的字符*”)来处理图像?
PS:我看到了this one,但不能解释为什么不兼容。
最佳答案
请参阅OpenCL 1.1规范中的表“表5.7支持的图像格式的最小值列表”。不需要实现即可支持任何CL_RGB图像类型。您可以使用clGetSupportedImageFormats
查询设备以查看其支持的格式,但是CL_RGB似乎不是其中一种。使用CL_RGBA;大多数像素深度都需要它。
关于c++ - CL_UNSIGNED_INT8和CL_RGB的不兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28211003/