<?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">

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

    <refmeta>
        <refentrytitle>clCreateFromGLTexture</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2011</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> <!-- parameter description -->
                        A valid OpenCL context created from an OpenGL context.
                    </para>
               </listitem>
            </varlistentry>


            <varlistentry>
                <term> <varname> flags </varname> </term>
                <listitem>
                    <para>
                      <!-- parameter description --> A bit-field that is used to
                      specify usage information. Refer to the table <!-- table 5.3 -->  for
                      <function><citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry></function><!--
                      table 5.3 --> 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>
                      <!-- parameter description --> <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>.  This requires OpenGL 3.1.
                      Alternatively, <constant>GL_TEXTURE_RECTANGLE_ARB</constant> may be
                      specified if the OpenGL extension GL_ARB_texture_rectangle 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>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> miplevel </varname> </term>
                <listitem>
                    <para>
                      <!-- parameter description --> 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>
                      <!-- parameter description --> 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 may be used to create the OpenCL image memory object.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> errcode_ret </varname> </term>
                <listitem>
                    <para>
                      <!-- parameter description --> 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>
    </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.
            </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 texture 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>
    obsolete page replaced by clCreateFromGLTexture
        <para>
            <citerefentry href="cl_khr_gl_sharing"><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateFromGLTexture</refentrytitle></citerefentry>
        </para>
    </refsect1>

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

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

<!-- 24-oct-2011 -->
</refentry>

