22 ms·
The web at maximum FPS: How WebRender gets rid of jank
- vvanders 9y agoGood stuff. Speaking of rendering text glyphs on the GPU, there's a really clever trick(commonly called loop-blinn, from the two authors): https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch25.html https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch25.... You can pretty much just use the existing bezier control points from TTF as-is which is really nice.
- pcwalton 9y agoIf only it were as simple as just using Loop-Blinn. :) The technique described there will produce unacceptably bad antialiasing for body text. Loop-Blinn is fine if you want fast rendering with medium quality antialiasing, though. (Incidentally, it's better to just use supersampling or MLAA-style antialiasing with Loop-Blinn and not try to do the fancy shader-based AA described in that article.) Additionally, the original Loop-Blinn technique uses a constrained Delaunay triangulation to produce the mesh, which is too expensive (O(n^3) IIRC) to compute in real time. You need a faster technique, which is really tricky because it has to preserve curves (splitting when convex hulls intersect) and deal with self-intersection. Most of the work in Pathfinder 2 has gone into optimizing this step. In practice people usually use the stencil buffer to compute the fill rule, which hurts performance as it effectively computes the winding number from scratch for each pixel. The good news is that it's quite possible to render glyphs quickly and with excellent antialiasing on the GPU using other techniques. There's lots of miscellaneous engineering work to do, but I'm pretty confident in Pathfinder's approach these days.
- AriaMinaei 9y agoI'm very excited about your work on Pathfinder! I think great possibilities will open up once there is a way to efficiently rasterize vectors on the GPU. Do you think, once the implementation is more complete, that it would make it possible to render fullscreen scenes of vector graphics (say in SVG) with hundreds of moving and morphing shapes on a mid-range phone/tablet/pc? I know it's very difficult to predict these things, but I thought you may have already seen enough performance characteristics to make an educated guess :)
- pcwalton 9y agoOne of the goals of Pathfinder 2 is to support SVG well. Initial results are promising, but it's too early for me to want to speculate.
- mrec 9y agoI hadn't seen Pathfinder before; very cool! Especially if it's easily transferable to gpuweb, if and when that ships. Reminds me of Mark Kilgard's old NV_path_rendering extension, which (as so often happened for interesting NV stuff) never made the jump to portability. One of its touted benefits as an in-driver implementation was the ability to share things like glyph caches between multiple apps with separate GL contexts, but with "apps" increasingly becoming "browser tabs", maybe a browser-managed cross-tab cache is almost as good. BTW, is the WebGL demo available online anywhere, for people who don't want to install npm?
- pcwalton 9y ago> BTW, is the WebGL demo available online anywhere, for people who don't want to install npm? Not yet. There are enough known issues that I'd like to fix first.
- sjshdjddkg 9y agoHow portable is pathfinder? Are there plans for metal and/or vulkan support? Is it extensible to general purpose path-and-clip rendering?
- pcwalton 9y agoSee the README: https://github.com/pcwalton/pathfinder https://github.com/pcwalton/pathfinder
- vvanders 9y agoWell there's also the problem that it's heavily patented :). Just throwing it out there as a neat thing, the GPU space has all sorts of fun stuff like that. I'll have to take a look at Pathfinder, have any links handy that I can dig into?
- markdog12 9y agoFTA: https://github.com/pcwalton/pathfinder https://github.com/pcwalton/pathfinder
- Jasper_ 9y agoI noticed that Pathfinder went from calculating the intersection of beziers on the GPU with compute back to doing triangulation on the CPU. Any reason for this major switch in approach? I assume you've seen other things like Slug, glyphy, etc., which use a combination of CPU pre-processing and GPU processing to make the bezier intersection as efficient as possible...
- pcwalton 9y agoBecause (1) compute requires newer hardware than what would be ideal; (2) compute cannot take advantage of early Z, which is critical for SVG (neither can Slug or GLyphy, by the way); (3) the two step process is hostile to batching. Slug is asymptotically slower than Pathfinder at fragment shading; every new path on a scanline increases the work that has to be done for every pixel. (Of course, that's not to say Slug is always slower in practice; constant factors matter a lot!) GLyphy is an SDF approach based on arc segment approximation that does not do Bézier intersection at all.
- markdog12 9y agoReally cool work. Can't wait until we can give PathFinder a go in FF for text, and hopefully even SVG, :) BTW, I see you implemented PathFinder in TypeScript as well. What do you think of it, especially since I assume a lot of your recent programming has been in Rust?
- pcwalton 9y agoWell, it's only the demo that's in TypeScript. The demo is just a fancy UI that takes the Rust-produced vertex and index buffers and uploads them to the GPU for rendering. Ideally, I don't want to have to any code duplication between the Rust WebRender and Pathfinder demo code. That said, Rust on the server and TypeScript on the client go really well together. Strong typing everywhere!
- monfera 9y ago> Loop-Blinn is fine if you want fast rendering with medium quality antialiasing For example, when using SVG shape-rendering: optimizeSpeed ? I truly hope that SVG is going to be part of this new magic, and that the shape-rendering presentation attribute is utilized. I don't think current SVG implementations get much of a speed boost by optimizeSpeed. Speaking of which, to what extent will SVG benefit from this massive rewrite?
- Animats 9y agoDo they generate those triangles for each instance of each glyph, or only once for each character in the font?
- vvanders 9y agoJust once per character in the font.
- pcwalton 9y agoI'm not sure what you mean by "they" and "character" here. In general, the tessellation, whether it's constrained Delaunay triangulation or a Lorenzetto style trapezoidation as Pathfinder uses, needs only be done once per glyph and then can be reused for any size. However, note that both hinting and stem darkening for gamma correction distort the glyph outlines in a way that depends on the pixel size, so it's not quite that simple.
- frostwhale 9y agoI was already extremely pleased with the Firefox Quantum beta, they really are stepping their game up. If this is truly as clean as they say it is, web browsing on cheap computers just got much smoother.
- kidfiji 9y agoI just love how they simplify something that's seemingly esoteric to me. I work with the web and I still have a lot to learn.
- winter_blue 9y agoA lot of credit for that goes towards Lin Clark, who's done some amazing expository articles like this before.
- fritzy 9y agoI imagine the render task tree also has to determine which intermediate textures to keep in the texture cache, and which ones will likely need to be redone in the next frame. That kind of optimization has to be tricky.
- pcwalton 9y agoYeah, it's one of the two hard problems in computer science after all :) In practice LRU caches work pretty well.
- stevenhubertron 9y agoI really appreciate the time they are taking to describe the changes in an easy to understand way. The sketches and graphics really help explain a pretty complex subject.
- kevindqc 9y ago>For a typical desktop PC, you want to have 100 draw calls or fewer per frame Don't PC games use thousands of draw calls per frame?
- simlevesque 9y agoDesktop PCs don't play games.
- pcwalton 9y agoThey do, but we're targeting Intel HD quality graphics, not gaming-oriented NVIDIA and AMD GPUs. That said, even Intel GPUs can often deal with large numbers of draw calls just fine. It's mobile where they become a real issue. Aggressive batching is still important to take maximum advantage of parallelism. If you're switching shaders for every rect you draw, then you frequently lose to the CPU.
- SomeCallMeTim 9y agoSpeaking of batching, I look at this demo [1] on my mobile phone, and I can get ~3500 sprites without dropping below 60FPS. A web page may not be able to reuse as much image data, I know. But smart game engines frequently look for ways to better batch sprites. And technically speaking, if you're using a Z-buffer, you don't need to sort opaque layers at all. You can draw the layers in back and then draw more layers in front. Yes, you get overdraw in that case, but if you're using Z values for layering, you could potentially get better batches by drawing in arbitrary order (i.e., relying on Z-depth to enforce opaque object order), and in my experience larger batches gives you a bigger advantage than reducing overdraw. [1] http://www.goodboydigital.com/pixijs/bunnymark/ http://www.goodboydigital.com/pixijs/bunnymark/
- markdog12 9y agoInterestingly, WebRender renders that demo at about 2fps. It's obviously a bug though, if you hold in the mouse, it's 60fps. Win 10, latest nightly, WebRender enabled
- pohl 9y agoNow that this is closer to shipping, I'm curious what impact this would have on battery life. On the one hand, this is lighting up more silicon; on the other hand: a faster race to sleep, perhaps? Have there been any measurements on what the end result is on a typical modern laptop?
- kibwen 9y agoDespite the huge fans and heatsinks on modern desktop GPUs, I presume that a GPU would still use less energy than a CPU for the same workload, yes? Do mobile GPUs have a sleep mode comparable to mobile CPUs? Completely agreed that some measurements would be nice.
- TylerE 9y agoA modern high-end GPU can draw upwards of 200w. Edit: Not sure why I'm being downvoted for stating a simple fact. The top-of-the-line AMD and NVidia cards have TDPs of 200-250w.
- 0xffff2 9y agoYour comment is both true and utterly irrelevant to the person you replied to who asked about comparison between CPU and GPU efficiency. The important information to answer the question is how much power the GPU will use, not how much it can use.
- lightedman 9y agoBut how much it can use gives you an upper limit on how much it will use. To boot, that also gives you an idea of how much power one can expect to draw under full load at any given time over any given time frame.
- imtringued 9y agoHigh end desktop CPUs draw around 90W and 200W GPUs can do one or two orders of magnitude more computation in specialised workloads than CPUs.
- azinman2 9y agoWon’t this cause a lot of work to be done for a blinking cursor? Curious about battery drain, I/O overhead, General CPU usage, etc.
- pcwalton 9y agoWith a compositor you're already drawing every pixel every frame on the GPU, whether it's just a cursor blinking or not. The WR approach basically only adds a negligible amount of vertex shading time.
- drudru11 9y agoBut only on a change... So if the cursor blinks every second, you would be doing the render/composite at that point.
- Rusky 9y agoWebRender does exactly the same thing.
- randyrand 9y agoIt seems like even in the compositor approach, you could optimize that. copy the last last drawn frame buffer directly and then modify it. I think the best approach would be some hybrid between invalidation and redrawing everything.
- lightedman 9y agoIIRC GPUs already do a more efficient version of what you're proposing, at least the mobile ones, by using tile-based rendering. Thus only the general area of the screen that changes gets modified while the remainder is static. This way you can easily control how many GPU cores are actively changing and thus need power, while you keep the static state in the other cores and they consume negligible power.
- jacob019 9y agoLove the little stick figure representations of the threads/cores.
- Vinnl 9y agoThat's to Lin Clark's credit.
- mxstbr 9y agoShe is great at breaking down complex concepts into digestible and easily understandable pieces. Her whole Code Cartoons series is just plain awesome (https://code-cartoons.com/@linclark https://code-cartoons.com/@linclark) and her conference talks are some of my all-time favorites!
- Tehnix 9y agoAnyone know if they used any specific tools for the graphs/figures? They remind me of XKCD style graphs, really like those for technical yet informal explanations!
- hsivonen 9y agoWacom Cintiq using Pixelmator according to https://mobile.twitter.com/linclark/status/867469723998539777 https://mobile.twitter.com/linclark/status/86746972399853977...
- ttflee 9y agoSo, did it mean that Mozilla has implemented Core Animation counterparts in each and every platform they supported?
- djhworld 9y agoThis is fantastic (for me) I'd largely forgotten what pixel shaders actually were, so it was nice to get a high level understanding through this article, especially with the drawings!
- ngokevin 9y agoI don't think it would help WebVR (maybe in the future rendering DOM as textures, but it'd be limited to only 2D), but today WebVR applications goes through a different pipeline, running purely on WebGL.
- mncharity 9y agoSome of us are running alternate WebVR stacks. :) On a Vive, playing with the 3D demo, it looks like I'm getting ~50 minimally-readable lines of text, with no motion, and no lens correction (integrated graphics). Should be ~80ish with corrected chromatic aberration. Which is pretty good for the low-angular-resolution and PenTile Vive. It's comparable to the usual hand-tuned pixel fonts rendered flat (part of that is PenTile pain).
- Ygg2 9y agoInterestingly enough I tried this on Windows 10 and it seems to hide some extensions and more importantly my min/max/close button. Also fonts look slightly different, like I am browsing through using my Linux machine.
- pacaro 9y agoHumourously enough, when I worked on a team that was writing a graphical web browser for mobile in the late 90's [1], they used a display list for rendering. The reasoning was somewhat different, web pages were essentially static (we didn't do "DHTML"), if the page rendering process could generate an efficient display list, then the page source could be discarded, and only the display list needed to be held in memory, this rendering could then be pipelined with reading the page over the network, so the entire page was never in memory. Full Disclosure: while I later wrote significant components of this browser (EcmaScript, WmlScript, SSL, WTLS, JPEG, PNG), the work I'm describing was entirely done by other people! [1] - I joined in 97, the first public demo was at GSM World Congress Feb 98
- AceJohnny2 9y agoOpera?
- dom0 9y agoOpera is a few years older. MWC 98 + mobile = WAP browser.
- futurix 9y agoThat's WAP. Original poster wrote about proper HTTP/HTML/JS browser.
- pacaro 9y agoThe company was STNC Ltd. The µbrowser was called Hitchhiker. STNC was acquired by Microsoft in July 99. My understanding is that the demo at GSM World in 98 was the first time anyone had demonstrated a graphical browser on a cellphone that implemented common web standards (HTML/HTTP/TCP) rather than using a transcoding gateway (up.link or WAP style — the approach taken by Unwired Planet) The smallest device that we targeted (IIRC) had a screen that was 100x64 pixels, we had 64KiB of RAM at runtime (`unsigned char gHeap[0x10000];`), and our ROM footprint was about 350KiB
- 9y ago
- OddMerlin 9y agoGreat write up.
- shmerl 9y agoIs it going to use Vulkan? Sounds like a good fit for proper parallelized rendering. UPDATE: Ah, I see it's mentioned in the future work: https://github.com/servo/webrender/wiki#future-work https://github.com/servo/webrender/wiki#future-work Vulkan? This could possibly make some of the serial steps above able to be parallelized further. So it will be using OpenGL then?
- larsberg 9y agoThe awesome folks at Szeged University have been working with our team on both Vulkan and native DX11 backends!
- shmerl 9y agoThat's great!
- 482794793792894 9y agoVulkan has been a consideration from the earliest architecturing steps done in WebRender. So, the internal pipelines are all set up to be mapped to Vulkan's pipelines. It's actually OpenGL which fits less into the architecture, but it's still easier to just bundle WebRender's pipelines all together and then throw that into OpenGL.
- shmerl 9y agoInteresting. Will it eventually use vulkano library, or its own Vulkan bindings?
- kadal 9y agoRe: HW Acceleration Is this going to work at all on Linux?
- metajack 9y agoWe specifically target integrated GPUs, and several of the main developers work on linux using Intel GPUs with open source drivers. There's every reason to think this will be amazing on Linux.
- alex_duf 9y agoThis is making me happy! Thanks!
- mncharity 9y agoOn Ubuntu 16.4 LTS, I just now installed rust nightly[1], and pathfinder[2], and the three demos appear to work in the default firefox 56, but not in chromium 61.0.3163.100[3]. Disk usage was half GB, split between ~/.cargo and pathfinder/ . Time was... less than a snack. My GPU was integrated Intel HD 520. I already had npm 3.10.3. [1] https://www.rust-lang.org/en-US/install.html https://www.rust-lang.org/en-US/install.html Select 2, for custom install, and change to "nightly". My host triple was x86_64-unknown-linux-gnu. [2] https://github.com/pcwalton/pathfinder https://github.com/pcwalton/pathfinder [3] TextDemoView.initContext (view.ts:324) Uncaught (in promise) TypeError: Cannot read property 'createQueryEXT' of null . EDIT: The three demos are: some text; the SVG tiger; some planar text in 3-space.
- 482794793792894 9y agoI have it enabled on one of my Firefox profiles. Would not yet recommend for normal browsing, there's still rendering errors and sometimes seemingly random performance drops, but you can definitely see it working. That is, I have to be lucky for this benchmark [1] to not crash my "regular" Firefox Nightly. With WebRender on the other hand, the benchmark becomes entirely unimpressive, as if you were just playing a pre-rendered video. My system has an Intel i5-3220M with HD Graphics 4000 (was midrange for a laptop in 2012) and 4GiB RAM. OS is openSUSE Tumbleweed with a KDE Plasma + bspwm combination as desktop environment, so no desktop compositor (no idea if that makes a difference). [1] https://www.youtube.com/watch?v=u0hYIRQRiws https://www.youtube.com/watch?v=u0hYIRQRiws
- JepZ 9y agoWhile I would consider myself more a Golang fan than a Rust fan, I am impressed by the speed by which the Mozilla team is changing fundamental parts of their browser and somehow I believe rust has something to do with that speed.
- pimeys 9y agoI've been working professionally with Rust for a year now. When I got over the first wall, it has become the best tool I've had for creating backend applications. I have history with at least nine different languages during my professional career, but nothing comes close giving the confidence and ergonomics than the tools Rust ecosystem provides. Firefox, especially the new Quantum version is awesome. But Rust as a side product might be the best thing Mozilla brought us. I'm truly thankful for that.
- htn369 9y agoHow complete is the Rust library and complementing open source projects comparing with golang?
- pimeys 9y agoProbably not that complete, but getting better. I needed to write some of my own libraries, but for http server/client hyper[0] is fast and quite comfortable. It's getting a http2 support soon[1] and the ecosystem around the tokio[2] framework grows fast. I need to do fast consuming and for Kafka the situation is quite good, for rabbitmq I have stuff that works but I needed to hack with a knife to get stuff working the way I wanted. Everything's quite low level in the end and there hasn't been a task I couldn't solve either by myself or finding a library and doing a couple of pull requests to get things running. The hardest was to implement a working HTTP-ECE for web push notifications by reading and understanding all the RFC drafts, but the project[3] teached me a lot. Basically all my consumers deal with millions of events every hour, using 0.1 cpu's and about 50 megabytes of RAM. Uptimes reaching 2-3 months if I don't need to update the software. [0] https://github.com/hyperium/hyper https://github.com/hyperium/hyper [1] https://github.com/carllerche/h2 https://github.com/carllerche/h2 [2] https://tokio.rs/ https://tokio.rs/ [3] https://github.com/pimeys/rust-web-push https://github.com/pimeys/rust-web-push
- markdog12 9y agoIs WebRender working on Android Firefox Nightly yet? Update: about:support says not ready for Android
- aneutron 9y agoOn nightly, the flag is available in about:config and I alreay enabled it.
- markdog12 9y agoYeah, but check about:support, it'll say not ready
- Brakenshire 9y agoI asked this on a thread a few weeks back, if I recall they're targeting 59 for Android.
- amelius 9y ago> What if we stopped trying to guess what layers we need? What if we removed this boundary between painting and compositing and just went back to painting every pixel on every frame? This feels a bit like cheating. Not all devices have a GPU. Would Firefox be slow on those devices? Also, pages can become arbitrarily complicated. This means that an approach where compositing is used can still be faster in certain circumstances.
- aneutron 9y agoActually, virtually every device the average grade consumer uses, has a GPU. For instance, even Atom processors have GPUs. Granted, they don't have as much cores as a full-fledged nVidia GPU, nor as much dedicated memory, but they are still GPU with several tens of cores and specialized APIs that were designed specifically for the tasks at hand. Plus, they offload (ish) the CPU.
- amelius 9y agoHow about energy use? PS: And my second point?
- aneutron 9y agoThere is a comment in this thread that explains this very well. 1) So the average CPU can do arroung several GFLOPS, the GPU however, even the integrated, can do some TFLOPS. S 2) CPUs have syncronization primitives, re-ordering, execution permissions, all sorts of besides the task ops they have to enforce. GPUs for the most part do not care about any of that. From 1 and 2, you could spending 16ms classically rendering a web page, or spend 4ms rendering the page and 12ms on idle. From an energy standpoint, it's the same if not arguably better. (I'm not an expert but I think for simple and over repetitive shaders and the batching implemented, it is actually logical)
- amelius 9y agoTo come back to my second point, let's say we make a webpage arbitrarily more complex. Where does the tipping point lie, where compositing would become more favorable (in terms of time and energy) than repainting everything on every frame? Also, what (time and energy) savings could compositing bring if implemented on the GPU? (versus repainting everything on the GPU).
- bsimpson 9y agoGreat write-up - thanks for sharing. The name "WebRender" is unfortunate though. Things with a "Web" prefix - "Web Animations", "WebAssembly", "WebVR" - are typically cross-browser standards. This is just a new approach Firefox is using for rendering. It doesn't appear to be part of any standard.
- rileyphone 9y agoIf Webkit did it, why can't they?
- 482794793792894 9y agoI remember reading at some point that WebRender could actually be isolated relatively easily and then applied to basically any browser. That sort of already took place, going from Servo over into Gecko. So, it might actually turn into somewhat of a pseudo-standard.
- metajack 9y agoYou send display lists to it over IPC, and it's easy enough to generate those from C++. It has a well defined API boundary, which makes it easy to use. This is in stark contrast to the style engine in Servo which relies on memory representation to be fast. So integrating it requires very tight coupling of data structures.
- kibwen 9y agoIs it in its own process for improved security? Specifically, are buggy graphics drivers the concern?
- bzbarsky 9y agoBuggy graphics drivers are definitely a concern, not just for security but for stability. Specifically, graphics drivers crash. A lot. Simply moving GPU access to a separate process (which is common in modern browsers) means that a driver crash doesn't bring down any webpages, much less the whole browser; if done right you just get a flicker as the GPU process is restarted.
- madez 9y agoWhy are they so obsessed with 60 fps? 120 fps looks considerably better, and there are other effects like smear and judder that significantly decrease even with significantly higher frame rates, say 480 fps [1]. [1] http://blogs.valvesoftware.com/abrash/down-the-vr-rabbit-hole-fixing-judder/ http://blogs.valvesoftware.com/abrash/down-the-vr-rabbit-hol...
- stcredzero 9y agoWhy are they so obsessed with 60 fps? Baby steps.
- aneutron 9y agoNot an expert, but I feel that that was more of an analogy/image to give what they were aiming for. The real objective is not 60fps, the real objective is to use the GPU to do tasks that it was designed for. Plain and simple. This however, gives the user a smoother experience, and 60 fps generally gives a noticeable difference.
- to3m 9y agoI don't think 120Hz is as common as 144Hz. But the vast majority of displays update at 60Hz, so you might as well aim for that.
- sturmen 9y agoAs everyone said, 60fps is not the destination but merely a waypoint. It's a good goal, considering 99% of screens that are in use today refresh at 60 Hz or their regional equivalent. Higher refresh rates are next.
- kibwen 9y agoThe WebRender folks are well aware that higher framerates are the future. Here's a tweet from Jack Moffitt today, a Servo engineer (and Servo's technical lead, I believe): https://twitter.com/metajack/status/917784559143522306 https://twitter.com/metajack/status/917784559143522306 "People talk about 60fps like it's the end game, but VR needs 90fps, and Apple is at 120. Resolution also increasing. GPUs are the only way. Servo can't just speed up today's web for today's machines. We have to build scalable solutions that can solve tomorrow's problems."
- ino 9y agoAny thoughts on weather fill rate could become an issue?
- Rusky 9y agoIt shouldn't- they're not doing anything crazy in the pixel shaders, and they make excellent use of early Z culling.
- poizan42 9y agoI tried testing it out on a ThinkPad T61 to see how well it works with an older embedded GPU (Intel 965 Express), but I can't enable it (on Windows 10) because D3D11 compositing is disabled, it says D3D11_COMPOSITING: Blocklisted; failure code BLOCKLIST_ So does that mean that it is known not to work with that GPU? Can you override the blocklist to see what happens? Edit: It also says: > Direct2D: Blocked for your graphics driver version mismatch between registry and DLL. and > CP+[GFX1-]: Mismatched driver versions between the registry 8.15.10.2697 and DLL(s) 8.14.10.2697, reported. Indeed that is correct, the driver is marked as version 8.15.10.2697 but the fileversion of the dlls are 8.14.10.2697, this seems to be intentional by Microsoft or Intel, note that the build numbers are still the same. Firefox is quite naive if it thinks it can just try to match those.
- MrRadar 9y agoTake it from a Thinkpad X60 owner, the Intel GPUs from that era are absolute trash. They don't support OpenGL 3.0 on any platform (in fact, they didn't gain 3.0+ support until Sandy Bridge in 2011(!)) so don't expect any of this recent GPU-centric work (which seems to be targeting OpenGL 3.0+) to work on these GPUs. It would probably work just fine on the contemporary Radeon and GeForce cards since they support OpenGL 3.3.
- lkbm 9y agoThis is a great explanation. I also recommend Metajack's talk on WebRender in Servo: https://www.youtube.com/watch?v=an5abNFba4Q https://www.youtube.com/watch?v=an5abNFba4Q Also go read everything else Lin Clark has done. They're pretty great.
- esaym 9y agoWill there finally be a unified use of the GPU on all platforms (win, mac, linux, etc) or will WebRender just be a Windows only feature for quite some time?
- hexane360 9y agoI have WebRender working on Linux with Intel 5500 integrated graphics. Hardware acceleration is still a bit glitchy though I'm afraid (with or without WebRender). To enable, toggle 'layers.acceleration.force-enabled' as well as 'gfx.webrender.enabled' edit: It's also working through my Nvidia 950m (through bumblebee), although subjectively it seems to have a little more lag this way.
- anon1253 9y agoJust tried it with the Nightly by setting gfx.webrender.enabled to true in about:config. Wow, that thing flies. It's seriously amazing. And so far no bugs or visual inconsistencies I could detect. Firefox is really making great progress on this front!
- mycoborea 9y agoYeah I'm pretty stunned at the speed improvements. I was getting a little worried there after Australis.
- Antrikshy 9y agoI really want to use Firefox full time, but I miss Safari's multi-touch gesture integration.
- DontGiveTwoFlux 9y agoYou can try out Better Touch Tool to add a ton of custom gestures to whatever mapping you want. For example, I use a four finger swipe down to hit CMD-W, which closes the window in focus for most apps. https://www.boastr.net/ https://www.boastr.net/
- 482794793792894 9y agoThere's more steps necessary to enable WebRender in full capacity. I presume, though, that things are buggier then and the potentially introduced performance drops might actually make it feel slower for now. I don't know, though, I haven't tested it with just gfx.webrender.enabled. You can find the current full list of steps to enable WebRender here: https://mozillagfx.wordpress.com/2017/09/25/webrender-newsletter-5/ https://mozillagfx.wordpress.com/2017/09/25/webrender-newsle...
- markdog12 9y agoJust tried it on iMac 27" late 2015, High Sierra, latest nightly with WebRender enabled. Went to https://codepen.io https://codepen.io. Froze the screen for 30-40 seconds, then just black. Had to hard reset.
- pfedigan 9y agoGreat Explanation! I wonder how much this will impact my gaming experience while browsing websites.
- hasenj 9y agoThis is great! I'm really impressed by the technical achievement, and hope everyone takes lessons from it to put performance and FPS at the forefront of their concerns when developing applications. Sadly, seeing the state of the industry, people will just use this as an excuse to continue write more and more sloppy code that would perform terrible even on the newest and faster WebRender version. In other words, this version might run current websites at 60 fps. But wait a few years, and it will become the norm that a lot of websites render at 10fps or less. There should also be a way to punish developers who fail to run their sites at 60fps on WebRender, similar to how browsers will start to punish sites that run without https. For example, if a site fails to run at 60fps for a few seconds, show some kind of alarm on the address bar that this site is very slow and might crash the browser.
- critiqjo 9y agoNo, not "crash the browser" (coz browsers are not supposed to crash no matter the site's content), but that "this site might drain your battery quickly" or something along those lines.
- lokimedes 9y agoNicely done article, but please please stop using analogous terms like quantum, rocket, atoms, jet, etc... These terms actually means something in the real world. Working in the limbo between web dev and science exacerbates how silly this is. Find your own terms please.