Hi,
The GPU implementation uses a few different AA techniques, depending on your surface configuration & the type of primitive being drawn. Until recently, most of the techniques would fall into one of two buckets:
- MSAA: If your surface was constructed as an MSAA framebuffer, Skia computes binary coverage per sample, and relies on MSAA resolve for AA.
- Geometric / analytic: I think this is more common among our clients. Here, Skia tries to compute an exact coverage value per pixel using some geometric or analytic technique. For simple primitives like circles or round-rects, there are shaders that inflate the bounds by a pixel, then use the fragment position to compute the exact distance to the edge of the shape. For more complex paths, the different path renderers use a variety of approaches, but one common idea is to inflate the path geometry with a skirt of triangles, and interpolate coverage across that skirt.
More recently, a new path rendering algorithm has been added - CCPR, which is a particular GPU implementation of the idea from the AAA slides you linked above.
-Brian