Re: VBO patch
Antoine Chavasse <[email protected]> Mon, 23 Aug 2004 15:41:55 +0200
| Newsgroups | gmane.comp.emulators.winex.devel |
|---|---|
| Message-ID | <[email protected]> |
Gavriel State wrote: > > Hi Antoine, > > Cool - thanks for the info. We've continued to have issues with the > VBO path on ATI with the internal source tree, though not with > NVidia. With at least some of our tests, using VBO can cut framerates > on ATI by 90% or more. Your theory above makes some sense, and we'll > give it a try and report the bug to ATI if it is in fact the case. I'm not sure it's a bug, although I've found nothing stating either that calling glXXXPointer after binding a vertex buffer is mandatory or optional. But it might be simply undefined, and maybe it just so happen that it works in nvidia implementation. > >> I also did another optimisation in x11drv/executebuffer.c: I added a >> counter to know how many vertices remain to be converted, so the >> entire buffer convertion function can be omitted if all the vertices >> of the buffer are known to have been converted, instead of checking >> the uptodate flags for all of them. oprofile showed that a lot of >> time was wasted there. > > > We've played with some things like this internally, but never had > sufficient evidence of a real performance improvement. I have a patch > around on my personal tree that converts all data once we've had > 30 > renders of the same data, and then skips the conversion path (unless > the data changes again). Do you have performance measurements that > bear out a significant improvement? I'll do some measurements again and get back to you with some figures. I know I did get noticeable improvements (more so than when I enabled VBO) on my old motherboard (athlon 1.4ghz, sdram). It might not be such a big deal on a more up to date setup though, I'll try again on my athlon-xp 3000+ with ddr. In oprofile, I was getting almost as many samples in libx11drv as in ao's 3d engine (which does all skinning/animation on the cpu), with 70% of those in X11DRV_GLX_VbPrerender. No samples in X11DRV_GLX_Convert, though, so it was probably inlined.