<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - godot engine poor performance"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=99319#c3">Comment # 3</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - godot engine poor performance"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=99319">bug 99319</a>
              from <span class="vcard"><a class="email" href="mailto:bas@basnieuwenhuizen.nl" title="Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>"> <span class="fn">Bas Nieuwenhuizen</span></a>
</span></b>
        <pre>It seems a VBO with a stride of 14 gets used, the u_vbuf determines that is not
4 byte aligned and then translates it on the CPU to be 4-byte aligned. For the
3 vertex attributes each it maps the VBO read-only, for which radeonsi uses a
staging buffer. As the copy to staging buffer needs to finish during the map we
do an IB flush.

In the end we end up with 3 GFX IB flushes per draw call, which costs a lot of
performance.

In the end I don't think the translation is even necessary, as all attributes
are vectors of GL_BYTE and GL_HALF_FLOAT.

Two things to improve:
- don't use a staging buffer for small maps (or if we decide to do it to serve
future maps, make sure we actually share the staging buffer)
- make u_vbuf smarter so that it doesn't translate ion this case.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the QA Contact for the bug.</li>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>