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 <neobra...@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@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev