Thursday, 2007-03-01

PseudonymAnyway.00:00
PseudonymSo there are all these interesting synchronisation models coming up at the moment.00:00
PseudonymAnyway, Tom and I have worked out a way to implement B-trees in a way that uses these transactions.00:00
PseudonymAnd, as a bonus, we've incorporated various methods (not discovered by us) to avoid the difficult cases.00:01
PseudonymSo what we've got is a B-tree which uses no locking, is simple to implement, and also supports high concurrency.  (We think.)00:01
PseudonymThat seems like a good thing to write up.00:02
PseudonymI probably lost you somewhere along the way.  Sorry about that. :-)00:04
PseudonymThe way we avoid the difficult cases, by the way...00:05
PseudonymOK, let me back up a bit.00:05
PseudonymI'm sure you've gone through balanced binary search trees, right?  Like AVL trees?  Splay trees, maybe?00:05
cgTobinot too extensively, we did just basic stuff00:07
PseudonymRight.00:08
PseudonymThat's good, actually. :-)00:08
PseudonymBecause the only real reason why you rebalance binary search trees is to avoid the worst-case behaviour.00:08
PseudonymYou know that if you insert [1, 2, 3, 4, 5..] into a binary search tree without balancing it, you get a very bad data structure.00:10
PseudonymIt's a linked list, pretty much.00:10
PseudonymSo you balance it to avoid that behaviour.00:10
PseudonymGiven that, any balance method (AVL, whatever) is as good as any other.00:11
PseudonymAnd in particular, you can tolerate a bit of unbalancing so long as it gets fixed before it does any damage.00:11
PseudonymSo what we do is allow the B-tree to get unbalanced, but record somewhere that this node is unbalanced.00:11
PseudonymThen you have another thread which comes along and fixes that up.00:12
PseudonymAnd fixing a node may result in the parent node becoming unbalanced.00:12
PseudonymSo you record that, and the thread will eventually fix that, too.00:12
PseudonymThis avoids all the tricky cases (where you need to rebalance "up" several stages) by making all modifications local.00:13
PseudonymYou only ever deal with one node at a time.00:13
PseudonymWhich makes it friendly for this transactional threading model.00:13
*** render has quit IRC01:05
*** Pseudonym has quit IRC01:18
*** Pseudonym has joined #Aqsis01:18
*** cgTobi sets mode: +v Pseudonym01:19
cgTobiwb :)01:19
PseudonymThanks.01:20
*** [1]ShortWave has quit IRC02:23
*** ShortWave has quit IRC02:32
*** ShortWave has joined #aqsis02:32
*** [1]ShortWave has joined #aqsis02:33
*** scorp007 has joined #aqsis02:36
*** cgTobi sets mode: +vvv [1]ShortWave scorp007 ShortWave02:45
*** scorp007 has quit IRC03:27
*** cgTobi has quit IRC04:03
*** cgTobi has joined #Aqsis04:09
*** ChanServ sets mode: +o cgTobi04:09
*** AlexK has joined #aqsis06:15
*** Pseudonym has quit IRC06:31
*** AlexK has quit IRC07:26
*** pgregory has joined #aqsis08:01
cgTobimorning Paul08:01
*** ChanServ sets mode: +o pgregory08:01
pgregorymorning all08:02
*** AlexK has joined #aqsis08:02
*** pgregory sets mode: +v AlexK08:02
pgregoryanyone around?08:07
cgTobiIf I count as 'anyone' :)08:09
*** scorp007 has joined #aqsis08:13
*** pgregory sets mode: +v scorp00708:13
pgregorymorning scorp00708:13
scorp007hi08:13
scorp007I made a little summary earlier in the day about issues with teqser08:15
pgregorycare to share?08:15
scorp007in the forums08:15
pgregoryI have virtually no access at the moment08:15
scorp007why so? No web browser?08:15
pgregoryinternet only, from a text shell08:15
scorp007got lynx?08:15
pgregorynot yet, I've asked Tobi to find the URL for me so that I can wget it.08:16
pgregoryI need the rpm for RHEL408:16
scorp007I suggest elinks instead, though08:16
scorp007newer and easier to use08:16
pgregoryaha, that seems to be installed, cheers08:16
scorp007no problem08:16
scorp007you will see the importance of designing a compliant site, after using a text browser. And elinks is quite forgiving.08:17
scorp007ah, but I guess you cant view images, unfortunately.08:19
scorp007what would happen if i call RiBegin, and return out of the function before I call RiEnd?08:26
pgregoryscorp007: If you then try to run RiBegin again, you should get an error.08:31
scorp007ok08:31
scorp007and if I dont?08:31
pgregoryif you're going to exit straight away, then probably nothing.08:31
scorp007will there be memory leaks?08:31
pgregoryit'll just leave lots of stuff around until you exit.08:31
scorp007ok08:31
scorp007so did you see my thread?08:38
pgregorysort of, it's difficult to read in 80x40, but I got the gist.08:42
pgregoryI'll need to see the images08:42
pgregorythanks for taking the time to analyse the problem further.08:43
pgregorythe more information we have, the better the chance of finding the fault.08:43
scorp007haha, yeah, all those tables make it bad for a terminal08:43
scorp007no problem, I'd love to see aqsis get as good as 3delight08:43
scorp007the only thing that slows 3delight is its license manager08:43
*** cgTobi has quit IRC08:46
scorp007with my rather unoptimized exporter, I just rendered 10.2 millions faces in 10,000 objects directly from max, in 2:26 minutes.08:54
scorp007I'll save the picture08:54
pgregoryscorp007: rendered in what?08:58
scorp0073DL08:58
scorp007for anyone with an image viewer, http://img218.imageshack.us/img218/2702/maxtor10milgw6.jpg09:04
*** Aren has joined #aqsis09:09
*** Aren has quit IRC09:10
*** Aren has joined #aqsis09:15
scorp007is there any way you can make a display driver tell the renderer to abort?09:44
scorp007I have a better image, this time 1920x1080 pix, and catmull-rom, instead of ugly box. 7:25 mins to render09:48
scorp007(including my exporting)09:49
*** pgregory has left #aqsis09:49
*** pgregory has joined #aqsis09:53
*** ChanServ sets mode: +o pgregory09:54
pgregoryback09:54
scorp007did you get any of my previous messages?09:54
pgregorynope09:54
scorp007[19:05] <scorp007> for anyone with an image viewer, http://img218.imageshack.us/img218/2702/maxtor10milgw6.jpg09:54
scorp007[19:11] * Aren has joined #aqsis09:54
scorp007[19:11] * Aren has quit IRC (Client Quit)09:54
scorp007[19:16] * Aren has joined #aqsis09:54
scorp007[19:45] <scorp007> is there any way you can make a display driver tell the renderer to abort?09:54
scorp007[19:50] <scorp007> I have a better image, this time 1920x1080 pix, and catmull-rom, instead of ugly box. 7:25 mins to render09:54
scorp007[19:50] <scorp007> (including my exporting)09:54
Aren?09:55
Arenwhy was i pasted?09:55
Arenohh i see09:55
scorp007sorry, I just copied it all at once09:55
Arennot a problem09:55
pgregoryscorp007: no, there is currently no way for the display to abort a render.09:56
scorp007damn09:56
scorp007is that a limitation of the renderman display spec?09:56
pgregoryyes09:57
scorp007damn.. I wonder how 3delight does it09:57
pgregorythey have a custom communications channel back to the renderer.09:57
scorp007I see09:57
*** cgTobi has joined #Aqsis09:58
*** ChanServ sets mode: +o cgTobi09:58
*** cgTobi sets mode: +v Aren09:59
cgTobihowdy folks09:59
scorp007hi10:01
*** AlexK has quit IRC10:06
*** renderguy has joined #aqsis10:12
renderguyMorning all10:12
scorp007hi10:12
renderguyscorp007: Seems you're making good progress on your Max exporter, congrats.10:13
scorp007thanks :) did you see the picture>10:14
scorp007?10:15
renderguyscorp007: Yep... you 'Teapot' freak.  ;-)10:19
scorp007For the interested, or not, here's a summary and some (new) pictures: http://forums.cgsociety.org/showthread.php?f=6&t=46908710:19
scorp007renderguy, hehe10:19
*** Anteru has joined #aqsis11:01
AnteruHi!11:02
scorp007hi11:06
*** scorp007 has quit IRC11:21
*** Anteru has quit IRC11:32
*** render has joined #aqsis11:39
*** cgTobi sets mode: +vv render renderguy11:45
*** cgTobi has quit IRC12:26
tcolgatemornin' all12:49
pgregorymorning Minty12:52
tcolgatehey12:52
tcolgateI managed to do my ankle in last night, was rushing to get to Tesco before it closed (and after the pub :( ).12:52
pgregoryoops12:53
tcolgateI've taken a sicky today and will probably be working from home tomorrow.12:53
tcolgateI'm going to hobble  into the shower then get started on one of my aqsis todo ites. Probably the Attribs thing.12:59
tcolgateIncidentally, were you happy with the fix for the shadervm leak? I can't help thinking that if it was that simple MJ or I should have spotted it when we were both pounding away at it a while ago.13:00
tcolgateBut then again, it loks sensible enough, I'll re run some atmosphere shader tests and some valgrind stuff if I get the chance and see how we are doing.13:00
pgregoryneed to look into it properly, haven't had a chance yet.13:01
tcolgateIt just looks to easy from the patch. But if we haven't had any regressions since then I guess it is OK, maybe.13:01
pgregoryI'm more interested at the moment in why the texture mipmapping is behaving so strangely13:05
tcolgateI've not looked at that forum posting yet, I noticed someone on IRC moaning about trqser having somme odd behaviour, that can't have changed in a long time though.13:06
*** Aren has quit IRC13:08
tcolgatehmm, done tiffinfo concurr with his inding about the number of pages etc?13:09
pgregorygood question13:09
pgregoryhold on...13:09
*** ShortWave has quit IRC13:13
*** [1]ShortWave is now known as ShortWave13:13
*** c42f has joined #aqsis13:13
c42fHi guys13:14
*** [1]ShortWave has joined #aqsis13:14
pgregoryhi Chris13:14
*** pgregory sets mode: +vv c42f [1]ShortWave13:14
c42ftcolgate: Just read the logs & saw your question about the shadervm patch: good.  The more eyes the better.13:15
c42ftcolgate: I've checked with valgrind before & after the patch; the memory leak definitley goes away here.13:16
c42fI also was surprised that I hadn't seen the problem earlier though.  It seems rather simple in hindsight...13:17
pgregorythat's not a surprise to me at all13:17
pgregorythe VM is fairly complex, it only takes a simple error like that to turn it on it's head.13:17
pgregoryyes, tiffinfo concurs with the findings.13:18
tcolgatesorry,  got knocked off my connection.13:19
tcolgatepaul: yes, in my abscense I tried a test with gimp->teqser and I see it too.13:19
tcolgatechris: I spent alot of time hammering on that issue using some atmosphere shaders to test with and valgrind, so it's quite irritating that I didn't spot it if it is a genuine fix :)13:21
pgregoryhmmm13:21
tcolgateMy only concern is around the reference counting.13:21
pgregoryI think I see what might be wrong with the mipmap generation.13:21
tcolgate?13:21
pgregoryit appears that we are generating each level from the initial image.13:22
pgregorynot sure if that's right.13:22
tcolgateright, and it should be done by reerence to the prevous?13:22
pgregoryI need to have a think about this, but my gut feeling is we should generate level n from level n-1.13:22
pgregoryor then again, maybe not..13:24
*** AlexK has joined #aqsis13:24
c42fthat would seem to be most efficient...  In effect you're getting a much wider filter 'for free'13:24
* c42f doesn't know anything much about texture filtering though.13:25
tcolgateahh cool, handy hint for those on linux...13:26
tcolgatetiff2pdf handles multi page tiffs, seem to work well for viewing tx files.13:26
tcolgateright, I'm getting into the shower...13:26
c42foh, cool, thanks for the tip.13:26
c42ftristan: which piece of reference counting were you worried about?13:27
tcolgatechris: nothing specific as I haven't looked at the patch in context, but my gut feeling was that if I was going to be worried about anything it would be whether that temp needed to be kept around.13:29
*** cgTobi has joined #Aqsis13:29
*** ChanServ sets mode: +o cgTobi13:29
tcolgateAs I say, purely on gut instint, I've had my battles with the VM before, it's never fun.13:29
tcolgateback in  a bit.13:29
pgregoryaha13:36
c42f?13:36
cgTobihey all13:36
c42fhi Tobi13:36
cgTobihi Chris, good evening13:36
pgregorythe problem is, we *should* be downsampling the zero image, that much is correct, but, for each subsequent level, we should double the filterwidth13:36
pgregorythe reason we need to downsample from the original is that filters other than box aren't constant over width13:37
pgregoryand the reason we're getting wrong levels is due to the logic that calculates the stopping point.13:38
pgregoryI think13:38
c42fCool!  Sounds very reasonable :)13:38
pgregoryit makes sense to me when I try to visualise the filtering process in my (aching) head.13:39
c42fI can see what you mean about filters other than box.  Sampling the smaller images wouldn't necessasarily give the same thing if the filter was constant for each level.13:41
cgTobiok guys, I need some sleep, shift starts in 9 hours13:45
cgTobicya13:45
c42fbye Tobi.13:45
c42frenderguy: did you get my patch for the irc logs script?13:47
pgregoryhmm, looks like we might already be increasing the width, in which case, something else is wrong :-(13:47
pgregoryactually no, the filtering code is rubbish.13:51
*** cgTobi has quit IRC13:54
*** Joron has joined #Aqsis13:55
c42fHi MJ13:57
renderguyc42f: Yep, got your patch (thanks), but was busy yesterday and today... probably won't get to do anything till tomorrow.13:58
renderguyc42f: I'll give you a shout if I get stuck.  ;-)13:58
renderguyJoron: Morning... just in time.  ;-)13:58
JoronHello13:59
JoronOk Yestersday I look for the generation of the mipmap; well it could be fixed in particular we could look a bit closer the result and compared with other renderer. But the rendering part has a problem for an imager shader I get different of mipmap level from left to right this one causes visual artifacts. A good example is Bug1031110.rib;14:02
Joronyou could perceive the image is not right if you compare the amount of blur on the left side versus the right side of the image.14:02
Joronlook "gra" versus "yscale image..."14:03
JoronI'm still investigated both issue the mipmap generate and the rendering.14:04
pgregoryJoron: I'm looking at the mipmap as well at the moment14:05
c42frenderguy: np & thanks.14:09
tcolgatepaul: just an observation, but I did a test with a diagonal gradiant image from gimp. There are some filtering artefacts, which may well be perfectly normal, an evenly sized pale grid across the image.14:11
tcolgateBut..14:11
tcolgateThe grid seems to be the same number of pixels across for each of the smaller images, so it doesn't scale with the size of the image.14:11
JoronI got a better mipmap generation; I could commit the changes therefore more eyes could look for the other issue ?14:13
pgregoryJoron: before you commit, can you explain what you did, and why?14:14
tcolgateJoron: Might be a good idea to mail a patch file to the list.14:14
JoronI revert the mipmap generation to an earlier version; because the way the width was compute since to be prone to rouding errors.14:14
pgregoryok, commit and I'll take a look14:15
JoronI could send my texturemap.cpp to Paul.14:15
pgregorythat might be a good idea14:15
JoronI will e-mail it.14:15
pgregorysave polluting subversion until we're sure it makes sense14:15
Joronagree14:15
tcolgatefor what it is worth, svn diff generates a perfectly decent looking patch file.14:17
Joronsent14:18
pgregorygmail is being a pain at the moment14:21
JoronI sent to pgregory@aqsis.org ?14:23
Joronis it ok ?14:23
pgregoryyep, gottit14:28
Joronone clue is CalculateLevel() might be wrong (in texturemap.cpp) since for the bug1031...rib which should have  used the same level of mipmap across the rendering... it returns 0 and 1 in some cases. No sure if CalculateLevel() is wrong or the parameters we pass to it lead to the wrong computation.14:30
Joronevaluate, test the mipmap generation I will continue on my end the investigation for the level of mipmap aqsis employs.14:31
Joronbye bye14:31
*** Joron has quit IRC14:32
*** c42f has quit IRC15:05
tcolgatepaul: I'm having some diificulties with my C++ thinking, any chance you can give me some pointers? (Not the C kind :) )16:16
tcolgateI've added my new interfaces for pulling the attribs by an ID to attributes.h, but it seems that I need to add it to the iattributes.h interface aswell, which makes some sense, but...16:21
tcolgateputting the enum in iattributes.h doesn't seem right to me.16:22
tcolgateshould I put an int based interfaces in and just cast my enums to ints when I call the functions instead?16:22
tcolgateHm, given that they are going to be an index into a vector I suppose that owuld be OK.16:28
*** AlexK has quit IRC16:39
tcolgatewell I've got the interface building anyway, but need to put something on the back end of it now :)16:46
* renderguy is counting the minutes till he leaves.17:09
renderguy5... 4... 3... 2... 1... I'm outta here, laterz.17:27
*** renderguy has left #aqsis17:27
tcolgateGregory:!!!!! Please spell Colour for me!!! How did I not notice this before!!!17:35
tcolgateAny C++ types around?18:45
*** render has quit IRC18:51
ShortWavehttp://www.celtx.com/features.html19:36
*** AlexK has joined #aqsis19:50
tcolgateShortwave: Sounds great, have you tried it?20:14
*** Aren has joined #aqsis20:18
*** pgregory_ has joined #aqsis20:28
tcolgateHey20:29
*** pgregory has quit IRC20:32
*** pgregory has joined #aqsis20:32
*** ChanServ sets mode: +o pgregory20:32
*** pgregory sets mode: +vv AlexK Aren20:33
tcolgatehey20:34
pgregoryhi Minty, how's the ankle?20:34
tcolgatecool, as long as I don't walk or stand up :)20:35
tcolgateI'e made some preogress on the attribs stuff, I think it's looking alright in theory anyway.20:35
pgregoryexcellent20:36
tcolgateMight need some pointer on the shared pointer aspect and the copy on write side of things, but the code kind of feels right if that makes snese.20:36
pgregoryI'm just about to tackle the mipmap filtering.20:36
tcolgatecan I send you a patch? I was going to create a branch but the code doesn't actually work at all yet.20:36
tcolgateThe diff might give you a sense of what I've been on about.20:37
pgregoryemail it, and I'll take a look, do you specifically want me to look tonight?20:37
pgregoryI have some time if you do, it's not a problem.20:37
tcolgateIf you could have a glance and tell me if I'm mad then that would be handy.20:37
tcolgateIt doesn't need a great deal of analysis, just an umm or an ahhh20:38
pgregorysure20:38
tcolgateOK, should be on its way.20:39
tcolgateingnore the spec file bit :)20:40
tcolgateI've not hooked it into the actual code yet, but it should give you the principle of the thing.20:40
pgregoryok20:41
tcolgateIdeally, if it is all cool, I'd move the fast path versions into the attributes.h header so they will inline.20:41
tcolgateI'm tryinng not to think of it as a micro-optimisation, more of a "doing the right thing" kind of thing. The array could become a vector if it makes sense to expand it to cover arbitrarily declared attr's20:42
tcolgateOh, I kiled some of the comments in iatrributes.h, that was just ot make the code a bit more readable, hope it doesn't cause offence....20:44
* tcolgate waits with baited breath.20:44
pgregoryas long as they weren't Doxygen comments.20:44
tcolgatenope, the attrs stuff might be a good example of stuff that might work for template functions, as much as I hate templates.20:46
tcolgateoooh, it's all been a bit of a rush really, haven't written any code in a very long time.20:50
tcolgatedid you get it, did ya', did ya', did'a???20:50
tcolgateatleast it all compilers, that wasn't fun, completely forgot what declaring an enum actually means.20:52
* pgregory is looking now...20:52
pgregoryhmm, those were Doxygen comments.20:53
tcolgateeek, OK, well I can put them back.20:54
tcolgateI only got rid of them to help me read the code really20:54
* tcolgate has visions of red biro crosses on essays, rolls a cigarette.20:57
*** ShortWave has quit IRC20:58
*** [1]ShortWave is now known as ShortWave20:58
pgregoryok, taken a look20:59
pgregorylooks fine20:59
pgregorybasically, the identifier versions of the getters shortcut the search, right?21:00
pgregorybut the search will still work, as they are registered in both locations?21:00
tcolgateyep21:00
pgregoryso you should be able to plug it directly in with no immediate changes and change the access calls gradually.21:00
pgregorygets my vote.21:00
tcolgateyep, that's the plan.21:00
tcolgateIf we figure out a nice way to use it for the other stuff then cool, but the idea is that if it is a parameter that we create and utilize directly in the code then we can fast path straight to it.21:01
tcolgateI don't think the performance benefits are going to be mind blowing for most of our test content, but the principle seems right, and it doesn't destroy the generality of the attr's/param's code that is already there.21:02
tcolgateFor the Write side of things, should I hreat a new version of each of those params in the copy constructor for CqAttributes?21:12
tcolgateHmmm, not quite foing to work, perhaps I put the manual attributes copuing back somehow, I have to keep the two sets of parameters pointing at the same thing.21:16
pgregoryhold on...21:17
tcolgatesorry, don't mean to distract you, I can work through it, your time is better spent elsewhere.21:18
pgregoryit's difficult to be sure what is the best way to do it.21:22
pgregoryit's important that the id-->value mapping get's copied, but you can't copy the attributes directly, that's handled elsewhere.21:23
tcolgateDoing the lookups to point at the right value afterwards is problematic since I don't really want/need to keep the association of the string with the internal stuff, and I don't want to copy them individually.21:25
tcolgateRight, need to make some dinner.21:30
*** AlexK is now known as AlexK_ZZzzZZzZz21:34
*** render has joined #aqsis21:49
*** pgregory has left #aqsis22:03
*** AlexK_ZZzzZZzZz has quit IRC22:04
*** Aren has quit IRC23:21
*** cgTobi has joined #Aqsis23:34
*** ChanServ sets mode: +o cgTobi23:34
cgTobievening all23:34
*** Aren has joined #aqsis23:36
*** cgTobi sets mode: +vv Aren render23:37

Generated by irclog2html.py 2.3 by Marius Gedminas - find it at mg.pov.lt!