Bug 1624468 - Add a fast path for more gradient types in WR

Read up and install matplotlib. Write a python script to automate the conversion from CSV into SVG bar chart. Also a batch file to run the test and save out the PNG images through Wrench.

Benchmark: benchmarks\1\benchmarks.list

linear-smooth.yaml

1     - type: gradient
2       bounds: 0 0 1920 1080
3       start: 0 0
4       end: 1920 0
5       stops: [0.0, red,
6               0.25, green,
7               0.5, blue,
8               1.0, [100,200,50,1]]
benchmarks/1.out/linear-smooth.yaml.png

linear-hardstop.yaml.png

1     - type: gradient
2       bounds: 0 0 1920 1080
3       start: 0 0
4       end: 1920 0
5       stops: [0.0, red, 0.25, red,
6               0.25, green, 0.5, green,
7               0.5, blue, 0.75, blue,
8               0.75, [100,200,50,1], 1.0, [100,200,50,1]]
benchmarks/1.out/linear-hardstop.yaml.png

aligned-gradient.yaml.png

1       bounds: [ 0, 0, 1980, 1080]
2       start: [ 0, -2000 ]
3       end: [ 0, 4000 ]
4       stops: [ 0.0, red, 1.0, green ]
5       repeat: false
6     - type: gradient
7       bounds: [ 0, 0, 1980, 1080]
8       start: [ 0, -2000 ]
benchmarks/1.out/aligned-gradient.yaml.png

unaligned-gradient.yaml.png

1       bounds: [ 0, 0, 1980, 1080]
2       start: [ 0, -2000 ]
3       end: [ 1, 4000 ]
4       stops: [ 0.0, red, 1.0, green ]
5       repeat: false
6     - type: gradient
7       bounds: [ 0, 0, 1980, 1080]
8       start: [ 0, -2000 ]
benchmarks/1.out/unaligned-gradient.yaml.png

First batch; five runs on wrench, each with --warmup_frames 10 --sample_count 100.

benchmarks/1.out/timings.png

Second batch; five runs on wrench, each with --warmup_frames 10 --sample_count 100.

benchmarks/1a.out/timings.png

.