
    <!-- 9.9 DX9 Media Surface Sharing -->
    <!-- 9.9.1 Overview -->

    <bridgehead>DX9 Media Surface Sharing</bridgehead>

    <para>
      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.
    </para>

    <para>
        If this extension is supported by an implementation,
        the string "cl_khr_dx9_media_sharing" will be present in the
        <constant>CL_PLATFORM_EXTENSIONS</constant>
        (see <citerefentry><refentrytitle>clGetPlatformInfo</refentrytitle></citerefentry>)
        or <constant>CL_DEVICE_EXTENSIONS</constant> 
        (see <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>).
    </para>

    <para>
      As currently proposed the interfaces for this
      extension would be provided in <code>cl_dx9_media_sharing.h</code>.
    </para>

    <bridgehead>Surface formats for Media Surface Sharing</bridgehead>

    <para>
      <!-- ext. spec 9.9.7.5 Surface formats for Media Surface Sharing --> 
      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).
    </para>

    <!-- Table 9.10.3 -->
    <informaltable frame="all">
        <tgroup cols="2" align="center" colsep="1" rowsep="1">
            <colspec colname="col1" colnum="1" />
            <colspec colname="col2" colnum="2" />
            <thead>
                <row>
                    <entry>FOUR CC code</entry>
                    <entry>CL image format (channel order, channel data type)</entry>
                </row>
            </thead>

            <tbody>
                <row>
                    <entry>FOURCC('N', 'V', '1', '2'), Plane 0</entry>
                    <entry><constant>CL_R, CL_UNORM_INT8</constant></entry>
                </row>

                <row>
                    <entry>FOURCC('N', 'V', '1', '2'), Plane 1</entry>
                    <entry><constant>CL_RG, CL_UNORM_INT8</constant></entry>
                </row>

                <row>
                    <entry>FOURCC('Y', 'V', '1', '2'), Plane 0</entry>
                    <entry><constant>CL_R, CL_UNORM_INT8</constant></entry>
                </row>

                <row>
                    <entry>FOURCC('Y', 'V', '1', '2'), Plane 1</entry>
                    <entry><constant>CL_R, CL_UNORM_INT8</constant></entry>
                </row>

                <row>
                    <entry>FOURCC('Y', 'V', '1', '2'), Plane 2</entry>
                    <entry><constant>CL_R, CL_UNORM_INT8</constant></entry>
                </row>

            </tbody>
        </tgroup>
    </informaltable>

    <para>
      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
      <constant>CL_R</constant> and <constant>CL_RG</constant> but do not perform any YUV to
      RGB conversion and vice-versa.
    </para>

    <!-- Table 9.10.4 -->
    <informaltable frame="all">
      <tgroup cols="2" align="center" colsep="1" rowsep="1">
        <colspec colname="col1" colnum="1" />
        <colspec colname="col2" colnum="2" />
        <thead>
          <row>
            <entry>D3D format</entry>
            <entry>CL image format (channel order, channel data type)</entry>
          </row>
        </thead>

        <tbody>
          <row>
            <entry>D3DFMT_R32F</entry>
            <entry><constant>CL_R, CL_FLOAT</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_R16F</entry>
            <entry><constant>CL_R, CL_HALF_FLOAT</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_L16</entry>
            <entry><constant>CL_R, CL_UNORM_INT16</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_A8</entry>
            <entry><constant>CL_A, CL_UNORM_INT8</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_L8</entry>
            <entry><constant>CL_R, CL_UNORM_INT8</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_G32R32F</entry>
            <entry><constant>CL_RG, CL_FLOAT</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_G16R16F</entry>
            <entry><constant>CL_RG, CL_HALF_FLOAT</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_G16R16</entry>
            <entry><constant>CL_RG, CL_UNORM_INT16</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_A8L8</entry>
            <entry><constant>CL_RG, CL_UNORM_INT8</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_A32B32G32R32F</entry>
            <entry><constant>CL_RGBA, CL_FLOAT</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_A16B16G16R16F</entry>
            <entry><constant>CL_RGBA, CL_HALF_FLOAT</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_A16B16G16R16</entry>
            <entry><constant>CL_RGBA, CL_UNORM_INT16</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_A8B8G8R8</entry>
            <entry><constant>CL_RGBA, CL_UNORM_INT8</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_X8B8G8R8</entry>
            <entry><constant>CL_RGBA, CL_UNORM_INT8</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_A8R8G8B8</entry>
            <entry><constant>CL_BGRA, CL_UNORM_INT8</constant></entry>
          </row>

          <row>
            <entry>D3DFMT_X8R8G8B8</entry>
            <entry><constant>CL_BGRA, CL_UNORM_INT8</constant></entry>
          </row>
        </tbody>
      </tgroup>
    </informaltable>

    <para>
      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 <constant>D3DFMT_A32FB32FG32FR32F</constant> is the same as 
      <constant>CL_RGBA</constant>, <constant>CL_FLOAT</constant>.
    </para>

    <para>
      Properties of media surface objects may be queried using
      <citerefentry><refentrytitle>clGetMemObjectInfo</refentrytitle></citerefentry>
      and <citerefentry><refentrytitle>clGetImageInfo</refentrytitle></citerefentry> with
      <varname>param_name</varname> <constant>CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR</constant>,
      <constant>CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR</constant> and
      <constant>CL_IMAGE_DX9_MEDIA_SURFACE_PLANE_KHR</constant>.
    </para>

<!-- 25-Dec-2013, rev. 19 -->

