atom/atom — pull request #3154 by nathansobo (2014-08-01 22:48:45+00:00)
Title: WIP: Render editor content via a tiling strategy

I'll explain more as this develops, but I'm experimenting with a new rendering strategy for the editor that's yielding promising results on Chromium 36. I've tried this before and closed it, but things are going better on this newer rendering engine and a bit more maturity in the `EditorComponent` code. The current rendering strategy exhibits some pretty serious performance regression on Chromium 36, so some kind of optimization work is something of a blocker for shipping it.

Here's a look at the composited layer borders in orange.

![screenshot 2014-08-01 16 41 27](https://cloud.githubusercontent.com/assets/1789/3785952/031bacd6-19cd-11e4-960e-7b884a7b48e2.png)

Here's a promising timeline of scrolling around at moderate speed, showing we're meeting most of our frame times with room to spare at 60 FPS.

![screenshot 2014-08-01 10 12 18](https://cloud.githubusercontent.com/assets/1789/3785973/9825c032-19cd-11e4-93eb-569adbab0239.png)

I'm also pretty close clearing 13ms frame times for cursor movement (which is what I have my key repeat rate set at so it's important to me) with a different strategy for requesting frames. I wish I could supply `requestAnimationFrame` with my desired frame time for a given request. For now I'm hoping a synchronous rendering strategy for certain operations will suffice.

You never really know until it's fully implemented, but this is promising. The gutter is disabled because it's not yet tiled, and the cursors and highlight decorations (responsible for selections, among other things) haven't been fully implemented yet. But I'm feeling pretty good.