<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd" [
<!ENTITY gl_sharingInc SYSTEM "gl_sharingInc.xml">
<!ENTITY gl_formatsInc SYSTEM "gl_formatsInc.xml">
<!ENTITY gl_lifetimeInc SYSTEM "gl_lifetimeInc.xml">
<!ENTITY gl_syncInc SYSTEM "gl_syncInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clCreateFromGLTexture</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>clCreateFromGLTexture</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2013</year>
                <holder>The Khronos Group Inc.
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="clCreateFromGLTexture">
        <refname>clCreateFromGLTexture</refname>

        <refpurpose>
             Creates an OpenCL image object, image array object, or image buffer object from an OpenGL texture object,
             texture array object, texture buffer object, or a single face of an OpenGL cubemap texture object.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef><link xlink:href="abstractDataTypes.html">cl_mem</link>
                    <function>
                        clCreateFromGLTexture
                    </function>
                </funcdef>

                <paramdef><link xlink:href="abstractDataTypes.html">cl_context</link><parameter>context</parameter></paramdef>
                <paramdef><link xlink:href="enums.html#cl_mem_flags">cl_mem_flags</link><parameter>flags</parameter></paramdef>
                <paramdef>GLenum<parameter>texture_target</parameter></paramdef>
                <paramdef>GLint<parameter>miplevel</parameter></paramdef>
                <paramdef>GLuint<parameter>texture</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">cl_int</link><parameter>* errcode_ret</parameter></paramdef>

            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>

            <varlistentry>
                <term> <varname> context </varname> </term>
                <listitem>
                    <para>
                        A valid OpenCL context created from an OpenGL context.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> flags </varname> </term>
                <listitem>
                    <para>
                      A bit-field that is used to
                      specify usage information. Refer to the table for
                      <citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>
                      for a description of <varname>flags</varname>. Only the values
                      <constant>CL_MEM_READ_ONLY</constant>, <constant>CL_MEM_WRITE_ONLY</constant>
                      and <constant>CL_MEM_READ_WRITE</constant> can be used.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> texture_target </varname> </term>
                <listitem>
                    <para>
                      <varname>texture_target</varname>
                      This value must be one of <constant>GL_TEXTURE_1D</constant>,
                      <constant>GL_TEXTURE_1D_ARRAY</constant>,
                      <constant>GL_TEXTURE_BUFFER</constant>, <constant>GL_TEXTURE_2D</constant>,
                      <constant>GL_TEXTURE_2D_ARRAY</constant>, <constant>GL_TEXTURE_3D</constant>,
                      <constant>GL_TEXTURE_CUBE_MAP_POSITIVE_X</constant>,
                      <constant>GL_TEXTURE_CUBE_MAP_POSITIVE_Y</constant>,
                      <constant>GL_TEXTURE_CUBE_MAP_POSITIVE_Z</constant>,
                      <constant>GL_TEXTURE_CUBE_MAP_NEGATIVE_X</constant>,
                      <constant>GL_TEXTURE_CUBE_MAP_NEGATIVE_Y</constant>,
                      <constant>GL_TEXTURE_CUBE_MAP_NEGATIVE_Z</constant>, or
                      <constant>GL_TEXTURE_RECTANGLE</constant>. 
                      (<constant>GL_TEXTURE_RECTANGLE</constant> requires OpenGL 3.1.
                      Alternatively, <constant>GL_TEXTURE_RECTANGLE_ARB</constant> may be
                      specified if the OpenGL extension <code>GL_ARB_texture_rectangle</code> is supported.)
                      <varname>texture_target</varname> is used only to define the image type
                      of <varname>texture</varname>. No reference to a bound GL texture object
                      is made or implied by this parameter.
                    </para>

                    <para>
                        If the <citerefentry><refentrytitle>cl_khr_gl_msaa_sharing</refentrytitle></citerefentry>
                        extension is enabled, <varname>texture_target</varname> 
                        may be 
                        <constant>GL_TEXTURE_2D_MULTISAMPLE</constant> or 
                        <constant>GL_TEXTURE_2D_MULTISAMPLE_ARRAY</constant>.
                    </para>

                    <para>
                        If <varname>texture_target</varname> is 
                        <constant>GL_TEXTURE_2D_MULTISAMPLE</constant>, 
                        <function>clCreateFromGLTexture</function>
                        creates an 
                        OpenCL 2D multi-sample image object from 
                        an OpenGL 2D multi-sample texture
                    </para>

                    <para>
                        If <varname>texture_target</varname> is 
                        <constant>GL_TEXTURE_2D_MULTISAMPLE_ARRAY</constant>, 
                        <function>clCreateFromGLTexture</function>
                        creates an OpenCL 2D multi-sample array 
                        image object from an OpenGL 2D multi-sample 
                        texture.
                    </para>

                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> miplevel </varname> </term>
                <listitem>
                    <para>
                      The mipmap level to be used. If
                      <varname>texture_target</varname> is <constant>GL_TEXTURE_BUFFER</constant>,
                      miplevel must be 0. Implementations may return
                      <constant>CL_INVALID_OPERATION</constant> for miplevel values > 0
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> texture </varname> </term>
                <listitem>
                    <para>
                      The name of a GL 1D, 2D, 3D, 1D array,
                      2D array, cubemap, rectangle or buffer texture object. The texture object
                      must be a complete texture as per OpenGL rules on texture completeness. The
                      <varname>texture</varname> format and dimensions defined by OpenGL for the
                      specified <varname>miplevel</varname> of the texture will be used to create
                      the OpenCL image memory object. Only GL texture objects with an internal
                      format that maps to appropriate image channel order and data type specified
                      in tables 5.5 and 5.6 (see 
                      <citerefentry><refentrytitle>cl_image_format</refentrytitle></citerefentry>) 
                      may be used to create the OpenCL image memory object.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> errcode_ret </varname> </term>
                <listitem>
                    <para>
                      Returns an appropriate error code as described
                      below.  If <varname>errcode_ret</varname> is NULL, no error code is returned.
                    </para>
                </listitem>
            </varlistentry>

        </variablelist>
    </refsect1>

<!-- ================================ DESCRIPTION  -->

<!--
    <refsect1 id="description"><title>Description</title>
        <para>
        </para>
    </refsect1>
-->

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>
        <para>
          If the state of a GL texture object is modified through the GL API
          (e.g. <function>glTexImage2D</function>, <function>glTexImage3D</function> or
          the values of the texture parameters <constant>GL_TEXTURE_BASE_LEVEL</constant>
          or <constant>GL_TEXTURE_MAX_LEVEL</constant> are modified) while there exists a
          corresponding CL image object, subsequent use of the CL image object will result in
          undefined behavior.
        </para>

        <para>
          The <citerefentry><refentrytitle>clRetainMemObject</refentrytitle></citerefentry>
          and <citerefentry><refentrytitle>clReleaseMemObject</refentrytitle></citerefentry>
          functions can be used to retain and release the image objects.
        </para>

        &gl_sharingInc;
        &gl_formatsInc;
        &gl_lifetimeInc;
        &gl_syncInc;

    </refsect1>

<!-- ================================ ERRORS  -->

    <refsect1 id="errors"><title>Errors</title>
        <para>
          Returns a valid non-zero OpenCL image object and <varname>errcode_ret</varname>
          is set to <errorname>CL_SUCCESS</errorname> if the image object is created
          successfully. Otherwise, it returns a NULL value with one of the following error
          values returned in <varname>errcode_ret</varname>:
        </para>

        <itemizedlist mark="disc">

            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if <varname>context</varname> is not
              a valid context or was not created from a GL context.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if values specified in
              <varname>flags</varname> are not valid or if value specified in
              <varname>texture_target</varname> is not one of the values specified in the
              description of <varname>texture_target</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_MIP_LEVEL</errorname> if <varname>miplevel</varname>
              is less than the value of <varname>level<subscript>base</subscript></varname>
              (for OpenGL implementations) or zero (for OpenGL ES implementations); or
              greater than the value of <varname>q</varname> (for both OpenGL and OpenGL
              ES). <varname>level<subscript>base</subscript></varname> and <varname>q</varname>
              are defined for the texture in section 3.8.10 (Texture Completeness) of the OpenGL
              2.1 specification and section 3.7.10 of the OpenGL ES 2.0.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_MIP_LEVEL</errorname> if <varname>miplevel</varname> is
              greater than zero and the OpenGL implementation does not support creating from
              non-zero mipmap levels.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_GL_OBJECT</errorname> if <varname>texture</varname> is not
              a GL texture object whose type matches <varname>texture_target</varname>, if the
              specified <varname>miplevel</varname> of <varname>texture</varname> is not defined,
              or if the width or height of the specified <varname>miplevel</varname> is zero
              or if the GL texture object is incomplete.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_IMAGE_FORMAT_DESCRIPTOR</errorname> if the OpenGL texture
              internal format does not map to a supported OpenCL image format.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if <varname>texture</varname> is a GL texture object
              created with a border width value greater than zero.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </listitem>

        </itemizedlist>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>

            <olink uri="clCreateFromGLTexture">OpenCL Specification</olink>
        </para>
    </refsect1>

<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromGLBuffer</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
    </refsect3>

<!-- 24-Dec-2013, rev. 19 -->
</refentry>

