- Stencil Buffer
- Tiling refers to a more complex, but faster memory-layout. Instead of storing pixels line by line, they're either stored as a series of small square blocks, or they're stored in the order of a Space filling curve. In both cases, pixels that are close in the image are more likely to be close in video memory, resulting in better cache locality, thus more speed.
(The best memory layout for the render target is closely tied to the way the rasterizer works; it has a specific memory access pattern that needs to be accommodated. The best memory layout for textures etc. depends on the specific shader's access patterns, but better cache locality is usually a good thing.)
Yeah, as an example think of the lines of pixels on your monitor.
A simple layout would put each pixel into memory in order line by line, but then the 1st pixel on the 1st line is nowhere near the 1st pixel on the 2nd line, even though they are right next to each other on your monitor and will likely need to be accessed at the same time. Tiling makes sure nearby pixels are nearby in memory as well, which allows caching to be much more effective (and therefore speeds everything up).
It's probably due to Karl's changes to improve the handling of software fallbacks. Things like image view and videos in firefox are now much faster, however certain other operations seem to be slightly slower now. The basic problem is how to handle sw fallbacks properly. Sending buffers back and furth across the bus is a performance killer, so there are ways to to mitigate that depending on the type of operation (e.g., read vs write, size of pixmap, etc.), however, there are always lots of corner cases. Unfortunately, we probably need better logic in the core EXA code to properly handle all these corner cases.