<?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>clCreateFromDX9MediaSurfaceKHR</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clCreateFromDX9MediaSurfaceKHR" />
  </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="clCreateFromDX9MediaSurfaceKHR"></a>
        <h1>clCreateFromDX9MediaSurfaceKHR</h1>
        <p>Creates an OpenCL image object from a media surface.</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_mem</a>
                    <strong class="fsfunc">clCreateFromDX9MediaSurfaceKHR</strong>
                (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_context</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">context</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_mem_flags" target="pagedisplay">cl_mem_flags</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">flags</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>cl_dx9_media_adapter_type_khr <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">adapter_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">*surface_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">cl_uint</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">plane</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">
                <code class="varname">context</code>
              </span>
            </dt>
            <dd>
              <p>
                    A valid OpenCL context created from a media adapter.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">flags</code>
              </span>
            </dt>
            <dd>
              <p>
                  A bit-field that is used to specify usage information. Refer
                  to the table of allowed values for <code class="varname">flags</code> for
                  <a class="citerefentry" href="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a>.  Only
                  <code class="constant">CL_MEM_READ_ONLY</code>, <code class="constant">CL_MEM_WRITE_ONLY</code>,
                  and <code class="constant">CL_MEM_READ_WRITE</code> values specified
                  in the table of allowed values for <code class="varname">flags</code> for
                  <a class="citerefentry" href="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a>
                  can be used.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">adapter_type</code>
              </span>
            </dt>
            <dd>
              <p>
                  A value from enumeration of supported adapters described in the
                  table of <code class="varname">cl_dx9_media_adapter_type_khr</code> values for
                  <a class="citerefentry" href="clGetDeviceIDsFromDX9MediaAdapterKHR.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceIDsFromDX9MediaAdapterKHR</span></span></a>.
                  The type of <code class="varname">surface_info</code> is determined by the adapter
                  type.  The implementation does not need to support all adapter types. This
                  approach provides flexibility to support additional adapter types in the
                  future. Supported adapter types are <code class="constant">CL_ADAPTER_D3D9_KHR</code>,
                  <code class="constant">CL_ADAPTER_D3D9EX_KHR</code>, and
                  <code class="constant">CL_ADAPTER_DXVA_KHR</code>.
                </p>
              <p>
                  If <code class="varname">adapter_type</code> is <code class="constant">CL_ADAPTER_D3D9_KHR</code>,
                  <code class="constant">CL_ADAPTER_D3D9EX_KHR</code>, or
                  <code class="constant">CL_ADAPTER_DXVA_KHR</code>, the <code class="varname">surface_info</code>
                  points to the following structure:
                </p>
              <p> <code class="code"><div class="literallayout"><p><br />
typedef struct _cl_dx9_surface_info_khr<br />
{<br />
    IDirect3DSurface9 *resource; <br />
    HANDLE shared_handle;<br />
} cl_dx9_surface_info_khr;<br />
                    </p></div></code>
                </p>
              <p>
                  For D3D9 surfaces, we need both the handle to the resource and the resource
                  itself to have a sufficient amount of information to eliminate a copy of the
                  surface for sharing in cases where this is possible. Elimination of the copy
                  is driver dependent. <code class="varname">shared_handle</code> may be NULL and this
                  may result in sub-optimal performance.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">surface_info</code>
              </span>
            </dt>
            <dd>
              <p>
                  A pointer to one of the structures defined in the <code class="varname">adapter_type</code>
                  description above passed in as a <span class="type">void</span> *.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">plane</code>
              </span>
            </dt>
            <dd>
              <p>
                  The plane of resource to share for planar surface formats.  For planar formats,
                  we use the plane parameter to obtain a handle to thie specific plane (Y, U or
                  V for example).  For nonplanar formats used by media, <code class="varname">plane</code>
                  must be 0.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">errcode_ret</code>
              </span>
            </dt>
            <dd>
              <p>
                  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>
          The width and height of the returned OpenCL 2D image object are determined by the
          width and height of the plane of resource. The channel type and order of the returned
          image object is determined by the format and plane of resource and are described in
          tables 9.10.3 and 9.10.4.
        </p>
        <p>
          This call will increment the internal media surface count on
          <code class="varname">resource</code>. The internal media surface reference count on
          <code class="varname">resource</code> will be decremented when the OpenCL reference count on
          the returned OpenCL memory object drops to zero.
        </p>
        <h4><a id="id-1.6.4"></a>DX9 Media Surface Sharing</h4>
        <p>
      The goal of this extension is to allow applications
      to use media surfaces as OpenCL memory objects. This allows efficient sharing of data
      between OpenCL and selected adapter APIs (only DX9 for now). If this extension is supported,
      an OpenCL image object can be created from a media surface and the OpenCL API can be used
      to execute kernels that read and/or write memory objects that are media surfaces. Note
      that OpenCL memory objects may be created from the adapter media surface if and only if
      the OpenCL context has been created from that adapter.
    </p>
        <p>
        If this extension is supported by an implementation,
        the string "cl_khr_dx9_media_sharing" will be present in the
        <code class="constant">CL_PLATFORM_EXTENSIONS</code>
        (see <a class="citerefentry" href="clGetPlatformInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetPlatformInfo</span></span></a>)
        or <code class="constant">CL_DEVICE_EXTENSIONS</code> 
        (see <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>).
    </p>
        <p>
      As currently proposed the interfaces for this
      extension would be provided in <code class="code">cl_dx9_media_sharing.h</code>.
    </p>
        <h4><a id="id-1.6.8"></a>Surface formats for Media Surface Sharing</h4>
        <p>
       
      This section includes the D3D surface formats
      that are supported when the adapter type is one of the Direct 3D lineage. Using a D3D
      surface format not listed here is an error.  To extend the use of this extension to support
      media adapters beyond DirectX9 tables similar to the ones in this section will need to be
      defined for the surface formats supported by the new media adapter.  All implementations
      that support this extension are required to support the NV12 surface format, the other
      surface formats supported are the same surface formats that the adapter you are sharing
      with supports as long as they are listed in the two tables below (Tables 9.10.3 and 9.10.4).
    </p>
        <div class="informaltable">
          <table border="1">
            <colgroup>
              <col align="center" class="col1" />
              <col align="center" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="center">FOUR CC code</th>
                <th align="center">CL image format (channel order, channel data type)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="center">FOURCC('N', 'V', '1', '2'), Plane 0</td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">FOURCC('N', 'V', '1', '2'), Plane 1</td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">FOURCC('Y', 'V', '1', '2'), Plane 0</td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">FOURCC('Y', 'V', '1', '2'), Plane 1</td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">FOURCC('Y', 'V', '1', '2'), Plane 2</td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT8</code>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
      In the table above, NV12 Plane 0 corresponds to the luminance (Y) channel and Plane 1
      corresponds to the UV channels. The YV12 Plane 0 corresponds to the Y channel, Plane
      1 to the U channel and Plane 2 to the V channel. Note that the YUV formats map to
      <code class="constant">CL_R</code> and <code class="constant">CL_RG</code> but do not perform any YUV to
      RGB conversion and vice-versa.
    </p>
        <div class="informaltable">
          <table border="1">
            <colgroup>
              <col align="center" class="col1" />
              <col align="center" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="center">D3D format</th>
                <th align="center">CL image format (channel order, channel data type)</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="center">D3DFMT_R32F</td>
                <td align="center">
                  <code class="constant">CL_R, CL_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_R16F</td>
                <td align="center">
                  <code class="constant">CL_R, CL_HALF_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_L16</td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_A8</td>
                <td align="center">
                  <code class="constant">CL_A, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_L8</td>
                <td align="center">
                  <code class="constant">CL_R, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_G32R32F</td>
                <td align="center">
                  <code class="constant">CL_RG, CL_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_G16R16F</td>
                <td align="center">
                  <code class="constant">CL_RG, CL_HALF_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_G16R16</td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNORM_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_A8L8</td>
                <td align="center">
                  <code class="constant">CL_RG, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_A32B32G32R32F</td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_A16B16G16R16F</td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_HALF_FLOAT</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_A16B16G16R16</td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNORM_INT16</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_A8B8G8R8</td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_X8B8G8R8</td>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_A8R8G8B8</td>
                <td align="center">
                  <code class="constant">CL_BGRA, CL_UNORM_INT8</code>
                </td>
              </tr>
              <tr>
                <td align="center">D3DFMT_X8R8G8B8</td>
                <td align="center">
                  <code class="constant">CL_BGRA, CL_UNORM_INT8</code>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
      Note that D3D9 format names seem to imply that the order of the color channels are switched
      relative to OpenCL but this is not the case. For example, layout of channels for each pixel
      for <code class="constant">D3DFMT_A32FB32FG32FR32F</code> is the same as 
      <code class="constant">CL_RGBA</code>, <code class="constant">CL_FLOAT</code>.
    </p>
        <p>
      Properties of media surface objects may be queried using
      <a class="citerefentry" href="clGetMemObjectInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetMemObjectInfo</span></span></a>
      and <a class="citerefentry" href="clGetImageInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetImageInfo</span></span></a> with
      <code class="varname">param_name</code> <code class="constant">CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR</code>,
      <code class="constant">CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR</code> and
      <code class="constant">CL_IMAGE_DX9_MEDIA_SURFACE_PLANE_KHR</code>.
    </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          Returns a valid non-zero 2D image object and
          <code class="varname">errcode_ret</code> is set to <span class="errorname">CL_SUCCESS</span> if the 2D
          image object is created successfully.  Otherwise, it returns a NULL value with one
          of 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_CONTEXT</span> if <code class="varname">context</code> is not
              a valid context.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if values specified in
              <code class="varname">flags</code> are not valid or if 
              <code class="varname">plane</code> is not a valid plane of
              <code class="varname">resource</code> specified in <code class="varname">surface_info</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_DX9_MEDIA_SURFACE_KHR</span> if
              <code class="varname">resource</code> specified in <code class="varname">surface_info</code> is not
              a valid resource or is not associated with <code class="varname">adapter_type</code> (e.g.,
              <code class="varname">adapter_type</code> is set to <code class="constant">CL_ADAPTER_D3D9_KHR</code>
              and <code class="varname">resource</code> is not a Direct3D 9 surface created in
              <code class="constant">D3DPOOL_DEFAULT</code>).
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_DX9_MEDIA_SURFACE_KHR</span> if
              <code class="varname">shared_handle</code> specified in <code class="varname">surface_info</code>
              is not NULL or a valid handle value.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_IMAGE_FORMAT_DESCRIPTOR</span> if the texture format
              of <code class="varname">resource</code> is not listed in tables 9.10.3 and 9.10.4.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if there are no devices in
              <code class="varname">context</code> that support <code class="varname">adapter_type</code>.
            </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>
          </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-extensions.pdf#page=87" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
             <a class="citerefentry" href="cl_khr_dx9_media_sharing.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_dx9_media_sharing</span></span></a>,
             <a class="citerefentry" href="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</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>
