<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - GL_NV_vdpau_interop partially available"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=92220#c14">Comment # 14</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - GL_NV_vdpau_interop partially available"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=92220">bug 92220</a>
              from <span class="vcard"><a class="email" href="mailto:deathsimple@vodafone.de" title="Christian König <deathsimple@vodafone.de>"> <span class="fn">Christian König</span></a>
</span></b>
        <pre>(In reply to Peter Frühberger from <a href="show_bug.cgi?id=92220#c13">comment #13</a>)
<span class="quote">> So @Christian happy for pointers on how to get it going.</span >

Yeah, completely agree with you. Software workarounds are very common in OpenGL
and nothing unusual.

Here are a few pointers into the code:
1. vlVdpVideoSurfaceGallium() in src/gallium/state_trackers/vdpau/surface.c.
That one is called to "export" video surfaces to OpenGL and the right place to
convert from frame to field.

2. vlVdpDecoderRender() in src/gallium/state_trackers/vdpau/decode.c. Here we
reallocate the buffer backing the surface before the decoding if the
frame/field flag doesn't match what the decoder expects.

3. vlVdpVideoMixerRender() in src/gallium/state_trackers/vdpau/mixer.c. Here we
use a vl_compositor_render() to compose the mixed output picture.

Essentially you only need to test if the surface is field based and if not
reallocate it and either use vl_compositor_render() or pipe->blit() to copy the
frame into fields.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>