<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>