<?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>clCreateContextFromType</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clCreateContextFromType" />
  </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="clCreateContextFromType"></a>
        <h1>
            clCreateContextFromType
        </h1>
        <p>
            Create an OpenCL context from a device type that identifies the specific device(s) to use.
        </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="scalarDataTypes.html" target="pagedisplay">cl_context</a>

                    <strong class="fsfunc">
                        clCreateContextFromType
                    </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="enums.html#cl_device_type" target="pagedisplay">cl_device_type</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">device_type</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>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">(CL_CALLBACK *pfn_notify)
                        (const <a class="link" href="scalarDataTypes.html" target="pagedisplay">char</a> *errinfo</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const <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">*private_info</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">cb</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>
                         <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">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="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 of supported properties is described in the table
                  below. <code class="varname">properties</code> can also be NULL in which case the
                  platform that is selected is implementation-defined.
                </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 supported, <code class="varname">properties</code>
                  points to an attribute list whose format and valid contents
                  are identical to the <code class="varname">properties</code> argument of
                  <a class="citerefentry" href="clCreateContext.html"><span class="citerefentry"><span class="refentrytitle">clCreateContext</span></span></a>.
                </p>
              <p>
                  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, <code class="varname">properties</code>
                  points to an attribute list whose format and valid contents
                  are identical to the <code class="varname">properties</code> argument of
                  <a class="citerefentry" href="clCreateContext.html"><span class="citerefentry"><span class="refentrytitle">clCreateContext</span></span></a>.
                </p>
              <p>
                  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 supported, <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 table 4.5) 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
                  <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, <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 table 4.5) 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">device_type</span>
            </dt>
            <dd>
              <p>
                    A bit-field that identifies the type of device and is described in the table below.
                </p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">cl_device_type</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_TYPE_CPU</code>
                      </td>
                      <td align="left">
                  An OpenCL device that is the host processor. The host processor
                  runs the OpenCL implementations and is a single or multi-core CPU.
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_TYPE_GPU</code>
                      </td>
                      <td align="left">
                  An OpenCL device that is a GPU. By this we mean that the device
                  can also be used to accelerate a 3D API such as OpenGL or DirectX.
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_TYPE_ACCELERATOR</code>
                      </td>
                      <td align="left">
                  Dedicated OpenCL accelerators (for example the IBM CELL Blade). These
                  devices communicate with the host processor using a peripheral
                  interconnect such as PCIe.
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_TYPE_CUSTOM</code>
                      </td>
                      <td align="left">
                  Dedicated accelerators that do not support programs written in
                  OpenCL C.
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_TYPE_DEFAULT</code>
                      </td>
                      <td align="left">
                  The default OpenCL device in the system. The default device cannot
                  be a <code class="constant">CL_DEVICE_TYPE_CUSTOM</code> device.
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_DEVICE_TYPE_ALL</code>
                      </td>
                      <td align="left">
                  All OpenCL devices available in the system except
                  <code class="constant">CL_DEVICE_TYPE_CUSTOM</code> devices.
                </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </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>
                  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> 
                       Return an appropriate error code. If errcode_ret is NULL, no error code is returned.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
          Only devices that are returned by
          <a class="citerefentry" href="clGetDeviceIDs.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDs</span></span></a> for
          <code class="varname">device_type</code> are used to create the context. The context does not
          reference any sub-devices that may have been created from these devices.
        </p>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          <code class="function">clCreateContextFromType</code> may return all or a subset of the actual
          physical devices present in the platform and that match <code class="varname">device_type</code>.
        </p>
        <p>
          <code class="function">clCreateContextFromType</code> and
          <a class="citerefentry" href="clCreateContext.html"><span class="citerefentry"><span class="refentrytitle">clCreateContext</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>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          <code class="function">clCreateContextFromType</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
              <a class="citerefentry" href="cl_khr_gl_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_gl_sharing</span></span></a>
              extension is supported, this error is replaced (or not) by
              <code class="constant">CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR</code> and possibly
              <code class="constant">CL_INVALID_OPERATION</code> (see below and section 9.5.4 of the
              spec for clarification). </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, or if the value
              specified for a supported property name is not valid, or if the same property
              name is specified more than once.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> 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_TYPE</span> if <code class="varname">device_type</code>
              is not a valid value.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_DEVICE_NOT_AVAILABLE</span> if no devices that
              match <code class="varname">device_type</code> and property values specified in
              <code class="varname">properties</code> are currently available.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_DEVICE_NOT_FOUND</span> if no devices that match
              <code class="varname">device_type</code> and property values specified in
              <code class="varname">properties</code> were found.
            </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_GL_SHAREGROUP_REFERENCE_KHR</span> when an invalid OpenGL
              context or share group object handle is specified in <code class="varname">properties</code>
              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, then memory objects may not be shared, and calling
              any of the commands in section 9.7 will result in this error (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"><p>
                  <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:
                </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem" style="list-style-type: disc">
                      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">
                      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">
                      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 (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_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 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_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>
            <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>
          </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=83" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clCreateContext.html"><span class="citerefentry"><span class="refentrytitle">clCreateContext</span></span></a>,
            <a class="citerefentry" href="clGetContextInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetContextInfo</span></span></a>,
            <a class="citerefentry" href="clReleaseContext.html"><span class="citerefentry"><span class="refentrytitle">clReleaseContext</span></span></a>,
            <a class="citerefentry" href="clRetainContext.html"><span class="citerefentry"><span class="refentrytitle">clRetainContext</span></span></a>,
            <a class="citerefentry" href="clGetContextInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetContextInfo</span></span></a>,
            <a class="citerefentry" href="classDiagram.html"><span class="citerefentry"><span class="refentrytitle">Cardinality Diagram</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>
