/srv/irclogs.ubuntu.com/2013/10/17/#ubuntu-mir.txt

RAOFUuuh, launchpad? Why did you just silently eat my workitems?02:00
dufluUuuk, google? Why did you just silently eat my personal account and force me to retry for an hour to prove my identity?02:30
dufluSeriously though... I have plenty of two-factor mechanisms and instead of asking for them, Google asks me questions that no reasonable person would be able to answer. Like the month I opened my account, or the month/year I first used Calendar.02:34
RAOFWoah.02:53
kgunnRAOF: duflu ...could one of you review/approve https://code.launchpad.net/~mir-team/mir/bump-deb-changelog16-mirserver8/+merge/19154803:13
duflukgunn: Done, but needs a minor fix03:14
duflukgunn: Also, I assume we've given up on keeping milestones up to date with each 0.0.N ?03:15
RAOFduflu, kgunn: Do we need dates in the changelog *at all*?03:16
RAOFs/changelog/version/c03:16
dufluRAOF, kgunn: Yeah if we're bumping the version this much then there's no need for a date in there too03:17
dufluSo long as it *increases* each time03:17
kgunnduflu: robert_ancell used to set milestones...altho, i'm not enlightened as to its usefulness...other than maybe trying to target bugs to be done (e.g. phone-v1-freeze)03:18
duflukgunn: I've been maintaining them much of the time, but they're not useful if the milestone moves this often. You need less frequent point releases.03:19
duflukgunn: If we're not using them then we should have even just one milestone for the release and target that03:19
kgunnRAOF: duflu ...as to date, dunno, i thot there was some esoteric reason it was needed03:19
duflukgunn: I think we're free with version strings. So long as they increase and also end with -NubuntuN. The prefix is our own choice03:20
duflu... the prefix being the upstream project version without -NubuntuN03:21
kgunnduflu: so you guys are saying instead of this 0.0.16+13.10.20131011-0ubuntu1....we should just make it 0.0.16-0ubuntu103:23
duflukgunn: I think so03:23
RAOFYup.03:23
kgunnrobert_ancell: ^ what you say even tho you no workie on mir anymore03:23
robert_ancellthe only reason I was stamping versions was so we could mark bugs as closed against that version03:24
robert_ancellrecently the version is useful for bumping build dependencies03:24
dufluAlthough the "16" is meaningless. It would have more meaning if we replaced "16" with "<bzr rev number>"03:24
robert_ancellI'd agree with duflu using the bzr revision number is more useful03:24
robert_ancelland having some sort of major version number for telling the difference between versions in Ubuntu03:25
dufluThen the "0.0" is a placeholder for real project versioning (in future)03:25
dufluYeah, the major.minor needs to change, somehow, for each cycle at least03:26
kgunnduflu: ok...can we go with this for this time, let me coordinate with didrocks tomorrow.....i don't want to switch it up and have a reason for grinding everything to a halt03:26
dufluFair point. My experience with versions and didrocks that anything which increases is fine. And anything with meaning is better03:27
duflu*is that03:27
dufluArgh. Although in using revision numbers you have to remember *only* the development-branch has useful history now. So it would have to be the revision of development-branch03:31
dufluAnd similarly, when branching post-saucy, that has to branch from development-branch. Or else we lose the history. Because lp:mir presently has no useful history03:35
kgunnduflu: now ? https://code.launchpad.net/~mir-team/mir/bump-deb-changelog16-mirserver8/+merge/19154803:46
duflukgunn: Needs fixing still :(03:52
dufluReally, we're not using milestones and the "16" is meaningless. So we should go to upstream version "0.1" or higher. And let ubuntu saucy versions be "0.1-0ubuntuN".03:56
dufluor "13.10..." :)03:56
kgunnok strange...i remerged from trunk, that went fine, dch -i and did all the updates...all seemed fine...04:17
kgunnbut now, when i try to push...is says error "These branches have diverged."04:18
kgunnbut when i do bzr missing it just shows my one commit...04:18
kgunnand a merge from dev-branch results in "nothing to do"04:20
RAOFWhere are you pushing to?04:25
duflukgunn: bzr info to see where you're pushing to. Verify it's your own and not a shared branch. Then explicitly: bzr push --overwrite lp:~kgunn/mir/somewhere04:34
kgunnduflu: ok...now?04:41
duflukgunn: All approved. But then again... I'm not sure if and where we actually broke the server ABI :)04:46
duflu... hence it might not have needed incremening04:46
duflu+t04:46
om26erduflu, hey!08:15
om26erduflu, got an opinion on bug 1240841 ?08:16
ubot5bug 1240841 in mir (Ubuntu) "[Mir]In-App scrolling is lagging much" [High,New] https://launchpad.net/bugs/124084108:16
dufluom26er: Hi08:16
* duflu looks08:16
tvossom26er, which image?08:16
tvossom26er, maguro?08:16
om26ertvoss, 100 mako08:16
tvossom26er, was it present yesterday?08:17
om26ertvoss, yes it was08:17
dufluom26er: Probably not Mir at least. Since native Mir demo clients are perfectly smooth08:17
dufluBut maybe...08:17
tvossom26er, can you please verify with a less complex client than the browser?08:18
om26ertvoss, ok, let me try the contacts app08:18
tvossom26er, ideally, something without too much interaction with the underlying system would be helpful08:19
tvossom26er, to isolate variables08:19
dufluThat's fun. The Mir branches appear to have had Compiz tags imported into them at some point. How useless. Now deleting them08:25
om26ertvoss, its visible in address-book as well08:27
om26erwith only 38 contacts in the list08:27
dufluom26er: On startup too (not many surfaces running in the background)?08:28
om26erjust rebooted. lets see08:29
dufluom26er: P.S. occlusion optimizations just landed, but don't do anything on mako because --> bug 124083308:29
ubot5bug 1240833 in Mir "[feature] Expose at least one non-alpha pixel format for Nexus 4" [Medium,Triaged] https://launchpad.net/bugs/124083308:29
om26erduflu, will it help on nexus 7 ?08:30
* ogra_ sees it on maguro with the browser and all webapps (though i was blaming the browser initially)08:30
dufluom26er: Haven't looked yet08:30
dufluYeah it seems the browser is naturally slower than other apps anyway08:30
ogra_(lagging and horrible jumpiness when scrolling that it)08:31
dufluIt has a lot to do08:31
ogra_well it didnt do that a week ago or so08:31
om26erduflu, facebook.com or omgubuntu are really smooth in the browser under Mir. there are other sites that can be slow but these 2 are super smooth08:31
ogra_and indeed i dont see that on mako08:31
om26er*under SF08:31
dufluom26er, ogra_, Yeah I think we know our Android rendering is sub-optimal. I don't know what is planned to fix there next. Best ask kdub.08:32
om26erduflu, just rebooted. visible right after phone starts in contacts app08:32
tvossom26er, just augment the bug with your findings. Ideally add a video, we will look at it08:32
ogra_duflu, well, maguro has other more low level probs too with Mir ... like exposing a uevent for *each* vsync, seems that doesnt happen on SF08:33
dufluogra_: Sounds bad. But I'm no Android expert08:33
ogra_yeah08:33
tvossogra_, do we have a bug report for that?08:33
ogra_tvoss, yes, pitti is just working with om26er on one of the fallout bugs in #ubuntu-touch08:34
ogra_(one is that udevd eats constantly 10%+ on maguro, the other is that upstart picks up these events and collects ram like crazy)08:35
ogra_tvoss, we dont really have a bug against Mir for it, but i think somewhere in Mir lies the root of this08:35
ogra_seems SF somehow tells the driver to stop the event spam (probably through a special arch specific switch)08:36
tvossogra_, digging08:36
om26ertvoss, ok. will do08:36
=== pete-woods is now known as pete-woods-brb
tvossom26er, did you upload the video, yet?09:07
om26ertvoss, i was helping pitti with some udev debugging09:08
tvossom26er, ack09:08
om26ertvoss, will upload in a few minutes09:08
om26erduflu, so who is going to work on bug 1240833 ?09:25
ubot5bug 1240833 in Mir "[feature] Expose at least one non-alpha pixel format for Nexus 4" [Medium,Triaged] https://launchpad.net/bugs/124083309:25
om26erKevin ?09:25
dufluom26er: Don't know. But it's next cycle :(09:26
om26erduflu, next cycle starts in a few days ;)09:27
om26erwell actually tomorrow :p09:27
dufluom26er: Hah. Yeah fair point. Still don't know. It's a simple concept, but potentially tricky to implement09:27
=== pete-woods-brb is now known as pete-woods
om26ertvoss, I don't think video camera are able to capture the lag. I have been trying to record a few videos but none seems to show the problem. perhaps I need a better camera10:08
tvossom26er, ack10:08
davmor2om26er: what's the issue I have a pretty good camera I can setup10:24
om26erdavmor2, on Mir open contacts app with ~50 contacts, try flick from bottom towards top and see if the scrolling lags. try the same on SF. make a video for both10:25
om26erits even more visible in the webbrowser.. in sites like omgubuntu or facebook10:26
davmor2om26er: I was going to say open planet.ubuntu.com and you get it10:26
om26eryeah10:26
davmor2tvoss: ^ this is what I said yesterday, If you open planet.ubuntu.com on a maguro because of the length of the site page you can really see the glitchy effect on mir.  Not so much lag for me more that is seems to bounce forever and a day10:28
tvossdavmor2, again, maguro is not really the reference here, but I will look at it as soon as I have some time on my hands10:28
om26erdavmor2, confirm this bug 124084110:29
ubot5bug 1240841 in mir (Ubuntu) "[Mir]In-App scrolling is lagging much" [High,New] https://launchpad.net/bugs/124084110:29
tvossdavmor2, until then, please make sure that we have bugs logged with as much information as possible10:29
om26erI see that on mako Sir!10:29
tvossom26er, sure. One other thing: *much* is not really helpful, either we have hard numbers to quantify the slowdown, or it lags. I would rather model qualitative attributes in the bug importance10:30
tvossdavmor2, om26er that being said: bug reports with attached videos or as usual, detailed steps to reproduce would help the most10:30
om26erok, we'll improve the title and attach a video if I get my hands on a better camera10:31
davmor2tvoss: I can video the glitch effect I'll add it to the bug, I'll give you a ping once it is done10:32
tvossdavmor2, thx10:33
tvossom26er, thx10:33
ogra_tvoss, i find it funny that maguro isnt really the reference anymore since we were told we need to focus exactly on this device class10:33
ogra_instead of the beefy arch10:33
ogra_(though that seems to have shifted a little)10:34
tvossogra_, fair point, and we will get to optimizing for it, too. However, the PowerVR SGX 540 is *known* to be full of issues, and we don't have drivers with proper hardware compositor support for it10:34
tvossogra_, that's the main reason it does not benefit as much of the performance improvements10:34
ogra_yeah, i understand whats the issue indeed10:35
mlankhorsteverything powervr has issues :P10:35
* ogra_ fights with PVR since nearly 4 years already :)10:35
tvossmlankhorst, but there are particular bad chips in that series ;)10:35
ogra_maguro is just a different pandaboard ;)10:35
tvossmlankhorst, ogra_ specifically, touching the fb stalls rendering pipelines and rendering contexts in wild and wonderful ways10:36
tvossogra_, that's one of the reasons just catting the fb can lead to "interesting" behavior on maguro10:36
tvossogra_, but yes, I'm talking in technical terms here. In general I do agree that we should not only consider super-phones10:37
ogra_theyshould be second focus instead10:40
davmor2tvoss: video added to bug10:52
tvossdavmor2, +1, thx10:52
davmor2om26er: can you confirm that is what you see too10:52
davmor2tvoss: is that alright for you?10:54
tvossdavmor2, yup, helps a lot, thx10:57
davmor2tvoss: same thing happens on contacts as with the slow scroll on the browser page you get that bouncy glitchy effect10:59
tvossdavmor2, ack10:59
davmor2tvoss: the only really odd thing if you do the same scroll in unity8 itself you don't get the glitch it's nice and smooth :)11:07
om26erdavmor2, try opeing three apps and scroll in unity then ;)11:08
tvossdavmor2, that's indeed interesting11:08
tvossom26er, please add that information to the bug report11:08
om26erdavmor2, yeah, I can confirm your video11:08
om26ertvoss, ok11:08
davmor2om26er: I've confirmed the bug then now I know it is the same thing :)11:09
om26erdavmor2, btw opening omgubuntu.co.uk is also an easy way to reproduce that bug. since that a mobile optimized app11:11
davmor2om26er, tvoss: I'm assuming that the slow scroll in unity8 with apps open is mostly just down to lack of memory so it's possibly hitting the swap11:11
tvossdavmor2, might well be. However, we have optimization potential in Mir, too11:11
om26erdavmor2, memory is not much of a problem on mako. its because the apps that are running in the background are still being rendered by Mir11:11
om26erdavmor2, bug 122773911:11
ubot5bug 1227739 in unity-mir "Mir continues to render background application surfaces even when they're not visible" [High,Triaged] https://launchpad.net/bugs/122773911:11
tvossom26er, only for a certain amount of time, after that, the processes are sigstopped11:12
davmor2om26er: right yeah I see it when you open an app and you get that initial stall sometimes and another app appears till the new one is fully loaded11:12
=== alan_g is now known as alan_g|lunch
loolHey folks12:40
loolwanted to ask, is there some kind of xvfb for mir?  some kind of fake mir backend in memory12:41
loolno specific GPU connected12:41
alf_lool: no, we do have a dummy display backend in the tests (no drawing done at all)12:43
alf_lool: why do you need the memory backend?12:43
alf_lool: also see https://bugs.launchpad.net/mir/+bug/111890312:45
ubot5Ubuntu bug 1118903 in Mir "[feature] Mir lacks a software rendering backend" [High,Triaged]12:45
loolalf_: something inbetween emulator virtual machine, and real hardware basically12:46
loolalf_: I think this is indeed related; thanks for the pointer12:47
loolalf_: I guess there is probably a fake fb driver we could use with this support for fbdev12:48
loolI'll check with kgunn how far this is in the mir roadmap12:48
lool(with other work such as performance work upcoming)12:48
kgunnlool: why the query ? e.g. what's your proposed need ?12:57
loolkgunn: I'm chatting with vila on evolutions of CI stuff, and this came up as one of the things that might help running some of the tests on vms13:02
loolkgunn: So was just tring to get status13:02
loolkgunn: maybe we will need this sooner rather than later, depends how far this is13:03
=== alan_g|lunch is now known as alan_g
kgunnlool: ok, right now its nowhere (...unless duflu has been sneaky and spent time on it)13:03
loolkgunn: Ok; thanks13:04
kgunnlool: but thanks for this...i will13:04
kgunnmake sure to create a bp for some general mir testability items (this is 1 of handful)13:04
alf_lool: don't the VMs we have support KMS/DRM?13:04
kgunnalf_: true...but, isn't the fb is just a phoney...its really a sw fb that gets redirected to a window right?13:05
kgunnalf_: oh i get your point13:05
kgunnalf_: you might  use a sw buffer as fb, but that doesn't mean there is no fb13:06
kgunnoops, meant gpu...13:06
kgunnyou might  use a sw buffer as fb, but that doesn't mean there is no gpu13:06
=== pete-woods is now known as pete-woods-brb
loolalf_: I'm not sure; I think where there are cases where we dont want this relayed to real hardware, but rather have fake fbs13:13
alf_lool: do you mean the final display, or the rendering?13:14
loolalf_: I guess it depends; on one side we want to exercize Mir itself, on the other side sometimes we just want a solid hardware independent output for higher level tests which are not dependent on GPU specific behaviors13:16
loolPerhaps something we might want to do for instance is simulating cloning or extending of displays, or rotating the screen13:16
loolor different DPIs13:17
alf_lool: (if it's just for the final display, we could just draw to an off-screen buffer instead of the real framebuffer)13:17
tvosslool, so you want a vesa backend?13:17
alf_lool: so ideally you want a pure software pipeline, e.g. what the bug describes13:17
alf_lool: GPU not involved in neither display nor rendering13:18
loolalf_: Yes, in regular memory buffers is what I had in mind rather than real framebuffer13:18
loolmuch like Xvfb13:18
looltvoss: vesa still goes to hardware via bios?13:18
loolalf_: yes pure software13:18
loolalf_: exactly13:18
alf_lool: the rendering part may be a bit tricky, but we could probably just use mesa software rendering for this13:19
alf_lool: btw, I am not sure that xvfb doesn't use the GPU at all, I think it does so for rendering13:22
alf_lool: perhaps you just want mir in an X window? :)13:22
loolalf_: Actually I care to be able to say "Run these commands that would usually output things to a real screen on a fake screen and let me be able to poke at it"13:27
loolalf_: typically, take screenshots, get events about what's going on, influence it13:27
loolalf_: e.g. did the display output get "turned off"13:27
tvosslool, so you want a state-observable mock? I think that's best done in the project-internal tests13:28
loolalf_: the main use case is running tests in a reproducible manner and simulating / listening to events; e.g. I can run a "rotate unity8" test on intel or nvidia hardware without testing the intel and nvidia specific behaviors, and then do integration testing on real hardware13:28
looltvoss: but right now when we're actually displaying something it goes to real hardware and might behave differently on this or that hardware13:29
loolalso, hardware sucks13:29
loolif you see what I mean13:29
loolwe'll always need testing on real GPUs13:29
loolbut if we could run most of the pre-integration test steps in vms / reproducible + controlled environments, that would be more reliable, scalable13:30
tvosslool, sure, I'm not argueing against your point, only saying that I think what you want is a mockable and obversable backend, as independent of HW as possible13:30
tvosslool, what are preintegration tests from your pov?13:30
looltvoss: Ah Mir backend, yes13:30
looltvoss: typically testsuites of our components13:30
loolone class is unity8 itself, another class is anything running in unity813:31
loolbut in all cases, we're rarely writing GPU specific code and we could run all tests first on a virtual backend, then on a GPU in the last integration steps13:32
tvossas in-process?13:32
loolhmm not sure13:32
tvosslool, sure, we would need graphics drivers for the vm's then13:32
loolFrankly, I dont fully grasp how the technical implementation would look like yet  :-)13:32
loolbut in the end, I feel I shoudl be able to land an unity8 change by running the tests on a reproducible / fast / scalable environment before I even try it on a real GPU13:33
loolwith more tooling too13:33
loollike, rotating the screen13:33
tvosslool, so what we would need are graphics drivers for the virtual machines we want to consider13:34
tvosslool, those drivers typically allow for injecting events like "rotate screen", too13:34
looltvoss: hmmm13:36
looltvoss: virtual machine we are working on13:36
loolgoldfish13:36
loolbut it has GL passthrough13:36
loolso it's not really hardware independnet13:36
loolalso, vms are a bit heavy13:36
loolwhen you compare to Xvfb13:37
tvosslool, xvfb is not hardware independent either13:37
loolis it not?13:37
loolhow so?13:37
loolI thought it was creating a fake in memory surface; that it worked without a hardware GPU13:38
tvosswell, it depends13:38
tvosshowever, I do not see the advantage of a "pure" software solution in small-scale integration testing. What we have right now is a way to run Mir without real-hw backend in integratoin and acceptance testing scenarios. Unity (or unity-mir) could use that knob, too13:40
looltvoss: can we take screenshots from it?13:40
loolI guess we could live without screenshots13:41
tvosslool, nope, it's state observable though13:41
tvosslool, that's what we use to mock out things for our CI runs13:41
loolmaybe fake non-rendering backend + goldfish are enough to cover our needs13:41
loolthe xvfb like solutoin would be a bit in between I guess13:41
loolwhere's the fake non-rendering backend?  I looked into mir/src/server/graphics/ but I'm not sure I can tell how it's named13:44
tvosslool, searching13:46
alf_lool: tvoss: there no dedicated "null" backend at the moment, it's just dummy classes inside our test framework (e.g. see in tests/mir_test_framework/testing_server_options.cpp)13:48
loolok13:50
kgunnalan_g: alf_ anyone?....https://code.launchpad.net/~mir-team/mir/development-branch/+merge/19165214:36
alan_gkgunn: looking14:37
alf_alan_g: is this going into a phone release?14:38
alf_kgunn: ^^14:38
kgunnalf_: alan_g nope, won't make phone release14:38
* alan_g thought so14:38
alf_kgunn: so, when are we going to be working directly on trunk again?14:39
kgunnalf_: i spoke to didrocks about it, and seems the api control we have in place is working good...14:41
kgunnalf_: so until we get our api distilled down14:41
kgunnalf_: we'll have to stay on the dev branch14:41
alf_:/14:42
kgunnalf_: what's the complaint besides speed (of which...i am probably 1/2 that problem :)14:42
=== pete-woods-brb is now known as pete-woods
alan_gkgunn: the problem is tracking the source of problems - think about "bisecting" trunk changes14:45
kgunnalan_g: yeah...true14:45
kgunnracarr: can you resume the api distillation activity ?? ^ this will help us return to trunk14:46
=== alan_g is now known as alan_g|lunch
=== alan_g|lunch is now known as alan_g|tea
alf_alan_g|tea: that was a quick lunch ;)14:47
alf_kgunn: I think our API will begin to stabilize only after the scenegraph/model rework14:47
kgunnalf_: that makes a lot of sense....so really, should we just forego the distillation process with what we have today & prioritize the scenegraph work ?14:49
kgunnalf_: altho...doing some gross distillation wouldn't hurt14:49
kgunnwe could bump api/abi slightly less14:49
kgunntoday i see a header in include/server....by technical rights...i need to bump (even tho i know the likelihood is really low)14:50
kgunni suppose tackling scenegraph will depend on greyback's availability ....and i know he may be sidelined for about 3 weeks doing the right-edge navigation proto14:51
kgunngreyback: could someone else do the proto ?14:51
kgunnalbert maybe ?14:51
=== alan_g|tea is now known as alan_g
alf_kgunn: I think that the upcoming changes will drastically alter what we expose to the shell, so much of the distillation work will be wasted. We also need to decide what  privatization scheme we are going to use.14:55
alan_g^ +114:55
kgunnalf_: "which scheme"....can you elaborate ? i'm kind of simple minded...i was thinking you got  abunch of headers wit pv func's and some needed enums/structs in them14:56
alf_kgunn: I am referring to the discussion in the the "privatize" MP series email thread14:57
kgunnbtw, gonna miss stand up..i have to sit in for olli at some meeting14:57
kgunnalf_: ah...again, am i missing something ? but isn't it a rather simple argument to conclude which directories (feel free to educate me)14:58
* kgunn realizes there were some responses to my mail...i meant to go back and read :)14:58
=== dandrader_ is now known as dandrader|afk
greybackan accidental "make -j44" brought my machine to its knees15:12
greybackkgunn: fastest way to do the prototype is probably to use the app-screenshot hack we're using for app switching. Disadvantage of that is previews will not be live. But that task will require the screenshot-save-to-disk work we need anyway15:16
greybackkgunn: yes someone else could certainly take that on15:17
greybackkgunn: that prototype could be educated to use live previews when available, as the scenegraph task progresses a bit15:18
greybackkgunn: I need to write up a doc with what scenegraph works I think needs to be done, and what I think Mir might need. I need to spend time understanding how the two can work together tho15:19
* greyback quite needy at the moment :)15:19
greybackI'll also need a volunteer from the Mir team who is happy to discuss the Mir-side compositor with me, to explain hardware compositing drawbacks to me, and so I can bounce ideas off15:22
=== dandrader|afk is now known as dandrader
kdubgreyback, i might be able to help there15:26
greybackkdub: great, thanks! Prepare for a barrage of idiotic questions and sky-high ideas :D15:29
kdub :D15:29
alf_greyback: 'make -j' is also fun :)15:33
greybackalf_: that it is, but for some reason my Ctrl+C reflex kicks in for that immediately.. :)15:34
kgunngreyback: was busy, and thanks for the responses....great minds think alike....i wanted to ask you to write up some thots....maybe you and kdub (and whomever else) could spend some quality time early next week on it15:51
greybackkgunn: sure15:52
=== jfunk is now known as jfunk-afk
greybackkdub: as a first question, I'd like to learn more about what various hardware compositors can do, just to get a grip on the basics. Would you know of any docs that I could start out on?16:28
kdubdocs, not really16:29
greybackkdub: even an API of some hardware compositor would give me something. I've found a little on the hardware compositor in the raspberry pi, but mot much16:30
kduboh, let me point to the api16:30
kdubgreyback, https://android.googlesource.com/platform/hardware/libhardware/+/android-4.3.1_r1/include/hardware/hwcomposer.h16:31
greybackkdub: are there similar for nvidia/intel/amd chips? Or is it quite chip specific?16:32
kdubthe whirlwind tour is that you can set various transforms you want to do in composition (basic ones) certain alpha modes, 90-degree rotation, cropping, blits, scaling16:33
kdubthen you ask the hardware, and it tells you 'i can do that' or 'i can't'16:33
kdubif the hardware can't do it, you have to do that in opengl16:33
kdubgreyback, only talking about android at the moment16:33
greybackkdub: sure, I'm just thinking about desktop further down the road16:34
kdubright, with desktop... i think? there's just the cursor that's an overlay16:35
kdubalf_, is that right, or wrong? :)16:35
alf_kdub: KMS has the concept of planes (=hardware overlay), but we are not using them at the moment, not even sure how well they are actually supported by the drivers16:36
kduboh yeah... i don't hear about them very often, i'd guess the support is hit-or-miss16:37
greybackso sounds like there's little to no hardware compositing abilities on desktop chips16:38
kdubi guess.... i mean, there are some different tricks we might want to try16:39
kdublike, composition happens on the 2nd gpu core (for laptops with an integrated and discrete core)16:39
greybackcool16:39
* greyback eod16:47
=== dandrader is now known as dandrader|lunch
w-floare there any known issues with mir and android hwc11 (whatever that is)? mir 0.14 used to work after some patching, mir 0.15 crashes in hwcomposer.so after a call from mir in commit_frame() in HWC11Device. Now I'm wondering if the special qcom/display for my phone is broken, or if there's something wrong with mir 0.15 and "hwc11" :)17:03
kdubuhoh17:04
kdubnexus 4?17:04
w-flonope17:04
w-floHTC Desire Z17:04
w-flonexus4 uses that hwc11 code, too? then it must be something in the hwcomposer code for my phone I guess...17:05
kdubw-flo, haven't tried it... but i am doing improvements around that area currently17:05
kdubi'd expect them to be different17:06
kdubbut is there a backtrace or something? might be a difficult issue to debug w/o a device though17:06
w-flokdub, http://pastebin.ubuntu.com/6252062/ is the backtrace. The code for libhwcomposer is not the same as in ubuntu/cyanogenmod, so no need to fix anything :)17:08
kdubw-flo, still would be good to fix... maybe i'll have a branch or two to try over the next week (or two :) )17:09
kdubi'll keep you posted17:09
=== alan_g is now known as alan_g|EOD
w-flokdub, well, don't waste your time with it. might be a bug in the inofficial cyanogenmod port for the device, this is the repo: https://github.com/Andromadus/android_hardware_qcom_display/blob/cm10.1/libhwcomposer/hwc.cpp17:11
w-floanyway, thanks a lot kdub, I'll let you know if I get it to work somehow :)17:11
tvosskdub, hey there  :) happy release day17:39
kdubhappy release day tvoss :D17:39
* kdub start refactoring17:41
tvosskdub, thanks :) so I commented on the uevent spam bug17:41
tvosskdub, seems like we miss a call to the android poewr HAL that is a no-op on mako, but should help on maguro17:41
tvosshttps://bugs.launchpad.net/ubuntu/+source/linux/+bug/1234743/comments/3717:41
ubot5Ubuntu bug 1234743 in systemd (Ubuntu) "omapfb module floods system with udev events on samsung galaxy nexus" [High,Fix committed]17:41
kdubah, hmm17:42
kdubokay, i guess we should add that hal to mir17:43
kdubwe can add that to a bp somewhere17:45
tvosskdub, yup :) kgunn, can you help here?17:47
tvossnot sure which bp is approprate17:47
kgunnalan_g|EOD: dang...i did not realize you were unavailable...but the sprint timing was kind of tied to strehl's team as well18:01
kgunnalan_g|EOD: that ended up being a really good week for his team too18:01
=== dandrader|lunch is now known as dandrader
racarrLonnnn....don?18:21
racarrI'm glad we are getting an architecture sprint even if it's going to be cold18:21
ogra_could be worse ...18:22
ogra_oslo in january for example18:22
kgunnalan_g|EOD: i'm gonna poke strehel and see if we could change to that nov 18-22 week...but i'm doubting it18:25
racarrkgunn: *deep breath and exhale* I guess I should go back to ABI now?18:36
kgunnracarr: so alf_ and i discussed earlier....he was suggesting that changes may come wrt api/abi from scenegraph as well ...he was thinking drastic18:38
kgunnracarr: question is how long that may take, and even if that's the case i was wondering...isn't some18:39
kgunnkgunn: kind of coarse api distillation still useful ? (e.g. at least limit the number of headers out there in public)18:39
racarrhmm18:39
racarryes that's true. wrt scenegraph18:40
racarrkgunn: Ok I guess, so let's actually split the issue in to two18:40
kgunnracarr: in other words, alf_ was sort of questioning whether its worth distilling the api right now priori to that18:40
racarr1. ABI is hard to maintain. 2. API is hard to maintain18:40
kgunnracarr: whereas i was thinking...some effort would be good18:40
kgunnracarr: yep18:40
racarrthe ABI is hard to maintain because we have unity8 using concrete classes, and the sheer number of things we expose (which could be internal)18:41
racarrthe API is hard to maintain, because of it's shape, i.e. the way we require unity8 to implement many many interfaces18:41
racarrhmm18:43
racarralf may be right depending on when we really18:43
racarrcrack down on the scene graph18:43
kgunnracarr: right, i'd like to dive in and try to make headway asap, i think greyback is going to spend some time working with kudb and you to put toghether a vision of what really needs to get done to incorporate qtscenegraph18:46
racarrok yeah my thoughts kind of trailed off this way...18:46
racarrwe really need to think about that18:46
racarrI think maybe18:46
racarrI need to do a deeper dive in to Qt/QML18:47
greybackracarr: if you have a little patience, I'll write up a doc explaining the internal workings of the Qt SG18:47
greybackas that's pretty important for you guys to have a decent understanding of, before we get anywhere18:48
racarrOk.18:48
kgunnug...i everytime i start thinking about it then i think...oh crap, we're gonna need parent-child relations, modality....calgon take me away18:48
greybackwashing machines live longer with..calgon. *bing*18:49
greybackNow I remember why I don't have a TV18:49
racarrI feel like I need to understand the QML side more perhaps though...18:49
racarrbecause I still don't understand the objective outside of18:49
racarrtautologically, i.e. "use the QT scene graph"18:49
* kgunn now on a mission to over-use the word tautologically18:50
greybackracarr: the benefit for us is to be able to position/size and apply transformations/rotations to Mir's surfaces using QML's syntax18:50
greybackracarr: that then means we can easily animate too18:51
greybackracarr: so ideally a mir surface will be a Surface{} type, with properties like a Rectangle{}18:51
racarrgreyback: This is what I don't understand though18:51
racarrcan't a surface be a Surface{} type and have properties like18:52
racarrwidth and height and support transformations and such18:52
racarrand even be a QQuickItem (we reach the boundaries of me knowing what I am talking about)18:52
greybackfor simple properties yes18:52
racarrand does Qt "scene graph" even have to be18:52
racarrpart of that?18:52
greybackbut transformations and clipping can depend on their parent's transformations & clipping18:53
kgunnracarr: i think part of the point is....something on the qt/qml side will need that just for the qml portion to "talk" in those terms18:53
kgunnbefore it "knows" about mir18:54
racarrgreyback: That's true18:54
racarrIsn't it kind of a small number of things though?18:54
greybackracarr: so what I need to determine is if I can calculate the total transformation18:54
greybackand clipping18:55
greybackit could be, but during a complex animation like the proposed right-edge swipe to show all windows animation, it could also be non-trivial18:55
racarr?18:55
racarrI lost a thread18:55
racarrhmm, yes I mean there can be a lot of stuff going on18:56
racarrbut it's a quite simple language of stuff18:56
racarrthere are items that can be rendered, they have transformations, clips, shaders, a few visual properties (width, height, opacity, position, etc...)18:56
greybackwe can also write shaders in qml to appy to elements, but yeah, that's a good chunk of the list18:57
racarrMy thought is that improving the mir data model to support the needed things (like parent child relationships with cumulative transformations)18:58
racarrand then binding that out to QML18:58
racarris going to be much easier and more fruitful than trying to change the mir data model to be the Qt scene graph18:58
racarr+ the whole rendering set of questions18:58
greybackThat's not what I am asking for18:58
racarr?18:59
greybackI want to give Mir a list of surfaces, plus their transforamtions, positions etc19:00
greybackI just need Mir to support the surface properties that QML will demand19:00
greybackthen Mir can composite away19:01
racarr*can sort of see it*19:02
racarrI still have some concern over thinking about it like "want to give mir a list of surfaces though"19:02
greybackOn the QML side, I want to be able to manipulate a QQuickItem, which represents a mirsurface. Then I want to be able to extract the correct information about that QQuichItem from the scenegraph to give to mir19:02
racarrbecause if you are always giving mir a list of surfaces, then you are the mir data model, it's just you are protected by a cache that you atomically update19:02
racarrso then you have to worry about synchronization between what you have and everything19:03
racarron the other side19:03
greybackWhat will be in Qt/QML will only represent the Mir surface. Qt won't be owning it, Mir will19:03
racarrOk so it's more like an adapter scene graph19:04
greybackso let me rephrase, I want to set all the properties of Mir's list of surfaces19:04
racarrXD19:05
racarrOk now we are getting somewhere19:05
greybackbut there are things I am worried about with this approach.19:05
greybackOne is, I'd like to draw a window shadow in QML. I can do that by surrounding the Surface{} element with something which draws the shadow - so Qt draws the shadow19:06
racarrone thing that concerns me slightly is your ability to just like19:06
racarrright19:06
greybackbut if a partly-transparent window is above another window with a shadow, how can I draw the "covered" shadows?19:07
racarrI thinkkkk19:08
kgunnmeaning shadow (of the underneath) blended with the window on top19:08
kgunnright19:08
racarrok so the most immediately correct, but19:08
greybackyep19:08
racarrobviously not satisfactory solution19:08
greybacksame with window decorations19:08
racarris19:09
racarrthat creating this element around the Surface{} element19:09
racarrmakes a new 'surface' (let's call this new thing, a layer actually, and say that a surface is also a layer)19:09
racarrand it gets rendered by QML, then the compositor composites it, etc19:09
racarrbut this is way too horribly19:09
racarrineffecient19:09
greybackright, so now Qt is rendering an extra surface for every non-opaque mir surface19:09
racarri.e. a full window sized buffer which is mostly empty for each shadow19:09
greybackwhich it can probably do... but yeah19:10
racarrright, it's no good.19:10
racarrso, if we could trick QML in to sharing OpenGL contexts in a friendly fashion19:10
greybackoh19:10
racarrwe could do this without the memory overhead right, i.e. the 'layer'19:10
racarrisnt backed by a memory buffer19:11
greybackthat could be do-able19:11
racarrand we just have QML draw in19:11
racarrthe compositors context19:11
greybackinteresting19:11
racarri.e. mir invokes layer->render()19:11
racarrand layer is a MirQMLQtQuickAdapterBridgePRoxyItem19:11
racarr:p19:11
greybacklol19:11
greybackbut that is an idea19:11
racarrI think this would be pretty cool, but I knwo people looked at sharing the opengl contexts in the past and it was deemed19:11
racarrnon trivial but maybe with the new19:12
racarrrenderer19:12
racarrit's a more reasonable task19:12
racarror maybe it's just, a non trivial task that we should undertake19:12
racarrI think if we can share opengl contexts, like that, this all becomes way easier19:12
greybackpeople do this when mixing qml with things like vtk and other viz toolkits. Qt even addded api in 5.2 to let it reset its own context so it can continue19:12
racarrok19:12
racarrI have a feeling we can probably make this approach work then.19:13
greybackme too19:13
racarrthe other idea I had is that with things like19:13
racarrshadows, etc.19:13
greybackthat works around one of my main concerns19:13
racarryou could probably use some sort of accumulation buffer and19:13
racarra front to back19:13
racarrrendering trick...19:13
racarrand just always QML draws on top19:13
racarrbut I dunno19:13
racarrlol19:13
greybackI prefer the first idea :)19:13
greybackwell, every idea is worth thinking about before dismissing anyway19:14
racarryeah, first idea is way better. XD19:14
greybackyep19:15
racarrum...hmm, yeah, I feel better about this.19:15
racarrone thing I don't understand is how19:15
racarrlike, this idea that when you surround the Surface{} element with a ShadowBox{} element19:15
kgunngreyback: racarr so i think i follow in the shadow example...you avoid creating another seperate surface...but the original underneath window(surface) would need to be larger thatn it thinks right? in order to accomodate the extra shadow content19:15
racarrkgunn: No, the shadow will be drawn during compositing19:15
racarrdirectly on to the framebuffer19:15
racarror whatever buffer you are compositing too I guess19:15
racarrgreyback: What...um...19:16
racarrgreyback: I need to understand what the C++ side of QML looks like more I guess19:16
racarrI don't understand how the actual mechanism will line up here, but it can't be too bad.19:16
greybackracarr: start with QQuickItem then, as that represents the Item{} type19:16
greybackqtdeclarative/src/quick/items/ in the qt5 source tree19:17
racarrok19:17
racarrthis still isn't ideal from a rendering perspective :(19:17
racarrideally the window and it's shadow would be part of the same19:17
greybackqtdeclarative/src/quick/scenegraph/ for renderer19:17
racarrlarger than window size buffer19:17
racarrlike kgunn is talking about19:17
racarrso that you can still use19:18
racarrhardware composer/overlays19:18
racarrwell, you can still use sommmme overlays this way19:18
racarrbut not full out hardware composition19:18
greybackfor shadows/window decoration, why care about hardware compositing/overlay? They don't change much19:18
racarrwhich is probably fine because on mobile we don't have most of these things all the time19:18
racarrgreyback: But I mean, as soon as one window has a shadow19:19
racarrthen we have tos witch to drawing the whole framebuffer with GL19:19
greybackgotcha19:19
racarrinstead of using the hardware compositor19:19
greybackwell we'll have shadows only on desktop (maybe)19:19
racarrbut, I guess on mobile this is really only the path for when effects are happening19:19
racarrand stuff19:19
racarrright19:19
racarrand on desktop19:19
greybackin which case, only overlays really, right?19:19
racarr...*shrug*19:19
racarryeah. I guess. we can still use some kinds of video overlays, etc19:20
racarrand it should be fine19:20
racarrnot sure we even care that much on desktop19:20
greybackI don't want to add shadows to all Mir surfaces, as then every mir surface is not opaque, so compositing will not be that efficient19:20
greybackand I like this approach as then we'd have server side decoration, and Mir wouldn't have to care about it19:21
racarrits going to be really hard19:22
racarrto squeeze the last drops19:22
racarrof effeciency out this way...19:22
racarrthinking like.19:22
racarrwell, our ideal shadow rendering path19:22
racarris probably19:22
racarrthe window texture, is the same size as the window19:22
racarrand it's drawn on a slightly larger than normal quad19:23
racarrand a shader19:23
racarrprocedurally draws the shadow/places the window texture in the center of the quad19:23
racarrbut all of a sudden the shadow is no no longer a qt item in the scene graph with nice properties, etc...all the details are hidden inside the shader19:24
racarrnot sure about how to express those sorts of things...19:24
greybackwhich would be a pity, but not end of world either. It's a optimization...19:24
=== dandrader is now known as dandrader|afk
racarryes19:25
racarrthere are some appealing optimizations though19:26
racarrlike in the case of a desktop with a few non transformed windows19:26
racarrbut, can have some things like shadows (perhaps even decorations)19:26
greybackwell we can always create a custom QML element that could maybe encompass that?19:26
racarrwe could get away with rendering the whole desktop in a single call out to the GPU19:26
racarron a single quad19:27
racarryeah. that's what I am thinking now19:27
racarrwe can probably do it anyway19:27
greybacksure19:27
racarrwe are a long way out from that I guess :p19:27
greybackWell when you're in the gutter, it's good to look up at the stars19:28
racarrgreyback: Ah, in the US we say "When you're in the gutter, curl up in a ball and cry"19:28
racarryours is nice too though19:28
kgunnracarr: greyback (distracted as usual) wrt overlay / using a shared gl context to render direct to the comp layer....19:29
kgunnyou would still be ok, right...i mean whatever buffer you might directly render into19:29
kgunnwould just be an input buffer to the overlay/hwcomposer layer19:29
tvosskgunn, if we are fine with compositing the main image with gles, and only use the hwc to blit to screen, correct?19:31
* tvoss wonders if we could be clever and move the indicator surface to its own hwc layer19:31
kgunntvoss: right...and most of the overlays subsystems are driven by true 2d blitting activity (can't do 3d effect...like a shadow that you might want to do with a shader)19:33
greybacktvoss: we do plan to have  the launcher/dash/indicators will all have their own surfaces. Think that work almost ready. So moving one to hwc layer will do-able19:33
kgunntvoss: yes...very interesting idea19:33
kgunnandroid panel is exactly done this way from the main view19:34
tvossracarr, greyback, kgunn ^, why don't we just move panel/indicator to its own hwc layer? with that, we could be way more aggressive in terms of composite bypassing on the main layer, too19:34
tvosskgunn, yup ;)19:34
racarrtvoss: Ideally we could19:35
greybackkgunn: Yes, just want input buffer to the overlay/hwc layer.19:35
racarrI mean that's the thing, we could render everything in to an input buffer, then hand it off to hwcomposer19:35
racarrbut actually in many situations mir shouldn't have to use OpenGL at all19:35
tvossracarr, let's keep it simple in the beginning19:36
tvossI think we will get the biggest bang for the buck with 2 or 3 hwc layers19:36
greybacktvoss: my lack on knowedge on hwc poking up here. Are we limited to the number of hwc layers? On desktop, I thought there were 419:36
tvossgreyback, there are definitely limits19:36
kgunnracarr: greyback tvoss ...no matter what, you have to keep the gl fallback 100% of the time....its concevable altho unlikely  hw might not have an overlay19:36
tvossgreyback, but I don't know the exact number off the top of my head19:36
greybackkgunn: indeed19:36
racarrOh definitely19:36
racarryou need the GL fallback, and many times need to switch19:37
tvosskgunn, yup, graceful fallback has to be possible19:37
racarri.e. all of a sudden there is a lot visible19:37
racarror, all of a sudden we are using19:37
racarrthe dash blur19:37
kgunnright...you must in the instance where you do true 3d (perspective) transitions19:37
kgunnright19:37
kgunnactually dash blur might be ok19:37
tvossto me, it's just an implementation of surface, whether it is associated to an hwc layer19:37
tvoss+detail19:38
tvossit's actually 0..* from the hwclayer perspective19:38
kgunntvoss: right...i was going to say...to the android comment, its "that way" because of how they implemented the ui19:38
racarrtvoss: Well, the bit that is coming up though, is 'surfaces' (say layers) which are not backed19:38
greybackracarr: mad idea you'll probably hate, for case when the hwc says no, how about having QtSG does the whole render (i.e. grabs texture ids from Mir) itself?19:38
racarrby a hardware buffer, much less an HWC layer19:38
tvossracarr, sure, but that should be handled by the impl without hte consumer of the surface api having to know19:38
tvossgreyback, valid19:39
racarrbut instead, involve Qt rendering directly in to the compositor context19:39
tvossgreyback, I think we want a custom renderer for the scenegraph though19:39
tvossgreyback, one that knows about mir19:39
racarrtvoss: I know, but I am saying if rendering with OpenGL directly in to the framebuffer19:39
tvossracarr, the custom qt scenegraph renderer should take over the compositor19:39
racarrbecomes the 'common' case, i.e. say19:39
racarrwell all the time19:40
racarrthen you effectively lose your ability to use the HWC effectively19:40
racarrbecause you always have to composite things with GL first19:40
tvossracarr, the renderer could just be clever enough, I wouldn't invest too much time in special casing19:40
kgunnright but we talked about this....it might need to check with some hw/overlay first19:41
tvossracarr, I know what you mean, just saying that we can easily have hwc-awareness in a custom qt scenegraph renderer that we implement, too19:41
tvosskgunn, yup, ^ :)19:41
kgunntvoss: precisely!19:41
=== dandrader|afk is now known as dandrader
racarrOk but now I am confused again19:41
kgunn:))19:41
racarrbecause I thought we weren't actually using Qt scene graph, and just mir was exposing things out so QML could manipulate the mir data model in terms of QQuickItems19:42
greybacktvoss: well that involves teaching QtSG renderer about HWC. I had expected that Mir would isolate that from me. I was more thinking: QtSG sets a bunch of properties on Mir's Surfaces. Mir sees if HWC will do it. If not, QtSG can render whole scene with GL directly to the framebuffer, so Mir's compositor doesn't have to19:42
racarrif not, is the Qt scene graph actually the mir data model? Or is it a copy of the mir data model.19:42
kgunngreyback: sure...mir could hide hwc/overlays....with an interface like "hey try this"...if it can't then you go do gl19:43
kgunnthat's effectively what sf is doing in dorid19:43
kgunnor droid even19:43
kgunnracarr: i guess as i have been watching you guys chat & think about it....i would think it could be the mir data model (e.g. its just a common data model)19:45
greybackit reduces the 2 step: "Qt doing some rendering, then Mir doing compositing" into single step "Qt composites"19:45
greybackis idea I want to think about more tho19:45
racarrkgunn: But the mir data model also has all these synchronization responsibilities between other partso19:45
racarrof mir right19:45
racarrwhich are totally outside the scope of Qt19:45
racarrso I guess I have some doubts that the Qt scene graph will work as the mir data model.19:46
kgunnracarr: are we lumping control/execution in with data modeling ?19:46
kgunn...or maybe you guys see some  tightcoupling concerns i don't get19:46
racarrkgunn: Well, I mean only as much as you have to19:46
racarrexecution is based on state right19:46
kgunnracarr: totally....and from a composition pov that should be a one way street (e.g. what is executed won't effect the state/model)19:47
racarrRight but we have to present different synchronized views out of the data model19:48
racarri.e. one to the compositor (in this case it's a scene graph)19:48
kgunnwell...at least the only info back is timing of avialability of the fb19:48
racarrone to input, one to shell surface control, one to the frontend19:48
racarrso the data model is kind of a larger thing19:49
racarrthan a scene graph you see?19:49
* kgunn reads over and over trying to see19:50
kgunnracarr: i guess i see that you mean the data model might be used in a lot of diff places...but would it really be "different synch'd views"....meaning, wouldn't they all be looking at the same data model at any one instance in time ?19:52
racarrwell, they really are different views right even if it's the same data19:53
tvossgreyback, will follow up tomorrow19:53
racarrbut they need to be in synchronization, and I think our experiences so far19:53
=== tvoss is now known as tvoss|eod
racarrwith...difficulty in synchronization XD19:53
racarrkind of indicate that we are going to need some sort of smarter19:53
kgunnracarr: ok, i see what you mean by view...19:53
racarrdata model with support for some sort of transactional idea or19:53
racarrwell, some sort of smart synchronization, to take all the commands and control over a given frame and present19:54
racarrconsistent views to all the consumers19:54
kgunnracarr: mmmm....transactions like "input available/input handle", "app surf changed", "composition run", "fb avail /vsync"19:55
racarrwell, or maybe you need to do a series of things19:55
racarratomically19:55
racarri.e., get the main surface of a session and then deliver it focus19:56
racarror19:56
racarrquery things to conclude which rendering technique you need to use, or19:56
racarrselect the targets of touch events19:57
racarrand, I mean, qt scene graph (for example) can select targets of touch events inside the scene graph, etc19:57
racarrbut the rules for input dispatch inside Qt, are not the same at all as the rules for input dispatch in mir19:58
racarrAt this point about 50% of what I am saying is nonsense though because it's just way too abstract19:58
racarrgreyback and I are going to work on some first steps :)19:58
kgunnno worries...its fun to think about19:58
racarrHaha yesi20:01
racarrit's pleasant to think lofty thoughts about ideal rendering paths20:01
racarrafter a long bit of thinking not so lofty thoughts about20:01
racarrautopilot tests and power buttons and launching applications20:01
racarrlol20:01
racarrand phones20:01
racarrI finally switched my SIM card last night :)20:02
* greyback eod properly this time20:11
racarr*waves*20:11
racarrkgunn: Despite the rampant confusion greyback and I had a good talk elsewhere and I think we have at least a high level plan and some first steps.20:12
racarrand I understand the goal now lol20:12
kgunnracarr: awesome20:13
kgunnthomi: hey...so i'm collecting work items, and i remembered at least 2 ...i added them here....do you have more? https://blueprints.launchpad.net/ubuntu/+spec/client-1404-unity-ui-windowmanager20:24
thomikgunn: we (meaning QA) actually have a list - we were gonna talk to you about it in Oakland20:24
kgunnthomi: ack..so you wanna wait :)20:26
thomikgunn: I assume most of the planning stuff will happen at Oakland, so I figured it made sense to wait till then...20:26
thomiI mean, unless you have people twiddling their thumbs right now :)20:26
kgunnthomi: more like recovery via inebriation20:26
thomiyeah, I'd rather have sober developers work on this stuff, if it's all the same to you :P20:27
racarrI was thinking about that, one of the worst things about this distributed working is I feel like on a day like today20:27
racarrthe whole team should be in the bar with a licensed psychologist20:27
racarrbut it's just not feasible20:27
kgunnno doubt20:28
thomishould all fly to NZ, we'll go hiking in the hills :)20:28
kgunnracarr: fwiw...i sat in for olli today on rick's meeting20:28
kgunneven he looked & acted exhausted20:28
racarryeaaah :)20:30
=== sam113101 is now known as sam113101_afk
=== sam113101_afk is now known as sam113101
=== sam113101 is now known as sam113101_afk
=== sam113101_afk is now known as sam113101

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