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

=== tvoss_ is now known as tvoss
tvossalf_, ping06:09
alf_tvoss: pong06:10
hikikohi :)07:19
sil2100Morning07:21
hikikoquestion: although there's a libmirclient in the repos from what I see mir trunk is one cmake project (client and server are not separate) is this true? (I am not so familiar to cmake and maybe I'm wrong) actually, I am trying to configure cmake to use a mir backend so I wonder if I have to link to mirclient library or add the client source files in the CMakeLists... :)07:21
didrockshey sil2100, how was your week-end?07:22
tvosshikiko, you should link to the client library07:24
dufluhikiko: Depend on dev package libmirclient-dev, binary package libmirclient0, and just link to libmirclient07:25
dufluhikiko: Though I'm not sure if the Mir source is set up to export CMake packages yet...07:25
dufluHmm07:25
hikikoi think it isn't duflu but I am not sure07:29
* duflu checks07:29
hikikotvoss, you mean the system library?07:29
tvosshikiko, system library?07:30
dufluhikiko: No we don't have/install a native CMake package. We do however install pkgconfig files. You can import the "mirclient" pkgconfig module into CMake via http://www.cmake.org/cmake/help/v2.8.8/cmake.html#module:FindPkgConfig07:32
hikikotvoss, i mean the libmirclient that is installed in the system07:33
tvosshikiko, exactly, if you are working outside the mir source tree07:33
dufluhikiko: pkg_search_module(MIRCLIENT REQUIRED mirclient)07:34
hikikotvoss, I am woking on the mir server so, I have to use the libmirclient of the same branch I guess07:34
dufluand then refer to the magic variables MIRCLIENT_* (http://www.cmake.org/cmake/help/v2.8.8/cmake.html#module:FindPkgConfig)07:34
sil2100didrocks: hi! Too short ;) How about yours?07:34
hikikothank you duflu :D but this will use the installed libmirclient?07:34
didrockssil2100: same, too short :) still a little bit exhausted by last week07:35
didrocksbut otherwise good :)07:35
hikikommm if I run make install in the client that wont be a problem07:35
tvosshikiko, yup, then you shouldn't link against the installed one07:36
sil2100didrocks: at least we were able to release everything \o/07:36
dufluhikiko: Or just depend on debian package (libmirclient-dev)07:36
didrockssil2100: exactly! so I feel more relaxed now :)07:36
didrockssil2100: I wanted to ask you if you don't mind taking the apps stack still today for the time robru will need to catch up on his emails? :)07:37
sil2100didrocks: no problem ;)07:37
hikikohmmm thanks duflu but this is to link with the installed client library, in my case I am trying to do something on the server using the client library07:37
sil2100didrocks: I'm poking people right now already07:37
didrockssil2100: that, + the new components we will put under dailies today? (You reviewed them with Mirv, right?)07:37
didrockssil2100: excellent, thanks!07:37
hikikois there any way to link with the client of the same branch?07:37
hikiko(except of including the files)07:38
dufluhikiko: "same branch" as what?07:38
sil2100didrocks: all branches have been reviewed and merged in, so we should be able to redeploy stacks to get them daily released - but should I prepare needs-packaging bugs for the new packages?07:38
didrockssil2100: no need for needs-packaging bug. This is more to ask for someone to package it :)07:39
didrockssil2100: so yeah, just a MP with those, I'll prereview for NEWing before acking it07:40
didrocks(MP for putting them under daily release)07:40
Mirvyep, all reviewed07:40
sil2100didrocks: ACK, although I saw that someone already added at least 2 of the new packages to the stacks last week, without re-deploying of course07:40
didrocksMirv: sweetness! be prepared, I think we'll have more soon :)07:40
dufluhikiko: To use the client of your own local build you can export PKG_CONFIG_PATH=<mir_install_dir>/lib and then  pkg_search_module(MIRCLIENT REQUIRED mirclient)07:40
sil2100didrocks: like dbus-cpp and location-service to platform stack07:41
didrockssil2100: ah, mind preparing me a list? Will be easier for my little brain :) (or a comment in the MP)07:41
sil2100didrocks, Mirv: (but let's move that to -desktop) ;)07:41
dufluwhere you previously cmake -DCMAKE_INSTALL_PREFIX=<mir_install_dir> .. ; make ; make doc ; make install07:41
didrockssil2100: nice idea :)07:41
hikikooh, i see duflu, thanks a lot!( duflu and tvoss :D)07:42
=== hikiko is now known as Guest71645
=== hikiko_ is now known as hikiko
hikikoduflu, ping08:25
dufluhikiko, pong08:25
hikikoI have another cmake question, if you could help.. :)08:26
hikikoin the client CMakeLists.txt:08:26
hikikowe have the tests if MIR_PLATFORM STREQUAL gbm or android08:26
hikikoI am trying to create a mir platform in the server08:27
hikikobut08:27
hikikoI want to use the client as it is08:27
hikikobut if I have the mir platform the $MIR_PLATFORM is equal to 'mir' not gbm or android08:27
hikikodo you have any idea on how I could solve this?08:28
hikikoif client and server were separate projects I wouldn08:29
hikikot have to worry about that08:29
hikikobut now to build the server08:29
hikikoI need to compile the client as well08:29
dufluhikiko, I think you will find it's common for client+server to share a source package. And then be separate in the binary+dev packages produced08:30
dufluBut I don't quite understand the question08:30
hikikowell: I added a new platform in the root CMakeLists08:30
hikikocalled "mir"08:31
hikikoif I try to build from the root dir08:31
alan_ghikiko: if you need distinct options for the server and client then don't use a single MIR_PLATFORM variable08:31
hikikoalan_g, what could I do instead?08:32
alan_gMIR_CLIENT_PLATFORM and MIR_SERVER_PLATFORM08:32
hikiko:D08:32
dufluI don't understand the need. Mir requires client platform == server platform08:33
hikikommm but this way I have to modify both the client and the server isn't it?08:33
hikikoduflu, I am trying to write a nested mir08:33
hikikowhich means I have to implement a server08:33
hikikousing the client lib methods08:33
hikikoso, I need the client to be gbm or android08:34
hikikodepending on the machine08:34
hikikoand the server to be mir08:34
dufluUmm, there's no such thing as "client platform" is there? It just uses whatever "platform" the local server is08:34
hikikoyes08:34
dufluso MIR_PLATFORM means MIR_SERVER_PLATFORM08:34
hikikoin my case yes08:34
dufluwhich is "x11" now or something? :)08:34
hikikono no08:34
dufluor SDL08:35
hikikoit's not that task anymore duflu :)08:35
hikikoit's not the mir on X08:35
dufluOh, properly nested.08:35
hikikoyes :)08:35
dufluYes, MIR_PLATFORM=mir08:35
dufluHmm08:35
alan_ghikiko: AIUI you actually don't want to use the client libs in the server, you want to use the host client libs08:35
hikikoI think what alan_g said is the best solution08:35
hikikooh08:36
hikikoso alan_g08:36
hikikoI don't have to link with the client08:36
dufluI still don't think MIR_CLIENT_PLATFORM makes sense08:36
hikikobut with libmirclient installed in the system?08:36
alan_gduflu: +108:36
dufluMir clients will "just work". They're not compiled for a "platform"08:36
alan_ghikiko: yes08:36
hikikoso in the client I can just add an empty mir platform08:37
alan_ghikiko: only if you're not supporting any clients. ;)08:38
hikikohaha08:38
hikikobraindamage08:38
hikikolet me think it again :)08:38
dufluI'm confused. But it would be nice to not have this confusion later at MP time08:39
hikikoif I link with the system mirclient and I have a server-side platform the nested server will be the client that will use the system libmir08:39
hikikoand then I have to do a client library for that server using mir functions again08:40
hikikoso that the clients of the nested server08:40
hikikocan use the nested mir?08:40
alan_gyes08:40
hikikocool :D08:40
hikikoso MIR_PLATFORM is fine :) I don't need client and server!08:40
alan_gbecause, as duflu says, the client matches the server08:41
hikikoso I "just" have to write 2 clients: one that does what mir server does + a connection and one that does what mir client does08:42
dufluThe client just talks a protocol. The server could be remote if only it wasn't for efficient buffer management meaning it's local, for now08:42
dufluHmm08:43
* duflu imagines an RDP buffer implementation08:43
dufluOh, and the socket is filesystem based08:43
* alan_g imagines duflu inventing X1108:43
hikikoLOL08:43
* duflu regrets imagining08:44
dufluI did say RDP though. That's not X1108:44
* alan_g doesn't let facts get in the way of a good story08:44
hikikosorry :s but I don't understand everything, I can't do what I said without implement a new type of buffers or rdp for the moment? (i mean can i do a very minimal nested display for example without doing all that?)08:46
hikiko:S/rdp/any protocol08:46
hikikoI mean can I use the protobuf and the buffers as they are?08:47
hikikoI am refering to that: <duflu> The client just talks a protocol. The server could be remote if only it wasn't for efficient buffer management meaning it's local, for now08:48
dufluhikiko: Yes you're right. I was just imagining extending Mir's power in future08:48
hikikoyes :) I just got comfused with this ^ before you start imagining :) cool then!!08:50
hikikothank you very much both alan_g and duflu :D08:50
=== mzanetti is now known as mzanetti|lunch
=== mzanetti|lunch is now known as mzanetti
=== alan_g is now known as alan_g|vt
=== alan_g|vt is now known as alan_g
alan_galf_: I've discovered that, as of this morning, if I start mir on vt1 and a couple of clients on vt2 that after I switch to vt1 and back to vt2 the clients crash. Have you seen this?11:45
alf_alan_g: no11:49
alf_alan_g: but I haven't tried this recently11:49
alan_galf_: np (I was hoping for "yes, that is...")11:50
* alan_g decided to go back in time...11:51
alan_g...it happens with last week's code too. Fires up a box which didn't update since last week...11:58
alan_g...and on that I don't see a problem with last week's code. But when I pull head it goes boom...12:08
* alan_g checks versions carefully: 727 works, 728 fails12:16
alf_tvoss: @not implementing snapshot ubuntu api, hmm, interesting... well the shell has access to each surface's texture but only in the (EGL) context of the compositor, i.e., in the CompositingStrategy the shell will provide to mir12:18
tvossalf_, hmmm ... that's a good point. the shell is only taking a screenshot as it couldn't move around surfaces on screen12:20
tvossalf_, thinking about it12:20
alf_tvoss: (we can't give texture ids to the shell to use with its own EGL context, since that context comes from a different EGL display and backend (mir vs gbm))12:22
alf_tvoss: (mir vs gbm/android)12:22
tvossalf_, okay, thanks for the hint12:23
alf_tvoss: so we either keep the snapshot api, or the shell needs to get the snapshots as part of its compositing process12:24
tvossyup, I was thinking about the latter one ...12:25
tvossbut let me check with Saviq, too12:25
tvossalf_, in a few, though, need to finish a mail12:25
=== alan_g is now known as alan_g|lunch
alf_tvoss: no problem... if we drop the API I need to start thinking about what to work on next :)12:26
tvossalf_, I think we need to keep it intact for the time being, just need to think it threw completely12:29
alf_tvoss: "or the shell needs to get the snapshots as part of its compositing process" => "get *and draw* the snapshots...", since even in this case the shell still can't use the surface textures with its own inprocess client context12:57
=== alan_g|lunch is now known as alan_g
hikikoanother question: the MirNativeBuffer in the client library is the same thing as android and gbm buffers? or this is the MirSurface in the client?13:30
alan_ghikiko: yes13:33
=== alan_g is now known as alan_g|tea
racarrGood morning!14:37
roman2861Who knows abous Mir on Nexus 10?14:42
racarrroman2861: kdub is your best bet14:46
racarrMy memory is that support on nexus 10 isn't that explored14:47
=== alan_g|tea is now known as alan_g
kdubroman2861, right, there's a plan to support the nexus 10, but at the moment, there are bugs that make it unusable15:00
roman2861I understood it when i tried to install Mir on tablet) But when you expect to fix bugs?15:02
kdubroman2861, hopefully soon, but you can track this blueprint for updates https://blueprints.launchpad.net/ubuntu/+spec/client-1307-mir-nexus1015:10
roman2861Thanks15:11
=== mmrazik is now known as mmrazik|afk
kdubstatus today, trying to figure out composition bypass, cleaning up some mc:: interfaces, and opening up an ipc path for clients to request swapinterval 0/115:15
alf_alan_g: kdub: @lp 1189443, problem is that, due to the way we handle force_client_completion through exceptions, the clients can occasionally get an error response when asking from a buffer, but they are not in a good position to handle this situation right now. Also, what does getting an error response mean? Is it a fatal error, or should the client try again? It's not clear from a client's perspective.15:19
ubot5Launchpad bug 1189443 in Mir "Mir clients crash when switching VTs" [Critical,New] https://launchpad.net/bugs/118944315:19
alan_galf_: I don't think exceptions are right when switching VT15:21
alf_alan_g: kdub: Yeah, perhaps we should rethink using an exception as a reaction to force_client_completion().15:22
kdubwhy do we force_client_completion when switching vt?15:22
alan_gFrom a client perspective failing to swap_buffer is probably severe15:22
alf_kdub: to be able to stop the communicator's threads15:22
alf_kdub: same situation as when shutting down, but then we start again when we resume :)15:23
alan_galf_: I don't think they are the same situation15:23
racarrthey are in the code now ;)15:24
kdubwe could also have a different method than just 'force_client_completion' i guess15:24
racarrThis reminds me of the15:24
kdubthat wil retry the request instead of bouncing an error out to the clients15:24
alf_alan_g: right now they are, since we stop the communicator when switching VTs15:24
alan_gracarr: we're discussing what should be15:24
racarrexception handling in swap_client_buffer in15:24
racarrerr15:24
racarracquire client buffer15:24
racarrin SwapperSwitcher15:24
racarrexcept in this case there is no meaningful way to propagate a "try again" flag15:25
alan_galf_: kdub racarr - I knew it was better to call it "shutdown()" ;)15:26
alan_g"pause" shouldn't need to abort requests in progress15:27
alan_g(Aren't those threads blocked anyway)15:27
alan_ghangout?15:28
alf_alan_g: in the old version it didn't, it just ensured that any requests in progress would finish in some finite time15:28
alf_alan_g: sure15:28
racarrI am actually jumping on15:29
racarrunity8-mir sync now15:29
alf_alan_g: (and it was called force_requests_to_complete())15:29
racarrI can join you guys after, or if you want to delay a little15:29
Saviqracarr, alf_, hey, Gerry had to split, do you have anything I should know about or need to know something from me? or can we skip todays sync meeting?15:29
alan_ghttps://plus.google.com/hangouts/_/848de4bb9222c984f54e33476685aee9165bbfcc?hl=en-GB15:30
alf_Saviq: have you talked to tvoss about the snapshot API ?15:30
Saviqalf_, not yet,15:30
tvossalf_, not yet15:30
* alan_g is prepared to wait to get right decision15:30
tvossSaviq, otp right now, will ping you after that15:30
racarrSaviq: Yes, Gerry pinged me. Um...ricmm is coming today I believe15:30
Saviqok then, comign15:30
racarrto talk about landing the dependencies (should hopefully happen, today, tomorrow)15:30
alf_Saviq: tvoss: ok, thanks15:31
racarralf_: I was thinking about snapshots15:32
racarrwe can't share the texture ID directly, but we can share the buffer15:32
racarrright?15:35
racarrThe same way we would to the compositor15:36
racarrbut it becomes kind of strange...15:36
alf_racarr: buffer == gbm/android native buffer?16:12
racarryes16:12
racarrI'm having trouble wrapping my head around exaclty what the synchronization problems are though16:12
racarrDone with shell sync, if anyone wants to hang out still. There are a few new things for us that we could go over too16:13
racarror we can wait until tomorrow (and I will try and clarify thoughts on them today)16:13
alf_racarr: also, in this case the mir egl platform would need to be able to handle those types and create egl images from them16:17
tvossSaviq, ping16:20
Saviqtvoss, pong16:20
racarralf_: Yes. That's what I was thinking16:20
racarrit seems like we could implement that16:21
racarrcan we on android?!?!16:21
alf_kdub: ^^ Any idea?16:23
alf_kdub: Can we implement eglCreateImageKHR for the Mir EGL platform on Android?16:23
racarrWhy can't we use the existing one on android?16:24
racarrXD, not trying to be contrary, just having trouble wrapping my head around it16:24
kdubright, i don't know that there's anything to implement16:24
racarrthere is both the problem of hooking together the bits16:24
racarrbut then there is the problem o16:24
racarris there a synchronization16:25
racarrproblem16:25
racarrI mean this is basically like a client acquiring16:25
racarranother clients buffer16:25
racarrgranted an internal client16:25
racarrhey that's the name of an interface!16:25
racarrbut still.16:25
alf_racarr: yes, our buffer swapping scheme assumes 1 producer 1 consumer (for proper functioning) and this breaks the assumption16:34
alf_racarr: we still need some kind of "peeking" functionality, but if we hand out native buffer objects it complicates things16:35
alf_racarr: kdub: perhaps "EGLImage InternalClient::egl_create_image(EGLDisplay disp, EGLClientBuffer buf)" and "EGLClientBuffer Buffer::egl_client_buffer()"... it's all too hazy right now :)16:41
* kdub doesnt really know the context we're talking about16:42
racarralf_: That is what I am thinking.16:42
racarrbut it's too hazy for me to be 100% convinced it works16:42
racarrkdub: Snapshots16:42
racarrwell not snaphots16:42
racarrpreview16:42
racarrs16:42
kdubwith android you can eglCreateImageKHR with the android native buffer type16:42
racarrkdub: Mm. I think the confusing bit is16:44
racarrif one client (i.e. the shell InternalClient)16:44
racarrsay the dash16:44
racarrneeds to preview an application16:44
racarrIt has to dos omething akin to like16:44
racarrcompositor_acquire16:44
racarr(I think?)16:44
racarrthe implications of this are hazy16:44
racarrto me XD16:45
racarrmaybe not to you16:45
alf_racarr: probably compositor_peek(), which at least is somewhat clear to me :)16:45
kdubright :)16:45
racarrit is somehow an acquire though right because how can you know when the client is done with it16:46
racarrespescially if we don't glflush on buffer swap16:46
racarrwhich we can only get away with for so long :p16:46
alf_racarr: right, it's more of a lock, you will need to peek/release16:46
racarrI have a feeling there will be something called a fence involved16:47
racarrXD16:47
alf_racarr: kdub: What confuses me (probably because I am not familiar with Android EGL impl., is how you would create an EGLImage for the *Mir* EGLDisplay? Could you just write: eglCreateImageKHR(mir_egl_display, android_native_buffer)?16:49
racarrIn android it's all the same EGLDisplay16:50
kdubright16:51
racarrSo. I think so!16:51
kdubhttp://bazaar.launchpad.net/~mir-team/mir/trunk/view/head:/src/server/graphics/android/buffer.cpp16:51
alf_racarr: kdub: ok, so only for Mesa we would need to actually implement eglCreateImageKHR for the "mir" egl platform16:54
alf_racarr: kdub: ok, it's becoming a bit clearer... this could work if the access to the buffers is synced by using a peek/lock mechanism.16:58
kdubalf_, right, i think so16:59
alf_racarr: kdub: we could even enforce this at the API level, Surface::with_latest_buffer_egl_image_do(EGLDisplay, InternalClient, std::function<void(EGLImage)>) ... we would safely create/release the image, and just guarantee that it's valid for the duration of the callback function.17:00
racarrthat API might be difficult to use17:01
racarroh17:02
racarrI'm not sure why I thought that17:02
racarrXD17:02
alf_all: Have a great rest of day!17:02
racarralf_: Yes. I think it makes sense.17:02
racarrYou too!17:03
racarrLets talk about this tomorrow17:03
racarronce its had a little time to clarify17:03
alf_racarr: sure17:03
racarrSee ya!17:03
racarrWhen does kgunn come back?17:11
=== alan_g is now known as alan_g|life
=== marlinc_ is now known as marlinc
=== yofel_ is now known as yofel
=== racarr is now known as racarr|lunch
racarr|lunchHappy lunch!18:32
=== racarr|lunch is now known as racarr
racarrAnyone around with some qmake knowledge?20:05
racarrNow I know some qmake!20:48
=== Wellark_ is now known as Wellark
bregma*tsk* *tsk* it seems the mir codebase is liberally sprinkled with assert() macros executing code with side effects22:59
bregmaturns out that's always been a bad idea22:59
racarrIt's not the best idea XD23:02
racarrI think most of the asserts23:03
racarrare more of a "TODO"23:03
racarrthan anything else23:03
kdubthey can be removed, i'd say23:04
bregmathe test suite depends on them actually asserting23:06
bregmaI have an MP forthcoming23:06
bregmaslowly23:06
bregmathe root of the problem is that CMake sets NDEBUG by default in the current version23:07
racarrAh23:08
racarrthanks :)23:08
bregmadoes mir have an automerger?23:09
racarryes23:14
racarr“Follow the Road of White Nettles for three days into the mountains, and you will come to a hermitage perched on a cliff. A learned brother dwells there who keeps copies of our client’s documentation. He will advise you on the design of the system.”23:26
racarr...hahahaha23:26
racarrPretty much done for today :) Will be around for a while at least at computer if I can be helpful23:35

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