<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hey Matt,<br>
The speedup was only observed on discrete GPUs so far, I have no
data about APUs.<br>
<br>
Best regards,<br>
Tony<br>
<br>
<br>
Am 26.11.2013 04:50, schrieb Matt Harvey:<br>
</div>
<blockquote
cite="mid:CADP3KAQV1Xt-JM6RskWm3metX4c7amoo_smp1MY1w4pUosfMHQ@mail.gmail.com"
type="cite">
<div dir="ltr">Hi Tony,
<div><br>
</div>
<div>I guess the lack of response means that neither of those
extensions is on anyone's road map for right now.</div>
<div><br>
</div>
<div>I have a quick question. Were you seeing those speedups
only on the AMD APUs, or also on the discrete cards?</div>
<div><br>
</div>
<div>Thanks,</div>
<div>Matt</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Sun, Nov 24, 2013 at 7:19 AM, Tony
Wasserka <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:neobrainx@googlemail.com" target="_blank">neobrainx@googlemail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Hello
everyone,<br>
I was told on IRC that my question would get most attention
around here - so bear with me if this is the wrong place to
ask<br>
<br>
I'm one of the developers of the GC/Wii emulator Dolphin. We
recently rewrote our OpenGL renderer to use modern OpenGL 3
features, however one thing that we stumbled upon are the
lack of efficient (vertex/index) buffer data streaming
mechanisms in OpenGL. Basically, most of our vertex data is
used once and never again after that (we have to do this for
accurate emulation) - so all vertex data gets streamed into
one huge ring buffer (and analogously for index data, which
uses its own huge ring buffer). For buffer streaming, we
have multiple code paths using a combination of
glMapBufferRange, glBufferSubData, fences and buffer
orphaning, yet none of these come anywhere close to the
performance of (legacy) rendering from a vertex array stored
in RAM.<br>
<br>
There are two OpenGL extensions which greatly help us in
this situation: AMD's pinned memory [1], and buffer
storage[2] in GL 4.4. We currently have no buffer storage
code path, but usage of pinned memory gave us a speedup of
up to 60% under heavy workloads when working with AMD's
Catalyst driver under Windows. We expect the same speedup
when using buffer storage (specifically we need
CLIENT_STORAGE_BIT, if I recall correctly).<br>
<br>
So the natural question that arises is: Is either of these
two extensions going to be supported in mesa anytime soon or
is it of lower priority than other extensions? Also, is the
pinned memory extension AMD hardware specific or would it be
possible to support it for other hardware, too? I'm not sure
if buffer storage (being a GL 4.4 extension, and I read that
it might actually depend on some other GL 4.3 extension) is
possible to implement on older hardware, yet it would be
very useful for us to have efficient streaming methods for
old GPUs, too.<br>
<br>
I hope this mail doesn't sound too commanding or anything,
it's just supposed to be a friendly question on improving
the emulator experience for our user base<br>
Thanks in advance!<br>
<br>
Best regards,<br>
Tony<br>
<br>
[1] <a moz-do-not-send="true"
href="http://www.opengl.org/registry/specs/AMD/pinned_memory.txt"
target="_blank">http://www.opengl.org/registry/specs/AMD/pinned_memory.txt</a><br>
[2] <a moz-do-not-send="true"
href="http://www.opengl.org/registry/specs/ARB/buffer_storage.txt"
target="_blank">http://www.opengl.org/registry/specs/ARB/buffer_storage.txt</a><br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a moz-do-not-send="true"
href="mailto:mesa-dev@lists.freedesktop.org"
target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a moz-do-not-send="true"
href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev"
target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</body>
</html>