OpenCL - 两次传递image2d_t以获取内核的读写权限?

时间:2014-08-04 08:32:08

标签: image kernel opencl

在我的OpenCL内核中,我想读写一个image2d_t对象。根据OpenCL标准,我只能指定__read_only或__write_only。 但是,我想如果我发送相同的cl_mem作为两个单独的内核参数(一个用__read_only,一个用__write_only)我可以做两个。

当我写一个写入后读取时,我可能会得到旧的值(?),但在我的情况下,我首先想要旧的值,更新它并将其写回图像。一个简单的例子是"将每个像素增加1"。它看起来像99.9%,但有时给我文物。

有人知道这是否可行,或者我是否需要预期未定义的行为?

1 个答案:

答案 0 :(得分:3)

根据OpenCL标准,一个Image可用于读取或在一个内核中写入。因此,如果需要读写同一个内存对象,则必须使用2个图像,或切换到常规缓冲区。不能保证你的内核能正常工作。