您知道为什么不允许创建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/

10-12 16:58