[01:22] RAOF: I tried to make a little progress on Mir's support for i915 but the issue appears to be lower level any idea? https://bugs.launchpad.net/mir/+bug/1275398 [01:22] Launchpad bug 1275398 in Mir "i945: Mir GL clients are rendered as black or transparent windows when using i945 graphics" [High,Triaged] [01:22] (i915 driver, i945 chip) [01:45] duflu: Do you know if it's black buffers, or transparent buffers? [01:45] RAOF: Varies between clients :) [01:45] Possibly varies between clients on RGBX/RGBA [01:46] Ah, so the buffers would just be uninitialised, then. [01:46] Almost. [01:46] I guess our buffer initialiser gets to them, but they never get _new_ content. [01:46] duflu: Does in-process rendering work? [01:46] In-process client, I mean. [01:47] RAOF: I need to test more I guess but render_surfaces is perfect [01:48] duflu: mir_demo_standalone_inprocess_egl ? [01:48] RAOF: I'll have to boot up the noise machine again [01:48] afk [01:57] * libmirclient7 [amd64 armhf i386] (for libboost-system1.54.0) [01:57] * libmirplatformgraphics-mesa [amd64 armhf i386] (for libboost-program-options1.54.0) [01:57] * libmirserver18 [amd64 armhf i386] (for libboost-program-options1.54.0) [01:57] * libmirserver18 [amd64 armhf i386] (for libboost-system1.54.0) [01:58] Above packages are the last few that are in main and use boost1.54 in utopic, is a daily release (even if no-change one) planned soon into the utopic archive? [01:58] RAOF: inprocess_egl fails too -- black screen just the cursor [01:58] or should i upload no change rebuild into utopic? [01:59] xnox: Feel free to no-change rebuild. [01:59] RAOF: thanks. [01:59] xnox: We don't daily-release into utopic, thanks to our current embarrassing lack of ABI. [02:00] New competition: Who can make Mir work on something older than this '06 Pentium D? :) [02:00] Although I think we're most limited by DRI2/Mesa support :( [02:01] RAOF: and are boost-templates known to leak to ABIs of things that build against lib*mir*-dev ? i don't think there are any abi/api changes to system&program-options, but still would be interesting to know. [02:02] xnox: It would not surprise me if boost templates leaked into the ABI (such as it is), but I'm not sure. [02:02] RAOF: ok, thanks. [02:02] Hm. Actually, I'm pretty sure that boost::asio is a part of our current ABI. [02:03] Really? [02:04] RAOF: i wish boost had stable abi =( [02:04] duflu: Well, it's hard to say, isn't it. There's certainly a bunch of boost::asio in include/server/*.h, which is ostensibly public. [02:05] * RAOF wonders what contortions boost would need to go through in order to ensure a stable ABI. [02:11] RAOF: well, stdlib and stl manage it =) the piles of diff in asio alone from boost1.54 -> boost1.55 do not make me happy... [02:11] RAOF: i think i'll wait until we have some images of utopic before rebuilding those and/or wait for a release to utopic. [02:12] xnox: That seems sensible; we've got a process that'll rebuild all our reverse-depends when that happens, anyway. [02:12] RAOF: excellent! === chihchun is now known as chihchun_afk [02:41] RAOF: If your hacking journeys have you retained any system that uses the i915 driver? [02:41] -If +In [02:42] duflu: I've got an Atom netbook; I forget whether or not that uses i915_dri.so [02:42] RAOF: Yeah it should [02:42] Mine does [02:42] As long as it predates PowerVR [02:42] It does :) [02:43] RAOF: It's fun to try even if you just install trusty plus mir-demos. Suddenly the old system has super-smooth graphics and some new potential :) [02:47] Although unity7 is also less of a hog in trusty than previous releases too. Somewhere in the last 12 months it's gone from 60 seconds opening the dash to almost instant. \o/ === chihchun_afk is now known as chihchun === chihchun is now known as chihchun_afk === chihchun_afk is now known as chihchun [06:15] RAOF: What is DRM_API_HANDLE_TYPE_SHARED? [06:15] I can see some logic in Mesa's i915 changed for that type in the Mir patch [06:16] That would be for flink, IIRC. [06:16] Oops, actually the change affects != DRM_API_HANDLE_TYPE_SHARED [06:16] Hm. It's entirely possible that I just haven't done the necessary hookup bit for i915? [06:17] At one point it was sharing files with i965, then that got split and they got copies of identical files that then diverged... [06:17] + if (whandle->type != DRM_API_HANDLE_TYPE_SHARED) [06:17] + return NULL; [06:17] That's new. Did it ever work? [06:17] Oh! [06:17] You're looking at the wrong i915 [06:17] :) [06:17] RAOF: Looking at my Ubuntu Mesa source :) [06:17] That's the Gallium driver, which we don't use. [06:18] You want src/mesa/drivers/dri/i915. [06:18] Confusingly, there are two separate i915 drivers in the mesa source. [06:19] I'm confused by most of the Mesa source so that's OK [06:55] Hm. Is there some way to add a target to each compiled target in cmake? [06:57] RAOF: Umm, rephrase that? [06:58] Add a dependency? [06:58] RAOF: http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:add_dependencies [07:10] duflu: Specifically, I want to grab a total list of sources (to run them through clang-check -analyze) [07:16] RAOF: last time I did that by replacing the add_executable and add_library alls with homegrown macros that behave same [07:16] anpok: Yay? Ok, I'll stop trying to make a branch that'll automatically run the static analyser :/ [07:19] RAOF: cmake usually has an existing answer if you can wade through the docs [07:20] back then I also wanted to acchieve something like virtual library target, since the project could be build all static libs or as shared libraries or static exectuables.. and avoid fpic where possible.. [07:52] anpok, RAOF: I hear GNU Make is still awesome [07:52] Just that CMake dumbs it down too much, sometimes [08:25] Whee, all the (review) things. [09:12] alf_: I spent a while looking at the screencasting stuff on the weekend. What was the motivation for recompositing to screencast? is ReadPixels truly infeasible? [09:13] I mean the whole thing relies on the assumption that it's faster to GL render twice than to render one and then glReadPixels... ? === chihchun is now known as chihchun_afk === alan_g is now known as alan_g|lunch === alan_g|lunch is now known as alan_g [12:32] alf_, anpok: are you OK with this? https://code.launchpad.net/~alan-griffiths/mir/purge-some-sessions/+merge/217252 [12:34] alan_g: looking [12:39] thanks [13:44] AlbertA: is this bug a dup really of the stale socket cleanup ? [13:44] https://bugs.launchpad.net/mir/+bug/1189770 [13:44] Launchpad bug 1189770 in Mir "[DRM/GBM] Killing (or crashing) Mir often leaves the screen blank and difficult to recover" [Medium,Triaged] [13:44] kinda feels like it is [13:48] kgunn: no - that's about locking up the VT (e.g. input doesn't work) [13:52] kgunn: alan_g: Have you seen that recently? [13:53] no === dandrader is now known as dandrader|afk === dandrader|afk is now known as dandrader [14:27] kgunn: no that's different it still happens actually [14:27] kgunn: alf: alan_g: I see that all the time when I kill (not sigkill) mir on my intel laptop [14:27] well maybe not all the time [14:28] actually I think when mir dies [14:28] with an exception [14:28] I usually get a blank screen that I can only switch out of with sudo chvt 7 [14:29] AlbertA: is that a consequence of bug 1285084? [14:29] bug 1285084 in Mir "Exceptions are raised in a compositing thread and not handled" [Undecided,New] https://launchpad.net/bugs/1285084 [14:30] Because exceptions in most threads are handled sanely [14:30] alan_g: could be, I haven't investigated it [14:31] AlbertA: kill => inadverently kill by doing something wrong that leads to exception? [14:31] alan_g: the last time I saw it was when i investigated the power off display bug which was throwing an exception [14:32] alf_: Sorry not by killing that works fine. I mis-remembered [14:32] AlbertA: interesting, do you remember from which thread it was thrown from? We can force an exception there to reproduce consistently... [14:33] AlbertA: s/from// [14:33] alf_: Yeah it was the bug daniel fixed, so the DisplayConfiguration valid check [14:33] AlbertA: thanks [14:33] alf_: which was I suppose the demo shell responding to a power key event [14:34] alf_ : whatever that thread is [14:35] kgunn: hi! [14:36] kgunn: so, we would need to re-assign your Mir silo for utopic, as it's currently still building stuff for trusty [14:36] kgunn: are you guys using the silo right now? Since my re-assignment will require a rebuild of all packages [14:39] greyback, welcome back! I'm sure you have a backlog of stuff, but when you have a few minutes, I wanted to pick your brain on lifecycle events & nested servers [14:40] mterry: am happy to talk whenever you'd like [14:42] greyback, OK. So I have USC sending lifecycle events like will_suspend and resumed to the greeter (which is a glorified unity8 session -- nested mirserver etc). It never seems to see them... I went down the stack to platform-api on the greeter side, and it never seems to get the event [14:42] kgunn: tell me when you think I could do that [14:42] greyback, does the nested server hide such events or not listen for them in the first place? [14:43] sil2100: hmmm....letme just grab the packages real quick and then you can have it, i'll ping you.... [14:43] kgunn: ok, thanks! [14:45] mterry: I don't know. I'm not aware of any reason why a nested server would hide those events or ignore them. Have you any sample code I could test with? [14:46] sil2100: ok, go for it [14:47] kgunn: thanks, doing o/ [14:47] sil2100: yeah...we'll want to target utopic [15:00] greyback, sorry, got distracted. Sample code... no just some local edits to my various split branches. I could try to reproduce using mir demo code [15:03] mterry: ok. well on idea is that platform-api only has lifecycle listenening code in its client library, not its server lib (lp:platform-api:src/ubuntu/mirclient) [15:03] greyback, nested servers don't run both code? [15:03] I figured they would be clients on one side and servers on the other [15:05] mterry: I don't see how one process can use platform-api client & server simultaneously tho [15:06] maybe they can, but I expected symbol collisions [15:06] Yeah, I don't know how the code fits together. I just assumed that a nested mirserver was re-using the client code somehow. But if it isn't, that would explain some of what I'm seeing [15:07] mterry: the nested server is a Mir server itself, it is run with QT_QPA_PLATFORM=ubuntumirserver right? [15:07] greyback, right, which would pick up the side of platform-api without the listening it seems [15:07] if so, then the platform-api server plugin is being used, and that doesn't have lifecycle event listening code build in [15:07] indeed [15:07] that's my best theory at the moment [15:07] greyback, alright. I'll test that out, thanks [15:08] mterry: let me know if I can help more [15:36] AlbertA: How do you support a buffer queue of one in the new implementation? Won't that lead to the compositor blocking? [15:37] alf_: I add the only buffer to the free queue [15:37] alf_: so then the compositor and clients end up sharing the same buffer [15:37] alf_: all the time [15:38] alf_: then after I added to the free queue at the very beginning the [15:38] operations are all the same as in the other cases [15:39] alf_: i.e. a client's next request (after release) will block until compositor composites that buffer === alan_g is now known as alan_g|afk [15:40] AlbertA: but what if a buffer is held by the client when the compositor acquires it? It will just get it? [15:41] alf_: yes because it wil fall under the "use current buffer" condition [15:42] AlbertA: ok, I am not sure how well SwitchingBundle handles this scenario... [15:42] alf_: hence why I wrote the unit test :) [15:42] AlbertA: it's conceivable that it doesn't handle it well (since we don't have users of this use case) [15:43] alf_: some of the unit tests in SwitchingBundle do exercise constructing a SwitchingBundle of 1 buffer [15:44] alf_: but there wasn't any specifically testing the behavior of 1 buffer scenario. [15:45] mterry: question for you: what launches unity-system-compositor? I can't see a system upstart job for it [15:46] greyback, lightdm manages it [15:46] mterry: ah ok === alan_g|afk is now known as alan_g [15:54] AlbertA: I wonder if the logic around buffer_to_release in compositor_acquire() could be problematic for the single buffer scenario. For example, we pop() the buffer from the ready_to_composite_queue and set the current_compositor_buffer with it. Then we release() it and in give_buffer_to_client() we need to resize, so the buffer pointer in current_compositor_buffer is now invalid. [15:55] alf_: yes you are right [15:55] alf_: I need to add that to the unit test [15:58] AlbertA: ahhh, the beautiful land of the component formerly known as SwitchingBundle :) [15:59] AlbertA: at least in the new version we can *read* the code and *find* the problems [15:59] alf_: :) [15:59] alf_: it kinda mirrors government [16:00] alf_: because it shows the danger of centralizing many things in one [16:00] alf_: :) [16:01] lol === chihchun_afk is now known as chihchun === dandrader is now known as dandrader|lunch [17:03] Mir folks -- why is there no version of mir_connection_set_lifecycle_event_callback for mirservers that are nested? Surely nested servers want to hear about such events too. I'll file a feature request bug unless ya'll tell me it doesn't make sense [17:11] Hmm, the mirserver library links to mirclient. Maybe I can use that API after all [17:28] Question: I have a thread that calls "run_mir" (which blocks). Is there a graceful way to stop mir? [17:37] that function is more of a helper [17:37] mir::DisplayServer has run() and stop() [17:38] josharenson, ^^ [17:55] kdub, ack [18:32] mterry, don't know the specific problem, but if something in the mir client api is useful to the things the custom nested server is doing, then no reason not to use the client api [18:32] and, if its a thing that should be universally done, then we should pull it into the nested code [18:32] kdub, yeah... but MirConnection isn't exposed to mirserver users. You can get the HostConnection, but that class isn't defined externally [18:33] kdub, I ended up filing bug 1313832 [18:33] bug 1313832 in mir (Ubuntu) "[enhancement] Allow nested mirservers to listen for lifecycle events" [Undecided,New] https://launchpad.net/bugs/1313832 === dandrader|lunch is now known as dandrader [18:58] kdub, when I start the display server via display_server.run() and join the thread, the client application says it cannot connect to the display server... After looking at the example basic server, I can't figure out what I'm missing (client app runs under example server just fine) [19:05] how do you join the thread if the display server is still running? o.O [19:06] I'm kicking off a thread that calls a function that calls run... joining my thread back to the main thread.... is the server supposed to block after calling run? [19:07] iirc, it is running until stop() [19:08] so is the best way to call run_mir with the command to start the client as the lambda arg? [19:09] punctuation would have made that more clear... is the best way, to run a client without manually starting a server beforehand, ^^ [19:13] josharenson, it depends on what you're trying to do really [19:14] kdub, start mir server -> run glmark2 -> stop server [19:14] run_mir is helpful code if you're starting an executable that you'd expect to respond to ctrl-c [19:14] so with that, I'd come up with an executable that fires off the mir server, forks out the client, waits for the child to end [19:15] then DisplayServer::stop() [19:15] something like that [19:15] i think the acceptance tests do something similar [19:16] kdub, ok thanks.. I just got something that _kind of_ works.. ill reference the acceptance tests [19:18] josharenson, yw [19:56] camako, have some time to chat about https://code.launchpad.net/~kdub/mir/overlay-gl-program/+merge/217153/comments/517227 ? [19:57] kdub, can I ping you in a bit? [19:57] camako, sure, no rush === dandrader is now known as dandrader|afk [21:01] kdub, sorry that took a while [21:16] AlbertA: might give a look over this [21:16] https://blueprints.launchpad.net/ubuntu/+spec/client-1410-unity-ui-power [21:16] i just added a potential policy idea... [21:16] kgunn: yes it's being discussed over e-mail, I have to change the mir tasks [21:17] kgunn: as that changed a while back during previous IRC discussions [21:17] AlbertA: we need to land things faster i can tell :) before they change on irc [21:17] kgunn: :) [21:18] kgunn: well what I implemented is in sync with the IRC discussions [21:18] thats god news [21:18] or good news even [21:18] kgunn: the missing parts so far [21:18] kgunn: is long-press power button (new to me) [21:19] ah [21:19] kgunn: and who will communicate the per session timer settings/backlight value preferences [21:19] kgunn: to USC [21:20] AlbertA: so kinda feels like either usc reads them direct ?...or...relies on shell & we make in interface to keep it all agnostic... [21:20] but...u of u-s-c is unity... [21:20] so... [21:21] what are your thoughts [21:21] kgunn: right...currently it's built in defaults, overridable through the command line [21:21] kgunn: but we do need an interface, just don't know if DBus, or resuing the mir socket [21:21] kgunn: depends on who will communicate the info [21:22] kgunn: could be the lightdm socket as well... [21:22] mmm...right, it is per user session [21:24] Saviq: ^ [21:25] probably too late [21:25] camako, pong, np [21:25] AlbertA: actually...he doesn't sleep...i'm convince [21:25] d [21:25] kdub, I see your points and am updating my comments... [21:26] camako, cool, thanks [21:26] * kgunn loves that camako is going to help on sticky subjects [21:26] kdub, I 'm good... Just the naming bothers me a bit... [21:26] yeah, I have to address some of daniel's naming comments too [21:27] i think that overlay vs optimized-surface is a good distinction to make in the naming [21:27] with overlay being the android concept [21:27] kdub, I like :-) [21:27] AlbertA: and would u-s-c really be involved for brightness/ALS ? [21:27] kgunn: only as a proxy to powerd [21:27] ah [21:27] pass thrug [21:28] kgunn: yeah [21:28] damn i can't type today [21:29] kdub, on second thought, they'd be "optimized" if hwc wouldn't reject them.. [21:29] kdub, perhaps "fallback" or smth like that [21:30] kdub, but if nothing works, "optimized" is better than "overlay" [21:31] kdub, also this means that by falling back to gl, we are requiring gl capable gpu on the SoC.. should we worry about that? [21:39] camako, i don't think so, we won't hit an opengles-less android device soon [21:40] camako, 'optimized' was from the perspective of the DisplayBufferCompositor [21:42] within the android platform, 'overlay' vs 'fallback' is a good distinction [21:44] the pot o gold at the end of the rainbow for me is like... wobbly windows, and then when the animation stops, the hwc overlay stuff seamlessly kicks in [21:45] kdub, I'm not worried abt Android-capable devices.... But there are devices coming out with only a 2D gpu e.g... Those devices could replace GLRenderer... but now we *require* GL for the "overlays" [21:45] well, we don't though, they can just give a stub gl program factory [21:45] and then that would be another platform without gl [21:46] s/stub/null [21:46] kdub, how will they render overlays? [21:46] well, thats for that platform to figure out, like say its the omap dss [21:47] and there is made an explicit opengl-less platform for that... they can just reject the optimization function, or under the hood, they can do what they want [21:47] like, I sent out this line on the ML [21:47] http://bazaar.launchpad.net/~kdub/mir/future-default-display-buffer-compositor/view/head:/src/server/compositor/default_display_buffer_compositor.cpp#L49 [21:48] and at that line, if the platform returns true for line 64, then the platform gets the RenderableList to the screen however it wants [21:49] or, for mesa, mesa can accept a renderlist that has a 64x64 image + a fullscreen image [21:50] and under the hood, it figures out 'hey, this is a hardware cursor, and this is a bypass' [21:50] and that same line would work for android, where under the hood, it does the whole HWC dance [21:51] kdub, the term "overlay" is already confusing us.... I mean how will they render overlay-rejects? The only method we provide for layers rejected by hwc, which is not replaceable, is gl... Or am I misunderstanding... [21:53] camako, like, a hwc extension would have to come out, I think [21:53] that is like OpenGL-less HWC [21:53] kdub, I'm not worried what happens under the hwc hood (it's SoC specific... 2D, DSS are all fair game)... But the fallback path is the common denominator and minimum requirement assumption [21:54] camako, taking a step back... what are you anticipating happening? [21:55] kdub, when we have taken much pain to make things replaceable, are we okay with having this assumption which ties us to opengl [21:55] camako: but that's a requirement of opengl hinted strongly by the hwc headers [21:55] well, it ties us to opengl only for a platform which has a hard opengl requirement anyways [21:56] kdub, yes as long as we are in the Android world we are good [21:56] kdub just wanted to make clear that just because GLRenderer can be replaced doesn't mean we can do without GL [21:57] camako: isn't that the point of having a separate GL program as fallback for android? [21:57] kdub, I'm ok with this assumption... Just want to make sure it's explicit [21:59] right [21:59] AlbertA: yes [21:59] the other thing though is post_update() on mg::DisplayBuffer assumes OpenGL too [22:00] Ok so we basically require opengl... which is ok... [22:01] camako: oh I think I see your point...why put an extra program if we require GL implicitly anyway [22:01] camako: is that it? [22:01] AlbertA: Yes part of it... [22:02] AlbertA: But that means factoring the heck out of GLREnderer and making things difficult [22:02] but, my big point is that the HWC program has strict requirements, GLRenderer will grow and flex [22:03] and I don't want the HWC to break as GLRenderer grows and flexes to support like... window decorations or animations [22:03] Sure, I basically don't have a problem with what we are doing... [22:03] But was under the impression that, with GLRenderer being replaceable [22:04] we could do away with GL and support GL-less platforms eventually (of course not possible now with hwc etc) [22:04] camako: yeah, I would think it would be another folder under platform :) [22:04] but I understand now that GLRenderer being replaceable is not necesarily to get rid of gl-capable gpu [22:04] perhaps, although there is other plumbing that would have to be done [22:05] and a lot of that plumbing would be rooting the GL concepts out of the platform interfaces [22:05] but, overall, yes :) [22:05] Before that we'd have to break the Android dependency... Android require gles2 capable gpu now [22:06] camako: yeah no doubt more changes would be needed to support it [22:06] camako: but your gpu-less platform would basically provide a rendererfactory that creates [22:06] camako: the gl less renderer [22:06] right [22:07] and really, the GLRenderer and DefaultDisplayBufferCompositor are just split between "this one doesn't have GL and this one does lines" [22:07] I think the more important interface is DisplayBufferCompositor [22:07] esp because GLRenderer's interface is kinda weird [22:08] like, 'begin()' just does a glClear, and end() does a texture cache flush, and if you don't call it, you leak and explode [22:08] and, if you call end() before the eglSwapBuffers, you get tears [22:08] things like that :) [22:09] kdub: yeah it's tricky to wrap state machines [22:10] Won't be long before compositors run on ucontrollers... Some gpu companies working on it... Mostly 2D at first... [22:10] Anyways... would be a good problem to have for ubuntu [22:11] right, like maybe raspberry pi or something.. maybe some of our intrepid lurkers could look at that :) [22:30] 'there's only 2 things hard in computer science, cache invalidation and naming things' [22:31] * kdub thinks of that quote often when trying to come up with class names === dandrader|afk is now known as dandrader [23:42] kgunn, AlbertA, :P [23:46] kdub: That quote's incorrect; the correct one is “There are only two hard problems in computer science: cache invalidation, naming things, and off-by-one errors” ☺ [23:50] RAOF, haha, clever