我在官方网站上阅读了正式定义,但仍然不明白:What is void* hst-ptr used for?例如here .为什么这里的buffer这么有用,为什么buffer是一个指向char的指针,大小是4*width*height
最佳答案
host_ptr
在指定标志 CL_MEM_USE_HOST_PTR
或 CL_MEM_COPY_HOST_PTR
时使用。在这些情况下,host_ptr
指向包含要使用或复制的图像的 CPU 内存。
在您链接到的示例代码中,buffer
是主机端(CPU 内存)图像被复制到设备端(GPU typ.)图像(因为它们使用 CL_MEM_COPY_HOST_PTR
标志)。
他们将其设为指向 char 的指针并不重要,因为他们使用 memcpy
来填充它,但它有助于使用 new char
进行分配,因为 char 是大小为 1 个字节。
4 * width * height
是因为这是所需的字节(字符)总数。
4
是一个 CL_RGBA CL_UNORM_INT8 像素的大小(R、G、B、A 各为一个字节)。width * height
因为那是像素的总数。
这段代码为图像分配主机端内存,用一些东西填充它,然后使用这些字节创 build 备端图像,然后使用内核处理它,然后将字节复制回主机端图像.
关于c++ - clCreateImage2D(..., void* hst_ptr,..) 怎么用呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222850/