mozilla :: #servo

17 Apr 2017
00:05notriddleThe JavaScript code needs to call into the Rust code at some point; you can't write everything in JavaScript.
00:08jdmchallenge accepted
00:10notriddleIt's a question of when, and how efficient it is when you do. Magic DOM, AFAIU, is to make the transition more efficient by removing conversions (having Rust interact directly with JavaScript objects instead of using reflectors?) and occasionally removing this transition (self-hosted code?)
01:03stshineWhat does Abstract mean in webidl?
01:04heycamstshine: in what context more specifically?
01:05stshineheycam: https://github.com/servo/servo/blob/master/components/script/dom/webidls/SVGGraphicsElement.webidl#L13 this
01:06heycamstshine: that looks to be a Servo-specific extended attribute, but I can guess that it means there is no concrete object that implements that interface but none of its sub-interfaces
01:06heycamstshine: (e.g. there is SVGRectElement, SVGCircleElement, etc. for <rect>, <circle>)
01:06heycam(all of which inherit from SVGGraphicsElement)
01:07jdmAbstract is an interface that does not correspond to an actual concrete type
01:07heycamstshine: what that actually means from the perspective of the bindings glue that is generated, I&#39;m not sure
01:07jdminstances of that type cannot be constructed
01:07jdmit is a native-only type
01:07jdm(specifically, reflectors for that interface cannot be constructed)
01:08jdmit gives us stuff like GlobalScope which allows us to have common behaviour and data for all global objects in rust
01:08* jdm is actually surprised that Abstract is present in that interface
01:08stshineSo, SVGGeometryElement should also be abstract?
01:09jdmis that an interface in a specification?
01:09jdmif so, no
01:09stshineyeah it&#39;s in svg spec
01:10jdmor, maybe yes?
01:10jdmI guess if they can&#39;t be constructed from JS there might be benefits to marking it abstact
01:11stshineI see. So Abstract actually mean I don&#39;t need to implement Constructor for it ...
01:11stshinejdm: heycam: thanks
01:11* heycam realizes he and jdm are in the same timezone (and hemisphere) today
01:12jdmwelcome
01:13KiChjangikr? i somehow prefer jdm to be based in aus so i can come back home and ask questions during the night
01:13KiChjangisntead of during the day while i work on other stuff
01:14pcwaltonhuh, this only lightly optimized implementation of trapezoidalization is only ~15% slower than my tile building approach
01:14pcwaltonon the CPU
01:14pcwaltonand I think itll be way simpler and easier on GPU memory than my previous thing
01:15pcwaltonKeith Packard may well have been onto something!
01:15pcwaltonheck, this might even work with GLES2
01:16stshineThat would be great
01:17pcwaltonhttps://books.google.com/books?id=gsv7HALW2jYC&pg=PA47&lpg=PA47&dq=trapezoidalization&source=bl&ots=r2VrXi8i7g&sig=MTIpZNPNqnlTN32JPpumDU6PKgw&hl=en&sa=X&ved=0ahUKEwibq9zEqKrTAhVN6WMKHf0HAbEQ6AEIQDAF#v=onepage&q=trapezoidalization&f=false
01:17pcwaltontheres a trapezoidalization algorithm here
01:17pcwaltonit seems to be pretty fast (though I might have implemented it wrong) :)
01:17pcwaltonO(n log n)
01:17pcwaltonyou can use Raphs algorithm to render trapezoids in a shader on GPU
01:18pcwaltonI think this algorithm isnt popular because it produces poor triangulations
01:18pcwaltonbut I dont care about the quality of the triangulations, Im not doing this to triangulate
01:20pcwaltonI guess this will depend on doing Newton Raphson on GPU though, so dunno how well thatll perform
02:07stshineimpl DOMPointWriteMethods for DOMPointReadOnly
02:08stshineHmm. What ...
02:25Gankro(experiences mild panic attack as built melts from an attempted &quot;cargo build&quot; rather than &quot;./mach build&quot;
02:27jdmheh
07:55wafflesoh, looks like something&#39;s wrong with highfive
08:27waffleshey jdm, did highfive crash or something? https://github.com/servo/servo/pull/16495
08:27crowbotPR #16495: Make tidy check that opening and closing braces that begin a line do - https://github.com/servo/servo/pull/16495
08:27wafflesno comments at all!
08:28jdmit does that sometimes
08:28jdmit&#39;s either network issues or request limit exceeded
08:28jdmI&#39;ve never added logging to figure it out
08:29* waffles desperately wants the new highfive
08:30wafflesjdm, shall we launch it with a bunch of bots?
08:30wafflesI&#39;ve been procrastinating integration thingy for 4 months now
08:31jdmto rule out the request limit, it should be enough to create a second highfive account and add some error handling that uses it as a fallback in the existing code
09:30SimonSapinemilio: r? https://github.com/servo/rust-bindgen/pull/636
09:30crowbotPR #636: Add Builder::clang_args (plural) - https://github.com/servo/rust-bindgen/pull/636
10:18jdmwow, http://samlib.ru/ renders _really_ badly
10:21jdmooh, I bet it doesn&#39;t guess at the character set
10:22jdmmmm, maybe not
10:23jdmah, right, we only do utf-8
10:25* avadacatavra has returned to internet access FINALLY
10:25* avadacatavra reads backlog
10:27jdmwelcme
10:27jdmcrowbot: infrastructure report
10:27crowbotThe usual: it has been 84 minutes since the last incident :/
10:29avadacatavracmr: the problem is that there was a fair amount of work to do in our network stack to enable gradual ring/webpki integration. we&#39;ve just landed an openssl bump that should make that possible
10:30avadacatavracmr: there&#39;s a lot of interest in formal verification applied to rust crypto, so i&#39;d be interested to hear what you&#39;re planning on doing
10:30avadacatavrajdm: when are you free today?
10:30jdmavadacatavra: I&#39;m going to get dinner asap, and then I&#39;ll be around for the next few hours
10:31avadacatavrajdm: works for me. i&#39;ll grab lunch now. just ping me when you&#39;re free
10:31jdmk
13:14SimonSapinemilio: I get &quot;thread &#39;main&#39; panicked at &#39;Couldn&#39;t read headers dir: Error { repr: Os { code: 2, message: &quot;No such file or directory&quot; } }&#39;, /checkout/src/libcore/result.rs:859&quot; when trying to publish bindgen
13:15emilioSimonSapin: huh
13:15emilioSimonSapin: let me try
13:18emilioSimonSapin: huh, I can reproduce, wth
13:21SimonSapinemilio: Cargo.toml excludes tests/**
13:22SimonSapinemilio: testgen::main in build.rs runs even when packaged
13:23emilioSimonSapin: yeah, was just seeing that. What&#39;s the proper workaround for that? I guess only printing the line if cfg!(test)?
13:23SimonSapinemilio: maybe not generate tests.rs if tests/ doesnt exist?
13:25emilioSimonSapin: I&#39;m not sure we should generate it anyway if !cfg!(test), so let&#39;s just try that. I&#39;ll send a PR
13:26SimonSapinemilio: idk if cfg(test) applies to build scripts
13:26emilioSimonSapin: trying now, otherwise what you suggested should work too
13:26SimonSapinemilio: in `cargo build && cargo test` I think build.rs is run only once
13:32emilioSimonSapin: r? ^
13:59mrobinsonemilio: Is it okay to try to land https://github.com/servo/servo/pull/16463#issuecomment-294472503 again?
13:59crowbotPR #16463: Fix various issues with overflow clipping - https://github.com/servo/servo/pull/16463
14:01stshineI guess he&#39;s sleeping
14:10mrobinsonstshine: Ah, I thought he was in my timezone.
14:13emiliomrobinson: sure, that&#39;s fine
14:13mrobinsonemilio: Thanks!
14:13emiliostshine: I&#39;m back in spain :P
14:14stshineemilio: Just curious, how long did you sleep last night?
14:14emiliostshine: hmm... So let&#39;s say I woke up at weird hours. But I didn&#39;t sleep particularly bad
14:15stshinesounds good
14:15emiliostshine: sorry about all your patches that are waiting for tests btw, it&#39;s quite sad wpt has nothing for those yet :(
14:15stshineemilio: btw, how is stylo&#39;s performance compared to gecko in single threaded mode?
14:16stshineemilio: not at all
14:16emiliostshine: the idea is to be at least as fast, but since the architecture is quite different it really depends on the testcase
14:16stshinejust feels weird that the number of wpt test is not enough
14:16stshineokay
14:17stshineI though wpt tests had covered everything
14:17emiliostshine: also, we&#39;ve identified a bunch of perf issues that we just haven&#39;t optimized yet. For example cache locality while doing selector matching is quite awful
14:17emiliostshine: yeah... oh well. I should try to migrate a bunch of gecko tests to wpt at some point
14:18emiliostshine: but I wouldn&#39;t block your patches on that :P
14:19stshineemilio: no worries! :) I thought you should be too tiresome to do that
14:26cmravadacatavra: I&#39;ll write a blog post after I finish this experiment.
14:27avadacatavracmr: great! send it my way when you have it. i&#39;ll be here ;)
14:27avadacatavrasadly, irc and twitter are both more efficient ways to reach me than email...
14:31noxcmr: You can also ping me if you need to reach avadacatavra, I&#39;ll tell my cats, who will tell hers by telepathy.
14:31cmr:D
14:32cmravadacatavra: I&#39;m curious about web compat wrt using ring/webpki -- are there concerns there?
14:32avadacatavracmr: short answer: yes and no ;)
14:33avadacatavraslightly longer answer: yes, but lots of servo isn&#39;t fully web compat anywho
14:33cmr(a TLS impl needs to happen in there somewhere too)
14:33avadacatavracmr: there&#39;s rustls which is built on top of ring/webpki
14:33cmrI guess that&#39;s rustls
14:33cmryeah
14:33avadacatavraand there&#39;s also a hyper-rustls as well
14:33avadacatavraall of which is fairly new, and didn&#39;t exist when i initially looked into this
14:33avadacatavrabut is promising, particularly if there&#39;s formal verif to support them
14:34cmrMy focus right now is showing functional correctness of the x64 assembly implementations of the various primitives in ring
15:20avadacatavracmr: what verification tools are you using?
15:21* avadacatavra has a pretty baseline understanding of formal verif
15:21cmravadacatavra: HOL4, in particular, Magnus Mayreen&#39;s &quot;disassembling into logic&quot; framework.
15:22cmrs/disassembling/decompilation/ https://www.cl.cam.ac.uk/~mom22/decomp.pdf
15:24avadacatavracmr: thanks
15:24avadacatavramost of what i&#39;m &#39;familiar&#39; (where familiar is defined by reading papers that use) are tamarin and other similar tools
15:28jdmcrowbot: tell kichjang the [[transfer]] implementation is pretty clever - nice work!
15:28crowbotthere&#39;s a phone right next to you, but okay
15:31jdmcrowbot: tell jack could you do deploy the latest salt changes?
15:31crowbotyou bet!
15:36wafflesdoesn&#39;t work if he&#39;s online, right? :)
15:37jdmtrue
16:08* emilio would love to be in the same tz as heycam right now...
16:08emilioor bholley, really
16:10avadacatavrajack: xow update: jdm and i fixed the crash, but have realized that we need to create something like filteringwrapper
16:34TyOverbyGankro: I&#39;m confused. I thought you said that webrender was going to use ipc-channel for the cross-process-communication?
16:35GankroTyOverby: it does?
16:35GankroWell, Servo does
16:36GankroIPC impl is provided by the driver
16:36TyOverbyGankro: Why are you going Struct -> Vec<u8> -> ipc-channel when you could just do Struct -> ipc-channel
16:36TyOverbyOh, so the &quot;take these bytes and put them on that process&quot; is not _always_ ipc_channel?
16:36GankroTyOverby: yeah firefox has its own thingg
16:37TyOverbyok, that makes more sense
16:37GankroTyOverby: so will ipc_channel allocate another vec and memcpy my vec into that?
16:38GankroOr is it able to stream-serialize into the other process?
16:38TyOverbyGankro: I actually don&#39;t know how ipc_channel works internally, the only reason I know about it at all is because it uses bincode internally
16:38GankroAh ok
16:39TyOverbyyou still might get some perf by adding a &quot;raw&quot; API entrypoint to ipc_channel where you just say &quot;here&#39;s my bytes, do your thing&quot;
16:40emilioTyOverby: Gankro: The &quot;convert into bytes&quot; business was to use shared memory for sending the display list. I don&#39;t think it serializes that again.
16:58GankroTyOverby: how does the zero copy thing work?
16:59TyOverbyGankro: if you have a type like `struct Foo<&#39;a> { message: &&#39;a str }`, bincode will be able to deserialize a Foo where the message actually points back inside of the buffer that was deserialized
16:59TyOverbythe lifetime of &#39;a will be the lifetime of the buffer that was being deserialized
16:59TyOverbyELI5: it&#39;s magic
17:00GankroTyOverby: this is terrifying but I&#39;ll assume it&#39;s ok
17:02GankroTyOverby: I think DisplayItem is entirely integers and enums thereof
17:07GankroSkimming through DisplayItem, it seems like it&#39;s massively skewed by PushStackingContext, which contains two 4x4 matrices of f32s (and some other junk)
17:08GankroDoes anyone know off the top of their head if those are uncommon (e.g. profitable to Box)?
17:09GankroAlso: are DisplayItems copyable for any reason other than transmute-ipc?
17:10Gankroemilio(?) ^
17:14emilioGankro: PushStackingContext should be relatively common, but not so much as. They correspond to the definition at https://drafts.csswg.org/css-position/#det-stacking-context
17:15emilioGankro: re. copyability... probably not? But IDK for sure. Servo constructs WR display items in a conversion phase, so I don&#39;t think they&#39;re copied anywhere right now
17:17emilioGankro: also, re. stacking contexts, transformed stacking contexts are probably more uncommon, and 3d ones even more (the perspective stuff), so perhaps a bunch of stuff inside the stacking context itself could be boxed
17:17emilioGankro: but probably mrobinson knows more about stacking contexts than I :)
17:17Gankroemilio: yes the two matricies are optional, so tossing a box in there would be fairly clean
17:17TyOverbyThe zero-copy feature is a Serde thing that was developed for JSON
17:21noxserde is doubleplusgood.
17:21noxI think I&#39;m going to do that Deserializer::deserialize_into thing this weekend.
17:22wafflesserde is awesome!
17:22wafflesits json! macro
17:22waffles*at leat
17:22TyOverbyserde is absolutely black magic
17:22noxWhite magic*
17:23TyOverbySeveral conservative communities in Alabama have already banned Serde on account of being witchcraft
17:23noxTyOverby: :D
17:23waffleslol
17:29Gankroemilio: what sorts of things trigger a new stacking context? Presumably not just any child-parent relationship? Is it just any sort of position/float/transform property?
17:30noxGankro: Having fun diving in the code base btw? :)
17:30wafflesnox, I heard that you enjoyed style stuff, wanna review #16444 ? :D
17:30crowbotPR #16444: Cleanup various modules and introduce generic types - https://github.com/servo/servo/pull/16444
17:31emilioGankro: yes, transform/opacity/position/z-index & float IIRC, let me try to find you the actual condition that triggers it
17:31Gankronox: it&#39;s very nice to be working on code that actually does things, rather than code than abstract libs stuff :)
17:32noxwaffles: I&#39;m afraid I can&#39;t do that today. https://www.service-public.fr/particuliers/actualites/A11232
17:32noxGankro: True. :)
17:32GankroNo more hand-wringing about &quot;consensus&quot; and &quot;use cases&quot; for me!
17:33emilioGankro: https://github.com/servo/servo/blob/master/components/layout/fragment.rs#L2453
17:33wafflesnox, oh lol right :)
17:33noxGankro: It&#39;s even better when you do things for which the spec is crystal clear.
17:34Gankronox: that sounds fake
17:34noxGankro: When I arrived in 2015,
17:34noxthere were a lot of APIs from DOM that weren&#39;t implemented,
17:34noxthings that will pretty surely never change.
17:34noxBest feeling ever.
17:35noxThere are very few APIs like that remaining though, bwahahahahahah.
17:36Gankroemilio: ok this doesn&#39;t seem too bad -- although I&#39;m sure there are some *really* degenerate pages
17:36noxGankro: If you ever feel the need to do things that are nebulous again, just do stuff with historical APIs. https://github.com/whatwg/html/issues/775
17:36crowbotIssue #775: Fix HTMLAllCollection - https://github.com/whatwg/html/issues/775
17:37Gankronox: I had been planning to get my fix by forcing the libs team to stabilize a bunch of things
17:37Gankrolike heap::allocate
17:37nox&quot;get my fix&quot; lol
17:38* nox imagines a paintbrush-wielding red-eyed lurking Gankro, whispering &quot;I need to paint bikesheds&quot;.
17:38GankroAlthough lately SimonSapin and I have been enjoying playing make believe with layout optimizations that probably won&#39;t happen for another year
17:42emilioGankro: are you talking about Servo layout optimizations, or compiler ones?
17:43* emilio is all in for overloaded terms
17:43Gankroemilio: compiler
17:43* Gankro doesn&#39;t know the first thing about web layout implementation
17:43GankroOther than something about hypothetical boxes dominating your every waking moment
17:44emilioGankro: hmm... I&#39;m curious about which ones, since I&#39;ve talked a bit with Simon about struct layout optimizations too :P
17:44emilioGankro: hah! don&#39;t even mention those :)
17:46Gankroemilio: there&#39;s two threads on https://internals.rust-lang.org/ that Simon started
17:46Gankroenum discriminant stuffing, and storing things where the padding of a struct would go
17:47emilioGankro: takk
17:49Gankrotakk?
17:50GankroAh, icelandic I guess...
18:11crowbotkichjang: jdm said the [[transfer]] implementation is pretty clever - nice work!
18:27mrobinsonGankro: Stacking contexts are created according to CSS rules: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
18:28emiliobz: I&#39;d appreciate sanity-checking the patch in bug 1357142 (specially the editor comment makes me feel uneasy), but no worries if you&#39;re busy :)
18:28firebothttps://bugzil.la/1357142 NEW, emilio+bugs@crisal.io Avoid sync frame construction in PresShell::RecreateFramesFor
18:31Gankromrobinson: are you aware of any particularly interesting pages wrt stacking contexts?
18:32KiChjangjdm so productive with #16491
18:32crowbotPR #16491: Update web-platform-tests - https://github.com/servo/servo/pull/16491
18:32KiChjangnearly 2 million LoCs
18:33mrobinsonGankro: I really like the reference tests I wrote to tickle the edges cases involving stacked content, but I&#39;m a bit of a stacking context nerd.
18:34Gankromrobinson: was thinking more &quot;real world&quot; (and heavy content) -- trying to evaluate if boxing pushStacking commands is worthwhile
18:34bzemilio: looking
18:35bzemilio: display:contents + xbl, yeah.
18:35bzemilio: Would be inefficient. ;)
18:35mrobinsonGankro: Hrm, most complicated pages have a bunch of them.
18:36mrobinsonGankro: If you want to make an evil case, you can create a page with a huge number of nested divs with <1 opacity though.
18:36bzemilio: I strongly suggest testing the editor codepath
18:37bzemilio: Because I have limited belief in us reaching that stuff during restyling traversal
18:37bzemilio: esp. with stylo
18:37* bz can&#39;t speak to whether HTMLEditor::CreateAnonymousElement callers also assume it sync-creates the frames....
18:38bzemilio: I _think_ but am not 100% sure that the other callsites are all ok
18:39Gankromrobinson: sounds like github/servo/servo it is :)
18:40emiliobz: well, that&#39;s true for stylo (but I suspect most of the stuff editing-related may not be working great r/n). For Gecko it should be mostly equivalent to pushing a change hint to the list directly, right?
18:40Gankromrobinson: alternatively, maybe it would make sense to have a sidetable in the auxlists?
18:40emiliobz: anyway, will test a bit more, thanks :)
18:40Gankro&quot;Matrices&quot;
18:41mrobinsonGankro: Hrm. What&#39;s the issue again?
18:41emiliomrobinson: size of PushStackingContext bloats the size of the display list
18:42mrobinsonGankro: Wouldn&#39;t putting the into the auxiliary data section just make that section bigger?
18:42mrobinsons/the/them
18:42bzemilio: Um
18:43Gankromrobinson: yes, but there wouldn&#39;t be tons of wasted space for eah DisplayItem that isn&#39;t one
18:43GankroNor tons of waste space for Option<Matrix>::None
18:43mrobinsonGankro: Ah, I see.
18:43bzemilio: I _think_ so.
18:44bzemilio: But I am not sure
18:44* bz thinks about it
18:44Gankromrobinson: bincode is a 50% compression right now
18:45emiliobz: I mean, what I recall from the last time I read GeckoRestyleManager is that we stash the change hint stuff in a hashmap, then we restyle the element, and arrive to ComputeStyleChangeFor, which pushes aMinChange
18:45bzemilio: Why would we restyle the element?
18:45* bz sees no reason that would happen
18:45emiliobz: well, we enter in ElementRestyler, not restyle per se, fair enough :)
18:45bzWhy would we enter it there?
18:46emiliobz: because my memory sucks and I thought ComputeStyleChangeFor was in ElementRestyler instead of GeckoRestyleManager, nvm
18:46bzno, I mean more globally
18:46bzGecko does restyles on the frame tree
18:46bzPlus things like undisplayed content, etc
18:46bzRight?
18:47emilioright
18:47bzHTMLEditor::CreateAnonymousElement creates a node
18:47bzit does not add it to the undisplayed content map
18:47bzit does not create a frame for it
18:47bzWhy would it be reached for restyle?
18:47bzWorse yet, this is kinda racy
18:47bzif it happens to end up a restyle root
18:47mrobinsonGankro: If you find that we are wasting a lot of space for stacking contexts the approaches you mention sound very promising.
18:48bzbecause no ancestor is already scheduled for restyle...
18:48bzThen we will restyle it and notice the reframe hint
18:48bzBut if it&#39;s _not_ a restyle root....
18:48bzI think we will fail to reach it.
18:48bzSimilar for the XBL case, btw, at least at first glance.
18:49bzemilio: ^
18:51emiliobz: reading, I see
18:51Gankromrobinson: do you have a sense pf how often the Option&#39;s in there are Some?
18:52mrobinsonGankro: Every time a CSS transformation is used.
18:52mrobinsonGankro: I would say that most pages probably don&#39;t use transformations at all.
18:52Gankromrobinson: as opposed to opacity or position?
18:53mrobinsonGankro: Those are probably more common. I&#39;m just guessing though. I don&#39;t actually have any data.
18:53Gankromrobinson: yeah I&#39;m just trying to make a guess on where to split
18:56emiliobz: Hmm... I had forgotten about all the restyle roots stuff... I guess we could pass aElement explicitly as a restyle root, but that seems hacky, let me see if I can find something better (or prove that it doesn&#39;t happen).
18:57emiliobz: actually doesn&#39;t http://searchfox.org/mozilla-central/source/layout/base/RestyleTracker.h#336 account for that?
18:58emiliobz: I guess you could still have a ForceDescendants hint on the parent thogh
18:58emilio*though
19:00bzemilio: reading
19:03bzemilio: ugh, meeting. I _think_ FindClosestRestyleRoot will save us, but I will need to check carefully after meeting.
19:04emiliobz: oh, right, there&#39;s also the anonymous content checks there, huh. No worries, and thanks!
19:53* gw tries to catch up on email
20:02bzemilio: ok, back
20:02bzemilio: reading again
20:04bzemilio: ok, FindClosestRestyleRoot on its own does not save us....
20:05bzemilio: because parent->GetParent() would generally be true
20:05bzemilio: That&#39;s for the editor case. The XBL case doesn&#39;t even test true for the native anon content pieces.
20:15emiliobz: sorry, was away for dinner. Back.
20:15bzemilio: So afaict nothing would ensure that we get restyled in the cases in question....
20:15bzemilio: even with gecko
20:16emiliobz: so, the thing that&#39;s saving us is the mDescendants array
20:16emiliobz: (AIUI)
20:16bzemilio: in RestyleTracker?
20:17emiliobz: yes, isn&#39;t it? Or am I missing something else? The problem is that it may break when something else has a ForceDescendants hint
20:18* bz reads more code
20:19bzAh
20:19bzright
20:19bzSo the failure case is when the restyle root has eRestyle_ForceDescendants
20:19bz(which was the only case as of the last time I really looked at this stuff)
20:23emiliobz: are you sure? huh, that&#39;s annoying... So you say we&#39;ll never get to push the new content down to mDescendants? I&#39;ll check that.
20:24bzemilio: no, I mean that eRestyle_ForceDescendants was the only sort of descendant restyle once upon a time
20:24bzemilio: It&#39;s not anymore!
20:24bzemilio: But in case we do have a eRestyle_ForceDescendants on the root, we still have a problem, right?
20:24emiliobz: oh, ok, that makes a lot more sense :-)
20:24TyOverbyGankro: How did you get the numbers for the bincode PR into servo? I&#39;d like to be able to repro it and see how future bincode optimizations could impact performance
20:25emiliobz: yup! So I&#39;ll probably make the content its own style root, or add it to the undisplayed content map if it doesn&#39;t have a frame
20:25GankroTyOverby: do you know how to replace Servo&#39;s webrender with a local one?
20:25TyOverbyGankro: using the cargo crate-replace file?
20:25GankroTyOverby: yes
20:26TyOverbyGankro: (I&#39;ve never actually managed to build servo`
20:26emiliobz: anyway, it&#39;s late here, and I have class tomorrow, so should probably sleep for now. Have a good day, and sorry for annoying you with this stuff :P
20:26bzemilio: no, it&#39;s all good.
20:27GankroTyOverby: so assuming you get over all the hurdles to doing the swap out (which I can help you with) -- the magic invocation is &quot;./mach run -r https://github.com/servo/servo -Z wr-stats&quot;
20:27GankroThen jiggle the mouse around to collect frames
20:27TyOverbyGankro: ok, neat!
20:27GankroThe stats are rendered in the window; should be pretty clear
20:28TyOverbyI might also just copy the webrender structures and use them as a test-case in bincode-bench
20:39* avadacatavra should probably open a mozjs pr too...
20:39* avadacatavra will do that tomorrow
21:55cbrewsterajeffrey: Still trying to figure out the best way to deal with iframe navigation/load events. I wrote up some notes at https://github.com/cbrewster/servo-notes/blob/master/iframe_about_blank.md#general-case and a couple approaches that didn&#39;t seem to work
21:56cbrewsterajeffrey: It would be nice to have some fresh eyes on the problem to see if I am missing something easier/more obvious
22:17gwr? anyone ^
22:18mbrubeckgw: r+
22:18ajeffreyavadacatavra: ooh XOWs!
22:31ajeffreycbrewster: okay, I&#39;ll have a look tomorrow.
22:31cbrewsterajeffrey: thanks
22:53ajeffreycbrewster: approach #2 sounds like the best bet, is the problem with it the case where the constellation generates the pipeline id?
22:53cbrewsterajeffrey: yeah
22:53ajeffreycbrewster: okay, so...
22:54ajeffrey2a, have the script thread generate the pipeline id, or
22:55ajeffrey2b, add another message where the constellation notifies the script thread of an in-progress load?
22:55cbrewsterYeah 2b might be the way to go since the child document may be in another script thread so we have to go through the constellation anyways
22:56ajeffreyTrue.
22:57ajeffreyThis would just leave initial about:blank as the outlier.
22:57ajeffreyHmm...
22:58cbrewsterinitial about:blank should be ok since it originates from the iframe itself
22:59ajeffreycbrewster: could we use this to make the pipeline id for initial about:blank the same as the frame id?
22:59ajeffreyThen pipeline IDs would always be generated by the constellation,
23:00ajeffreyTop-level frame ids would be generated by the constellation,
23:01ajeffreyAnd child frame ids would always be generated by script.
23:01ajeffreyNot sure if this would help much though.
23:02ajeffreyNeedless consistency and all that :/
23:02cbrewsterYeah, I mean we have to do the initial `about:blank` load synchronously in the script thread.
23:02cbrewsterSo it might be ok to have some PipelineIds generated in script and some in the constellation
23:04jntrnrthis seems like possibly a gw or pcwalton question - but anyone know why these folks might be having issues? https://github.com/servo/servo/issues/16393
23:04crowbotIssue #16393: Nightly build opens a blank window just a few seconds and closes - https://github.com/servo/servo/issues/16393
23:04jntrnrat first blush, it sounds graphics card related. I thought it might be Windows 7 related, but some have Win10
23:04jntrnrcould also be msvc related
23:09* gw looks
23:11gwjntrnr: It does sound like some kind of WR initialization issue - That shader compiler log doesn&#39;t make much sense to me though.
23:12jntrnrI was hoping someone would post something with a bit more info
23:12jntrnrI wasn&#39;t able to repro it when it got brought up before
23:13gwjntrnr: I suspect there&#39;s probably 2 or 3 different issues listed there, as the error logs seem unrelated (although both related to OpenGL initialization)
23:16jntrnrgw: we don&#39;t happen to have a few different graphics cards lying around do we?
23:16gwjntrnr: The long-ish term solution (assuming it&#39;s mostly related to GL driver-specific oddities) is either (a) write a native D3D backend or (b) Ship on Windows with ANGLE [this is what Gecko is planning to do].
23:17gwjntrnr: I don&#39;t have any gfx cards here, but I know that the gfx team in Toronto have a decent number of gfx cards they keep for testing
23:17jntrnrgw: I wonder if we could get some of them to try it out and narrow down what the cause is
23:18gwjntrnr: yup - let me CC a couple of people on the bug
23:18jntrnrgw: thx :)
23:21gwedunham: any updates on https://github.com/servo/saltfs/issues/614 ?
23:21crowbotIssue #614: Provision a machine for running WR benchmarks. - https://github.com/servo/saltfs/issues/614
23:30emiliofitzgen++, as usual :)
23:31fitzgenemilio: still running into stylo build issues, but its getting harder to track down :(
23:31fitzgenemilio: the issue is that all the separated bindings make it hard to isolate and reduce
23:31fitzgenemilio: (also, thanks :) )
23:32emiliofitzgen: hmm... yeah, that&#39;s right. Perhaps the easiest way, if it reproduces, is using the `bindings.rs` code, which is more straight-forward
23:33fitzgenemilio: is trace! a lowere log level than debug!?
23:33emiliofitzgen: yeah, I think so
23:33fitzgenemilio: ok, I&#39;ll switch them over
23:34emilioheycam: are you around by any chance?
23:34heycamemilio: hello!
23:34emilioheycam: hey! So, IDK if you&#39;ve got time to go through your bugmail, but I need to go back to sleep soon, so I had a few questions for you if you don&#39;t mind :)
23:35heycamemilio: no I&#39;m still a bit behind on bugmail
23:35heycamemilio: but have some time now, so fire away :)
23:36emilioheycam: So bholley mentioned here <https://bugzilla.mozilla.org/show_bug.cgi?id=1355343#c4> that you did bug 1351535 in that way because it&#39;s really hard to ensure style is up-to-date in PresShell::RecreateFramesFor
23:36firebothttps://bugzil.la/1351535 FIXED, cam@mcc.id.au stylo: frame constructor can call RecreateFramesForContent in content insertion/removal notification
23:36emilioheycam: do you know why&#39;s that?
23:37emilioheycam: in particular, bug 1357142 may work, but I had a patch doing a style flush instead of that and it was also green
23:37firebothttps://bugzil.la/1357142 NEW, emilio+bugs@crisal.io Avoid sync frame construction in PresShell::RecreateFramesFor
23:38heycamemilio: before doing the partial restyling stuff for RecreateframesForContent, I did try flushing styles, but ran into some assertions or test failures or something
23:38heycamemilio: although now I can&#39;t recall exactly what the issues were
23:40emilioheycam: https://hg.mozilla.org/try/rev/002276869dee was green on try IIRC
23:40emilioheycam: but I&#39;d rather kill that API altogether :)
23:41emilioheycam: just wanted to know if there was any reason I was missing for it to not work, but if it&#39;s not, I think I&#39;ll work a bit more on bug 1357142
23:42emilioheycam: (opinion on the last comment of that bug would also be appreciated btw! :))
23:42heycamemilio: you could go back to the state of the tree before I landed the bug 1351535 patches, add a style flush, and do a try run, see what failures I would&#39;ve got
23:44emilioheycam: makes sense, I might do it tomorrow if I have the time.
23:44heycamok
23:45emilioheycam: I don&#39;t particularly _need_ to do that bug, but it becomes harder to assert a few invariants about snapshots without a single entry point for styling
23:45emilioheycam: and I&#39;m already somewhat concerned about complexity in components/style, so I don&#39;t really want to add more
23:45heycamok. well I&#39;ll reply in the bug. :)
23:45emilioheycam: thanks!
23:45* emilio -> bed
23:46emilioheycam: have a nice day :)
18 Apr 2017
No messages
   
Last message: 39 days and 14 hours ago