<?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>clCreateContext</keyword></keywordset>
    </refentryinfo>
    <refmeta>
        <refentrytitle>clCreateContext</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="clCreateContext">
        <refname>clCreateContext</refname>
        <refpurpose>Creates an OpenCL context.</refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype><funcdef><link xlink:href="abstractDataTypes.html">cl_context</link> <function>clCreateContext</function></funcdef>
                <paramdef>const <link xlink:href="enums.html#cl_context_properties">cl_context_properties</link><parameter>*properties</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_devices</parameter></paramdef>
                <paramdef>const <link xlink:href="abstractDataTypes.html">cl_device_id</link><parameter>*devices</parameter></paramdef>

                <paramdef><link xlink:href="scalarDataTypes.html">(void</link> CL_CALLBACK <parameter>*pfn_notify)</parameter>
                        <funcparams><literallayout>const <link xlink:href="scalarDataTypes.html">char</link> *errinfo,
                        const <link xlink:href="scalarDataTypes.html">void</link> *private_info, <link xlink:href="otherDataTypes.html">size_t</link> cb,
                        <link xlink:href="scalarDataTypes.html">void</link> *user_data</literallayout></funcparams></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*user_data</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">cl_int</link><parameter>*errcode_ret</parameter></paramdef>
           </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

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

    <refsect1 id="description"><title>Description</title>
        <para>
          An OpenCL context is created with one or more devices. Contexts are used by the
          OpenCL runtime for managing objects such as command-queues, memory, program and kernel
          objects and for executing kernels on one or more devices specified in the context.
        </para>
    </refsect1>

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

    <refsect1 xmlns:xlink="http://www.w3.org/1999/xlink" id="parameters"><title>Parameters</title>
        <variablelist>

        <!-- ================================ PARAMETER TABLE (OPTIONAL) -->
        <varlistentry>
            <term>properties</term>
            <listitem>
                <para>
                  <!-- core spec pg 54 --> Specifies a list of context property names and
                  their corresponding values. Each property name is immediately followed
                  by the corresponding desired value. The list is terminated with 0.
                  <varname>properties</varname> can be NULL in which case the platform
                  that is selected is implementation-defined. The list of supported
                  <varname>properties</varname> is described in the table below.
                </para>

                <para>
                  <!-- ext. spec p. 85, section 9.10.5; and
                  ext. spec p. 99, section 9.11.5 --> If the extension
                  <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>
                  is enabled, then <varname>properties</varname> specifies a list of context
                  property names and their corresponding values. Each property is followed
                  immediately by the corresponding desired value. The list is terminated with
                  zero. If a property is not specified in <varname>properties</varname>, then its
                  default value (listed in the table below) is used (it is said to be specified
                  implicitly).  If <varname>properties</varname> is NULL or empty (points to
                  a list whose first value is zero), all attributes take on their default values.
                </para>

                <para><!-- ext spec. p. 68, section 9.9.5 -->
                  If the extension
                  <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry>
                  is enabled, then <varname>properties</varname> specifies a list of context
                  property names and their corresponding values.  Each property is followed
                  immediately by the corresponding desired value.  The list is terminated
                  with zero.  if a property is not specified in <varname>properties</varname>,
                  then its default value is used (it is said to be specified implicitly). If
                  <varname>properties</varname> is NULL or empty (points to a list whose first
                  value is zero), all attributes take on their default value.
                </para>

                <para>
                  If the extension
                  <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
                  is enabled, then <varname>properties</varname> points to an attribute list,
                  which is a array of ordered &lt;attribute name, value> pairs terminated with
                  zero. If an attribute is not specified in <varname>properties</varname>,
                  then its default value is used (it is said to be specified implicitly). If
                  <varname>properties</varname> is NULL or empty (points to a list whose first
                  value is zero), all attributes take on their default values..
                </para>

                <!-- table 4.5 -->
                <informaltable frame="all">
                <tgroup cols="3" align="left" colsep="1" rowsep="1">
                    <colspec colname="col1" colnum="1" />
                    <colspec colname="col2" colnum="2" />
                    <colspec colname="col3" colnum="3" />
                    <thead>
                        <row>
                        <entry>cl_context_properties enum</entry>
                        <entry>Property value</entry>
                        <entry>Description</entry>
                        </row>
                    </thead>

                    <tbody>
                        <row>
                            <entry><constant>CL_CONTEXT_PLATFORM</constant></entry>
                            <entry><link xlink:href="abstractDataTypes.html">cl_platform_id</link></entry>
                            <entry>Specifies the platform to use.</entry>
                        </row>

                        <row>
                            <entry><constant>CL_CONTEXT_INTEROP_USER_SYNC</constant></entry>
                            <entry><link xlink:href="enums.html#cl_bool">cl_bool</link></entry>
                            <entry>
                                Specifies whether the user is responsible for synchronization between OpenCL
                                and other APIs. Please refer to the specific sections in the OpenCL 1.2 extension specification
                                that describe sharing with other APIs for restrictions on using this flag.

                                <para>
                                  If <constant>CL_CONTEXT_INTEROP_USER_</constant> SYNC is not
                                  specified, a default of <constant>CL_FALSE</constant> is assumed.
                                </para>
                            </entry>
                        </row>

                        <row>
                            <entry><constant>CL_CONTEXT_D3D10_DEVICE_KHR</constant></entry>
                            <entry>ID3D10Device*</entry>
                            <entry>
                              If the
                              <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry>
                              extension is enabled, specifies the <type>ID3D10Device</type>*
                              to use for Direct3D 10 interoperability. The default value is NULL.
                            </entry>
                        </row>

                        <row><!-- ext. spec p. 39, section 9.6.3 -->
                            <entry><constant>CL_GL_CONTEXT_KHR</constant></entry>
                            <entry>0, OpenGL context handle</entry>
                            <entry>
                              OpenGL context to associated
                              the OpenCL context with (available if the
                              <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
                              extension is enabled)
                            </entry>
                        </row>

                        <row><!-- ext. spec p. 39-40, section 9.6.3 -->
                            <entry><constant>CL_EGL_DISPLAY_KHR</constant></entry>
                            <entry> <constant>EGL_NO_DISPLAY</constant>, <type>EGLDisplay</type> handle </entry>
                            <entry>
                              EGLDisplay an OpenGL context was
                              created with respect to (available if the
                              <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
                              extension is enabled)
                            </entry>
                        </row>

                        <row><!-- ext. spec p. 39-40, section 9.6.3 -->
                            <entry><constant>CL_GLX_DISPLAY_KHR</constant></entry>
                            <entry>None, X handle</entry>
                            <entry>
                              X Display an OpenGL context was
                              created with respect to (available if the
                              <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
                              extension is enabled)
                            </entry>
                        </row>

                        <row><!-- ext. spec pp. 39-41, section 9.6.3 -->
                            <entry><constant>CL_CGL_SHAREGROUP_KHR</constant></entry>
                            <entry>0, CGL share group handle</entry>
                            <entry>
                              CGL share group to associate the OpenCL context with (available if the
                              <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
                              extension is enabled)
                            </entry>
                        </row>

                        <row><!-- ext. spec pp. 39-40, section 9.6.3 -->
                            <entry><constant>CL_WGL_HDC_KHR</constant></entry>
                            <entry>0, HDC handle</entry>
                            <entry>
                              HDC an OpenGL context was created with respect to (available if the
                              <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
                              extension is enabled)
                            </entry>
                        </row>

                        <row><!-- ext. spec p. 84, section 9.10.4; and p. 86, section 9.10.5 -->
                            <entry><constant>CL_CONTEXT_ADAPTER_D3D9_KHR</constant></entry>
                            <entry>IDirect3DDevice9 *</entry>
                            <entry>
                              Specifies an <type>IDirect3DDevice9</type>
                              to use for D3D9 interop (if the
                              <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>
                              extension is supported).
                            </entry>
                        </row>

                        <row><!-- ext. spec p. 84, section 9.10.4; and p. 86, section 9.10.5 -->
                            <entry><constant>CL_CONTEXT_ADAPTER_D3D9EX_KHR</constant></entry>
                            <entry>IDirect3DDeviceEx*</entry>
                            <entry>
                              Specifies an <type>IDirect3DDevice9Ex</type>
                              to use for D3D9 interop (if the
                              <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>
                              extension is supported).
                            </entry>
                        </row>

                        <row><!-- ext. spec p. 84, section 9.10.4; and p. 86, section 9.10.5 -->
                            <entry><constant>CL_CONTEXT_ADAPTER_DXVA_KHR</constant></entry>
                            <entry>IDXVAHD_Device *</entry>
                            <entry>
                              Specifies an <type>IDXVAHD_Device</type>
                              to use for DXVA interop (if the
                              <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>
                              extension is supported).
                            </entry>
                        </row>

                        <row><!-- ext. spec p. 98, section 9.11.4; and p. 99, section 9.11.5 -->
                            <entry><constant>CL_CONTEXT_D3D11_DEVICE_KHR</constant></entry>
                            <entry>ID3D11Device *</entry>
                            <entry>
                              Specifies the <type>ID3D11Device</type> * to use for Direct3D 11
                              interoperability. The default value is NULL.
                            </entry>
                        </row>
                    </tbody>
                </tgroup>
                </informaltable>
        </listitem>
    </varlistentry>

<!-- ================================ END PARAMETER TABLE  -->

        <varlistentry>
            <term><varname>num_devices</varname></term>
            <listitem>
                <para>
                    The number of devices specified in the <varname>devices</varname> argument.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>devices</varname></term>
            <listitem>
                <para>
                  A pointer to a list of unique devices returned by
                  <citerefentry><refentrytitle>clGetDeviceIDs</refentrytitle></citerefentry>
                  or sub-devices created by
                  <citerefentry><refentrytitle>clCreateSubDevices</refentrytitle></citerefentry>
                  for a platform.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>pfn_notify</varname></term>
            <listitem>
                <para>
                  A callback function that can be registered by the application. This callback
                  function will be used by the OpenCL implementation to report information
                  on errors during context creation as well as errors that occur at runtime
                  in this context.  This callback function may be called asynchronously by
                  the OpenCL implementation.  It is the application's responsibility to ensure
                  that the callback function is thread-safe. If <varname>pfn_notify</varname>
                  is NULL, no callback function is registered.  The parameters to this callback
                  function are:
                </para>

                <para><varname>errinfo</varname> is a pointer to an error string.</para>

                <para>
                  <varname>private_info</varname> and <varname>cb</varname> represent a pointer
                  to binary data that is returned by the OpenCL implementation that can be used
                  to log additional information helpful in debugging the error.
                </para>

                <para><varname>user_data</varname> is a pointer to user supplied data.</para>

                <para>
                  NOTE: There are a number of cases where error notifications need to be
                  delivered due to an error that occurs outside a context. Such notifications
                  may not be delivered through the <varname>pfn_notify</varname> callback. Where
                  these notifications go is implementation-defined.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>user_data</varname></term>
            <listitem>
                <para>
                  Passed as the <varname>user_data</varname> argument when
                  <varname>pfn_notify</varname> is called. <varname>user_data</varname> can
                  be NULL.
                </para>
            </listitem>
        </varlistentry>

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

        </variablelist>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
          <function>clCreateContext</function> and
          <citerefentry><refentrytitle>clCreateContextFromType</refentrytitle></citerefentry>
          perform an implicit retain. This is very helpful for 3rd party libraries, which
          typically get a context passed to them by the application.  However, it is possible
          that the application may delete the context without informing the library.  Allowing
          functions to attach to (i.e. retain) and release a context solves the problem of a
          context being used by a library no longer being valid.
        </para>
    </refsect1>

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

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

      <itemizedlist mark="disc">
        <listitem>
          <errorname>CL_INVALID_PLATFORM</errorname> if <varname>properties</varname>
          is NULL and no platform could be selected or if platform value specified
          in <varname>properties</varname> is not a valid platform. (If the extension
          <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
          is enabled, then this error is replaced with
          <constant>CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</constant>; see below.)
        </listitem>

        <listitem><!-- core spec p. 55, section 4.4; and ext spec p. 42, section 9.6.4 -->
          <errorname>CL_INVALID_PROPERTY</errorname> if context property name in
          <varname>properties</varname> is not a supported property name, if the
          value specified for a supported property name is not valid, or if the
          same property name is specified more than once. However if the extension
          <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry> is
          enabled, then <constant>CL_INVALID_PROPERTY</constant> is returned if an attribute
          name other than those listed in the table for <varname>properties</varname>
          above or if <constant>CL_CONTEXT_INTEROP_USER_SYNC</constant> is specified in
          <varname>properties</varname>.
        </listitem>

        <listitem><!-- ext spec p. 42, section 9.6.4 -->
          <errorname>CL_INVALID_PROPERTY</errorname> if an attribute name other than those
          specified in table 4.5 or if <constant>CL_CONTEXT_INTEROP_USER_SYNC</constant> is
          specified in properties.
        </listitem>

        <listitem>
          <errorname>CL_INVALID_VALUE</errorname> if <varname>devices</varname> is NULL; if
          <varname>num_devices</varname> is equal to zero; or if <varname>pfn_notify</varname>
          is NULL but <varname>user_data</varname> is not NULL.
        </listitem>

        <listitem>
           <errorname>CL_INVALID_DEVICE</errorname> if <varname>devices</varname> contains an invalid device.
        </listitem>

        <listitem>
          <errorname>CL_INVALID_OPERATION</errorname> if Direct3D 10 interoperability is
          specified by setting <constant>CL_INVALID_D3D10_DEVICE_KHR</constant> to a non-NULL
          value, and interoperability with another graphics API is also specified (if the
          <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry>
          extension is enabled).
        </listitem>

        <listitem>
          <errorname>CL_DEVICE_NOT_AVAILABLE</errorname> if a device in <varname>devices</varname>
          is currently not available even though the device was returned by
          <citerefentry><refentrytitle>clGetDeviceIDs</refentrytitle></citerefentry>.
        </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>

        <listitem>
          <errorname>CL_INVALID_D3D10_DEVICE_KHR</errorname> if the Direct3D
          10 device specified for interoperability is not compatible with
          the devices against which the context is to be created (if the
          <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry>
          extension is enabled).
        </listitem>

        <listitem>
          <errorname>CL_INVALID_D3D10_DEVICE_KHR</errorname> if the value of the property
          <constant>CL_CONTEXT_D3D10_DEVICE_KHR</constant> is non-NULL and does not specify
          a valid Direct3D 10 device with which the <varname>cl_device_ids</varname>
          against which this context is to be created may interoperate (if the
          <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry>
          extension is enabled).
        </listitem>

        <listitem><!-- ext. spec p. 39, section 9.6.3 -->
          <errorname>CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</errorname> when an invalid OpenGL
          context or share group object handle is specified in <varname>properties</varname> (only
          if the <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
          extension is enabled).
        </listitem>

        <listitem>
          <!-- ext spec. p. 40, section 9.6.4 -->
          <errorname>CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</errorname> if no OpenGL or
          OpenGL ES context or share group is specified in the attribute list given to
          <citerefentry><refentrytitle>clCreateContext</refentrytitle></citerefentry>
          and any of the commands in section 9.7 are called. (if the
          <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry> extension
          is enabled)
        </listitem>

        <listitem><!-- ext spec. p. 41, section 9.6.4 -->
            <errorname>CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</errorname> if the
            <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
            extension is enabled and if a context was specified by any of the following means:

            <itemizedlist mark="disc">
                <listitem>
                  A context specified for an EGL-based OpenGL ES or OpenGL implementation
                  by setting the attributes <constant>CL_GL_CONTEXT_KHR</constant> and
                  <constant>CL_EGL_DISPLAY_KHR</constant>.
                </listitem>

                <listitem>
                  A context was specified for a GLX-based OpenGL implementation by
                  setting the attributes <constant>CL_GL_CONTEXT_KHR</constant> and
                  <constant>CL_GLX_DISPLAY_KHR</constant>.
                </listitem>

                <listitem>
                  A context was specified for a WGL-based OpenGL implementation by
                  setting the attributes <constant>CL_GL_CONTEXT_KHR</constant> and
                  <constant>CL_WGL_HDC_KHR</constant>.
                </listitem>
            </itemizedlist>

            and any of the following conditions hold:

            <itemizedlist mark="disc">
                <listitem>
                  The specified display and context attributes do not identify a valid
                  OpenGL or OpenGL ES context.
                </listitem>

                <listitem>
                   The specified context does not support buffer and renderbuffer objects.
                </listitem>

                <listitem>
                  The specified context is not compatible with the OpenCL context being
                  created (for example, it exists in a physically distinct address space,
                  such as another hardware device, or does not support sharing data with
                  OpenCL due to implementation restrictions).
                </listitem>
            </itemizedlist>
        </listitem>

        <listitem><!-- ext. spec p. 42, section 9.6.4 -->
          <errorname>CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</errorname> if a
          share group was specified for a CGL-based OpenGL implementation by
          setting the attribute <constant>CL_CGL_SHAREGROUP_KHR</constant>, and the
          specified share group does not identify a valid CGL share group object (if the
          <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry> extension
          is enabled).
        </listitem>

        <listitem>
            <errorname>CL_INVALID_OPERATION</errorname> if a context was specified as described above 
            and any of the following conditions hold:

            <itemizedlist mark="disc">
                <listitem>
                  A context or share group object was specified for one of CGL, EGL, GLX, or WGL
                  and the OpenGL implementation does not support that window-system binding API.
                </listitem>

                <listitem>
                  More than one of the attributes <constant>CL_CGL_SHAREGROUP_KHR</constant>,
                  <constant>CL_EGL_DISPLAY_KHR</constant>, <constant>CL_GLX_DISPLAY_KHR</constant>,
                  and <constant>CL_WGL_HDC_KHR</constant> is set to a non-default value.
                </listitem>

                <listitem>
                  Both of the attributes <constant>CL_CGL_SHAREGROUP_KHR</constant> and
                  <constant>CL_GL_CONTEXT_KHR</constant> are set to non-default values.
                </listitem>

                <listitem>
                  Any of the devices specified in the devices argument cannot support OpenCL
                  objects which share the data store of an OpenGL object, as described in
                  section 9.7.
                </listitem>
            </itemizedlist>
        </listitem>

        <listitem>
          <errorname>CL_INVALID_DX9_MEDIA_ADAPTER_KHR</errorname> if the
          media adapter specified for interoperability is not compatible with
          the devices against which the context is to be created (only if the
          <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>
          extension is supported).
        </listitem>

        <listitem>
          <!-- ext. spec p. 86, section 9.10.5 --> <errorname>CL_INVALID_ADAPTER_KHR</errorname> if
          any of the values of the properties <constant>CL_CONTEXT_ADAPTER_D3D9_KHR</constant>,
          <constant>CL_CONTEXT_ADAPTER_D3D9EX_KHR</constant> or
          <constant>CL_CONTEXT_ADAPTER_DXVA_KHR</constant> is non-NULL and
          does not specify a valid media adapter with which the cl_device_ids
          against which this context  is to be created may interoperate (only if the
          <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>
          extension is supported).
        </listitem>

        <listitem>
          <!-- ext. spec p. 86, section 9.10.5 -->
          <errorname>CL_INVALID_OPERATION</errorname> if interoperability is
          specified by setting <constant>CL_CONTEXT_ADAPTER_D3D9_KHR</constant>,
          <constant>CL_CONTEXT_ADAPTER_D3D9EX_KHR</constant> or
          <constant>CL_CONTEXT_ADAPTER_DXVA_KHR</constant> to a non-NULL value, and
          interoperability with another graphics API is also specified (only if the
          <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>
          extension is supported).
        </listitem>

        <listitem>
          <!-- ext. spec p. 100, section 9.11.5 --> <errorname>CL_INVALID_OPERATION</errorname>
          if Direct3D 11 interoperability is specified by setting
          <constant>CL_INVALID_D3D11_DEVICE_KHR</constant> to a non-NULL value, and
          interoperability with another graphics API is also specified (only if the
          <citerefentry><refentrytitle>cl_khr_d3d11_sharing</refentrytitle></citerefentry>
          extension is supported).
        </listitem>

        <listitem>
          <!-- ext. spec p. 99, section 9.11.4; and p. 100, section 9.11.5 -->
          <errorname>CL_INVALID_D3D11_DEVICE_KHR</errorname> if the value of the property
          <constant>CL_CONTEXT_D3D11_DEVICE_KHR</constant> is non-NULL and does not specify
          a valid Direct3D 11 device with which the <varname>cl_device_ids</varname>
          against which this context is to be created may interoperate (only if the
          <citerefentry><refentrytitle>cl_khr_d3d11_sharing</refentrytitle></citerefentry>
          extension is supported).
        </listitem>

        <listitem>
          <!-- ext. spec p. 99, section 9.11.4 -->
          <errorname>CL_INVALID_D3D11_DEVICE_KHR</errorname> if the Direct3D
          11 device specified for interoperability is not compatible with
          the devices against which the context is to be created (only if the
          <citerefentry><refentrytitle>cl_khr_d3d11_sharing</refentrytitle></citerefentry>
          extension is supported).
        </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>
cl_context <function>clCreateContext</function>
    <olink uri="enums.html#cl_context_properties">cl_context_properties</olink> <varname>*properties</varname>
    cl_uint <varname>num_devices</varname>
    const cl_device_id <varname>*devices</varname>
    void <varname>*pfn_notify</varname> (
        const char <varname>*errinfo</varname>,
        const void <varname>*private_info</varname>,
        size_t <varname>cb</varname>,
        void <varname>*user_data</varname>),
        void <varname>*user_data</varname>,
        cl_int <varname>*errcode_ret</varname>)
</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="clCreateContext">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clGetDeviceIDs</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clCreateContextFromType</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clRetainContext</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clReleaseContext</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clGetContextInfo</refentrytitle></citerefentry>,
            <citerefentry href="classDiagram"><refentrytitle>Cardinality Diagram</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>


<!-- 27-Oct-2011 -->
</refentry>

