/srv/irclogs.ubuntu.com/2013/03/20/#ubuntu-mir.txt

jonohttp://www.reddit.com/r/LinuxActionShow/comments/1alqka/regarding_matt_and_the_monkey_suit_its_on_like/00:28
jonoprobably best to not let this guy down ^00:29
jono:-)00:29
RAOFUsed by default in a non-Ubuntu distro is a ballsy call.00:41
robert_ancellHas anyone compiled qmir before?01:32
robert_ancellqmake ; make doesn't seem to do it for me01:32
smspillazRAOF: oh cool, you got buffer age working02:09
RAOFsmspillaz: Yeah. Next up: actually using it in XMir.02:10
RAOFActually, before that is probably ‘extend __DRIbuffer to allow me to pass prime fds to dri drivers, damnit’02:10
smspillazRAOF: I wonder how you got it to work - the DRI drivers don't really make any guaruntees about what buffer you're going to get next02:11
smspillazits all very driver specific02:11
smspillazsome drivers with copy-back-to-front on swap, others will swap, others triple buffer02:11
smspillazthough I guess that all happens within the xserver bits02:12
RAOF*Mir* knows exactly what buffer it's going to send to the client.02:12
smspillazyeah I figured as much02:12
RAOFRight. Each buffer the client receives has a (client-)unique id; it's reasonably easy to implement age tracking on that ;)02:12
smspillazRAOF: how do you handle the discrepancies between the drivers though ?02:12
RAOFWhich discrepancies between drivers? We exclusively pageflip, and handle n-buffering ourselves.02:13
RAOFWe don't use any of the X bits; we're not using the DRI2 protocol.02:14
RAOFNothing ever gets a SwapBuffers request, except egl/platform_mir, which we own.02:15
smspillazRAOF: remind me - do the Xorg bits of dri2 have driver-specific things there ?02:15
smspillazI looked into doing this in X a while ago and remembered there was some driver-specific stuff that would have made it difficult, but it was a while ago02:16
RAOFYes - the X bit of SwapBuffers calls into the DDXes SwapBuffers function.02:16
smspillazah okay that makes sense02:16
RAOFI think for X you would indeed need to push this all the way down to the DDX, or _possibly_ hook into the bits generating intel swap events.02:17
smspillazRAOF: it was a total PITA02:17
RAOFThis is not an uncommon sentiment when working with X :)02:18
smspillazyeah it was this stuff here http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/src/intel_dri.c#n83802:18
RAOFI tried to factor a bunch of that stuff out into the X server at one point.02:19
RAOFBecause all 3 of the drivers were doing the _exact_ same thing, and they had exactly the same segfault bug.02:19
smspillazheh02:20
smspillazI think nouveau works a little differently02:20
smspillazintel has the optional triple-buffer thing02:20
smspillaznouveau didn't02:20
smspillazI remember that much02:20
RAOFYeah. At one point -ati and -nouveau had just copy&pasted the -intel code and run a sed over the names; it's diverged a bit from there :)02:21
smspillazfelt like it02:21
smspillazAlso I83002:21
smspillazheh02:21
smspillazParty like its 200202:21
racarrsmspillaz: !02:21
smspillazracarr: hi'02:21
racarrRAOF: Just left some comments on buffer age...02:21
smspillazno I'm not writing any code for you :p02:22
racarrHi :)02:22
racarrthats what you say now02:22
smspillazseriously, I'm not02:22
smspillaz:)02:22
racarrI know :)02:22
smspillazalso, you guys need to fix the privacy settings02:24
smspillazI can't see half the merge proposals02:24
racarrwip02:30
smspillazracarr: no, as in I click on them and I get a page that says "go away"02:30
smspillazexample: https://code.launchpad.net/~robertcarr/mir/prepare-for-inprocess-egl-clients/+merge/15388902:31
smspillaz(you'll need to log out)02:31
RAOFI _think_ it might be the merges or the branches that were set up prior to going public?02:31
RAOFIt's not clear how to make them public.02:31
smspillazRAOF: I think the lp settings are that projects are private or public, not branches02:32
smspillazso something is broken somewhere02:32
RAOFIncorrect! lp:~raof/mir/client-side-buffer-age was a private branch.02:32
RAOFAnd now that it's a public branch the merge proposal is also public.02:33
RAOFOk.02:33
smspillazRAOF: I don't see the MP02:33
smspillazits not public :)P02:33
RAOFhttps://code.launchpad.net/~raof/mir/client-side-buffer-age/+merge/15186902:33
RAOF?02:33
smspillazRAOF: so I can see if if you give me the link02:33
smspillazbut it doesn't turn up in +merges or +activereviews02:34
RAOFThat might take a little while to propagate?02:35
smspillazshould be instant02:35
racarrI think it will be fixed once we get all the mps through02:37
smspillazyeah02:41
RAOFracarr: Thanks for the review.02:42
racarrRAOF: Sorry its kind of scattered02:47
RAOFThat's ok.02:47
racarrI am really tired...have been a little too full stream all around last 3-4 days :)02:47
racarrI thought I would try and say something though02:47
racarrand overall it makes sense :)02:47
RAOFWhat do you think of pulling the age() related bits into ClientBuffer; the implementation shouldn't be different between AndroidClientBuffer and GBMClientBuffer.02:49
RAOFI'm leary of mixing interface and implementation there.02:51
RAOFWoo! Android build builds!03:02
tehclouddoes having an Android build mean Mir has been tainted with Java?03:05
TheMusotehcloud: No03:05
TheMusotehcloud: Java is only used for apps on android, I believe all the infrastructure stuff is C/++.03:06
TheMusoC/C++ even.03:06
RAOFAnd we're not even using that; we're using the android kernel and GLES drivers.03:13
TheMusoI know that, just clarrifying that java is only used at the app/UI level.03:23
RAOFYeah, I presume you did, but tehcloud probably didn't :)03:23
tehcloudyeah, I'm not exactly an expert in this subject matter03:24
smspillazTheMuso: brb, off invention "++"03:24
smspillazits C++ with the C bits removed03:24
smspillazoh wait that's Java, never mind03:24
smspillaz*inventing03:25
TheMusolol03:25
smspillazThey should have called Java "++"03:25
smspillazthat would have ended up in so much hilarious confusion03:25
tehcloudin an ideal world there would be no Java03:26
TheMusoJava has its place, just like all languages.03:26
TheMusoI don't use it myself.03:26
TheMusoBut can understand, accept and respect its usefulness.03:26
tehcloudthat's why you think that way ;)03:26
tehcloudtry using it at work03:26
smspillazJava would be useful if we didn't have AWT03:27
RAOFMan, the ubuntu touch images don't even have rsync in them!03:33
racarrRAOF: "tsyncninja" A touch based file synchronization utility based on the popular fruit slicing mini game03:37
RAOFHm. “make style_check” isn't really very useful, is it ☺03:38
RAOF ~/Canonical/Mir/mir/build ⮀ make style_check 2>&1 | wc -l03:38
RAOF103103:38
racarrRAOF: I always grep for the files I modified03:38
racarrand just fix those03:39
racarr"always"->"on good days"03:39
racarrRAOF: I kind of like pulling the age related bits in...(just catching backscroll)03:51
racarrthe mixing implementation and interface is a red flag though03:51
racarrthe other red flag is the03:51
racarrimplementation of the ageing semantics on the mock buffer with the expectations03:51
racarrin one of the tests03:51
RAOFYeah, that's rather awkward.03:51
racarrwhich says that really there is03:51
racarranother object03:51
racarrBufferAgeTracker (complete strawman name)03:52
racarrand its an integration test03:52
racarrbut...eh03:52
racarrI am not sure how strongly I feel about it03:52
dufluracarr: Orange flag at most. If there's no real testing value gained by mocking systems code then I think it's often OK to mix implementation with interface03:52
racarrSure, orange flag :)03:53
racarrMaybe Buffer has a member03:53
racarrtype BufferAge03:54
RAOFClientBuffer could well have a public uint32_t age, yes.03:54
dufluOn the other hand... being able to test code natively is preferable to mocking. And if you can do that, then you don't need to separate interface from implementation03:54
racarrRAOF: No I mean a03:54
racarrBufferAge age, and then the methods increment_age, mark_as_submitted, age()03:54
racarretc03:54
racarrmove to BufferAge definition03:54
racarrand out of the platform code03:54
RAOFPossibly. I *think* the Buffer might actually want to do something on mark_as_submitted(), though.03:55
racarrduflu: Here the interface is seperated because it actually has multiple implementations03:55
* duflu stops generalizing about code he hasn't seen yet03:56
racarrRAOF: does it have to do with the age03:56
racarrduflu: Hehe. my number 1 hobby!03:56
RAOFracarr: No, not to do with age.03:56
racarrRAOF: Then I would imagine03:56
dufluGenerally speaking... we should use Go.03:56
racarrbuffer.submit() does that thing and03:56
racarralso calls buffer_age.mark_as_submitted()03:56
RAOFracarr: The *age* interface doesn't actually have multiple implementations, though.03:57
racarrRAOF: In what tense? Right now it does i.e. increment_age is implemented in the test, the android buffer and the gbm buffer03:58
racarrso the idea is to just move the implementation to a single shared BufferAge type03:58
RAOFracarr: In the sense that it's ever sensible to have different behaviour there.03:58
racarrmm03:58
racarrso I mean it's a concrete type03:58
racarrits just to avoid mixing implementation in to the ClientBuffer API03:58
racarrI guess there is still some :)03:59
RAOFAlternatively, ClientBuffer abstract, AgeableBuffer concrete, {GBM,Android}ClientBuffer inherits from both?03:59
racarrRAOF: Mm04:00
racarrRAOF: Anyway...I don't feel strongly enough about any of these to feel like04:01
racarrblocking on it...but maybe if you think one is a particularly good idea or europe has a good idea :)04:01
RAOFHm, it seems that our coding style has a significant exception in the tests.06:08
* duflu would prefer to call it a coding /fashion/06:17
RAOFCoding /ambiance/06:19
tvossuRAOping06:32
tvossRAOF, ping06:32
RAOFYo!06:32
RAOFtvoss: What's up?06:36
tvossRAOF, good morning :) looking at your buffer age branch, did you run it with XMir, yet?06:37
RAOFtvoss: No, haven't yet done the xmir bit.06:37
tvossRAOF, ah, was just curious. I remember you mentioning that the buffer age stuff might help06:37
RAOFXMir is currently in a bit of flux, too; it's half way through being adjusted to lp:~raof/mir/use-dma-buf06:38
tvossRAOF, ah cool :)06:41
* tvoss is going to review racarr's branch now06:41
RAOFIt should help with XMir performance though, yeah.06:45
* RAOF has performance-parity third on his TODO list, under finish-buffer-age and use-dma-buf06:45
RAOFThat's going to be _all manner of fun_06:45
tvossRAOF, \o/06:48
=== alan_g is now known as alan_g|afk
dufluHurray... mir just overflowed it's first page of bugs in Launchpad (75 per page) :/08:55
duflu*its08:55
RAOFA fair number of those are "fix committed", though.08:57
dufluYeah, first comment still holds. But I wonder when the "0.0.2" release should be tagged and we move on to more meaningful milestone numbers...08:58
dufluOh great. 0.0.2 is already marked as released, but also still active08:59
dufluThat needs fixing08:59
duflutvoss: What should our next milestone be? 0.0.3? 0.1.0?09:00
dufluAssuming 0.0.3. We can change it later...09:01
RAOFAre those milestones at all meaningful?09:02
dufluRAOF: No. I just realized....09:03
dufluRAOF: We need to fix up our branch-to-series relationships before milestones make sense09:04
dufluI'll bug Robert about it when he's online tomorrow09:04
tvossduflu, yeah, talk to Robert or kgunn please09:09
duflutvoss: Writing detailed email...09:09
tvossduflu, thank you09:10
=== alan_g|afk is now known as alan_g
alan_gGood morning. (It is snowing!)09:14
duflualan_g: Morning. Not sure whether to be jealous.09:16
alan_gduflu: don't be - it'll just make everything wet and cold09:17
alan_gduflu: we need to reach consensus about include (directory) names as Europe and Australia seem to think differently. Have you seen the thread on mir-devel?09:19
duflualan_g: Keep forgetting to subscribe to that. Too many other mediums of Mir discussion. Will do so now09:19
alan_gduflu: A choice of mediums isn't bad.09:21
dufluWell, only if one is more effective than another and it's not being used09:22
RAOFalan_g: I'd be interested to hear your thoughts on the great "where to put buffer aging implementation"fest of '13 racarr & I had in backscroll, too.09:26
* alan_g wonders where to find it09:27
RAOFalan_g: Ah, you don't have backscroll? Let me pastebin09:30
RAOFalan_g: http://paste2.org/p/322884209:32
alan_gRAOF: Looking...09:32
duflualan_g: As part of "breaking the dependency on Android input", doesn't that mean that desktop builds should not enter any *android* directories?09:36
alan_gRAOF: ...need to remind myself what the code looks like...09:36
duflu"[alan-griffiths] Input refactoring (don't depend on Android): DONE"09:36
alan_gduflu: It was porting the input stack to use std/boost instead of android equivalents.09:38
duflualan_g: But still desktop builds enter a couple of *android* dirs?09:38
alan_gduflu: yes09:38
dufluThat's a bit confusing.09:39
dufluHmm09:39
alan_gduflu: we've adopted more android code than just the input stack09:41
duflualan_g: Even the android input stack still seems to be required for desktop input. Is that right?09:42
alan_gduflu: we've forked the android input stack for use on all platforms09:42
alan_gduflu: and reduced its dependency on other android stuff to a bare minimum09:43
dufluAh, OK. So there will be no escaping the 3rd party code generating all those errors/warnings that clang dislikes09:43
alan_gduflu: not without work09:44
dufluHeh09:44
* RAOF heads bedwards09:48
* duflu heads kitchen-wards10:36
tvosskatie, ping10:57
katietvoss pong10:57
tvosskatie, hey, got anything to sync up?10:59
katietvoss, a couple of things, yes.. shall we jump on a hangout?11:00
tvosskatie, sure, let me grab coffee :)11:01
=== mmrazik is now known as mmrazik|lunch
=== mmrazik|lunch is now known as mmrazik
=== yofel_ is now known as yofel
alan_galf_: ping14:23
alf_alan_g: pong14:36
alan_galf_: do you want to do any more on render-surfaces-use-display-server or shall I set it to approved?14:36
alf_alan_g: I am ok for now, I prefer to do any additional enhancements in another MP14:37
* alf_ prepares himself mentally for a review of lp:~robertcarr/mir/send-input-to-clients14:43
* alan_g has just finished the mornings reviews. alf_, send-input-to-clients isn't the worst on the brain.14:48
alan_g*morning's14:48
alf_alan_g: I haven't checked in detail, I just saw the +1066 diff :)14:49
=== alan_g is now known as alan_g|tea
=== alan_g|tea is now known as alan_g
kdub_hey all, status, still up north at the gpu conference, will be back to a normal day tomorrow15:42
alan_gkdub: hope you're having fun!15:47
kdub_alan_g, thanks! picking up on some useful info, a lot of emphasis on gpu compute though15:51
alan_gkdub: that doesn't surprise me. I know a lot of folks that believe that is what GPUs are for.15:52
alan_g(That's what comes of working with investment banks.)15:52
=== alan_g is now known as alan_g|afk
=== alan_g|afk is now known as alan_g
=== mmrazik is now known as mmrazik|otp
racarrMorning16:07
alf_status: changed render-surfaces to use DisplayServer, reviewing, investigating test failure in VM CI and VM autolanding.16:10
racarralan_g: for comments on send-input-to-clients16:21
racarrare you thinking just16:22
racarrmsh::Surface implements mi::InputTarget or some such16:22
racarror something else...16:22
racarrI thought about that but then it escaped my mind XD16:22
alan_gracarr: that sounds sensible16:23
racarrOk :)16:28
alf_alan_g: racarr: @send-input-to-clients, in the same spirit as Alan's comment, I think that FocusSelector belongs in shell::, not in input::16:30
alan_galf_: true16:33
racarralf_: Yeah sounds right16:37
racarralan_g: Lots of reinterpret_casts removed in r515 for prepare-for-inprocess-egl16:40
alan_gracarr: excellent!16:40
racarralan_g: alf_: Do you guys need review on anything this morning before I sink in to16:46
racarrsend-input-to-clients16:46
alan_gracarr: no - there were too many reviews for me to write any code16:47
racarr*whistles innocently*16:48
tvosskdub, ping16:49
alf_racarr: no pending MPs for me, thanks!16:50
racarrNext feature branch for me btw is, clients-receive-input.16:53
racarrwhich is going to look like. MirSurface, takes a MirEventDelegate containing bool handle_event(...,MirEvent,...)16:53
racarrconstructs an InputReceiverThread from it. InputReceiverThread uses epoll to wake when there is data on the FD and uses the InputReceiver to consume16:54
racarrpending events and hand them out to the callback16:54
racarrif anyone has any16:54
racarrthoughts/alternatives/etc16:54
=== mmrazik|otp is now known as mmrazik
=== kgunn is now known as kgunnAFK
racarralan_g: I am struck trying to decide on the name of the17:37
racarrinterface msh::Surface exposes to the InputManager17:37
racarrthere also has to be one for msh::Session17:37
racarrinput::Surface is just more trouble XD17:37
alan_gracarr: you had mi::InputTarget earlier. Changed your mind?17:38
racarroh17:38
racarralan_g: Well only because there are two17:38
racarrand SessionTarget reads weird17:38
racarrbut really the session interface is not used as an input target (it doesn't have an FD) it's just for info17:39
racarrso mi::ApplicationInfo17:39
racarrmi::Target17:39
racarrset_input_focus_to(ApplicationInfo, target)17:39
racarrit feels redundant to write mi::InputTarget, etc.17:39
alan_gDoes "Application" belong there? Or is it a more general "Session"?17:40
racarralan_g: It's hard to say17:40
racarrwe create a17:40
alan_gA little redundancy can help clarity17:40
racarrdroidinput::InputApplicationHandle17:40
racarrfrom it17:40
alan_gYeah, but android input stack wasn't quite our use case17:42
racarrmm17:42
racarrI think its probably closer to a session17:42
alan_gracarr: we can rename things in the input stack to bring it into line17:43
racarrset_input_focus_to(mi::SessionTarget, mi::SurfaceTarget)?17:43
racarrmm17:43
alan_gracarr: but lets do that later17:43
racarryes aybe a good task for next week if we can land the basics of input this week17:43
racarrthen clean up, (espescially down in droidinput)17:43
racarrnext week once it is under end to end test17:43
racarrand ITERATE!17:44
racarralan_g: Just realizing also...I guess msh::SingleVisibilityFocusMechanism needs to work in terms17:45
alan_gracarr: yes, and we can lose MIR_INPUT_USE_ANDROID_TYPES after that too17:45
racarrof msh::Session17:46
racarrand not mf::Surface :)17:46
racarrso it can see the SessionTarget type17:46
alan_gracarr: ack17:46
racarrugh but there is no msh::Session anymore17:49
racarrjust application session17:50
racarrwhich if you use that get back to the point where you cant mock session for the focus mechanism.17:50
alan_gracarr: there is, it is in the src directory17:50
alan_gracarr: sorry, you're right17:50
racarralan_g: session not surface I got it17:50
racarrbackwards too17:50
alan_gracarr: we're missing more than one interface around this area17:51
racarrmm17:51
racarrtrying to find a way to proceed for this branch without tearing apart shell again aha17:52
racarrI dont like using the ApplicationSession interface for the FocusMechanism set_focus_arg because then it becomes cumbersome to mock17:53
racarr(need constructor args, etc...its weird)17:54
racarrbut also don't like defining17:54
racarrhmm17:54
racarrat first I didn't like it...msh::ApplicationSession implements msh::Session implements mf::Session17:54
racarrbut maybe that's really how it is.17:54
racarrdefault_surface for example17:54
racarris part of17:54
racarrmsh::Session17:55
racarrbut not mf::Session17:55
alan_gracarr: yes, but that *ought* to be part of an interface, not just in an implementation17:56
=== mmrazik is now known as mmrazik|otp
racarralan_g: Yes msh::Session is the interface18:00
racarrmsh::ApplicationSession is the implementation18:00
racarrdefault_surface is introduced at msh::Session18:00
alan_gracarr: I'm sure you'll sort it all out while I take my wife out for a meal.18:01
alan_g;)18:01
racarralan_g: Have a good evening :)18:05
racarrill sort it out18:05
racarrI have this suspiscion that (not for this branch)18:05
=== alan_g is now known as alan_g|life
racarrbut maybe really mf::Surface and mf::Sessio don't exist18:05
racarrand SessionStore::create_session and create_surface_for18:05
racarrreturn18:05
racarrSessionIPCPackage and SurfaceIPCPackage18:05
racarrexcept then how do you advance the buffer ;)18:05
racarrfor now msh::Session I believe18:06
=== mmrazik|otp is now known as mmrazik
alan_g|liferacarr: they exist, but they're not quite correct yet18:08
=== mmrazik is now known as mmrazik|eod
=== mmrazik|eod is now known as mmrazik
racarrThis is a difficult refactoring19:05
racarrbecause...19:06
racarrhmm well if you introduce msh::Session inbetween mf::Session and ApplicationSession19:06
racarrthe SessionManager wants to deal with things in terms of msh::Session (to say pass to the focus mechanism)19:07
racarrbut has to take mf::Session as input and as output19:07
racarrmer...19:32
racarrfeel stuck on a good solution. espescially one that doesn't double the diff size of this branch so breaking for lunch19:33
racarrthai should be coming any minute now...19:33
=== kgunnAFK is now known as kgunn
racarrif mf::SessionStore::open/close session used the same style as mf::Session open/close/get with ID.20:20
racarrthen the internals (session container, focus mechanism including bridge to input) can work in terms of msh::Session (inherits mf::Session) which can implement20:20
racarrInputTarget...20:21
racarrthe problem is app_container->remove_session/create_session has to take the same type (or a mapping must be maintained) as session_store open/close20:21
racarrnvm that is just weird. because the SessionMediator only accesses one instance of session20:26
racarrper instance20:26
racarrthe only thing I can come up with, is20:39
racarreeeeerrrr...no nvm20:39
racarr*facepalm*20:39
CodyShello???21:16
kgunnrobert_ancell: i swear i thot you changed this...i'm going bp crazy https://blueprints.launchpad.net/ubuntu/+spec/client-1303-mir-phone21:16
kgunncan you make it mir-team drafter ^21:16
kgunnCodyS: hello21:16
robert_ancellkdub, yeah, I'm sure I changed that too..21:17
CodySok thanks...i wasn't sure if i was lagging too bad...21:17
kgunnrobert_ancell: arrgggg....cached webpage21:17
robert_ancellno, I just updated it then21:17
kgunnnevermind (sheepishly)21:17
kgunnoh21:18
kgunnrobert_ancell: got another one https://blueprints.launchpad.net/ubuntu/+spec/client-1303-mir-inter-app-data-transfer21:30
robert_ancellkgunn, done21:30
kdub_racarr, for in-process-egl mp, i'm a bit hazy as to what eglNativeDisplayContainer is an interface to22:09
kdub_also hooray for android build ci!22:10
robert_ancellracarr, I'm reading alan_g|life's ML post about the use of mir_toolkit for server processes - when you use Qt in process does it need a special interface to compile against? i.e. an interface that is different to the server and the client interfaces22:19
racarrrobert_ancell: I dont thinks o but some of the interfaces are shared between the server and client23:00
racarrI havent fully processed that ML discussion yet23:00
=== kgunn is now known as kgunnAFK

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