<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - extra vsync when reading back pixels in xbmc"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=79223">79223</a>
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>dri-devel@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>extra vsync when reading back pixels in xbmc
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>pierre-bugzilla@ossman.eu
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>DRM/Radeon
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>DRI
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Something is causing an extra wait for vsync in xbmc when it needs to read back
pixels. This seems to be specific to the radeon driver as I'm not seeing it
with nouveau.

Test scenario:

 - Configure xbmc to wait for vsync

 - Install something that activates xbmc's capture code (e.g. xbmc's boblight
plugin)

 - Play a video whose framerate > screen refresh / 2

You'll see the frame rate reliably locked to screen refresh / 2 under these
circumstances. A major problem as you generally want to run with a 24 Hz
refresh rate for 24 Hz films.


I'm unable to pinpoint exactly the offending GL command as xbmc's rendering is
quite complex. I hope you're more experienced in finding these things. :)

The rough sequence of events is:

1. xbmc renders the scene
2. Wait for vsync
3. Map PBO and memcpy data. (from previous frame)
4. Render small version of scene
5. glReadPixels into PBO</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>