RAOFWhen introspecting the set of fds a process has open, be aware that you might actually open an extra fd in the process of introspection... :)00:01
rsalvetikdub: were you able to give it a try?00:48
kdubrsalveti, not yet, distracted by https://bugs.launchpad.net/mir/+bug/127204100:50
ubot5Ubuntu bug 1272041 in Mir "mir nested server failure: what(): error binding buffer to texture" [Critical,Confirmed]00:50
rsalvetigot it00:53
kdubnever a dull day on the mir team00:56
=== ^_\\\ is now known as LockeAnarchist
RAOFHm. google mock can't handle returning move-only things.02:36
duflu_It's so over-featured, I get it can... somehow02:37
duflu_I *bet*02:37
RAOFNot according to the google mock lists.02:38
duflu_Then I blame C++ for giving us such things02:39
=== duflu_ is now known as duflu
dufluStroustrup will be personally responsible for the downfall of humanity, I suspect02:40
RAOFhttps://code.google.com/p/googletest/issues/detail?id=395 for those playing at home.02:44
RAOFAlso annoying: QtCreator is super-confused by >> in templates.02:46
dufluRAOF: That's a common problem with (older?) compilers too. If you have nested templates you need a space: "> >"02:52
RAOFduflu: I >> in templates is a C++11 feature IIRC.03:24
dufluRAOF: Not sure what you mean. But  do remember when I started learning and using the STL that ">>" was a syntax error/ambiguity. You have to put a space in the middle.03:27
RAOFduflu: http://en.wikipedia.org/wiki/C%2B%2B11#Right_angle_bracket - >> as not-always-right-shift operator is a C++11 language feature.03:28
dufluThat explains why it mysteriously started working when I joined Mir03:29
RAOFSo if you weren't building with --std=C++11... ;)03:29
dufluStill, for the cost of one character you can write backward-compatible code. Sounds like a good deal03:32
=== chihchun_afk is now known as chihchun
RAOFHm. Don't change things out from under cmake *too* much or it might fail to notice that you're changing some code, not compile it, and your tests will inexplicably fail, even though you've added code that should make them pass.05:05
anpok_RAOF: if I am not mistaken the make generator of cmake does not notice if you change a self defined variable that changes add_definitions or changes CMAKE_CXX_FLAGS without also changing a different variable like CMAKE_BUILD_TYPE .. at least I had some bad experience that made me do all define like settings in header files created through configure_file07:33
dufluanpok_: I think he is past EOD/EOW07:49
dufluTill Tuesday :)07:49
anpok_oh it is friday again07:56
=== chihchun is now known as chihchun_afk
=== chihchun_afk is now known as chihchun
=== mpt_ is now known as mpt
alf_duflu: anpok_: alan_g: Any preference for MirOutputCapture vs MirOutputRecording vs ... ?09:46
duflualf_: Mir*Recording is my preference. Unsure about mentioning "Output" though09:47
dufluIt sounds better. "Recording" is clearly an ongoing process whereas "Capture" sounds like an instantaneous screen grab or something09:48
dufluWoo, my Friday afternoon experiments have solved cloned output stutters09:49
alf_duflu: MirScreenRecording? We need to mention something at least since plain MirRecording is too vague (input? output? something else?)09:49
dufluAnd more generally boosted potential composting performance09:49
alf_duflu: \o/ sounds good :)09:49
duflualf_: Yes I thought the same about MirRecording09:50
dufluNot sure09:50
alf_duflu: I like Output since the recording is targeting a specific MirDisplayOutput, so perhaps even MirDisplayOutputRecording if we don't mind being more verbose09:52
alf_duflu: but I think MirOutputRecording is clear enough09:52
duflualf_: Is it per output or DisplayBuffer? If the latter that's not even a client-visible concept09:52
alf_duflu: it is per output09:53
anpok_as a non native speeker both capture and recording do indicate an ongoing process09:53
anpok_but recording also indicates that each frame is stored09:53
anpok_while capture sounds like .. you get the current frame everytime you look at it..09:54
alf_anpok_: which is actually what is going on...09:54
alan_gLooking at the mir-devel list we've talked about "screenshotting" and "screencasting"09:54
duflualf_: ScreenCast?09:55
anpok_i like screen cast09:55
dufluSince there's no requirement for actual "recording"09:55
dufluOh. It's one word... MirScreencast with lower c09:56
alan_gGood enough09:56
dufluIt's on Wikipedia so it must be true09:57
alf_A *screencast* is a digital recording of computer screen output, also known as a video *screen capture*09:57
duflualf_: I have too many memories of bugs where we ask for a screen capture, meaning screenshot09:57
dufluSo Capture is ambigous09:58
alf_alan_g: anpok_: duflu: it's Screencast 1...09:59
dufluYay for finding new nouns not yet used in the codebase09:59
alf_duflu: alan_g: anpok_: And guess what the relevant interface on the server side will be called ;)10:00
dufluHmm, do we really have the words "DisplayScreenOutput" side by side?10:01
alf_duflu: I hope not! :)10:02
anpok_no dont take it serious10:04
alf_anpok_: as you can see we are way past seriousness at the moment :)10:05
alan_ganpok_: we all know "Avoid class names that end in er"10:05
dufluI shouldn't joke. Compiz had function names twice as long10:05
anpok_alan_g: hm like Verbalizer?10:06
alan_ganpok_: http://www.benhallbenhall.com/2013/01/naming-objects-er-object-names/10:07
alan_gThere was an image floating around that showed a room with "OO" names like "InternalToExternalAccessProvider" (door) - can't find it.10:09
dufluHeh. I'm sure I've been ranting about ER for years :)10:11
duflu"er" not "ER"10:11
alf_alan_g: anpok_: duflu: Of course, sometimes, especially for narrow interfaces, a name ending in -er is actually a good choice10:12
* duflu -> dinner, long weekend10:12
alf_dinn-er another name we should avoid! :P10:13
=== chihchun is now known as chihchun_afk
anpok_alf_: but thats to some degree because of c++ - those narrow interfaces are probably just a single function (op()) and in a different language would just be a function11:23
anpok_there the verb does not have to become a noun11:23
dandraderhave you guys successfully used apitrace on a Nexus 10 (or any other device)?11:26
anpok_not tried yet11:28
dandraderany other trick for tracing gl calls?11:30
anpok_it does not work?11:32
dandraderanpok_, apitrace? no.11:33
anpok_just tried with manual preloading11:41
anpok_it did create something reasonable,11:45
anpok_but when replaying on the desktop it complains that we never call glViewport11:45
anpok_maybe I should use a better exmaple than mir_demo_standalon_render_surfaces11:46
dandraderhmm, when I tried with qmlscene it complaining about some missing API function11:47
* dandrader tries with some mir example11:47
anpok_we could add that to apitrace then11:51
anpok_i mean any other trick would involve doing the same, and making it work :)11:52
dandraderyeah, works with mir_demo_client_triangle but with qmlscene it bails out with "error: unavailable function eglBindAPI"11:52
anpok_strange egltrace.so has it11:55
dandraderanpok_, exactly12:00
dandraderanpok_, do you also get the same with qmlscene?12:00
dandradermaybe it's because of the order or way that qmlscene loads its dependencies (through a qt platform plugin, etc)12:05
anpok_qmlscene does not start12:12
anpok_ah ok12:14
anpok_now I get the same behaviour12:15
anpok_i tried to find out when egl was added to apitrace12:30
alf_Debugging boost::asio is not fun...12:53
=== dandrader is now known as dandrader|afk
ricmmkdub: ping / when back13:06
ricmmguys one question13:06
ricmmhow do we do handover of a buffer from server to client over ipc13:07
ricmmfd mappings of the server gralloc'd space?13:07
=== alan_g is now known as alan_g|lunch
=== dandrader|afk is now known as dandrader
=== alan_g|lunch is now known as alan_g
anpokdandrader: hm14:32
anpokdandrader: qmlscene only links libGLESv2.so and not libEGL.so14:32
dandraderanpok, what about the QPA library that it eventually loads?14:33
anpokso whith LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/apitrace/wrappers/egltrace.so:/usr/lib/arm-linux-gnueabihf/libhybris-egl/libEGL.so.1.0.014:34
anpokit should work14:34
anpokthen egltrace can use eglGetProcAddress to get the real functions14:34
dandraderanpok, namely /usr/lib/arm-linux-gnueabihf/qt5/plugins/platforms/libqubuntumirclient.so14:34
dandraderthat one does link against libEGL14:35
anpoki just tried qmlscene with an empty scene14:35
anpokand when libEGL is preloaded it did not aport on eglBindAPI14:36
anpokoh I have to go..14:36
=== ricmm_ is now known as ricmm
dandraderanpok, ok, thanks for the help!14:51
dandraderanpok, damn, it doens't abort on start but the sole contents of the trace are "0 eglBindAPI(api = EGL_OPENGL_ES_API) // incomplete"  :/15:09
dandraderI think I will have to inject the apitrace wrapper via LD_LIBRARY_PATH....15:24
=== alan_g is now known as alan_g|tea
dandraderanpok, ok, this seems to have done the trick: LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/apitrace/wrappers/egltrace.so:/usr/lib/arm-linux-gnueabihf/libhybris-egl/libEGL.so.1:/usr/lib/arm-linux-gnueabihf/libhybris-egl/libGLESv2.so.215:37
=== dandrader is now known as dandrader|lunch
anpokah ok15:49
=== alan_g|tea is now known as alan_g
kdubricmm, pong16:33
ricmmkdub: ahoy16:33
ricmmkdub: can you jump in a hangout?16:33
ricmmill call you16:33
ricmmcanon acc16:33
kdubricmm, https://android.googlesource.com/platform/system/core/+/master/include/cutils/native_handle.h16:52
ricmmkdub: http://pastebin.ubuntu.com/6809300/16:55
=== dandrader|lunch is now known as dandrader
ricmmE/IMGSRV  ( 5712): :0: gralloc_register_buffer: Cannot register a buffer twice (ID=36)17:01
ricmmkdub: did you drop?17:05
kdubi'm still here, hangout stopped17:05
ricmmkdub: http://pastebin.ubuntu.com/6809354/17:07
ricmmhandle.version=12, handle->numFds=1, handle->numInts=13, handle->data[0]=2917:13
ricmmkdub: http://pastebin.ubuntu.com/6809480/17:29
ricmmkdub: http://pastebin.ubuntu.com/6809656/18:06
ricmmkdub: http://pastebin.ubuntu.com/6809689/18:14
BullSherdWow, Google is making really strange things http://goo.gl/YEkaMA18:52
BullSherdfunny haha xD18:52
=== dandrader is now known as dandrader|afk
=== dandrader|afk is now known as dandrader
dandraderkdub, ping20:06
kdubhello dandrader20:10
dandraderkdub, hi!20:10
dandraderkdub, is there any code at all in mir20:10
dandraderthat clears the contents of a client buffer?20:10
kdubvia GL?20:11
dandraderkdub, in any way20:11
kdubglClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT);20:11
kdubwill clear to black20:11
kdubif you change the floats (r,g,b,a) itll change it to different colors20:12
dandraderkdub, I mean if mir *does* do it20:12
dandraderkdub, not how to do it20:12
kdubah :) we do have a 'buffer initializer' class... let me ch eck if its used20:12
dandraderkdub, 'cause I'm debugging the prototype qml mir compositor. and, for a qml client, every now and then one of this frames is shown completely white20:13
dandraderso I'm wondering if this bogus white frame could possibly be caused by mir server20:14
dandraderor if it must be the client messing things up20:14
dandraderafaIct, in the client application there's no call that would clear the frame white (used apitrace to check)20:15
dandraderit has something to do with the interactions between threads20:16
anpokGLRenderer does it in begin i think20:16
dandraderif the scene graph rendering is done in qt's main (GUI) thread, the bogus white frames never show I20:16
dandradershow up20:16
anpokbut it uses the default setting20:16
anpokwhich hopefully is not changed?20:17
dandraderbut if I enable the scene graph rendering to be done on its own, separate, thread, then the bogus white frames pop up every now and then20:17
kdubdandrader, there isnt a 'quick way', but our 'examples/render_surfaces.cpp' programs a buffer color initializer20:18
kdubwhen the buffer is created20:18
kdubcurrently, the default server does not fill to a color on allocation20:18
kdubanpok, GLRenderer will clear the display composition, i think we're looking for a way to clear the client's buffer only20:19
dandraderif I understood things correctly, mir creates a ring buffer of buffers for a given client once, and after that the contents of those buffers are modified only by the client20:22
kdubdandrader, right20:24
kdubdandrader, the buffers can be destroyed and created again (like on resize), but we won't post a resized buffer until after its been filled by the client20:26
dandraderkdub, ok. but in this case the size of the client doesn't change20:26
dandraderwell, will continue debugging it on Monday20:27
dandraderhave a nice weekend20:28

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