<?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.79.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 class="informaltable" 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.
                OpenCL / OpenGL sharing does not support the 
                <code class="constant">CL_CONTEXT_INTEROP_USER_SYNC</code>
                property defined in table 4.5. Specifying this 
                property when creating a context with OpenCL / 
                OpenGL sharing will return an appropriate error.</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 a 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 <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_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.1.pdf#namedest=clCreateContext" 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-2015 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>
