<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>clCreateContext</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clCreateContext" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="clCreateContext"></a>
        <h1>clCreateContext</h1>
        <p>Creates an OpenCL context.</p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef"><a class="link" href="abstractDataTypes.html" target="pagedisplay">cl_context</a> <strong class="fsfunc">clCreateContext</strong>(</code>
                <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_context_properties" target="pagedisplay">cl_context_properties</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*properties</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_devices</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_device_id</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*devices</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void (</a> CL_CALLBACK  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*pfn_notify)</var>
                        <code xmlns="http://www.w3.org/1999/xhtml">(</code><div xmlns="http://www.w3.org/1999/xhtml" class="literallayout"><p>const <a class="link" href="scalarDataTypes.html" target="pagedisplay">char</a> *errinfo,<br />
                        const <a class="link" href="scalarDataTypes.html" target="pagedisplay">void</a> *private_info, <a class="link" href="otherDataTypes.html" target="_top">size_t</a> cb,<br />
                        <a class="link" href="scalarDataTypes.html" target="pagedisplay">void</a> *user_data</p></div><code xmlns="http://www.w3.org/1999/xhtml">)</code>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">void</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*user_data</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_int</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*errcode_ret</var><code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
          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.
        </p>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">properties</span>
            </dt>
            <dd>
              <p>
                  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.
                  <code class="varname">properties</code> can be NULL in which case the platform
                  that is selected is implementation-defined. The list of supported
                  <code class="varname">properties</code> is described in the table below.
                </p>
              <p>
                  If the extension
                  <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>
                  is enabled, then <code class="varname">properties</code> 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 <code class="varname">properties</code>, then its
                  default value (listed in the table below) is used (it is said to be specified
                  implicitly).  If <code class="varname">properties</code> is NULL or empty (points to
                  a list whose first value is zero), all attributes take on their default values.
                </p>
              <p>
                  If the extension
                  <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a>
                  is enabled, then <code class="varname">properties</code> 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 <code class="varname">properties</code>,
                  then its default value is used (it is said to be specified implicitly). If
                  <code class="varname">properties</code> is NULL or empty (points to a list whose first
                  value is zero), all attributes take on their default value.
                </p>
              <p>
                  If the extension
                  <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a>
                  is enabled, then <code class="varname">properties</code> 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 <code class="varname">properties</code>,
                  then its default value is used (it is said to be specified implicitly). If
                  <code class="varname">properties</code> is NULL or empty (points to a list whose first
                  value is zero), all attributes take on their default value.
                </p>
              <p>
                  If the extension
                  <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
                  is enabled, then <code class="varname">properties</code> points to an attribute list,
                  which is a array of ordered &lt;attribute name, value&gt; pairs terminated with
                  zero. If an attribute is not specified in <code class="varname">properties</code>,
                  then its default value is used (it is said to be specified implicitly). If
                  <code class="varname">properties</code> is NULL or empty (points to a list whose first
                  value is zero), all attributes take on their default values.
                </p>
              <p>List of supported <code class="varname">properties</code> (Table 4.5)</p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                    <col align="left" class="col3" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">cl_context_properties enum</th>
                      <th align="left">Property value</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_PLATFORM</code>
                      </td>
                      <td align="left">cl_platform_id</td>
                      <td align="left">Specifies the platform to use.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code>
                      </td>
                      <td align="left">cl_bool</td>
                      <td align="left">Specifies whether the user is responsible for synchronization
                between OpenCL and other APIs. Please refer to the specific sections
                in the OpenCL 2.0 extension specification that describe sharing with
                other APIs for restrictions on using this flag. If
                <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> is not specified, a
                default of <code class="constant">CL_FALSE</code> is assumed.</td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_D3D10_DEVICE_KHR</code>
                      </td>
                      <td align="left"><span class="type">ID3D10Device</span> *</td>
                      <td align="left">
                  Specifies the <span class="type">ID3D10Device</span> * to use for Direct3D 10
                  interoperability.  The default value is NULL (applies if the extension
                  <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a>
                  is supported)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_ADAPTER_D3D9_KHR</code>
                      </td>
                      <td align="left"><span class="type">IDirect3DDevice9</span> *</td>
                      <td align="left">
                  Specifies an <span class="type">IDirect3DDevice9</span>
                  to use for D3D9 interop (applies if the
                  <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>
                  extension is supported)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_ADAPTER_D3D9EX_KHR</code>
                      </td>
                      <td align="left"><span class="type">IDirect3DDeviceEx</span> *</td>
                      <td align="left">
                  Specifies an <span class="type">IDirect3DDevice9Ex</span>
                  to use for D3D9 interop (applies if the
                  <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>
                  extension is supported)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_ADAPTER_DXVA_KHR</code>
                      </td>
                      <td align="left"><span class="type">IDXVAHD_Device</span> *</td>
                      <td align="left">
                  Specifies an <span class="type">IDXVAHD_Device</span>
                  to use for DXVA interop (applies if the
                  <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>
                  extension is supported)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_GL_CONTEXT_KHR</code>
                      </td>
                      <td align="left">0, OpenGL context handle</td>
                      <td align="left">
                  OpenGL context to associated
                  the OpenCL context with (available if the
                  <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
                  extension is enabled)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CGL_SHAREGROUP_KHR</code>
                      </td>
                      <td align="left">0, CGL share group handle</td>
                      <td align="left">
                  CGL share group to associate
                  the OpenCL context with (available if the
                  <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
                  extension is enabled)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_EGL_DISPLAY_KHR</code>
                      </td>
                      <td align="left"> <code class="constant">EGL_NO_DISPLAY</code>, <span class="type">EGLDisplay</span> handle </td>
                      <td align="left">
                  EGLDisplay an OpenGL context was created with respect to (available if the
                  <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
                  extension is enabled)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_GLX_DISPLAY_KHR</code>
                      </td>
                      <td align="left">None, X handle</td>
                      <td align="left">
                  X Display an OpenGL context was
                  created with respect to (available if the
                  <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
                  extension is enabled)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_WGL_HDC_KHR</code>
                      </td>
                      <td align="left">0, HDC handle</td>
                      <td align="left">
                  HDC an OpenGL context was created with respect to (available if the
                  <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
                  extension is enabled)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_D3D11_DEVICE_KHR</code>
                      </td>
                      <td align="left"><span class="type">ID3D11Device</span> *</td>
                      <td align="left">
                  Specifies the <span class="type">ID3D11Device</span>  * to use for Direct3D
                  11 interoperability. The default value is NULL. (Applies if the
                  <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a>
                  extension is supported.)
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_MEMORY_INITIALIZE_KHR</code>
                      </td>
                      <td align="left">
                        <span class="type">cl_context_memory-
_initialize_khr</span>
                      </td>
                      <td align="left">
                    <p>
                        Describes which memory types for the 
                        context must be initialized. This is a 
                        bit-field, where the following values are 
                        currently supported:
                    </p>

                    <p>
                        <code class="constant">CL_CONTEXT_MEMORY_INITIALIZE_LOCAL_KHR</code> - Initialize local memory 
                        to zeros.
                    </p>

                    <p>
                        <code class="constant">CL_CONTEXT_MEMORY_INITIALIZE_PRIVATE_KHR</code> - Initialize private 
                        memory to zeros.
                    </p>

                    <p>
                      (applies if the
                      <a class="citerefentry" href="cl_khr_initialize_memory.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_initialize_memory</span></span></a>
                      extension is supported)
                    </p>

                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_CONTEXT_TERMINATE_KHR</code>
                      </td>
                      <td align="left">
                        <span class="type">cl_bool</span>
                      </td>
                      <td align="left">
                    Specifies whether the context can be 
                    terminated. The default value is 
                    <code class="constant">CL_FALSE</code>.
                    (applies if the
                  <a class="citerefentry" href="cl_khr_terminate_context.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_terminate_context</span></span></a>
                  extension is supported)
                </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">num_devices</code>
              </span>
            </dt>
            <dd>
              <p>
                    The number of devices specified in the <code class="varname">devices</code> argument.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">devices</code>
              </span>
            </dt>
            <dd>
              <p>
                  A pointer to a list of unique devices returned by
                  <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a>
                  or sub-devices created by
                  <a class="citerefentry" href="clCreateSubDevices.html"><span class="citerefentry"><span class="refentrytitle">clCreateSubDevices</span></span></a>
                  for a platform. Duplicate devices specified in <code class="varname">devices</code> are ignored.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">pfn_notify</code>
              </span>
            </dt>
            <dd>
              <p>
                  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 <code class="varname">pfn_notify</code>
                  is NULL, no callback function is registered.  The parameters to this callback
                  function are:
                </p>
              <p><code class="varname">errinfo</code> is a pointer to an error string.</p>
              <p>
                  <code class="varname">private_info</code> and <code class="varname">cb</code> 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.
                </p>
              <p><code class="varname">user_data</code> is a pointer to user supplied data.</p>
              <p>
                  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 <code class="varname">pfn_notify</code> callback. Where
                  these notifications go is implementation-defined.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">user_data</code>
              </span>
            </dt>
            <dd>
              <p>
                  Passed as the <code class="varname">user_data</code> argument when
                  <code class="varname">pfn_notify</code> is called. <code class="varname">user_data</code> can
                  be NULL.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">errcode_ret</code>
              </span>
            </dt>
            <dd>
              <p>
                  Returns an appropriate error code. If <code class="varname">errcode_ret</code> is NULL,
                  no error code is returned.
                </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          <code class="function">clCreateContext</code> and
          <a class="citerefentry" href="clCreateContextFromType.html"><span class="citerefentry"><span class="refentrytitle">clCreateContextFromType</span></span></a>
          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.
        </p>
        <p>
            If the
            <a class="citerefentry" href="cl_khr_terminate_context.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_terminate_context</span></span></a>
            extension is enabled, <code class="constant">CL_CONTEXT_TERMINATE_KHR</code> can be 
            specified in the context properties only if all devices associated with the 
            context support the ability to support context termination (i.e. 
            <code class="constant">CL_DEVICE_TERMINATE_CAPABILITY_CONTEXT_KHR</code> is set for
            <code class="constant">CL_DEVICE_TERMINATE_CAPABILITY_KHR</code>). Otherwise, context
            creation fails with error code of <span class="errorname">CL_INVALID_PROPERTY</span>.
        </p>
        <p>
            If the
            <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
            extension is enabled:
            Attributes control sharing of OpenCL memory objects with OpenGL buffer, texture, and 
            renderbuffer objects as described in section 9.7. Depending on the platform-specific API used to 
            bind OpenGL contexts to the window system, the following attributes may be set to identify an 
            OpenGL context:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc">
                When the CGL binding API is supported, the attribute 
                <code class="constant">CL_CGL_SHAREGROUP_KHR</code>
                should be set to a <code class="code">CGLShareGroup</code> handle to a 
                CGL share group object.
            </li>
            <li class="listitem" style="list-style-type: disc">
                When the EGL binding API is supported, the attribute 
                <code class="constant">CL_GL_CONTEXT_KHR</code> should be 
                set to an <code class="code">EGLContext</code>handle to an
                OpenGL ES or OpenGL context, and the attribute
                <code class="constant">CL_EGL_DISPLAY_KHR</code> should be 
                set to the EGLDisplay handle of the display used to 
                create the OpenGL ES or OpenGL context.
            </li>
            <li class="listitem" style="list-style-type: disc">
                When the GLX binding API is supported, the attribute 
                <code class="constant">CL_GL_CONTEXT_KHR</code> should 
                be set to a <code class="code">GLXContext</code> handle to 
                an OpenGL context, and the attribute 
                <code class="constant">CL_GLX_DISPLAY_KHR</code> should 
                be set to the Display handle of the X Window System 
                display used to create the OpenGL context.
            </li>
            <li class="listitem" style="list-style-type: disc">
                When the WGL binding API is supported, the attribute 
                <code class="constant">CL_GL_CONTEXT_KHR</code> should 
                be set to an HGLRC handle to an OpenGL context, and 
                the attribute <code class="constant">CL_WGL_HDC_KHR</code>
                should be set to the HDC handle of the display used 
                to create the OpenGL context.
            </li>
          </ul>
        </div>
        <p>
            If the
            <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
            extension is enabled:
            Memory objects created in the context so specified may be shared with the specified OpenGL or 
            OpenGL ES context (as well as with any other OpenGL contexts on the share list of that context, 
            according to the description of sharing in the GLX 1.4 and EGL 1.4 specifications, and the WGL 
            documentation for OpenGL implementations on Microsoft Windows), or with the explicitly 
            identified OpenGL share group for CGL. If no OpenGL or OpenGL ES context or share group is 
            specified in the attribute list, then memory objects may not be shared, and calling any of the 
            commands in section 9.7 will result in a <span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span>
            error.
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
        <code class="function">clCreateContext</code> returns a valid non-zero context and
        <code class="varname">errcode_ret</code> is set to <span class="errorname">CL_SUCCESS</span> if the
        context is created  successfully. Otherwise, it returns NULL value with the following
        error values returned in <code class="varname">errcode_ret</code>:
      </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_PLATFORM</span> if <code class="varname">properties</code>
          is NULL and no platform could be selected or if platform value specified
          in <code class="varname">properties</code> is not a valid platform. (If the extension
          <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
          is enabled, then this error is replaced with
          <code class="constant">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</code>; see below.)
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_PROPERTY</span> if context property name in
          <code class="varname">properties</code> 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
          <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> is
          enabled, then <code class="constant">CL_INVALID_PROPERTY</code> is returned if an attribute
          name other than those listed in the table for <code class="varname">properties</code>
          above or if <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> is specified in
          <code class="varname">properties</code>.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_PROPERTY</span> if the
          <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
          extension is enabled and an attribute name other than those
          specified in the table above (table 4.5) or if 
          <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code> is
          specified in <code class="varname">properties</code>.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">devices</code> is NULL; if
          <code class="varname">num_devices</code> is equal to zero; or if <code class="varname">pfn_notify</code>
          is NULL but <code class="varname">user_data</code> is not NULL.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_DEVICE</span> if <code class="varname">devices</code> contains an invalid device.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if Direct3D 10 interoperability is
          specified by setting <code class="constant">CL_INVALID_D3D10_DEVICE_KHR</code> to a non-NULL
          value, and interoperability with another graphics API is also specified (if the
          <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a>
          extension is enabled).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_DEVICE_NOT_AVAILABLE</span> if a device in <code class="varname">devices</code>
          is currently not available even though the device was returned by
          <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a>.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate resources
          required by the OpenCL implementation on the device.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate
          resources required by the OpenCL implementation on the host.
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D10_DEVICE_KHR</span> if the Direct3D
          10 device specified for interoperability is not compatible with
          the devices against which the context is to be created (if the
          <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a>
          extension is enabled).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D10_DEVICE_KHR</span> if the value of the property
          <code class="constant">CL_CONTEXT_D3D10_DEVICE_KHR</code> is non-NULL and does not specify
          a valid Direct3D 10 device with which the <code class="varname">cl_device_ids</code>
          against which this context is to be created may interoperate (if the
          <a class="citerefentry" href="cl_khr_d3d10_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d10_sharing</span></span></a>
          extension is enabled).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> when an invalid OpenGL
          context or share group object handle is specified in <code class="varname">properties</code> (only
          if the <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
          extension is enabled).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> if no OpenGL or
          OpenGL ES context or share group is specified in the attribute list given to
          <a class="citerefentry" href="clCreateContext.html"><span class="citerefentry"><span class="refentrytitle">clCreateContext</span></span></a>
          and any of the commands in section 9.7 are called. (if the
          <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> extension
          is enabled)
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> if the
            <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
            extension is enabled and if a context was specified by any of the following means:

            <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc">
                  A context specified for an EGL-based OpenGL ES or OpenGL implementation
                  by setting the attributes <code class="constant">CL_GL_CONTEXT_KHR</code> and
                  <code class="constant">CL_EGL_DISPLAY_KHR</code>.
                </li><li class="listitem" style="list-style-type: disc">
                  A context was specified for a GLX-based OpenGL implementation by
                  setting the attributes <code class="constant">CL_GL_CONTEXT_KHR</code> and
                  <code class="constant">CL_GLX_DISPLAY_KHR</code>.
                </li><li class="listitem" style="list-style-type: disc">
                  A context was specified for a WGL-based OpenGL implementation by
                  setting the attributes <code class="constant">CL_GL_CONTEXT_KHR</code> and
                  <code class="constant">CL_WGL_HDC_KHR</code>.
                </li></ul></div>

            and any of the following conditions hold:

            <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc">
                  The specified display and context attributes do not identify a valid
                  OpenGL or OpenGL ES context.
                </li><li class="listitem" style="list-style-type: disc">
                   The specified context does not support buffer and renderbuffer objects.
                </li><li class="listitem" style="list-style-type: disc">
                  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).
                </li></ul></div></li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</span> if a
          share group was specified for a CGL-based OpenGL implementation by
          setting the attribute <code class="constant">CL_CGL_SHAREGROUP_KHR</code>, and the
          specified share group does not identify a valid CGL share group object (if the
          <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a> extension
          is enabled).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if the
            <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
            extension is enabled and if a context was specified as described above 
            and any of the following conditions hold:

            <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc">
                  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.
                </li><li class="listitem" style="list-style-type: disc">
                  More than one of the attributes <code class="constant">CL_CGL_SHAREGROUP_KHR</code>,
                  <code class="constant">CL_EGL_DISPLAY_KHR</code>, <code class="constant">CL_GLX_DISPLAY_KHR</code>,
                  and <code class="constant">CL_WGL_HDC_KHR</code> is set to a non-default value.
                </li><li class="listitem" style="list-style-type: disc">
                  Both of the attributes <code class="constant">CL_CGL_SHAREGROUP_KHR</code> and
                  <code class="constant">CL_GL_CONTEXT_KHR</code> are set to non-default values.
                </li><li class="listitem" style="list-style-type: disc">
                  Any of the devices specified in the <code class="varname">devices</code> 
                  argument cannot support OpenCL
                  objects which share the data store of an OpenGL object, as described in
                  section 9.7.
                </li></ul></div></li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_DX9_MEDIA_ADAPTER_KHR</span> if the
          media adapter specified for interoperability is not compatible with
          the devices against which the context is to be created (only if the
          <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>
          extension is supported).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_ADAPTER_KHR</span> if
          any of the values of the properties <code class="constant">CL_CONTEXT_ADAPTER_D3D9_KHR</code>,
          <code class="constant">CL_CONTEXT_ADAPTER_D3D9EX_KHR</code> or
          <code class="constant">CL_CONTEXT_ADAPTER_DXVA_KHR</code> 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
          <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>
          extension is supported).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if interoperability is
          specified by setting <code class="constant">CL_CONTEXT_ADAPTER_D3D9_KHR</code>,
          <code class="constant">CL_CONTEXT_ADAPTER_D3D9EX_KHR</code> or
          <code class="constant">CL_CONTEXT_ADAPTER_DXVA_KHR</code> to a non-NULL value, and
          interoperability with another graphics API is also specified (only if the
          <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>
          extension is supported).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span>
          if Direct3D 11 interoperability is specified by setting
          <code class="constant">CL_INVALID_D3D11_DEVICE_KHR</code> to a non-NULL value, and
          interoperability with another graphics API is also specified (only if the
          <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a>
          extension is supported).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D11_DEVICE_KHR</span> if the value of the property
          <code class="constant">CL_CONTEXT_D3D11_DEVICE_KHR</code> is non-NULL and does not specify
          a valid Direct3D 11 device with which the <code class="varname">cl_device_ids</code>
          against which this context is to be created may interoperate (only if the
          <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a>
          extension is supported).
        </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_D3D11_DEVICE_KHR</span> 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
          <a class="citerefentry" href="cl_khr_d3d11_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_d3d11_sharing</span></span></a>
          extension is supported).
        </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p><img src="pdficon_small1.gif" />
            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.0.pdf#page=81" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a>,
            <a class="citerefentry" href="clCreateContextFromType.html"><span class="citerefentry"><span class="refentrytitle">clCreateContextFromType</span></span></a>,
            <a class="citerefentry" href="clRetainContext.html"><span class="citerefentry"><span class="refentrytitle">clRetainContext</span></span></a>,
            <a class="citerefentry" href="clReleaseContext.html"><span class="citerefentry"><span class="refentrytitle">clReleaseContext</span></span></a>,
            <a class="citerefentry" href="clGetContextInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetContextInfo</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2013 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.
</div>
    </div>
  </body>
</html>
