blob: c65fc4b4d068ee218a97b4f8b525ed1b7723dc7a [file] [log] [blame]
<para>
<!-- section 6.13.14 --> The built-in functions defined in this section
can only be used with image memory objects. An image memory object can be accessed by
specific function calls that read from and/or write to specific locations in the image.
</para>
<para>
Note that image writes to sRGB images are only supported if the
<citerefentry><refentrytitle>cl_khr_srgb_image_writes</refentrytitle></citerefentry>
extension is supported;
otherwise the behavior of writing to a sRGB image is undefined.
</para>
<!-- Note: use <function> instead of <citerefentry> for the read and write functions in the text below. -->
<para>
Image memory objects that are being read by a kernel should be declared with the <citerefentry
href="accessQualifiers"><refentrytitle>read_only</refentrytitle></citerefentry>
qualifier. <function>write_image</function> calls to image memory objects declared with the
<citerefentry href="accessQualifiers"><refentrytitle>read_only</refentrytitle></citerefentry>
qualifier will generate a compilation error. Image memory objects that
are being written to by a kernel should be declared with the <citerefentry
href="accessQualifiers"><refentrytitle>write_only</refentrytitle></citerefentry> qualifier.
<function>read_image</function> calls to image memory objects declared with the <citerefentry
href="accessQualifiers"><refentrytitle>write_only</refentrytitle></citerefentry>
qualifier will generate a compilation error. <function>read_image</function> and
<function>write_image</function> calls to the same image memory object in a kernel are
not supported.
Image memory objects that are being read and written by a kernel should be declared with the
<citerefentry
href="accessQualifiers"><refentrytitle>read_write</refentrytitle></citerefentry>
qualifier.
</para>
<para>
The <function>read_image</function> calls returns a four component floating-point, integer or
unsigned integer color value. The color values returned by <function>read_image</function>
are identified as <code>x, y, z, w</code> where <code>x</code> refers to the red component,
<code>y</code> refers to the green component, <code>z</code> refers to the blue component
and <code>w</code> refers to the alpha component.
</para>
<bridgehead>sRGB Images</bridgehead>
<para>
<!-- 6.13.14.1.2 sRGB Images -->
The built-in image read functions will perform
sRGB to linear RGB conversions if the image is
an sRGB image. Writing to sRGB images from a
kernel is an optional extension. The
<citerefentry><refentrytitle>cl_khr_srgb_image_writes</refentrytitle></citerefentry>
extension will be reported in the
<constant>CL_DEVICE_EXTENSIONS</constant> string
if a device supports writing to sRGB images using
<citerefentry href="imageFunctions"><refentrytitle>write_imagef</refentrytitle></citerefentry>.
<citerefentry><refentrytitle>clGetSupportedImageFormats</refentrytitle></citerefentry>
will return the supported sRGB images if
<constant>CL_MEM_READ_WRITE</constant> or
<constant>CL_MEM_WRITE_ONLY</constant> is specified in
<varname>flags</varname> argument and the
device supports writing to an sRGB image. If
<citerefentry><refentrytitle>cl_khr_srgb_image_writes</refentrytitle></citerefentry>
is supported, the
built-in image write functions will perform
the linear to sRGB conversion.
</para>
<para>
Only the R, G and B components are converted from
linear to sRGB and vice-versa. The alpha
component is returned as is.
</para>
<para>
The samplerless read image functions behave exactly as the corresponding read
image functions that take integer coordinates and a sampler with filter mode
set to <constant>CLK_FILTER_NEAREST</constant>, normalized coordinates set
to <constant>CLK_NORMALIZED_COORDS_FALSE</constant> and addressing mode to
<constant>CLK_ADDRESS_NONE</constant>.
</para>
<!-- 17-Dec-2013, rev. 19 -->