So I updated to current CVS, and now the behaviour is different. If a camera is looking at the sky, both cull and draw are short.
So I assume something was fixed somewhere which is great. Now I need to work out how to stop running out of memory :(... It looks like 64bits is the only way.. As an aside, the xml loader seems to be sub-optimal - loading the same file multiple times (for each camera?). Are there any hints on that behaviour? Regards... Matthew On 11/6/08, Tim Moore <[EMAIL PROTECTED]> wrote: > Matthew Tippett wrote: >> Comments within. >> >> -------- Original Message -------- >> Subject: Re: [Flightgear-devel] Statistics overlay accuracy. >> From: Csaba Halász <[EMAIL PROTECTED]> > ... >>> On Wed, Nov 5, 2008 at 11:26 PM, Matthew Tippett <[EMAIL PROTECTED]> >>> wrote: >>>> My two issues are >>>> 1) It appears as if environment loading is added to 'draw' statistic. >>> Scenery loading is done in the pager thread, don't think that is >>> counted into the draw time. >> >> It seems be. When there are the stalls when moving to a new area or >> seeing new parts of the scenery it appears to be attached to the draw. >> >> My rationale for this is that in the 'serialized' draw mode the start >> time for each raw appears to be concurrent 10 milliseconds after each >> other. The other couple of hundred of milliseconds for each camera seem >> to run in parallel. >> >> When no stalling is occurring, the draws are correctly serialized. > A portion of scenery loading is done within the draw threads: textures are > bound > and otherwise initialized (e.g., mipmaps are generated in hardware), > shader > programs are compiled and linked, and display lists are created. These > operations require a valid OpenGL context, which the database pager doesn't > have. There is some experimental code in the pager to share OpenGL contexts > with > the draw threads, but this is rarely used in practice. > > There is code in the pager to "stream" these objects to the draw threads so > that > the impact of this compilation is minimized in any given frame. Several > environment variables defined in OpenSceneGraph/src/osgDB/DatabasePager.cpp > tune > this process: OSG_DO_PRE_COMPILE, OSG_MINIMUM_COMPILE_TIME_PER_FRAME, > OSG_MAXIMUM_OBJECTS_TO_COMPILE_PER_FRAME. Also, OSG_DATABASE_PAGER_DRAWABLE > controls whether geometry is compiled into display lists or not. I have > heard > that display lists are not an advantage on ATI hardware; you could try > setting > that variable to "VertexArrays" and see if there is much difference in the > stalls. > > Is it possible that the compilation operations, such as texture binding, are > serialized in your OpenGL driver? >> >> >>>> 2) There are blank periods in the graph that doesn't get attributed >>>> to event, update, cull or draw.. >>> Could be the time spent during synchronization, for example. I am not >>> sure. >> >> Okay. >> >>>> For 1), I am dreading the comment that the measure is from >>>> flightgear's call into, and return from osg. Meaning that it is the >>>> 'osg' draw that does some black voodoo that both a driver and >>>> flightgear have no control over. >>> Sorry :) It is in fact OSG internal statistics. Everything fg does >>> counts into the event time I think. We don't really call into OSG, >>> rather, OSG calls into FG! (apart from our auxiliary threads) >> >> Is there an "uber-level" of statistics that provides lots of extra >> details (like triangles, lots of other metrics, etc, etc). > There is, with current OSG and FlightGear. As you cycle through the > statistics > you now have modes with detailed geometry information. >> >>>> Some of you may be aware that I am tuning for multiple asics. What I >>>> am seeing is there seems to be consistent render times of 6-10 ms per >>>> card for the flight data I am replaying. The fg cull operation is >>>> nicely parallelized (although I need to confirm timings), but the >>>> draws, although parallelized, seem to take an O(n) time to complete >>>> (meaning 4 GPUs results in 40 ms for each of the draws that take 10 ms >>>> if done serially). > Is that when paging scenery, or the steady-state condition? >>> We should carefully examine whether that is a result of the osg stats >>> not being thread safe. It is a known fact that the *display* isn't, I >>> don't know the status of the actual collection. >> >> I do not believe that this is related to the stats display. The >> performance I am experiencing is consistent. There are a few things >> that I can try to see if there is a driver issue, but realistically it >> is a bit opaque without instrumenting osg. >> > I'll take a look at the compilation code in the pager and see if these > operations are being serialized somehow. >> Regards, >> >> Matthew > Tim > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great > prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Flightgear-devel mailing list > Flightgear-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/flightgear-devel > -- Sent from my mobile device ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel