image - OpenCL - 传递 image2d_t 两次以从内核读取和写入?

标签 image kernel opencl

在我的 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/

相关文章:

c++ - 是否有 OpenCL 2.2 功能在 OpenCL C++ 中可用,但在 OpenCL C 中不可用?

具有通用数据类型的 OpenCL 内核

c# - 在打开文件对话框之前显示图片框中的默认图片

html - 托管应用程序后不显示图像,不应用css

linux - Linux 是如何记住它的内核堆栈指针的?

c - linux内核相当于memset函数是什么?

android - 在中心旋转图像枢轴 - Android

android - 如何显示图片?

c - 实模式内核的 16 位 C 代码

c++ - 如何在 OSX 上使用 glfw3 在 OpenGL 和 OpenCL 之间创建共享上下文?