Hacker News new | past | comments | ask | show | jobs | submit login

There's not much context here, so let me help. WebRender is Servo's renderer, which is the component that takes all the junk that happens behind the scenes (the DOM, etc.) and turns it into something that your monitor can actually display.

What differentiates WebRender from the renderers of all other modern browsers is that renderers have traditionally operated in "immediate mode", where the renderer itself draws items on the screen one at a time, whereas WebRender operates in "retained mode", where the renderer declaratively shunts all the heavy work to the GPU. (And note that I'm hardly a graphics programmer at all, so I may have butchered this.)

Some relevant links:

pcwalton's great demonstration of the initial WebRender prototype from February (page demos start at 26 minutes): https://air.mozilla.org/bay-area-rust-meetup-february-2016/

WebRender 2 overview: https://github.com/servo/servo/wiki/Webrender-Overview#webre...

A short walkthrough of WebRender 2: http://www.masonchang.com/blog/2016/7/18/a-short-walkthrough...

I believe a long-term goal is to get WebRender into Firefox itself, but this would be quite an invasive surgery (and AFAIK wouldn't be able to 100% obviate Gecko's current renderer, for legacy reasons(?)) and so shouldn't be expected in the near future (though Stylo, another large Servo component, should hopefully be landing in Firefox this year).

EDIT: Oh, and of course, Servo is a new browser engine from Mozilla and written in Rust (though it wouldn't be entirely inaccurate to also say that Rust was written for Servo, at least originally :P ).




> and AFAIK wouldn't be able to 100% obviate Gecko's current renderer, for legacy reasons(?))

IIRC it's not just supporting legacy systems, but also things like printing (and print to PDF) need a different renderer. I'm not sure; I forgot the details.

> hat Rust was written for Servo, at least originally

Rust was initially called "The Servo Project", actually


Graydon Hoare started what became Rust some time before 2009. Graydon came up with the name, inspired by the wheat mold, I believe. Rob Sayre and I got Rust sponsored as Graydon's day job by Mozilla in 2009, if memory serves.

I did a brief keynote at Mozilla's Whistler, BC all hands in 2010 proposing Servo, a new layout engine programmed in Rust. Servo was named by Dave Herman and me in honor of Tom Servo from MST3K. Rust was never "The Servo Project".


Huh, I thought that both Servo and Rust were internally under the Servo umbrella for a while at least. I'm probably wrong then :)



Graydon tweeted https://twitter.com/graydon_pub/status/761280391239958528 and it's all clear now: the Mozilla Summit session was called "Project Servo" but focused more on Rust, and Graydon's slides had that phrase as title:

http://venge.net/graydon/talks/intro-talk-2.pdf

(also picked up on my T2 robot from the future joke and reversed it, lol). But Rust was Rust, even then. Servo was the big news, I think Rust was known within Mozilla, a bit. So we used Servo in the session name and the rest is history.


> and AFAIK wouldn't be able to 100% obviate Gecko's current renderer, for legacy reasons(?)

I assume they'll make the cut-over at some point as WebRendern should run on most post-2010 hardware. Will Mozilla drop support Firefox for those oldest machines? We don't know, they don't seen to have developed a strategy as yet.

There are software shims for GPUs that can't provide the required OpenGL features but performance is awful.


> There are software shims for GPUs that can't provide the required OpenGL features but performance is awful.

WARP and SwiftShader are better than you might think.


I believe we did an experiment with llvmpipe which wasn't nearly as fast as webrender on a GPU, but was faster than the other software renderers.

So there is some reason to hope for a very easy software fallback that is still competitive with other software renderers.


From the slides:

   Clipping an axis-aligned rectangle to another axis-aligned 
   rectangle produces at most one axis-aligned rectangle. 
What if the object in front overlaps only one corner of the one in back? That results in two rectangles.

Or if it's entirely within the outer rect...?


Clipping in (intersection), not clipping out (difference).




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: