GPU colour filters: the common container set is complete
The last common container primitive moves to the GPU. A colour filter - grayscale, brightness, contrast, invert, saturate, sepia, hue-rotate, opacity - renders its content to a GPU layer and applies the colour transform per pixel on the device, matching the software renderer within two levels. Fixing it also fixed a subtle edge bug across all the containers: content drawn onto a transparent layer left its anti-aliased edges premultiplied, and the layer is now un-premultiplied to straight alpha the way the software path keeps it, so clip and transform edges got more accurate too. With clips, transforms, and colour filters all on the GPU, the common container set - the wrappers that most real pages use - is now GPU-accelerated. Blur, drop-shadow filters, and 3D transforms remain on software. The GPU aspect moves 37 to 40. The overall holds at 57.