| <!-- table 5.3 --> | |
| <informaltable frame="all"> | |
| <tgroup cols="2" align="left" colsep="1" rowsep="1"> | |
| <colspec colname="col1" colnum="1" /> | |
| <thead> | |
| <row> | |
| <entry>cl_mem_flags</entry> | |
| <entry>Description</entry> | |
| </row> | |
| </thead> | |
| <tbody> | |
| <row> | |
| <entry><constant>CL_MEM_READ_WRITE</constant></entry> | |
| <entry> | |
| This flag specifies that the memory object will be read and written by a kernel. This | |
| is the default. | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_WRITE_ONLY</constant></entry> | |
| <entry> | |
| <para> | |
| This flag specifies that the memory object will be written but not read by | |
| a kernel. | |
| </para> | |
| <para> | |
| Reading from a buffer or image object created with | |
| <constant>CL_MEM_WRITE_ONLY</constant> inside a kernel is undefined. | |
| </para> | |
| <para> | |
| <constant>CL_MEM_READ_WRITE</constant> and <constant>CL_MEM_WRITE_ONLY</constant> | |
| are mutually exclusive. | |
| </para> | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_READ_ONLY</constant></entry> | |
| <entry> | |
| <para> | |
| This flag specifies that the memory object is a read-only memory object when | |
| used inside a kernel. | |
| </para> | |
| <para> | |
| Writing to a buffer or image object created with | |
| <constant>CL_MEM_READ_ONLY</constant> inside a kernel is undefined. | |
| </para> | |
| <para> | |
| <constant>CL_MEM_READ_WRITE</constant> or <constant>CL_MEM_WRITE_ONLY</constant> | |
| and <constant>CL_MEM_READ_ONLY</constant> are mutually exclusive. | |
| </para> | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_USE_HOST_PTR</constant></entry> | |
| <entry> | |
| <para> | |
| This flag is valid only if <varname>host_ptr</varname> is not NULL. If | |
| specified, it indicates that the application wants the OpenCL implementation | |
| to use memory referenced by <varname>host_ptr</varname> as the storage bits | |
| for the memory object. | |
| </para> | |
| <para> | |
| OpenCL implementations are allowed to cache the buffer contents pointed to by | |
| <varname>host_ptr</varname> in device memory. This cached copy can be used when | |
| kernels are executed on a device. | |
| </para> | |
| <para> | |
| The result of OpenCL commands that operate on multiple buffer objects created with | |
| the same <varname>host_ptr</varname> or overlapping host regions is considered | |
| to be undefined. | |
| </para> | |
| <!-- Can't find this text in the 2.1 specs. <para> | |
| Refer to the <citerefentry href="dataTypes"> <refentrytitle>description | |
| of the alignment rules</refentrytitle> </citerefentry> for | |
| <varname>host_ptr</varname> for memory objects (buffer and images) created | |
| using <constant>CL_MEM_USE_HOST_PTR</constant>. | |
| </para> --> | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_ALLOC_HOST_PTR</constant></entry> | |
| <entry> | |
| <para> | |
| This flag specifies that the application wants the OpenCL implementation to | |
| allocate memory from host accessible memory. | |
| </para> | |
| <para> | |
| <constant>CL_MEM_ALLOC_HOST_PTR</constant> and | |
| <constant>CL_MEM_USE_HOST_PTR</constant> are mutually exclusive. | |
| </para> | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_COPY_HOST_PTR</constant></entry> | |
| <entry> | |
| <para> | |
| This flag is valid only if <varname>host_ptr</varname> is not NULL. If specified, | |
| it indicates that the application wants the OpenCL implementation to allocate | |
| memory for the memory object and copy the data from memory referenced by | |
| <varname>host_ptr</varname>. | |
| </para> | |
| <para> | |
| <constant>CL_MEM_COPY_HOST_PTR</constant> and | |
| <constant>CL_MEM_USE_HOST_PTR</constant> are mutually exclusive. | |
| </para> | |
| <para> | |
| <constant>CL_MEM_COPY_HOST_PTR</constant> can be used with | |
| <constant>CL_MEM_ALLOC_HOST_PTR</constant> to initialize the contents of the | |
| <type>cl_mem</type> object allocated using host-accessible (e.g. PCIe) memory. | |
| </para> | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_HOST_WRITE_ONLY</constant></entry> | |
| <entry> | |
| <para> | |
| This flag specifies that the host will only write to the memory object (using | |
| OpenCL APIs that enqueue a write or a map for write). This can be used to optimize | |
| write access from the host (e.g. enable write-combined allocations for memory | |
| objects for devices that communicate with the host over a system bus such as PCIe). | |
| </para> | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_HOST_READ_ONLY</constant></entry> | |
| <entry> | |
| <para> | |
| This flag specifies that the host will only read the memory object (using OpenCL | |
| APIs that enqueue a read or a map for read). | |
| </para> | |
| <para> | |
| <constant>CL_MEM_HOST_WRITE_ONLY</constant> and | |
| <constant>CL_MEM_HOST_READ_ONLY</constant> are mutually exclusive. | |
| </para> | |
| </entry> | |
| </row> | |
| <row> | |
| <entry><constant>CL_MEM_HOST_NO_ACCESS</constant></entry> | |
| <entry> | |
| <para> | |
| This flag specifies that the host will not read or write the memory object. | |
| </para> | |
| <para> | |
| <constant>CL_MEM_HOST_WRITE_ONLY</constant> or | |
| <constant>CL_MEM_HOST_READ_ONLY</constant> and | |
| <constant>CL_MEM_HOST_NO_ACCESS</constant> are mutually exclusive. | |
| </para> | |
| </entry> | |
| </row> | |
| </tbody> | |
| </tgroup> | |
| </informaltable> | |
| <!-- 20-Oct-2015, API rev. 19 --> | |