On Thu, 2009-07-02 at 11:01 -0700, Ian Romanick wrote: > On Thu, Jul 02, 2009 at 06:03:01PM +0100, Keith Whitwell wrote: > > On Thu, 2009-07-02 at 09:20 -0700, Ian Romanick wrote: > > > -----BEGIN PGP SIGNED MESSAGE----- > > > Hash: SHA1 > > > > > > Keith Whitwell wrote: > > > > Module: Mesa > > > > Branch: mesa_7_5_branch > > > > Commit: 47173cf67f0ed55012b0820397f6d620d8ad4473 > > > > URL: > > > > http://cgit.freedesktop.org/mesa/mesa/commit/?id=47173cf67f0ed55012b0820397f6d620d8ad4473 > > > > > > > > Author: Keith Whitwell <kei...@vmware.com> > > > > Date: Tue Jun 30 09:55:33 2009 +0100 > > > > > > > > mesa/dlist: shortcircuit some redundant statechanges at compile time > > > > > > > > Currently, state-changes in mesa display lists are more or less > > > > a verbatim recording of the GL calls made during compilation. > > > > > > > > This change introduces a minor optimization to recognize and eliminate > > > > cases where the application emits redundant state changes, eg: > > > > > > > > glShadeModel( GL_FLAT ); > > > > glBegin( prim ) > > > > ... > > > > glEnd() > > > > glShadeModel( GL_FLAT ); > > > > glBegin( prim ) > > > > ... > > > > glEnd() > > > > > > > > The big win is when we can eliminate all the statechanges between two > > > > primitive blocks and combine them into a single VBO node. > > > > > > > > This commit implements state-change elimination for Material and > > > > ShadeModel > > > > only. This is enough to make a start on debugging, etc. > > > > > > Uh... did you intend to merge these into the 7.5 branch? RC4 seems a > > > little late to merge significant changes that aren't bug fixes. I've > > > looked at the changes via the commit messages to your working branch. > > > They look good, but it seems like they could use more soak time before > > > hitting a stable branch. > > > > Thanks for reviewing the patches, Ian. I probably could have added some > > background to let people know what the intentions are. > > > > The merged code has two natures: > > > > 1) a performance bug-fix for a specific application which is heavy on > > display list geometry but emits a lot of redundant material & shademodel > > calls. The before/after difference is between unusable and fine. > > > > 2) an exploration of how we can introduce far-reaching state-change > > optimization for all state in the future. > > > > At this point the change affects *only* glMaterial and glShadeModel > > calls. This helps minimize the potential negative impact of the change > > -- at worst (barring asserts, etc) we might end up incorrectly recording > > material or flat/smooth shading commands in display lists. > > > > In the testing for this change I found & fixed two bugs with Mesa that > > had gone unnoticed: > > - glMaterial calls between begin/ends stopped working some time ago > > - display lists with eg. CallList between begin/end weren't working > > > > The fact that I'm finding bugs not directly related to the change at > > hand leads me to believe that the testing for this change has been at > > least as good as what Mesa normally gets even with extended exposure. > > I guess that's not too surprising. Display lists are pure evil, and they > don't get enough exercise in any of our available test suites. Voting to have > them removed from OpenGL 3.1 was one of the happier moments in my time on > the ARB. :)
If they'd been specified slightly differently, it would have been a different story -- making CallList illegal between Begin/End would have made them a lot more amenable to simple analysis. > > I've tested with glean, conform and all the mesa demos which exercise > > display lists. > > > > I've written new tests which exercise tricky conditions which might trap > > this code up, and fixed bugs they reveal. > > Have those been added to glean or piglit or something? Right now they're just in trivial. I think there's a wealth of test cases in there -- it's a worthwhile project to figure out how to pull those into an automated test-suite without losing the aspects that make them so useful as developer's unit tests. > > I'm not arguing that display lists aren't a difficult area to work in, > > but at this point I feel I've done the work to be as confident about > > this change as any of the other fixes going into the 7.5 branch. > > > > I'm also hopeful that with the number of QA teams following Mesa these > > days, any regressions will come to light sooner rather than later. > > > > I share your concerns about merging this to 7.5 at this late stage, and > > talked with Brian about it yesterday. He was OK with it providing the > > testing was extensive, which hopefully it has been. > > Okay. I just wanted to make sure that it wasn't accidental. It was just > surprising. It sounds like the changes have been tested. If you guys are > comfortable with it, I'm convinced. No worries Ian. Hopefully it'll work out OK -- we're pretty focussed on getting 7.5 right, so if there are issues we'll be on call to put them right... Keith ------------------------------------------------------------------------------ _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev