在我的 OpenCL 内核中,我想读取和写入 image2d_t 对象。根据 OpenCL 标准,我只能指定 __read_only 或 __write_only。 但是,我想如果我将相同的 cl_mem 作为两个单独的内核参数发送(一个带有 __read_only,一个带有 __write_only),我可以同时执行这两个操作。
可能当我先写后读时,我可能会得到旧值(?),但就我而言,我想先使用旧值,然后更新它并将其写回图像。一个简单的例子是“每个像素增加 1”。看起来它的成功率为 99.9%,但有时会出现伪影。
有谁知道这是否可能,或者我是否必须期待未定义的行为?
最佳答案
根据 OpenCL 标准,一个 Image 可以在一个内核中用于读取或写入。所以,如果你需要读写同一个内存对象,你必须使用2个Image,或者切换到常规Buffer。无法保证您的内核能够正常工作。
关于image - OpenCL - 传递 image2d_t 两次以从内核读取和写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25114580/