使用uchar*而不是image2d\t的OpenCL

使用uchar*而不是image2d\t的OpenCL,opencl,Opencl,首先。。。我不是OpenCL方面的专家 我用的是两个内核。第一个内核的输出是image2d\u t,但第二个内核的输入是“\u全局常量uchar*源” 如何将第二个内核与该输入一起使用?我认为,如果您的实现支持第二个内核,您应该能够使用 我的理解是首先创建缓冲区(记住图像的对齐等要求),然后使用扩展的功能从缓冲区创建图像。有关读写访问和同步的常规规则将适用。您可以修改其中一个的输出,还是修改另一个的输入?简单的回答是您不能。在传递到第二个内核之前,需要使用clenqueueradimage将图像

首先。。。我不是OpenCL方面的专家

我用的是两个内核。第一个内核的输出是image2d\u t,但第二个内核的输入是“\u全局常量uchar*源”


如何将第二个内核与该输入一起使用?

我认为,如果您的实现支持第二个内核,您应该能够使用


我的理解是首先创建缓冲区(记住图像的对齐等要求),然后使用扩展的功能从缓冲区创建图像。有关读写访问和同步的常规规则将适用。

您可以修改其中一个的输出,还是修改另一个的输入?简单的回答是您不能。在传递到第二个内核之前,需要使用clenqueueradimage将图像复制回缓冲区
__kernel void firstKernel(__read_only  image2d_t input, __write_only image2d_t output)
{...}

__kernel void secondKernel( __global const uchar* source,...)
{...}