| |
| <!-- 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 --> |
| |