[Mesa-dev] Request for support of GL_AMD_pinned_memory and GL_ARB_buffer_storage extensions

Tony Wasserka neobrainx at googlemail.com
Thu Nov 28 08:13:35 PST 2013

Hey Matt,
The speedup was only observed on discrete GPUs so far, I have no data 
about APUs.

Best regards,

Am 26.11.2013 04:50, schrieb Matt Harvey:
> Hi Tony,
> I guess the lack of response means that neither of those extensions is 
> on anyone's road map for right now.
> I have a quick question. Were you seeing those speedups only on the 
> AMD APUs, or also on the discrete cards?
> Thanks,
> Matt
> On Sun, Nov 24, 2013 at 7:19 AM, Tony Wasserka 
> <neobrainx at googlemail.com <mailto:neobrainx at googlemail.com>> wrote:
>     Hello everyone,
>     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
>     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.
>     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).
>     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.
>     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
>     Thanks in advance!
>     Best regards,
>     Tony
>     [1] http://www.opengl.org/registry/specs/AMD/pinned_memory.txt
>     [2] http://www.opengl.org/registry/specs/ARB/buffer_storage.txt
>     _______________________________________________
>     mesa-dev mailing list
>     mesa-dev at lists.freedesktop.org <mailto:mesa-dev at lists.freedesktop.org>
>     http://lists.freedesktop.org/mailman/listinfo/mesa-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20131128/22d0b61a/attachment.html>

More information about the mesa-dev mailing list