<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd" [
<!ENTITY mediaSurfaceFormatsInc SYSTEM "mediaSurfaceFormatsInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset><keyword>clCreateFromDX9MediaSurfaceKHR</keyword></keywordset>
    </refentryinfo>
    <refmeta>
        <refentrytitle>clCreateFromDX9MediaSurfaceKHR</refentrytitle>
        <refmiscinfo>
            <copyright>
                <year>2007-2013</year>
                <holder>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.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

  <refnamediv id="clCreateFromDX9MediaSurfaceKHR">
      <refname>clCreateFromDX9MediaSurfaceKHR</refname>
      <refpurpose>Creates an OpenCL image object from a media surface.</refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="abstractDataTypes.html">cl_mem</link>
                    <function>clCreateFromDX9MediaSurfaceKHR</function>
                </funcdef>
                <paramdef><link xlink:href="abstractDataTypes.html">cl_context</link><parameter>context</parameter></paramdef>
                <paramdef><link xlink:href="enums.html#cl_mem_flags">cl_mem_flags</link><parameter>flags</parameter></paramdef>
                <paramdef>cl_dx9_media_adapter_type_khr<parameter>adapter_type</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*surface_info</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>plane</parameter></paramdef>
                <paramdef>
                    <link xlink:href="scalarDataTypes.html">cl_int</link>
                    <parameter>*errcode_ret</parameter>
                </paramdef>
           </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters"><title>Parameters</title>
        <variablelist>
        <varlistentry>
            <term><varname>context</varname></term>
            <listitem>
                <para>
                    A valid OpenCL context created from a media adapter.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>flags</varname></term>
            <listitem>
                <para>
                  A bit-field that is used to specify usage information. Refer
                  to the table of allowed values for <varname>flags</varname> for
                  <citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>.  Only
                  <constant>CL_MEM_READ_ONLY</constant>, <constant>CL_MEM_WRITE_ONLY</constant>,
                  and <constant>CL_MEM_READ_WRITE</constant> values specified
                  in the table of allowed values for <varname>flags</varname> for
                  <citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>
                  can be used.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>adapter_type</varname></term>
            <listitem>
                <para>
                  A value from enumeration of supported adapters described in the
                  table of <varname>cl_dx9_media_adapter_type_khr</varname> values for
                  <citerefentry><refentrytitle>clGetDeviceIDsFromDX9MediaAdapterKHR</refentrytitle></citerefentry>.
                  The type of <varname>surface_info</varname> 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 <constant>CL_ADAPTER_D3D9_KHR</constant>,
                  <constant>CL_ADAPTER_D3D9EX_KHR</constant>, and
                  <constant>CL_ADAPTER_DXVA_KHR</constant>.
                </para>

                <para>
                  If <varname>adapter_type</varname> is <constant>CL_ADAPTER_D3D9_KHR</constant>,
                  <constant>CL_ADAPTER_D3D9EX_KHR</constant>, or
                  <constant>CL_ADAPTER_DXVA_KHR</constant>, the <varname>surface_info</varname>
                  points to the following structure:
                </para>

                <para> <code><literallayout>
typedef struct _cl_dx9_surface_info_khr
{
    IDirect3DSurface9 *resource; 
    HANDLE shared_handle;
} cl_dx9_surface_info_khr;
                    </literallayout></code>
                </para>

                <para>
                  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. <varname>shared_handle</varname> may be NULL and this
                  may result in sub-optimal performance.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>surface_info</varname></term>
            <listitem>
                <para>
                  A pointer to one of the structures defined in the <varname>adapter_type</varname>
                  description above passed in as a <type>void</type> *.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>plane</varname></term>
            <listitem>
                <para>
                  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, <varname>plane</varname>
                  must be 0.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><varname>errcode_ret</varname></term>
            <listitem>
                <para>
                  An appropriate error code. If <varname>errcode_ret</varname> is NULL, no
                  error code is returned.
                </para>
            </listitem>
        </varlistentry> </variablelist>
    </refsect1>

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>
        <para>
          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.
        </para>

        <para>
          This call will increment the internal media surface count on
          <varname>resource</varname>. The internal media surface reference count on
          <varname>resource</varname> will be decremented when the OpenCL reference count on
          the returned OpenCL memory object drops to zero.
        </para>

        &mediaSurfaceFormatsInc;

    </refsect1>

<!-- ================================ ERRORS  -->

    <refsect1 id="errors"><title>Errors</title>
        <para>
          Returns a valid non-zero 2D image object and
          <varname>errcode_ret</varname> is set to <errorname>CL_SUCCESS</errorname> if the 2D
          image object is created successfully.  Otherwise, it returns a NULL value with one
          of the following error values returned in <varname>errcode_ret</varname>:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if <varname>context</varname> is not
              a valid context.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if values specified in
              <varname>flags</varname> are not valid or if 
              <varname>plane</varname> is not a valid plane of
              <varname>resource</varname> specified in <varname>surface_info</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_DX9_MEDIA_SURFACE_KHR</errorname> if
              <varname>resource</varname> specified in <varname>surface_info</varname> is not
              a valid resource or is not associated with <varname>adapter_type</varname> (e.g.,
              <varname>adapter_type</varname> is set to <constant>CL_ADAPTER_D3D9_KHR</constant>
              and <varname>resource</varname> is not a Direct3D 9 surface created in
              <constant>D3DPOOL_DEFAULT</constant>).
            </listitem>

            <listitem>
              <errorname>CL_INVALID_DX9_MEDIA_SURFACE_KHR</errorname> if
              <varname>shared_handle</varname> specified in <varname>surface_info</varname>
              is not NULL or a valid handle value.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_IMAGE_FORMAT_DESCRIPTOR</errorname> if the texture format
              of <varname>resource</varname> is not listed in tables 9.10.3 and 9.10.4.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if there are no devices in
              <varname>context</varname> that support <varname>adapter_type</varname>.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </listitem>
        </itemizedlist>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->

    <refsect1 id="specification"><title>Specification</title>
        <para><imageobject><imagedata fileref="pdficon_small1.gif" format="gif" /></imageobject>
            <olink uri="clCreateFromDX9MediaSurfaceKHR">OpenCL Specification</olink>
        </para>
    </refsect1>

<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
         <para>
             <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry>,
             <citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>,
        </para>
    </refsect1>

<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

<!-- 22-Dec-2013, rev. 19 -->
</refentry>

