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

Ian Romanick idr at freedesktop.org
Tue Jan 28 16:42:29 PST 2014


On 01/28/2014 05:35 PM, Marek Olšák wrote:
> Yes, GL_ARB_buffer_storage is being worked on. We'll support it on all
> Radeon cards R300 and up.

Are you guys working on that?  Have an ETA? :)

> Anyway, GL_STREAM_DRAW should give you the same behavior as
> GL_CLIENT_STORAGE_BIT on open source Radeon drivers.

I think a big piece of functionality that Tony wants is the ability to
have CPU pointers that persist for the lifetime of the context.  Without
GL_ARB_buffer_storage or GL_AMD_pinned_memory the application has to
MapBuffer and UnmapBuffer around draw calls.

> Marek
> 
> On Sun, Nov 24, 2013 at 1:19 PM, Tony Wasserka <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
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 



More information about the mesa-dev mailing list