optimize verts

Take advantage of the new virtual on SkShaderBase : appendStagesWithUpdater

If our shader supports that, we can draw each triangle without having to
recreate the entire pipeline/blitter.

This change produces 3 different loops:

tricolor only : uses private backdoor to update colors per triangle
has updater   : uses updater to update ctm per triangle
general       : rebuilds pipeline/blitter on each triangle

In a follow-up, we may be able to plumb updater through to other shaders
(other than image), which would have us land in the updater case more
often.

Before
    728.09  	verts_textures_colors	8888
    167.48 ?	verts_colors	8888
    510.17  	verts_textures	8888

After
    729.61  	verts_textures_colors	8888
    168.80  	verts_colors	8888
    219.58  	verts_textures	8888

Change-Id: I87a6e6dc23dfba3377d6f9a54818fe6b8d349018
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/235801
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
1 file changed