Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > bf5d4dd88c08049c9bdbf8c483b59e41 > files > 50

libvdpau-docs-0.4.1-4.fc15.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>VDPAU: VdpOutputSurface Rendering           Functionality</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">VDPAU</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a>  </div>
  <div class="headertitle">
<h1>VdpOutputSurface Rendering Functionality</h1>  </div>
<div class="ingroups"><a class="el" href="group__api__core.html">Core API</a></div></div>
<div class="contents">
<div class="dynheader">
Collaboration diagram for VdpOutputSurface Rendering Functionality:</div>
<div class="dyncontent">
<center><table><tr><td><img src="group___vdp_output_surface_render.png" border="0" alt="" usemap="#group______vdp__output__surface__render"/>
<map name="group______vdp__output__surface__render" id="group______vdp__output__surface__render">
<area shape="rect" id="node1" href="group__api__core.html" title="Core API" alt="" coords="7,5,81,35"/></map>
</td></tr></table></center>
</div>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vdp_output_surface_render_blend_state.html">VdpOutputSurfaceRenderBlendState</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Complete blending operation definition.  <a href="struct_vdp_output_surface_render_blend_state.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#ga7f2b026f3c9e7ddd11cac2f98871263e">VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION</a>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#ga44e39e7a4e8f86f49e106e63d8116aee">VDP_OUTPUT_SURFACE_RENDER_ROTATE_0</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not rotate source_surface prior to compositing.  <a href="#ga44e39e7a4e8f86f49e106e63d8116aee"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#gaf8a31d75ebc3882a5213a56c5593d9ec">VDP_OUTPUT_SURFACE_RENDER_ROTATE_90</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotate source_surface 90 degrees clockwise prior to compositing.  <a href="#gaf8a31d75ebc3882a5213a56c5593d9ec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#ga74ac141dc4c4adfd45af62a025f06544">VDP_OUTPUT_SURFACE_RENDER_ROTATE_180</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotate source_surface 180 degrees prior to compositing.  <a href="#ga74ac141dc4c4adfd45af62a025f06544"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#ga0fd065d3064e1526bc174aae25b77770">VDP_OUTPUT_SURFACE_RENDER_ROTATE_270</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotate source_surface 270 degrees clockwise prior to compositing.  <a href="#ga0fd065d3064e1526bc174aae25b77770"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#ga3779974da2c5d7914e876452d066b981">VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A separate color is used for each vertex of the smooth-shaded quad. Hence, colors array contains 4 elements rather than 1. See description of colors array.  <a href="#ga3779974da2c5d7914e876452d066b981"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__error__handling.html#ga7fa6c302213052e531b20bab723e5778">VdpStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#ga4dbfbccec54d666e8657030c0399275b">VdpOutputSurfaceRenderOutputSurface</a> (<a class="el" href="group___vdp_output_surface.html#ga39f4859fb6b35dd3172c541f7613bf15">VdpOutputSurface</a> destination_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *destination_rect, <a class="el" href="group___vdp_output_surface.html#ga39f4859fb6b35dd3172c541f7613bf15">VdpOutputSurface</a> source_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *source_rect, <a class="el" href="struct_vdp_color.html">VdpColor</a> const *colors, <a class="el" href="struct_vdp_output_surface_render_blend_state.html">VdpOutputSurfaceRenderBlendState</a> const *blend_state, uint32_t flags)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Composite a sub-rectangle of a <a class="el" href="group___vdp_output_surface.html">VdpOutputSurface</a> into a sub-rectangle of another <a class="el" href="group___vdp_output_surface.html">VdpOutputSurface; Output Surface object</a> VdpOutputSurface.  <a href="#ga4dbfbccec54d666e8657030c0399275b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="group__error__handling.html#ga7fa6c302213052e531b20bab723e5778">VdpStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#gaf69e77f4d465d059341477a74ccebcd5">VdpOutputSurfaceRenderBitmapSurface</a> (<a class="el" href="group___vdp_output_surface.html#ga39f4859fb6b35dd3172c541f7613bf15">VdpOutputSurface</a> destination_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *destination_rect, <a class="el" href="group___vdp_bitmap_surface.html#gad320825923573683205bfe94c4f0f6b9">VdpBitmapSurface</a> source_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *source_rect, <a class="el" href="struct_vdp_color.html">VdpColor</a> const *colors, <a class="el" href="struct_vdp_output_surface_render_blend_state.html">VdpOutputSurfaceRenderBlendState</a> const *blend_state, uint32_t flags)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Composite a sub-rectangle of a <a class="el" href="group___vdp_bitmap_surface.html">VdpBitmapSurface</a> into a sub-rectangle of a <a class="el" href="group___vdp_output_surface.html">VdpOutputSurface; Output Surface object</a> VdpOutputSurface.  <a href="#gaf69e77f4d465d059341477a74ccebcd5"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#gaa451a329033f61c027d3b0a1815c7420">VdpOutputSurfaceRenderBlendFactor</a> { <br/>
&#160;&#160;<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420aa74c6ed0a0d7df88a3335b0fb3688a86">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO</a> =  0, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420a080c8103ac715f6d27a5e69c6bbee80d">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE</a> =  1, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420a2c658cca5329287790b162560eae37af">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR</a> =  2, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420aac85590daa214696720d47ca9c4d5a4e">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR</a> =  3, 
<br/>
&#160;&#160;<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420a00164d092ef9949cb0a3fc4bd39bd42a">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA</a> =  4, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420ab6c7edf31d4e1e434f96e74a508e4fd7">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA</a> =  5, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420a1a0d43d4aa69e291d40526cfe4cea23e">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA</a> =  6, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420aa58e7bb2f2d78c4d84032416e6395844">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA</a> =  7, 
<br/>
&#160;&#160;<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420aa76d7e30358ab02b8513a786d8bb1722">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR</a> =  8, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420a431d673669bebf7db50fe7495e842421">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR</a> =  9, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420a6dc1e64d1b9665fa6b325c11ab452552">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE</a> =  10, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420af83e22b1fdbf43f4571cbc8447589062">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR</a> =  11, 
<br/>
&#160;&#160;<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420aa18dc631bfb6f1ba9b4cd0a5eea870e9">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</a> =  12, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420ad8f98b1cb9c90572c1a3703e9c7f5cf1">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA</a> =  13, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa451a329033f61c027d3b0a1815c7420af505e94ecddafb7ec34c4d9658db7228">VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</a> =  14
<br/>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>The blending equation factors. </p>
 <a href="group___vdp_output_surface_render.html#gaa451a329033f61c027d3b0a1815c7420">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___vdp_output_surface_render.html#gaa8e500d1c0fab1539b4c68da47f2bb91">VdpOutputSurfaceRenderBlendEquation</a> { <br/>
&#160;&#160;<a class="el" href="group___vdp_output_surface_render.html#ggaa8e500d1c0fab1539b4c68da47f2bb91ac8e7e9bd786eee4a7572bbceb45fe59d">VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT</a> =  0, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa8e500d1c0fab1539b4c68da47f2bb91a5c59df3dc8a0a80beb6029f2be37d0bc">VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT</a> =  1, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa8e500d1c0fab1539b4c68da47f2bb91ac7998b4daab7f9fe6492963de88c3600">VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD</a> =  2, 
<a class="el" href="group___vdp_output_surface_render.html#ggaa8e500d1c0fab1539b4c68da47f2bb91a2d7a39441eae8a562bdb1f0ddabb89c4">VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN</a> =  3, 
<br/>
&#160;&#160;<a class="el" href="group___vdp_output_surface_render.html#ggaa8e500d1c0fab1539b4c68da47f2bb91a8009b8c10abd389a8335dfad23f1c83e">VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX</a> =  4
<br/>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight"><p>The blending equations. </p>
 <a href="group___vdp_output_surface_render.html#gaa8e500d1c0fab1539b4c68da47f2bb91">More...</a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p><a class="el" href="group___vdp_output_surface.html">VdpOutputSurface</a> objects directly provide some rendering/compositing operations. These are described below. </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga7f2b026f3c9e7ddd11cac2f98871263e"></a><!-- doxytag: member="vdpau.h::VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION" ref="ga7f2b026f3c9e7ddd11cac2f98871263e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ga3779974da2c5d7914e876452d066b981"></a><!-- doxytag: member="vdpau.h::VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX" ref="ga3779974da2c5d7914e876452d066b981" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A separate color is used for each vertex of the smooth-shaded quad. Hence, colors array contains 4 elements rather than 1. See description of colors array. </p>

</div>
</div>
<a class="anchor" id="ga44e39e7a4e8f86f49e106e63d8116aee"></a><!-- doxytag: member="vdpau.h::VDP_OUTPUT_SURFACE_RENDER_ROTATE_0" ref="ga44e39e7a4e8f86f49e106e63d8116aee" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_0</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Do not rotate source_surface prior to compositing. </p>

</div>
</div>
<a class="anchor" id="ga74ac141dc4c4adfd45af62a025f06544"></a><!-- doxytag: member="vdpau.h::VDP_OUTPUT_SURFACE_RENDER_ROTATE_180" ref="ga74ac141dc4c4adfd45af62a025f06544" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_180</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rotate source_surface 180 degrees prior to compositing. </p>

</div>
</div>
<a class="anchor" id="ga0fd065d3064e1526bc174aae25b77770"></a><!-- doxytag: member="vdpau.h::VDP_OUTPUT_SURFACE_RENDER_ROTATE_270" ref="ga0fd065d3064e1526bc174aae25b77770" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_270</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rotate source_surface 270 degrees clockwise prior to compositing. </p>

</div>
</div>
<a class="anchor" id="gaf8a31d75ebc3882a5213a56c5593d9ec"></a><!-- doxytag: member="vdpau.h::VDP_OUTPUT_SURFACE_RENDER_ROTATE_90" ref="gaf8a31d75ebc3882a5213a56c5593d9ec" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_90</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Rotate source_surface 90 degrees clockwise prior to compositing. </p>

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="gaf69e77f4d465d059341477a74ccebcd5"></a><!-- doxytag: member="vdpau.h::VdpOutputSurfaceRenderBitmapSurface" ref="gaf69e77f4d465d059341477a74ccebcd5" args="(VdpOutputSurface destination_surface, VdpRect const *destination_rect, VdpBitmapSurface source_surface, VdpRect const *source_rect, VdpColor const *colors, VdpOutputSurfaceRenderBlendState const *blend_state, uint32_t flags)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="group__error__handling.html#ga7fa6c302213052e531b20bab723e5778">VdpStatus</a> <a class="el" href="group___vdp_output_surface_render.html#gaf69e77f4d465d059341477a74ccebcd5">VdpOutputSurfaceRenderBitmapSurface</a>(<a class="el" href="group___vdp_output_surface.html#ga39f4859fb6b35dd3172c541f7613bf15">VdpOutputSurface</a> destination_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *destination_rect, <a class="el" href="group___vdp_bitmap_surface.html#gad320825923573683205bfe94c4f0f6b9">VdpBitmapSurface</a> source_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *source_rect, <a class="el" href="struct_vdp_color.html">VdpColor</a> const *colors, <a class="el" href="struct_vdp_output_surface_render_blend_state.html">VdpOutputSurfaceRenderBlendState</a> const *blend_state, uint32_t flags)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Composite a sub-rectangle of a <a class="el" href="group___vdp_bitmap_surface.html">VdpBitmapSurface</a> into a sub-rectangle of a <a class="el" href="group___vdp_output_surface.html">VdpOutputSurface; Output Surface object</a> VdpOutputSurface. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">destination_surface</td><td>The destination surface of the compositing operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">destination_rect</td><td>The sub-rectangle of the destination surface to update. If NULL, the entire destination surface will be updated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">source_surface</td><td>The source surface for the compositing operation. The surface is treated as having four components: red, green, blue and alpha. Any missing components are treated as 1.0. For example, for an A8 VdpBitmapSurface, alpha will come from the surface but red, green and blue will be treated as 1.0. If source_surface is NULL, all components will be treated as 1.0. Note that destination_surface and source_surface must have been allocated via the same <a class="el" href="group___vdp_device.html">VdpDevice</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">source_rect</td><td>The sub-rectangle of the source surface to read from. If NULL, the entire source_surface will be read. Left/right ot top/bottom co-ordinates may be swapped to flip the source. Any flip occurs prior to any requested rotation. Values from outside the source surface are valid and samples at those locations will be taken from the nearest edge. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">colors</td><td>A pointer to an array of <a class="el" href="struct_vdp_color.html">VdpColor</a> objects. If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is set, VDPAU will four entries from the array, and treat them as the colors corresponding to the upper-left, upper-right, lower-right and lower-left corners of the post-rotation source (i.e. indices 0, 1, 2 and 3 run clockwise from the upper left corner). If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not set, VDPAU will use the single <a class="el" href="struct_vdp_color.html">VdpColor</a> for all four corners. If colors is NULL then red, green, blue and alpha values of 1.0 will be used. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">blend_state</td><td>If a blend state is provided, the blend state will be used for the composite operation. If NULL, blending is effectively disabled, which is equivalent to a blend equation of ADD, source blend factors of ONE and destination blend factors of ZERO. See <a class="el" href="struct_vdp_output_surface_render_blend_state.html">VdpOutputSurfaceRenderBlendState</a> for details regarding the mathematics of the blending operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>A set of flags influencing how the compositing operation works. </p>
<ul>
<li><a class="el" href="group___vdp_output_surface_render.html#ga44e39e7a4e8f86f49e106e63d8116aee">VDP_OUTPUT_SURFACE_RENDER_ROTATE_0</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#gaf8a31d75ebc3882a5213a56c5593d9ec">VDP_OUTPUT_SURFACE_RENDER_ROTATE_90</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#ga74ac141dc4c4adfd45af62a025f06544">VDP_OUTPUT_SURFACE_RENDER_ROTATE_180</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#ga0fd065d3064e1526bc174aae25b77770">VDP_OUTPUT_SURFACE_RENDER_ROTATE_270</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#ga3779974da2c5d7914e876452d066b981">VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX</a> </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>VdpStatus The completion status of the operation.</dd></dl>
<p>The general compositing pipeline is as follows.</p>
<ol type="1">
<li>Extract source_rect from source_surface.</li>
</ol>
<ol type="1">
<li>The extracted source is rotated 0, 90, 180 or 270 degrees according to the flags.</li>
</ol>
<ol type="1">
<li>The rotated source is component-wise multiplied by a smooth-shaded quad with a (potentially) different color at each vertex.</li>
</ol>
<ol type="1">
<li>The resulting rotated, smooth-shaded quad is scaled to the size of destination_rect and composited with destination_surface using the provided blend state. </li>
</ol>

</div>
</div>
<a class="anchor" id="ga4dbfbccec54d666e8657030c0399275b"></a><!-- doxytag: member="vdpau.h::VdpOutputSurfaceRenderOutputSurface" ref="ga4dbfbccec54d666e8657030c0399275b" args="(VdpOutputSurface destination_surface, VdpRect const *destination_rect, VdpOutputSurface source_surface, VdpRect const *source_rect, VdpColor const *colors, VdpOutputSurfaceRenderBlendState const *blend_state, uint32_t flags)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="group__error__handling.html#ga7fa6c302213052e531b20bab723e5778">VdpStatus</a> <a class="el" href="group___vdp_output_surface_render.html#ga4dbfbccec54d666e8657030c0399275b">VdpOutputSurfaceRenderOutputSurface</a>(<a class="el" href="group___vdp_output_surface.html#ga39f4859fb6b35dd3172c541f7613bf15">VdpOutputSurface</a> destination_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *destination_rect, <a class="el" href="group___vdp_output_surface.html#ga39f4859fb6b35dd3172c541f7613bf15">VdpOutputSurface</a> source_surface, <a class="el" href="struct_vdp_rect.html">VdpRect</a> const *source_rect, <a class="el" href="struct_vdp_color.html">VdpColor</a> const *colors, <a class="el" href="struct_vdp_output_surface_render_blend_state.html">VdpOutputSurfaceRenderBlendState</a> const *blend_state, uint32_t flags)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Composite a sub-rectangle of a <a class="el" href="group___vdp_output_surface.html">VdpOutputSurface</a> into a sub-rectangle of another <a class="el" href="group___vdp_output_surface.html">VdpOutputSurface; Output Surface object</a> VdpOutputSurface. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">destination_surface</td><td>The destination surface of the compositing operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">destination_rect</td><td>The sub-rectangle of the destination surface to update. If NULL, the entire destination surface will be updated. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">source_surface</td><td>The source surface for the compositing operation. The surface is treated as having four components: red, green, blue and alpha. Any missing components are treated as 1.0. For example, for an A8 VdpOutputSurface, alpha will come from the surface but red, green and blue will be treated as 1.0. If source_surface is NULL, all components will be treated as 1.0. Note that destination_surface and source_surface must have been allocated via the same <a class="el" href="group___vdp_device.html">VdpDevice</a>. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">source_rect</td><td>The sub-rectangle of the source surface to read from. If NULL, the entire source_surface will be read. Left/right and/or top/bottom co-ordinates may be swapped to flip the source. Any flip occurs prior to any requested rotation. Values from outside the source surface are valid and samples at those locations will be taken from the nearest edge. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">colors</td><td>A pointer to an array of <a class="el" href="struct_vdp_color.html">VdpColor</a> objects. If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is set, VDPAU will four entries from the array, and treat them as the colors corresponding to the upper-left, upper-right, lower-right and lower-left corners of the post-rotation source (i.e. indices 0, 1, 2 and 3 run clockwise from the upper left corner). If the flag VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX is not set, VDPAU will use the single <a class="el" href="struct_vdp_color.html">VdpColor</a> for all four corners. If colors is NULL then red, green, blue and alpha values of 1.0 will be used. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">blend_state</td><td>If a blend state is provided, the blend state will be used for the composite operation. If NULL, blending is effectively disabled, which is equivalent to a blend equation of ADD, source blend factors of ONE and destination blend factors of ZERO. See <a class="el" href="struct_vdp_output_surface_render_blend_state.html">VdpOutputSurfaceRenderBlendState</a> for details regarding the mathematics of the blending operation. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>A set of flags influencing how the compositing operation works. </p>
<ul>
<li><a class="el" href="group___vdp_output_surface_render.html#ga44e39e7a4e8f86f49e106e63d8116aee">VDP_OUTPUT_SURFACE_RENDER_ROTATE_0</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#gaf8a31d75ebc3882a5213a56c5593d9ec">VDP_OUTPUT_SURFACE_RENDER_ROTATE_90</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#ga74ac141dc4c4adfd45af62a025f06544">VDP_OUTPUT_SURFACE_RENDER_ROTATE_180</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#ga0fd065d3064e1526bc174aae25b77770">VDP_OUTPUT_SURFACE_RENDER_ROTATE_270</a> </li>
<li><a class="el" href="group___vdp_output_surface_render.html#ga3779974da2c5d7914e876452d066b981">VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX</a> </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>VdpStatus The completion status of the operation.</dd></dl>
<p>The general compositing pipeline is as follows.</p>
<ol type="1">
<li>Extract source_rect from source_surface.</li>
</ol>
<ol type="1">
<li>The extracted source is rotated 0, 90, 180 or 270 degrees according to the flags.</li>
</ol>
<ol type="1">
<li>The rotated source is component-wise multiplied by a smooth-shaded quad with a (potentially) different color at each vertex.</li>
</ol>
<ol type="1">
<li>The resulting rotated, smooth-shaded quad is scaled to the size of destination_rect and composited with destination_surface using the provided blend state. </li>
</ol>

</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="gaa8e500d1c0fab1539b4c68da47f2bb91"></a><!-- doxytag: member="vdpau.h::VdpOutputSurfaceRenderBlendEquation" ref="gaa8e500d1c0fab1539b4c68da47f2bb91" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___vdp_output_surface_render.html#gaa8e500d1c0fab1539b4c68da47f2bb91">VdpOutputSurfaceRenderBlendEquation</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The blending equations. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggaa8e500d1c0fab1539b4c68da47f2bb91ac8e7e9bd786eee4a7572bbceb45fe59d"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT" ref="ggaa8e500d1c0fab1539b4c68da47f2bb91ac8e7e9bd786eee4a7572bbceb45fe59d" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa8e500d1c0fab1539b4c68da47f2bb91a5c59df3dc8a0a80beb6029f2be37d0bc"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT" ref="ggaa8e500d1c0fab1539b4c68da47f2bb91a5c59df3dc8a0a80beb6029f2be37d0bc" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa8e500d1c0fab1539b4c68da47f2bb91ac7998b4daab7f9fe6492963de88c3600"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD" ref="ggaa8e500d1c0fab1539b4c68da47f2bb91ac7998b4daab7f9fe6492963de88c3600" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa8e500d1c0fab1539b4c68da47f2bb91a2d7a39441eae8a562bdb1f0ddabb89c4"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN" ref="ggaa8e500d1c0fab1539b4c68da47f2bb91a2d7a39441eae8a562bdb1f0ddabb89c4" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa8e500d1c0fab1539b4c68da47f2bb91a8009b8c10abd389a8335dfad23f1c83e"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX" ref="ggaa8e500d1c0fab1539b4c68da47f2bb91a8009b8c10abd389a8335dfad23f1c83e" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="gaa451a329033f61c027d3b0a1815c7420"></a><!-- doxytag: member="vdpau.h::VdpOutputSurfaceRenderBlendFactor" ref="gaa451a329033f61c027d3b0a1815c7420" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___vdp_output_surface_render.html#gaa451a329033f61c027d3b0a1815c7420">VdpOutputSurfaceRenderBlendFactor</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The blending equation factors. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420aa74c6ed0a0d7df88a3335b0fb3688a86"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO" ref="ggaa451a329033f61c027d3b0a1815c7420aa74c6ed0a0d7df88a3335b0fb3688a86" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420a080c8103ac715f6d27a5e69c6bbee80d"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE" ref="ggaa451a329033f61c027d3b0a1815c7420a080c8103ac715f6d27a5e69c6bbee80d" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420a2c658cca5329287790b162560eae37af"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR" ref="ggaa451a329033f61c027d3b0a1815c7420a2c658cca5329287790b162560eae37af" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420aac85590daa214696720d47ca9c4d5a4e"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR" ref="ggaa451a329033f61c027d3b0a1815c7420aac85590daa214696720d47ca9c4d5a4e" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420a00164d092ef9949cb0a3fc4bd39bd42a"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA" ref="ggaa451a329033f61c027d3b0a1815c7420a00164d092ef9949cb0a3fc4bd39bd42a" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420ab6c7edf31d4e1e434f96e74a508e4fd7"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA" ref="ggaa451a329033f61c027d3b0a1815c7420ab6c7edf31d4e1e434f96e74a508e4fd7" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420a1a0d43d4aa69e291d40526cfe4cea23e"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA" ref="ggaa451a329033f61c027d3b0a1815c7420a1a0d43d4aa69e291d40526cfe4cea23e" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420aa58e7bb2f2d78c4d84032416e6395844"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA" ref="ggaa451a329033f61c027d3b0a1815c7420aa58e7bb2f2d78c4d84032416e6395844" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420aa76d7e30358ab02b8513a786d8bb1722"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR" ref="ggaa451a329033f61c027d3b0a1815c7420aa76d7e30358ab02b8513a786d8bb1722" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420a431d673669bebf7db50fe7495e842421"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR" ref="ggaa451a329033f61c027d3b0a1815c7420a431d673669bebf7db50fe7495e842421" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420a6dc1e64d1b9665fa6b325c11ab452552"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE" ref="ggaa451a329033f61c027d3b0a1815c7420a6dc1e64d1b9665fa6b325c11ab452552" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420af83e22b1fdbf43f4571cbc8447589062"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR" ref="ggaa451a329033f61c027d3b0a1815c7420af83e22b1fdbf43f4571cbc8447589062" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420aa18dc631bfb6f1ba9b4cd0a5eea870e9"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR" ref="ggaa451a329033f61c027d3b0a1815c7420aa18dc631bfb6f1ba9b4cd0a5eea870e9" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420ad8f98b1cb9c90572c1a3703e9c7f5cf1"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA" ref="ggaa451a329033f61c027d3b0a1815c7420ad8f98b1cb9c90572c1a3703e9c7f5cf1" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa451a329033f61c027d3b0a1815c7420af505e94ecddafb7ec34c4d9658db7228"></a><!-- doxytag: member="VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA" ref="ggaa451a329033f61c027d3b0a1815c7420af505e94ecddafb7ec34c4d9658db7228" args="" -->VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Tue Feb 8 2011 for VDPAU by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address>
</body>
</html>