我在官方网站上阅读了正式定义,但我仍然不明白:什么是void * hst-ptr用于?例如here。为什么缓冲区在这里如此有用,为什么buffer是指向char的指针,大小为4 * width * height
答案 0 :(得分:1)
host_ptr
或CL_MEM_USE_HOST_PTR
时使用 CL_MEM_COPY_HOST_PTR
。在这些情况下,host_ptr
指向包含要使用或复制的映像的CPU内存。
在您链接到的示例代码中,buffer
是要复制到设备端(GPU typ。)映像的主机端(CPU内存)映像(因为它们使用CL_MEM_COPY_HOST_PTR
标志)。
由于他们使用memcpy
来填充它,因此它们使它成为指向char的指针并不重要,但它有助于使用new char
进行分配,因为char是1个字节大小
4 * width * height
是因为这是所需的总字节数(字符数)。
4
是一个CL_RGBA CL_UNORM_INT8像素的大小(R,G,B,A都是一个字节)。width * height
因为这是像素总数。代码为图像分配主机端内存,用某些内容填充,然后使用这些字节创建设备端图像,然后使用内核处理它,然后将字节复制回主机端图像