| 01:01.59 | starseeker | ``Erik: last patch to Movitz Dec 2009 |
| 01:02.02 | starseeker | :-/ |
| 01:08.08 | CIA-40 | BRL-CAD: 03brlcad * r39600 10/brlcad/trunk/NEWS: jesica provided spanish translations for lessons 4, 5, 7, 8, 10, 11, and 12 of the mged vol II tutorials. |
| 01:09.15 | ``Erik | how retarded, jogre has absolutely nothing to do with ogre3d |
| 01:22.39 | *** part/#brlcad Sh1fty (~Sh1fty@unaffiliated/sh1fty) | |
| 01:43.19 | *** join/#brlcad Yoshi47 (~jan@64.235.102.210) | |
| 05:58.39 | *** join/#brlcad PrezKennedy (~Prez@96.31.84.96) | |
| 10:50.15 | *** join/#brlcad Elrohir (~kvirc@p4FC5B0AF.dip.t-dialin.net) | |
| 10:57.26 | *** join/#brlcad Stattrav (~Stattrav@117.192.143.180) | |
| 11:00.51 | mafm | ``Erik: hopefully they fixed the singleton implementation so a singletton pattern is a singleton pattern, unlike C++ Ogre? |
| 11:01.13 | mafm | that would be ++ for them |
| 11:06.38 | *** join/#brlcad |Elrohir| (~kvirc@p4FC595DB.dip.t-dialin.net) | |
| 12:33.40 | *** join/#brlcad |Elrohir| (~kvirc@p4FC595DB.dip.t-dialin.net) | |
| 12:48.01 | CIA-40 | BRL-CAD: 03starseeker * r39601 10/brlcad/branches/dmtogl/ (Makefile.am TODO.togl): Make a list of togl stuff to be handled before its 'ready for prime time' |
| 13:48.40 | brlcad | mafm: he was messing with "jogre" .. probably hoping it had something to do with the ogre project, yet it doesn't |
| 13:49.51 | ``Erik | was doing a survey of scenegraph/game engines |
| 13:54.09 | mafm | ``Erik: I would go for OpenSceneGraph |
| 14:30.26 | ``Erik | openscenegraph seems optimal for scientific display, cad, etc... ogre looks very game oriented, and my survey was ... game oriented :D |
| 14:30.31 | ``Erik | (for a personal project) |
| 14:31.10 | ``Erik | panda3d came out on top last time I did it, wanted to see if anything'd changed *shrug* |
| 14:41.07 | CIA-40 | BRL-CAD: 03starseeker * r39602 10/brlcad/branches/dmtogl/src/libfb/if_togl.c: Take a hint (hopefully correctly) from the ogl framebuffer code and get rid of the globals - put everything into a struct and pass it around in ifp. |
| 14:50.28 | brlcad | starseeker: nice! |
| 14:51.06 | starseeker | brlcad: heh - thanks, but it doesn't do anything yet ;-) |
| 14:52.25 | starseeker | is eyeing the texture code in isst_tcltk.c... |
| 14:52.28 | starseeker | hmm |
| 14:54.01 | CIA-40 | BRL-CAD: 03starseeker * r39603 10/brlcad/branches/dmtogl/src/libfb/if_togl.c: Well, this doesn't crash outright, so hopefully it's somewhat close to correct... |
| 14:54.39 | brlcad | starseeker: was referring to the elimination of globals |
| 14:54.55 | starseeker | ah, thanks :-) |
| 14:55.00 | brlcad | simple change, but super good stuff for maintainability |
| 14:55.07 | starseeker | that always bothered me about the Tk fb code... |
| 14:55.23 | starseeker | in fact, should probably do it there too |
| 14:55.42 | starseeker | (assuming we want the vanilla Tk code after togl is fully fleshed out...) |
| 14:56.49 | ``Erik | hm, new stellarium out |
| 14:57.58 | ``Erik | plugins, artificial satellites, improved ui, aztec stuff |
| 15:03.16 | starseeker | don't suppose they went LGPL? |
| 15:03.59 | ``Erik | wtffff... http://www.asylum.com/2010/06/09/phoneballs-makes-teabagging-a-snap/ |
| 15:05.05 | starseeker | er... hmm. "GNU GPL v2, Public Domain (The bulk of the code is GPLv2/LGPL with some sections of code with BSD-like licenses." |
| 15:05.58 | starseeker | https://launchpad.net/stellarium |
| 15:06.31 | CIA-40 | BRL-CAD: 03r_weiss * r39604 10/brlcad/trunk/src/conv/obj-g_new.c: adding function documentation |
| 15:06.33 | starseeker | did they switch off of sourceforge?? |
| 15:09.08 | starseeker | humph. only a library they use is GPL |
| 15:09.13 | starseeker | er LGPL rather |
| 15:09.43 | starseeker | supposes he could ask nicely, but it probably wouldn't help us much anyway... |
| 15:24.18 | ``Erik | "linux is just DOS with a UNIX like syntax" -- Galactic Dominator (944134) |
| 15:24.19 | ``Erik | nice |
| 15:40.00 | mafm | ``Erik: maybe for game oriented-ness is better, and I think that it has ports for consoles and everything |
| 15:40.10 | mafm | but they are sometimes a bit hardnosed/dumb |
| 15:40.41 | mafm | they took months to acknowledge patches from me fixing X-Windows/GLX problems with their code |
| 15:40.50 | mafm | discussing that it was not the right solution |
| 15:41.25 | mafm | I gave up, and 6 months later they said something along the lines of "OK, we applied your patch at last" |
| 15:41.50 | mafm | it was something like they disabled key repetition in X |
| 15:42.06 | brlcad | that's some mad function documentation |
| 15:42.32 | mafm | so if your application crashed or something, the rest of the apps in your x session wouldn't have autorepeat anymore |
| 15:42.39 | brlcad | fun :) |
| 15:43.00 | mafm | and they didn't acknowled it as a misbehaviour/bug |
| 15:43.19 | brlcad | that's not unique to them, change in almost every open source project takes a disproportionate amount of discussion and long time for a change to take effect |
| 15:43.20 | mafm | it was not the leader, but some of the minions taking care of GLX port, IIRC |
| 15:44.02 | mafm | well, I don't mind the discussion, Debian flamewars are epic |
| 15:44.05 | *** join/#brlcad |Elrohir| (~kvirc@p4FC595DB.dip.t-dialin.net) | |
| 15:44.25 | mafm | and I didn't mind it by that time, I just provided the patch and pointed the problem |
| 15:44.40 | mafm | the thing is that they didn't think that this was a problem, or not their problem anyway |
| 15:44.59 | mafm | when they were in effect fucking up all your X session |
| 15:45.12 | mafm | (probably that's a shortcoming in X, but still...) |
| 15:45.22 | brlcad | things are only quick when a) you have commit access or b) you have an open line of communication with someone that does and the change is trivial and/or completely obvious |
| 15:45.33 | mafm | another patch that I provided is that, if your windows is idle/minimized/etc, -> sleep() |
| 15:46.00 | mafm | so you get 0 or 1% processor usage when not viewing the application |
| 15:46.09 | brlcad | hm, that could be bad for some apps, a network game for example, that needs to keep receiving events |
| 15:46.17 | brlcad | at a given rate |
| 15:46.31 | mafm | brlcad: that sounds like a corrupt cartel of drug dealers or something :D |
| 15:47.00 | mafm | the sleep was something like 0.01s or so, not bad for anything |
| 15:47.05 | brlcad | most real-time gaves have that requirement, they lock clocks together so that the game state stays synchronized |
| 15:47.27 | mafm | or maybe just avoiding repainting, remember that it was GLX! |
| 15:47.46 | mafm | that one was accepted much sooner or immediately, IIRC |
| 15:47.47 | brlcad | the window manager should be taking care of that if it's minimized |
| 15:47.52 | mafm | but that was like 5 years back... |
| 15:48.38 | mafm | so? the window manager does that, but the app has to react |
| 15:49.26 | mafm | if you're playing a youtube video but are in another workspace, you can just continue the playback and output audio, but no need to waste resources on updating the video window |
| 15:49.57 | brlcad | presuming there's no logic being calculated in the draw portion, that's a big assumption even if it's a reasonable common way to structure the loop |
| 15:50.27 | mafm | well, that's their part to know about |
| 15:50.36 | brlcad | that's the apps job to know about it |
| 15:50.39 | mafm | mine was to point the problem and provide a simple patch :) |
| 15:50.49 | brlcad | not the underlying thing I'm drawing into |
| 15:51.17 | brlcad | really depends on the specifics of the API routines in question |
| 15:51.27 | mafm | well, it was the glx driver |
| 15:51.48 | mafm | just to repaint the buffers or something like that |
| 15:51.52 | brlcad | you mean ogre's glx driver? |
| 15:51.57 | mafm | yes |
| 15:51.58 | *** join/#brlcad R0b0t1 (~Enigma@unaffiliated/r0b0t1) | |
| 15:52.22 | mafm | ogre has different drivers for X, windows etc... loaded as plugins or something like that |
| 16:33.07 | brlcad | http://www.opendesign.com/guestfiles |
| 16:33.21 | brlcad | intersting, a 225 page overview of their discoveries on the .dwg file format |
| 17:29.30 | CIA-40 | BRL-CAD: 03erikgreenwald * r39605 10/brlcad/trunk/src/libicv/Makefile.am: need tcl cpp flags for bu.h |
| 17:34.27 | ``Erik | hm, machine with 512 atom cpu's |
| 18:02.30 | *** join/#brlcad akafubu (~akafubu@unaffiliated/akafubu) | |
| 19:07.50 | *** join/#brlcad Stattrav (~Stattrav@117.192.134.128) | |
| 19:18.16 | starseeker | brlcad: what's that "US Government Restricted Rights" statement amount to? |
| 19:26.19 | *** join/#brlcad akafubu (~akafubu@unaffiliated/akafubu) | |
| 19:35.22 | CIA-40 | BRL-CAD: 03starseeker * r39606 10/brlcad/branches/dmtogl/src/libfb/ (Makefile.am if_togl.c): For some reason, not getting a legal AGL context. |
| 19:49.37 | starseeker | successfully hard crashes his Mac again |
| 19:53.27 | brlcad | starseeker: what statement and what context? |
| 19:53.57 | starseeker | that dwg overview |
| 20:14.50 | *** join/#brlcad Stattrav (~Stattrav@117.192.129.219) | |
| 20:44.33 | CIA-40 | BRL-CAD: 03starseeker * r39607 10/brlcad/branches/dmtogl/src/libfb/if_togl.c: Whoops - let's give Togl_GetToglFromObj the right info... |
| 20:47.59 | *** join/#brlcad Stattrav (~Stattrav@117.192.129.219) | |
| 21:27.45 | brlcad | starseeker: ah, there are a few basic categories that describe what rights the government has with respect to a given work including limited rights, unlimited rights, and restricted rights |
| 21:30.28 | brlcad | gov usually aims for unlimited rights on a gov-produced work, limited rights on a non-gov (i.e. contractor) works, and restricted rights on non-gov software |
| 21:31.04 | starseeker | nods - so does that preclude us using that document as a basis for a dwg importer? |
| 21:33.46 | brlcad | it's SORT OF like, if this were copyrights, the difference between being the copyright owner (unlimited rights), being granted a usage license by a copyright holder (limited rights, like how you can use a movie DVD), or being granted an irrevocable shared license/copyright (restricted rights) |
| 21:36.34 | brlcad | so with regards to most software, telling the gov they have restricted rights basically lets them know that they don't have exclusive rights and they don't have useless rights |
| 21:36.51 | brlcad | i.e., they get to behave like people do wrt the copyright |
| 21:36.57 | starseeker | nods |
| 21:36.58 | starseeker | got it |
| 21:37.29 | brlcad | at least that's a loose explanation |
| 21:37.58 | brlcad | it doesn't affect our (or ARL) from using it |
| 21:38.14 | starseeker | scowls at Togl_SwapBuffers |
| 21:38.21 | starseeker | wow what a performance hog |
| 21:38.42 | brlcad | restricted rights in that context basically just means ARL can't claim it as theirs (exclusively), e.g., can't try to stop others from using it |
| 21:39.00 | starseeker | cool |
| 21:39.34 | brlcad | if they had limited rights, they could use it internally but not necessarily redistribute it, derive off of it, etc |
| 21:39.50 | brlcad | if they had unlimited, they could go after how everyone else uses it |
| 21:41.02 | starseeker | has been in open source too long - the idea of going after how someone else uses something is relatively foreign to his thinking ;-) |
| 21:43.08 | starseeker | brlcad: well, with ``Erik |
| 21:43.18 | starseeker | 's help we now have a functioning togl framebuffer |
| 21:46.04 | starseeker | albeit a very slow one |
| 21:46.32 | starseeker | looks like both isst and the togl framebuffer may benefit from the timing code |
| 21:52.15 | CIA-40 | BRL-CAD: 03r_weiss * r39608 10/brlcad/trunk/src/conv/obj-g_new.c: documenting functions, some cleanup |
| 21:55.58 | starseeker | brlcad: is BzTime.h the place to start in bzflag for the timing code? |
| 21:59.09 | starseeker | or rather, common/BzTime.cxx? |
| 22:02.49 | starseeker | winces... I wonder if semaphores are going to be a performance issue when redoing this code in libbu... |
| 22:07.44 | ``Erik | SwapBuffers wont' be the "performance hog", it's basically just saying "hey, uh, card? all that stuff I sent over for you to do? yeah, uh, I'm gonna wait until it's all done." |
| 22:08.31 | starseeker | nods - so that's why CPU use is piddling on easy raytraces, and still maxed out on the hard ones |
| 22:09.17 | ``Erik | 's why I was talking about moving the draw code out of the function, parallelize the gpu and cpu work |
| 22:09.39 | ``Erik | the glFlush toglSwapBuffers() calls is serializing things |
| 22:09.40 | starseeker | time for bu_time and associated functions :-) |
| 22:10.18 | starseeker | ``Erik: that might be possible, but my initial attempt wasn't very happy - I think there might be an issue due to our "driving" things from the C side |
| 22:10.29 | ``Erik | to what end? if timesincelastdrawn > magicnumber draw ? |
| 22:10.40 | starseeker | nods |
| 22:11.36 | ``Erik | would # of lines be an adequate and simpler compromise? |
| 22:11.54 | starseeker | possibly, but that wouldn't handle isst |
| 22:12.31 | ``Erik | isst/tcl is driven by the togl event loop which does what you attempted to do earlier |
| 22:12.52 | ``Erik | isst/gtk and isst/sdl are just so chock full of awesomesauce, it's irrelevant :D |
| 22:13.58 | starseeker | so, what are you advising? |
| 22:14.54 | ``Erik | I'm advising an evening of simpsons, family guy, and kicking my feet up :D |
| 22:15.03 | starseeker | lol |
| 22:15.14 | starseeker | fair enough - I need to get to the gym anyhow |
| 22:15.22 | ``Erik | I don't think the issues you're seeing in the fb are terribly relevant to the isst stuff *shrug* but I could be mistaken |
| 22:16.19 | ``Erik | if we can guarantee threading in the fb, I'd save have an opengl interactor thread that paints when the context is dirty, otherwise just hangs out |
| 22:17.00 | ``Erik | if not, the cheap&easy solution might be if(!(nframes&0xf)){nframes=0; draw();} nframes++; |
| 22:17.02 | starseeker | ``Erik: as it stands, I don't think we assume that? |
| 22:17.40 | ``Erik | or suck it up and be slow on trivial raytraces |
| 22:17.43 | starseeker | threading is in librt, not libfb (I think...) |
| 22:18.02 | starseeker | what's wrong with if timesincelastdrawn > magicnumber draw ? |
| 22:18.11 | ``Erik | I think librt used to be set up so it could be used in environments that do not support threading |
| 22:19.06 | ``Erik | well, I suppose if you want to do the math, you can do some gettimeofday() stuff *shrug* um, the sdl isst has that in an older revision, I switched to SDL_GetTicks() though |
| 22:19.53 | starseeker | nods - that's what I was looking at with the BzFlag timing code - using either a version of that logic, SDL_GetTicks stuff, or some hybrid in a libbu routine |
| 22:19.56 | ``Erik | just be careful, fbsd, solaris, and windows can provide microsecond accuracy, linux does it in 10 |
| 22:20.09 | ``Erik | 10microsecond increments |
| 22:20.16 | ``Erik | so if you care about timing that fine grained, ... |
| 22:20.18 | starseeker | brlcad and I were discussing that earlier - apparently they've had to handle such things for BzFlag |
| 22:20.35 | ``Erik | bz might do scary things like use rtdsc or something O.o |
| 22:21.06 | ``Erik | rdtsc rather |
| 22:21.24 | starseeker | don't see it here at least: http://bzflag.svn.sourceforge.net/viewvc/bzflag/trunk/bzflag/src/common/BzTime.cxx?revision=21083&view=markup |
| 22:25.01 | ``Erik | ah, gettimeofday(), is the call frequency being throttled somehow, mebbe vsync is on in the ogl display? |
| 22:26.31 | starseeker | dunno, haven't dug that deep yet |
| 22:27.09 | ``Erik | looks like how sdl gets time, too heh :) |
| 22:27.14 | ``Erik | on unix, anyways |
| 22:27.29 | starseeker | which is what you're using in isst/sdl? |
| 22:27.39 | ``Erik | yup |
| 22:27.50 | starseeker | not a major performance impact? |
| 22:27.59 | ``Erik | doesn't port to windows, so I went with the sdl variant *shrug* |
| 22:28.06 | ``Erik | well, it's floating point math and a system call |
| 22:28.31 | ``Erik | but scanlines are pretty low cost |
| 22:28.34 | starseeker | still should be quicker than waiting for SwapBuffer though... |
| 22:29.23 | ``Erik | (still serializes it, it just stops progress once every X microseconds instead of once every Y microseconds... parallelizing it would be better resource utilization) |
| 22:30.03 | starseeker | ``Erik: but how much of a todo would parallelizing it be? mightn't that require altering rt, mged, and other such clients? |
| 22:30.37 | starseeker | (that was one of the things I was headed towards having to deal with with TclThreads and tk framebuffer...) |
| 22:30.46 | starseeker | sounded a bit scary |
| 22:31.50 | starseeker | as far as I know, we don't use threading very much outside of librt itself, although I could be wrong |
| 22:32.15 | ``Erik | does librt itself do threading? or is that all in the rt's? |
| 22:32.36 | starseeker | good question... it might be in the rt's |
| 22:32.59 | ``Erik | cut.c db_tree.c and many.c |
| 22:33.23 | ``Erik | rt/view.c and rt/worker.c use it, too |
| 22:33.26 | ``Erik | bu_parallel is the func... |
| 22:33.52 | ``Erik | one of these days, I'll make adrt use it |
| 22:34.02 | starseeker | yeah, view.c, worker.c, and viewmlt.c |
| 22:34.12 | ``Erik | wasn't gonna count viewmlt.c |
| 22:34.18 | ``Erik | it doesn't really do too much :D |
| 22:34.29 | starseeker | there are a couple calls to it in librt |
| 22:34.36 | ``Erik | <-- points where he noted them |
| 22:37.19 | ``Erik | http://brlcad.org/~erik/bdayskelly.jpg |
| 22:37.23 | starseeker | yeah, it's not used much (and not at all in libfb) |
| 22:37.47 | starseeker | or libdm for that matter |
| 22:39.25 | starseeker | sounds like a whiteboard discussion |
| 22:40.14 | starseeker | well, the timing thing may be fairly straightforward and a useful crutch until the more radical multithreaded design discussions can be hashed out |
| 22:40.32 | ``Erik | yeh *shrug* |
| 22:40.57 | ``Erik | bz and sdl seem to use the same thing, my old game stuff looks the same *shrug* |
| 22:41.31 | starseeker | well, bz is certainly interactive enough (and your isst/sdl looks pretty awesome too) |
| 22:42.07 | starseeker | (note to self - bug Bob to make is tree widget in Archer a packable stand-alone megawidget) |
| 22:43.07 | starseeker | alrightie, gym |
| 23:10.34 | brlcad | the critical bits for stability, since it uses gettimeofday, are ensuring we don't go back in time and affixing a processor affinity |
| 23:11.53 | ``Erik | well, in this certain situation, affinity shouldn't matter and going backwards falls out in the equation |
| 23:11.58 | brlcad | that and windows timing is particularly tricky |
| 23:12.12 | brlcad | using the qpc is riddled with pot holes |
| 23:12.27 | ``Erik | if( (nowtime() - lasttime) > WAITTIME ) { lasttime = nowtime(); draw(); } |
| 23:12.45 | ``Erik | not like we're doing a physics sim in it |
| 23:12.54 | brlcad | going backwards was surprisingly hard to detect -- there were some CPUs that actually had an unstable gettimeofday() during normal use |
| 23:13.31 | brlcad | some that would throttle clock ticks and slow the system clock down during power management |
| 23:13.42 | ``Erik | heh, going backwards sends a kernel scheduler into all sorts of fits, fun seeing the warning logs in bsd :D |
| 23:13.52 | brlcad | linux 2.6 and amd64 was a problem child for a while, iirc |
| 23:14.42 | brlcad | a sudden ntp change can also occur causing a one-in-a-billion style bug to detect without the negative time compensation |
| 23:15.18 | brlcad | fun stuff |
| 23:16.24 | ``Erik | still shouldn't be an issue for this application, provided we have something at the very end that forces a draw to cope with the possible condition of the next requested render being way after the last scanline is posted |
| 23:16.53 | brlcad | starseeker: bz's timer was originally non-mutexed if you want a simplified version |
| 23:17.12 | brlcad | starseeker: but they're basically equivalent to BU_SEMSYSCALL protections |
| 23:18.37 | brlcad | it'd be an issue if you did "if( (nowtime() - lasttime) > WAITTIME ) { lasttime = nowtime(); draw(); }" |
| 23:18.52 | brlcad | nowtime would be negative and would stall the draw until it catches up |
| 23:19.51 | ``Erik | yeah, thus the flush at the end *shrug* and negative? I was thinking unsigned counting from epoch |
| 23:21.06 | brlcad | "nowtime() - lasttime" would be negative as lasttime would be (unsigned)1234, now would be back in time at (unsigned)123, making it perpetually < WAITTIME until nowtime catches up |
| 23:21.34 | brlcad | flush would help, but it'd still potentially stall in bizarre odd ways |
| 23:21.59 | brlcad | easy to account for, especially with something like bz's timer -- be surprised if sdl doesn't have something similar |
| 23:22.12 | brlcad | (in their timer code) |
| 23:22.33 | ``Erik | the flush at the very end would be necessary anyways, just in case the last scanline didn't happen to trigger the draw |
| 23:23.14 | ``Erik | yeah, sdl does, they break things up by platform into different files instead of #if stuff |
| 23:23.20 | ``Erik | they also support more platforms :) |
| 23:23.38 | ``Erik | dunno if we care about consoles and qnx and those, though |
| 23:25.13 | brlcad | "more platforms" .. such as? |
| 23:25.24 | brlcad | ah, qnx and consoles, gotcha |
| 23:26.01 | brlcad | I'd trust bz's windows code over sdl's |
| 23:26.11 | brlcad | the nix code is a wash, pretty simple |
| 23:26.38 | ``Erik | http://hg.libsdl.org/SDL/file/f67139f6d87f/src/timer |
| 23:26.48 | ``Erik | the bz code, sdl code, my ancient crap, and everyone elses is the same |
| 23:26.49 | ``Erik | :D |
| 23:27.11 | ``Erik | gettimeofday(); do some math to pack the #. |
| 23:28.00 | ``Erik | hm, beos has system_time(void); nice |
| 23:35.54 | brlcad | er, doesn't look the same to me |
| 23:36.15 | brlcad | their GetTicks is basically bz's getEpochMicroseconds() |
| 23:37.06 | brlcad | bz's "get now time" is getCurrent() which is what does the critical logic |
| 23:38.01 | brlcad | hm, no time compensation in sdl, though they do have a nice delay func and alarm registers |