2D software rasterizer tournament

This is a run of bl_bench from Blend2D running on a single core of a i7-8650U at 2500Mhz. Numbers/bars are time elapsed for each test-case, smaller is better. The benchmark is run on a single core of a i7-8650U at 2500Mhz.

blend2d tested contains updated radial gradient code and feature selection for intel cpus over the last release, Skia is built with gcc, as the clang build crashed, the best of whether SkGraphics::Init() has been called or not has been used per case.

Qt6 and cairo are from debian bookworm, AGG is built with clang.

Last updated: 2024-04-17

The data for the RGBA8 time-trial benchmark is a blend2d-bench dataset - that also can be visualized in more detail Blend2D's performance comparison page by using the custom dataset functionality.

🥇🥈🥉
Blend2D 184 14 5 1
ctx 15 166 19 4
Qt6 3 11 51 32 53 54
cairo 2 3 35 49 55 26
AGG 9 35 26 21 11
Skia 1 59 92 41 11

The medal summary provides the overall data from this large dataset at a glance. In the following summary we group the tests by how ctx is performing.

Heats won by ctx:

StrokeRectU-SrcOver-Solid
 
7.4
ctx
 
12.0
Blend2D
 
20.0
Skia
 
30.0
cairo
 
55.0
AGG
 
183.0
Qt6
FillRectU-SrcOver-Pattern_NN
 
54.0
ctx
 
69.0
cairo
 
79.0
Blend2D
 
90.0
Qt6
 
114.0
Skia
StrokeRectA-SrcOver-Pattern_NN
 
7.5
ctx
 
16.0
cairo
 
17.0
Blend2D
 
46.0
Skia
 
191.0
Qt6
FillRectU-SrcOver-Pattern_BI
 
139.0
ctx
 
153.0
Blend2D
 
204.0
cairo
 
290.0
Qt6
 
302.0
Skia
FillRoundU-SrcOver-Pattern_BI
 
155.0
ctx
 
157.0
Blend2D
 
279.0
cairo
 
312.0
Skia
 
425.0
Qt6
FillRoundRot-SrcOver-Pattern_BI
 
671.0
ctx
 
676.0
Blend2D
 
838.0
Qt6
 
1889.0
cairo
 
3171.0
Skia
StrokeRectA-SrcOver-Pattern_BI
 
7.6
ctx
 
16.0
cairo
 
17.0
Blend2D
 
43.0
Skia
 
233.0
Qt6
StrokeRectA-SrcCopy-Solid
 
2.4
ctx
 
2.9
Skia
 
5.4
cairo
 
11.0
Blend2D
 
49.0
Qt6
 
70.0
AGG
StrokeRectU-SrcCopy-Solid
 
7.2
ctx
 
12.0
Blend2D
 
21.0
cairo
 
50.0
Qt6
 
58.0
Skia
 
70.0
AGG
StrokeRectA-SrcCopy-Linear
 
14.0
ctx
 
14.0
Blend2D
 
52.0
cairo
 
107.0
Skia
 
108.0
AGG
 
202.0
Qt6
StrokeRectA-SrcCopy-Radial
 
16.0
ctx
 
19.0
Blend2D
 
26.0
Skia
 
72.0
cairo
 
114.0
AGG
 
218.0
Qt6
FillRectU-SrcCopy-Pattern_NN
 
32.0
ctx
 
48.0
Blend2D
 
80.0
Qt6
 
281.0
cairo
 
808.0
Skia
StrokeRectA-SrcCopy-Pattern_NN
 
5.4
ctx
 
14.0
Blend2D
 
25.0
cairo
 
78.0
Skia
 
169.0
Qt6
FillRectU-SrcCopy-Pattern_BI
 
101.0
ctx
 
111.0
Blend2D
 
191.0
cairo
 
291.0
Qt6
 
2192.0
Skia
StrokeRectA-SrcCopy-Pattern_BI
 
5.4
ctx
 
14.0
Blend2D
 
25.0
cairo
 
78.0
Skia
 
261.0
Qt6

ctx in second place

FillRectA-SrcOver-Solid
 
22.0
Blend2D
 
23.0
ctx
 
35.0
Qt6
 
39.0
cairo
 
265.0
Skia
 
331.0
AGG
FillRectU-SrcOver-Solid
 
26.0
Blend2D
 
29.0
ctx
 
42.0
cairo
 
82.0
Qt6
 
276.0
Skia
 
662.0
AGG
FillRectRot-SrcOver-Solid
 
42.0
Blend2D
 
52.0
ctx
 
163.0
Qt6
 
204.0
cairo
 
296.0
Skia
 
680.0
AGG
FillRoundU-SrcOver-Solid
 
34.0
Blend2D
 
48.0
ctx
 
84.0
cairo
 
124.0
Qt6
 
282.0
Skia
 
669.0
AGG
FillRoundRot-SrcOver-Solid
 
45.0
Blend2D
 
60.0
ctx
 
229.0
cairo
 
311.0
Skia
 
351.0
Qt6
 
681.0
AGG
FillTriangle-SrcOver-Solid
 
11.0
Blend2D
 
15.0
ctx
 
36.0
Skia
 
71.0
cairo
 
74.0
AGG
 
141.0
Qt6
FillPolyNZi40-SrcOver-Solid
 
117.0
Blend2D
 
237.0
ctx
 
553.0
Skia
 
732.0
AGG
 
982.0
cairo
 
6500.0
Qt6
FillPolyEOi40-SrcOver-Solid
 
114.0
Blend2D
 
197.0
ctx
 
682.0
AGG
 
740.0
Skia
 
1228.0
cairo
 
6610.0
Qt6
FillWorld-SrcOver-Solid
 
231.0
Blend2D
 
601.0
ctx
 
828.0
AGG
 
970.0
Skia
 
1569.0
cairo
 
2605.0
Qt6
StrokeRectA-SrcOver-Solid
 
5.1
cairo
 
5.3
ctx
 
12.0
Blend2D
 
22.0
Skia
 
55.0
AGG
 
183.0
Qt6
StrokeRectRot-SrcOver-Solid
 
30.0
Blend2D
 
63.0
ctx
 
92.0
Skia
 
111.0
AGG
 
177.0
cairo
 
1104.0
Qt6
StrokeRoundU-SrcOver-Solid
 
27.0
Blend2D
 
60.0
ctx
 
75.0
Skia
 
84.0
AGG
 
104.0
cairo
 
250.0
Qt6
StrokeRoundRot-SrcOver-Solid
 
42.0
Blend2D
 
89.0
ctx
 
116.0
Skia
 
133.0
AGG
 
249.0
cairo
 
930.0
Qt6
StrokeTriangle-SrcOver-Solid
 
14.0
Blend2D
 
16.0
ctx
 
25.0
Skia
 
34.0
AGG
 
54.0
cairo
 
208.0
Qt6
StrokePoly40-SrcOver-Solid
 
152.0
Blend2D
 
366.0
ctx
 
473.0
Skia
 
985.0
AGG
 
2229.0
cairo
 
22174.0
Qt6
FillRectU-SrcOver-Linear
 
72.0
Blend2D
 
146.0
ctx
 
155.0
Qt6
 
1081.0
cairo
 
1101.0
AGG
 
1461.0
Skia
FillRectRot-SrcOver-Linear
 
87.0
Blend2D
 
175.0
ctx
 
255.0
Qt6
 
1158.0
AGG
 
1588.0
Skia
 
1750.0
cairo
FillRoundU-SrcOver-Linear
 
80.0
Blend2D
 
165.0
ctx
 
220.0
Qt6
 
1104.0
AGG
 
1160.0
cairo
 
1485.0
Skia
FillRoundRot-SrcOver-Linear
 
90.0
Blend2D
 
181.0
ctx
 
436.0
Qt6
 
1156.0
AGG
 
1599.0
Skia
 
1678.0
cairo
FillTriangle-SrcOver-Linear
 
15.0
Blend2D
 
36.0
ctx
 
120.0
AGG
 
160.0
Qt6
 
209.0
Skia
 
240.0
cairo
FillPolyNZi40-SrcOver-Linear
 
136.0
Blend2D
 
327.0
ctx
 
981.0
AGG
 
1483.0
cairo
 
1729.0
Skia
 
6696.0
Qt6
FillPolyEOi40-SrcOver-Linear
 
131.0
Blend2D
 
281.0
ctx
 
916.0
AGG
 
1616.0
cairo
 
2183.0
Skia
 
6782.0
Qt6
FillWorld-SrcOver-Linear
 
250.0
Blend2D
 
679.0
ctx
 
1077.0
AGG
 
2093.0
cairo
 
2252.0
Skia
 
2769.0
Qt6
StrokeRectA-SrcOver-Linear
 
15.0
Blend2D
 
21.0
ctx
 
59.0
cairo
 
91.0
AGG
 
116.0
Skia
 
226.0
Qt6
StrokeRectU-SrcOver-Linear
 
16.0
Blend2D
 
40.0
ctx
 
91.0
AGG
 
194.0
cairo
 
215.0
Qt6
 
322.0
Skia
StrokeRectRot-SrcOver-Linear
 
34.0
Blend2D
 
112.0
ctx
 
161.0
AGG
 
576.0
Skia
 
661.0
cairo
 
1151.0
Qt6
StrokeRoundU-SrcOver-Linear
 
31.0
Blend2D
 
86.0
ctx
 
121.0
AGG
 
297.0
Qt6
 
299.0
cairo
 
421.0
Skia
StrokeRoundRot-SrcOver-Linear
 
46.0
Blend2D
 
143.0
ctx
 
182.0
AGG
 
598.0
Skia
 
665.0
cairo
 
944.0
Qt6
StrokeTriangle-SrcOver-Linear
 
15.0
Blend2D
 
27.0
ctx
 
49.0
AGG
 
159.0
Skia
 
178.0
cairo
 
233.0
Qt6
StrokePoly40-SrcOver-Linear
 
162.0
Blend2D
 
430.0
ctx
 
1156.0
AGG
 
2639.0
cairo
 
3040.0
Skia
 
22421.0
Qt6
FillRoundRot-SrcOver-Radial
 
117.0
Blend2D
 
366.0
ctx
 
409.0
Skia
 
475.0
Qt6
 
1428.0
AGG
 
2297.0
cairo
FillTriangle-SrcOver-Radial
 
18.0
Blend2D
 
47.0
ctx
 
71.0
Skia
 
146.0
AGG
 
165.0
Qt6
 
290.0
cairo
FillPolyNZi40-SrcOver-Radial
 
146.0
Blend2D
 
406.0
ctx
 
789.0
Skia
 
1114.0
AGG
 
1788.0
cairo
 
6645.0
Qt6
FillPolyEOi40-SrcOver-Radial
 
141.0
Blend2D
 
355.0
ctx
 
1019.0
AGG
 
1373.0
Skia
 
1854.0
cairo
 
6940.0
Qt6
FillWorld-SrcOver-Radial
 
263.0
Blend2D
 
790.0
ctx
 
1204.0
AGG
 
1290.0
Skia
 
2387.0
cairo
 
2773.0
Qt6
StrokeRectA-SrcOver-Radial
 
20.0
Blend2D
 
21.0
ctx
 
30.0
Skia
 
74.0
cairo
 
97.0
AGG
 
221.0
Qt6
StrokeRectU-SrcOver-Radial
 
21.0
Blend2D
 
41.0
ctx
 
97.0
Skia
 
97.0
AGG
 
219.0
Qt6
 
306.0
cairo
StrokeRoundU-SrcOver-Radial
 
35.0
Blend2D
 
103.0
ctx
 
127.0
AGG
 
199.0
Skia
 
301.0
Qt6
 
409.0
cairo
StrokeTriangle-SrcOver-Radial
 
17.0
Blend2D
 
27.0
ctx
 
51.0
AGG
 
69.0
Skia
 
187.0
cairo
 
234.0
Qt6
StrokePoly40-SrcOver-Radial
 
174.0
Blend2D
 
500.0
ctx
 
1190.0
AGG
 
1313.0
Skia
 
2809.0
cairo
 
22682.0
Qt6
FillRectA-SrcOver-Conic
 
148.0
Blend2D
 
433.0
ctx
 
649.0
Qt6
 
2309.0
Skia
FillRectU-SrcOver-Conic
 
159.0
Blend2D
 
459.0
ctx
 
910.0
Qt6
 
2628.0
Skia
FillRectRot-SrcOver-Conic
 
168.0
Blend2D
 
609.0
ctx
 
1171.0
Qt6
 
2944.0
Skia
FillRoundU-SrcOver-Conic
 
162.0
Blend2D
 
470.0
ctx
 
1230.0
Qt6
 
2653.0
Skia
FillRoundRot-SrcOver-Conic
 
171.0
Blend2D
 
619.0
ctx
 
1454.0
Qt6
 
2933.0
Skia
FillTriangle-SrcOver-Conic
 
23.0
Blend2D
 
66.0
ctx
 
253.0
Qt6
 
460.0
Skia
FillPolyNZi40-SrcOver-Conic
 
175.0
Blend2D
 
498.0
ctx
 
3681.0
Skia
 
7352.0
Qt6
FillPolyEOi40-SrcOver-Conic
 
168.0
Blend2D
 
438.0
ctx
 
4930.0
Skia
 
7666.0
Qt6
FillWorld-SrcOver-Conic
 
292.0
Blend2D
 
883.0
ctx
 
3290.0
Qt6
 
4483.0
Skia
StrokeRectA-SrcOver-Conic
 
23.0
Blend2D
 
36.0
ctx
 
324.0
Qt6
 
332.0
Skia
StrokeRectU-SrcOver-Conic
 
25.0
Blend2D
 
67.0
ctx
 
322.0
Qt6
 
951.0
Skia
StrokeRectRot-SrcOver-Conic
 
44.0
Blend2D
 
271.0
ctx
 
1216.0
Qt6
 
1572.0
Skia
StrokeRoundU-SrcOver-Conic
 
39.0
Blend2D
 
129.0
ctx
 
391.0
Qt6
 
1086.0
Skia
StrokeRoundRot-SrcOver-Conic
 
55.0
Blend2D
 
333.0
ctx
 
1073.0
Qt6
 
1543.0
Skia
StrokeTriangle-SrcOver-Conic
 
19.0
Blend2D
 
35.0
ctx
 
252.0
Qt6
 
420.0
Skia
StrokePoly40-SrcOver-Conic
 
194.0
Blend2D
 
572.0
ctx
 
8134.0
Skia
 
23107.0
Qt6
StrokeWorld-SrcOver-Conic
 
679.0
Blend2D
 
2531.0
ctx
 
8304.0
Skia
 
19141.0
Qt6
FillRectRot-SrcOver-Pattern_NN
 
162.0
Blend2D
 
182.0
ctx
 
284.0
Qt6
 
997.0
Skia
 
1376.0
cairo
FillRoundU-SrcOver-Pattern_NN
 
60.0
Blend2D
 
81.0
ctx
 
111.0
cairo
 
125.0
Skia
 
136.0
Qt6
FillRoundRot-SrcOver-Pattern_NN
 
165.0
Blend2D
 
189.0
ctx
 
469.0
Qt6
 
1009.0
Skia
 
1222.0
cairo
FillTriangle-SrcOver-Pattern_NN
 
14.0
Blend2D
 
26.0
ctx
 
50.0
Skia
 
68.0
cairo
 
148.0
Qt6
FillPolyNZi40-SrcOver-Pattern_NN
 
132.0
Blend2D
 
290.0
ctx
 
597.0
Skia
 
984.0
cairo
 
6610.0
Qt6
FillPolyEOi40-SrcOver-Pattern_NN
 
128.0
Blend2D
 
246.0
ctx
 
842.0
Skia
 
1226.0
cairo
 
6786.0
Qt6
FillWorld-SrcOver-Pattern_NN
 
245.0
Blend2D
 
617.0
ctx
 
1107.0
Skia
 
1576.0
cairo
 
2721.0
Qt6
StrokeRectU-SrcOver-Pattern_NN
 
17.0
Blend2D
 
29.0
ctx
 
37.0
cairo
 
66.0
Skia
 
188.0
Qt6
StrokeRectRot-SrcOver-Pattern_NN
 
39.0
Blend2D
 
116.0
ctx
 
434.0
Skia
 
588.0
cairo
 
1167.0
Qt6
StrokeRoundU-SrcOver-Pattern_NN
 
32.0
Blend2D
 
75.0
ctx
 
111.0
cairo
 
117.0
Skia
 
261.0
Qt6
StrokeRoundRot-SrcOver-Pattern_NN
 
64.0
Blend2D
 
147.0
ctx
 
463.0
Skia
 
589.0
cairo
 
977.0
Qt6
StrokeTriangle-SrcOver-Pattern_NN
 
17.0
Blend2D
 
22.0
ctx
 
54.0
cairo
 
56.0
Skia
 
212.0
Qt6
StrokePoly40-SrcOver-Pattern_NN
 
167.0
Blend2D
 
396.0
ctx
 
817.0
Skia
 
2227.0
cairo
 
22680.0
Qt6
StrokeWorld-SrcOver-Pattern_NN
 
660.0
Blend2D
 
2262.0
ctx
 
3363.0
Skia
 
4394.0
cairo
 
18529.0
Qt6
FillRectRot-SrcOver-Pattern_BI
 
653.0
Qt6
 
668.0
ctx
 
676.0
Blend2D
 
2045.0
cairo
 
3154.0
Skia
FillTriangle-SrcOver-Pattern_BI
 
24.0
Blend2D
 
38.0
ctx
 
74.0
Skia
 
172.0
cairo
 
175.0
Qt6
FillPolyNZi40-SrcOver-Pattern_BI
 
180.0
Blend2D
 
349.0
ctx
 
745.0
Skia
 
1535.0
cairo
 
6940.0
Qt6
FillPolyEOi40-SrcOver-Pattern_BI
 
172.0
Blend2D
 
301.0
ctx
 
1015.0
Skia
 
1898.0
cairo
 
7203.0
Qt6
FillWorld-SrcOver-Pattern_BI
 
295.0
Blend2D
 
656.0
ctx
 
1278.0
Skia
 
2078.0
cairo
 
2954.0
Qt6
StrokeRectU-SrcOver-Pattern_BI
 
25.0
Blend2D
 
52.0
ctx
 
58.0
cairo
 
101.0
Skia
 
227.0
Qt6
StrokeRectRot-SrcOver-Pattern_BI
 
49.0
Blend2D
 
287.0
ctx
 
694.0
cairo
 
1168.0
Qt6
 
1734.0
Skia
StrokeRoundU-SrcOver-Pattern_BI
 
40.0
Blend2D
 
90.0
ctx
 
144.0
cairo
 
153.0
Skia
 
305.0
Qt6
StrokeRoundRot-SrcOver-Pattern_BI
 
104.0
Blend2D
 
343.0
ctx
 
695.0
cairo
 
998.0
Qt6
 
1683.0
Skia
StrokeTriangle-SrcOver-Pattern_BI
 
21.0
Blend2D
 
28.0
ctx
 
72.0
Skia
 
95.0
cairo
 
227.0
Qt6
StrokePoly40-SrcOver-Pattern_BI
 
201.0
Blend2D
 
438.0
ctx
 
1065.0
Skia
 
2634.0
cairo
 
22813.0
Qt6
StrokeWorld-SrcOver-Pattern_BI
 
686.0
Blend2D
 
2294.0
ctx
 
3622.0
Skia
 
4719.0
cairo
 
18879.0
Qt6
FillRectU-SrcCopy-Solid
 
12.0
Blend2D
 
17.0
ctx
 
20.0
Qt6
 
22.0
cairo
 
43.0
Skia
 
224.0
AGG
FillRectRot-SrcCopy-Solid
 
26.0
Blend2D
 
35.0
ctx
 
43.0
Qt6
 
77.0
cairo
 
101.0
Skia
 
252.0
AGG
FillRoundU-SrcCopy-Solid
 
20.0
Blend2D
 
33.0
ctx
 
44.0
Qt6
 
48.0
cairo
 
55.0
Skia
 
233.0
AGG
FillRoundRot-SrcCopy-Solid
 
30.0
Blend2D
 
43.0
ctx
 
103.0
cairo
 
118.0
Skia
 
205.0
Qt6
 
256.0
AGG
FillTriangle-SrcCopy-Solid
 
9.4
Blend2D
 
14.0
ctx
 
31.0
cairo
 
40.0
Skia
 
45.0
AGG
 
77.0
Qt6
FillPolyNZi40-SrcCopy-Solid
 
112.0
Blend2D
 
231.0
ctx
 
592.0
AGG
 
622.0
Skia
 
742.0
cairo
 
5713.0
Qt6
FillPolyEOi40-SrcCopy-Solid
 
110.0
Blend2D
 
190.0
ctx
 
615.0
AGG
 
920.0
cairo
 
922.0
Skia
 
5765.0
Qt6
FillWorld-SrcCopy-Solid
 
225.0
Blend2D
 
594.0
ctx
 
710.0
AGG
 
1073.0
Skia
 
1341.0
cairo
 
2050.0
Qt6
StrokeRectRot-SrcCopy-Solid
 
30.0
Blend2D
 
60.0
ctx
 
124.0
cairo
 
128.0
AGG
 
200.0
Skia
 
814.0
Qt6
StrokeRoundU-SrcCopy-Solid
 
26.0
Blend2D
 
58.0
ctx
 
87.0
cairo
 
94.0
Qt6
 
99.0
AGG
 
180.0
Skia
StrokeRoundRot-SrcCopy-Solid
 
41.0
Blend2D
 
85.0
ctx
 
149.0
AGG
 
197.0
cairo
 
231.0
Skia
 
652.0
Qt6
StrokeTriangle-SrcCopy-Solid
 
13.0
Blend2D
 
16.0
ctx
 
39.0
cairo
 
39.0
AGG
 
53.0
Skia
 
126.0
Qt6
StrokePoly40-SrcCopy-Solid
 
148.0
Blend2D
 
365.0
ctx
 
1024.0
Skia
 
1059.0
AGG
 
2078.0
cairo
 
19877.0
Qt6
FillRectA-SrcCopy-Linear
 
36.0
Blend2D
 
98.0
ctx
 
104.0
Qt6
 
642.0
AGG
 
943.0
cairo
 
1238.0
Skia
FillRectU-SrcCopy-Linear
 
43.0
Blend2D
 
108.0
ctx
 
151.0
Qt6
 
668.0
AGG
 
1107.0
cairo
 
1392.0
Skia
FillRectRot-SrcCopy-Linear
 
58.0
Blend2D
 
134.0
ctx
 
259.0
Qt6
 
732.0
AGG
 
1491.0
Skia
 
1849.0
cairo
FillRoundU-SrcCopy-Linear
 
51.0
Blend2D
 
127.0
ctx
 
207.0
Qt6
 
674.0
AGG
 
1164.0
cairo
 
1366.0
Skia
FillRoundRot-SrcCopy-Linear
 
62.0
Blend2D
 
142.0
ctx
 
428.0
Qt6
 
735.0
AGG
 
1498.0
Skia
 
2035.0
cairo
FillTriangle-SrcCopy-Linear
 
12.0
Blend2D
 
31.0
ctx
 
91.0
AGG
 
167.0
Qt6
 
197.0
Skia
 
289.0
cairo
FillPolyNZi40-SrcCopy-Linear
 
125.0
Blend2D
 
305.0
ctx
 
846.0
AGG
 
1706.0
Skia
 
2442.0
cairo
 
6741.0
Qt6
FillPolyEOi40-SrcCopy-Linear
 
121.0
Blend2D
 
259.0
ctx
 
862.0
AGG
 
2208.0
Skia
 
3166.0
cairo
 
6927.0
Qt6
FillWorld-SrcCopy-Linear
 
239.0
Blend2D
 
670.0
ctx
 
971.0
AGG
 
2301.0
Skia
 
2835.0
Qt6
 
3316.0
cairo
StrokeRectU-SrcCopy-Linear
 
15.0
Blend2D
 
35.0
ctx
 
97.0
cairo
 
108.0
AGG
 
206.0
Qt6
 
348.0
Skia
StrokeRectRot-SrcCopy-Linear
 
33.0
Blend2D
 
108.0
ctx
 
180.0
AGG
 
614.0
Skia
 
1104.0
cairo
 
1185.0
Qt6
StrokeRoundU-SrcCopy-Linear
 
30.0
Blend2D
 
84.0
ctx
 
137.0
AGG
 
267.0
cairo
 
309.0
Qt6
 
420.0
Skia
StrokeRoundRot-SrcCopy-Linear
 
45.0
Blend2D
 
138.0
ctx
 
200.0
AGG
 
585.0
Skia
 
1002.0
Qt6
 
1376.0
cairo
StrokeTriangle-SrcCopy-Linear
 
15.0
Blend2D
 
26.0
ctx
 
54.0
AGG
 
151.0
Skia
 
237.0
Qt6
 
268.0
cairo
StrokePoly40-SrcCopy-Linear
 
157.0
Blend2D
 
427.0
ctx
 
1249.0
AGG
 
3132.0
Skia
 
5130.0
cairo
 
22755.0
Qt6
FillRoundRot-SrcCopy-Radial
 
90.0
Blend2D
 
325.0
ctx
 
375.0
Skia
 
456.0
Qt6
 
1008.0
AGG
 
2676.0
cairo
FillTriangle-SrcCopy-Radial
 
16.0
Blend2D
 
41.0
ctx
 
67.0
Skia
 
116.0
AGG
 
170.0
Qt6
 
342.0
cairo
FillPolyNZi40-SrcCopy-Radial
 
134.0
Blend2D
 
386.0
ctx
 
762.0
Skia
 
977.0
AGG
 
2730.0
cairo
 
6783.0
Qt6
FillPolyEOi40-SrcCopy-Radial
 
130.0
Blend2D
 
335.0
ctx
 
957.0
AGG
 
1056.0
Skia
 
3383.0
cairo
 
7219.0
Qt6
FillWorld-SrcCopy-Radial
 
253.0
Blend2D
 
791.0
ctx
 
1096.0
AGG
 
1221.0
Skia
 
2832.0
Qt6
 
3566.0
cairo
StrokeRectU-SrcCopy-Radial
 
19.0
Blend2D
 
37.0
ctx
 
93.0
Skia
 
114.0
AGG
 
123.0
cairo
 
224.0
Qt6
StrokeRectRot-SrcCopy-Radial
 
37.0
Blend2D
 
176.0
ctx
 
178.0
AGG
 
245.0
Skia
 
1114.0
cairo
 
1215.0
Qt6
StrokeRoundU-SrcCopy-Radial
 
33.0
Blend2D
 
102.0
ctx
 
143.0
AGG
 
192.0
Skia
 
289.0
cairo
 
324.0
Qt6
StrokeTriangle-SrcCopy-Radial
 
17.0
Blend2D
 
26.0
ctx
 
55.0
AGG
 
67.0
Skia
 
254.0
Qt6
 
273.0
cairo
StrokePoly40-SrcCopy-Radial
 
165.0
Blend2D
 
500.0
ctx
 
1276.0
Skia
 
1277.0
AGG
 
5226.0
cairo
 
23020.0
Qt6
FillRectA-SrcCopy-Conic
 
120.0
Blend2D
 
411.0
ctx
 
611.0
Qt6
 
2193.0
Skia
FillRectU-SrcCopy-Conic
 
131.0
Blend2D
 
428.0
ctx
 
973.0
Qt6
 
2503.0
Skia
FillRectRot-SrcCopy-Conic
 
138.0
Blend2D
 
581.0
ctx
 
1329.0
Qt6
 
2822.0
Skia
FillRoundU-SrcCopy-Conic
 
133.0
Blend2D
 
431.0
ctx
 
1224.0
Qt6
 
2530.0
Skia
FillRoundRot-SrcCopy-Conic
 
141.0
Blend2D
 
578.0
ctx
 
1523.0
Qt6
 
2811.0
Skia
FillTriangle-SrcCopy-Conic
 
20.0
Blend2D
 
60.0
ctx
 
260.0
Qt6
 
446.0
Skia
FillPolyNZi40-SrcCopy-Conic
 
159.0
Blend2D
 
473.0
ctx
 
3583.0
Skia
 
7455.0
Qt6
FillPolyEOi40-SrcCopy-Conic
 
152.0
Blend2D
 
419.0
ctx
 
4812.0
Skia
 
7741.0
Qt6
FillWorld-SrcCopy-Conic
 
275.0
Blend2D
 
884.0
ctx
 
3291.0
Qt6
 
4377.0
Skia
StrokeRectA-SrcCopy-Conic
 
21.0
Blend2D
 
26.0
ctx
 
316.0
Skia
 
343.0
Qt6
StrokeRectU-SrcCopy-Conic
 
23.0
Blend2D
 
55.0
ctx
 
334.0
Qt6
 
925.0
Skia
StrokeRectRot-SrcCopy-Conic
 
41.0
Blend2D
 
268.0
ctx
 
1282.0
Qt6
 
1564.0
Skia
StrokeRoundU-SrcCopy-Conic
 
37.0
Blend2D
 
127.0
ctx
 
391.0
Qt6
 
1070.0
Skia
StrokeRoundRot-SrcCopy-Conic
 
52.0
Blend2D
 
323.0
ctx
 
1094.0
Qt6
 
1515.0
Skia
StrokeTriangle-SrcCopy-Conic
 
18.0
Blend2D
 
34.0
ctx
 
256.0
Qt6
 
411.0
Skia
StrokePoly40-SrcCopy-Conic
 
183.0
Blend2D
 
571.0
ctx
 
8049.0
Skia
 
23170.0
Qt6
StrokeWorld-SrcCopy-Conic
 
672.0
Blend2D
 
2522.0
ctx
 
8124.0
Skia
 
19150.0
Qt6
FillRectRot-SrcCopy-Pattern_NN
 
118.0
Blend2D
 
141.0
ctx
 
288.0
Qt6
 
924.0
Skia
 
1499.0
cairo
FillRoundU-SrcCopy-Pattern_NN
 
31.0
Blend2D
 
50.0
ctx
 
105.0
Qt6
 
475.0
cairo
 
815.0
Skia
FillRoundRot-SrcCopy-Pattern_NN
 
121.0
Blend2D
 
151.0
ctx
 
460.0
Qt6
 
955.0
Skia
 
1774.0
cairo
FillTriangle-SrcCopy-Pattern_NN
 
11.0
Blend2D
 
21.0
ctx
 
32.0
cairo
 
141.0
Qt6
 
143.0
Skia
FillPolyNZi40-SrcCopy-Pattern_NN
 
115.0
Blend2D
 
278.0
ctx
 
899.0
cairo
 
1330.0
Skia
 
6568.0
Qt6
FillPolyEOi40-SrcCopy-Pattern_NN
 
113.0
Blend2D
 
227.0
ctx
 
1149.0
cairo
 
1675.0
Skia
 
6612.0
Qt6
FillWorld-SrcCopy-Pattern_NN
 
232.0
Blend2D
 
611.0
ctx
 
1810.0
Skia
 
2671.0
Qt6
 
3668.0
cairo
StrokeRectU-SrcCopy-Pattern_NN
 
15.0
Blend2D
 
26.0
ctx
 
190.0
Qt6
 
220.0
Skia
 
792.0
cairo
StrokeRectRot-SrcCopy-Pattern_NN
 
34.0
Blend2D
 
113.0
ctx
 
433.0
Skia
 
1026.0
cairo
 
1270.0
Qt6
StrokeRoundU-SrcCopy-Pattern_NN
 
30.0
Blend2D
 
73.0
ctx
 
274.0
Qt6
 
309.0
Skia
 
866.0
cairo
StrokeRoundRot-SrcCopy-Pattern_NN
 
61.0
Blend2D
 
144.0
ctx
 
451.0
Skia
 
1100.0
Qt6
 
1309.0
cairo
StrokeTriangle-SrcCopy-Pattern_NN
 
15.0
Blend2D
 
21.0
ctx
 
55.0
cairo
 
134.0
Skia
 
219.0
Qt6
StrokePoly40-SrcCopy-Pattern_NN
 
156.0
Blend2D
 
393.0
ctx
 
2143.0
Skia
 
4479.0
cairo
 
22160.0
Qt6
StrokeWorld-SrcCopy-Pattern_NN
 
652.0
Blend2D
 
2252.0
ctx
 
4398.0
Skia
 
6795.0
cairo
 
18358.0
Qt6
FillRectRot-SrcCopy-Pattern_BI
 
498.0
Blend2D
 
633.0
ctx
 
646.0
Qt6
 
2170.0
cairo
 
2400.0
Skia
FillRoundU-SrcCopy-Pattern_BI
 
117.0
Blend2D
 
121.0
ctx
 
355.0
cairo
 
409.0
Qt6
 
2199.0
Skia
FillRoundRot-SrcCopy-Pattern_BI
 
489.0
Blend2D
 
640.0
ctx
 
831.0
Qt6
 
2381.0
Skia
 
2433.0
cairo
FillTriangle-SrcCopy-Pattern_BI
 
20.0
Blend2D
 
33.0
ctx
 
178.0
Qt6
 
321.0
Skia
 
407.0
cairo
FillPolyNZi40-SrcCopy-Pattern_BI
 
161.0
Blend2D
 
333.0
ctx
 
2346.0
Skia
 
3341.0
cairo
 
7008.0
Qt6
FillPolyEOi40-SrcCopy-Pattern_BI
 
156.0
Blend2D
 
284.0
ctx
 
2917.0
Skia
 
4421.0
cairo
 
7321.0
Qt6
FillWorld-SrcCopy-Pattern_BI
 
278.0
Blend2D
 
648.0
ctx
 
2914.0
Skia
 
2938.0
Qt6
 
3972.0
cairo
StrokeRectU-SrcCopy-Pattern_BI
 
23.0
Blend2D
 
47.0
ctx
 
94.0
cairo
 
249.0
Qt6
 
490.0
Skia
StrokeRectRot-SrcCopy-Pattern_BI
 
46.0
Blend2D
 
284.0
ctx
 
828.0
Skia
 
1061.0
cairo
 
1180.0
Qt6
StrokeRoundU-SrcCopy-Pattern_BI
 
37.0
Blend2D
 
89.0
ctx
 
276.0
cairo
 
332.0
Qt6
 
594.0
Skia
StrokeRoundRot-SrcCopy-Pattern_BI
 
94.0
Blend2D
 
339.0
ctx
 
821.0
Skia
 
1018.0
Qt6
 
1346.0
cairo
StrokeTriangle-SrcCopy-Pattern_BI
 
20.0
Blend2D
 
28.0
ctx
 
230.0
Skia
 
239.0
Qt6
 
289.0
cairo
StrokePoly40-SrcCopy-Pattern_BI
 
192.0
Blend2D
 
437.0
ctx
 
4352.0
Skia
 
5376.0
cairo
 
23200.0
Qt6
StrokeWorld-SrcCopy-Pattern_BI
 
681.0
Blend2D
 
2287.0
ctx
 
5721.0
Skia
 
6956.0
cairo
 
19777.0
Qt6

ctx in third place

StrokeWorld-SrcOver-Solid
 
646.0
Blend2D
 
2100.0
AGG
 
2238.0
ctx
 
3204.0
Skia
 
4376.0
cairo
 
18305.0
Qt6
FillRectA-SrcOver-Linear
 
67.0
Blend2D
 
120.0
Qt6
 
130.0
ctx
 
996.0
cairo
 
1090.0
AGG
 
1360.0
Skia
StrokeWorld-SrcOver-Linear
 
653.0
Blend2D
 
2233.0
AGG
 
2316.0
ctx
 
4810.0
Skia
 
4817.0
cairo
 
18820.0
Qt6
FillRectU-SrcOver-Radial
 
101.0
Blend2D
 
165.0
Qt6
 
314.0
ctx
 
326.0
Skia
 
1422.0
AGG
 
1713.0
cairo
FillRectRot-SrcOver-Radial
 
113.0
Blend2D
 
264.0
Qt6
 
360.0
ctx
 
398.0
Skia
 
1433.0
AGG
 
2396.0
cairo
FillRoundU-SrcOver-Radial
 
107.0
Blend2D
 
224.0
Qt6
 
331.0
ctx
 
339.0
Skia
 
1422.0
AGG
 
1760.0
cairo
StrokeRectRot-SrcOver-Radial
 
39.0
Blend2D
 
159.0
AGG
 
179.0
ctx
 
295.0
Skia
 
765.0
cairo
 
1187.0
Qt6
StrokeRoundRot-SrcOver-Radial
 
50.0
Blend2D
 
179.0
AGG
 
219.0
ctx
 
272.0
Skia
 
771.0
cairo
 
990.0
Qt6
StrokeWorld-SrcOver-Radial
 
665.0
Blend2D
 
2261.0
AGG
 
2432.0
ctx
 
3762.0
Skia
 
4983.0
cairo
 
18877.0
Qt6
FillRectA-SrcOver-Pattern_NN
 
33.0
Qt6
 
35.0
Blend2D
 
38.0
ctx
 
57.0
cairo
 
97.0
Skia
FillRectA-SrcOver-Pattern_BI
 
33.0
Qt6
 
35.0
Blend2D
 
37.0
ctx
 
57.0
cairo
 
76.0
Skia
FillRectA-SrcCopy-Solid
 
12.0
cairo
 
13.0
Blend2D
 
13.0
ctx
 
14.0
Skia
 
14.0
AGG
 
16.0
Qt6
StrokeWorld-SrcCopy-Solid
 
642.0
Blend2D
 
2160.0
AGG
 
2267.0
ctx
 
3496.0
Skia
 
4252.0
cairo
 
16934.0
Qt6
StrokeWorld-SrcCopy-Linear
 
651.0
Blend2D
 
2308.0
AGG
 
2311.0
ctx
 
5060.0
Skia
 
6740.0
cairo
 
18871.0
Qt6
FillRectU-SrcCopy-Radial
 
74.0
Blend2D
 
167.0
Qt6
 
284.0
ctx
 
289.0
Skia
 
979.0
AGG
 
1763.0
cairo
FillRectRot-SrcCopy-Radial
 
86.0
Blend2D
 
263.0
Qt6
 
329.0
ctx
 
362.0
Skia
 
1009.0
AGG
 
2495.0
cairo
FillRoundU-SrcCopy-Radial
 
80.0
Blend2D
 
229.0
Qt6
 
299.0
ctx
 
303.0
Skia
 
993.0
AGG
 
1830.0
cairo
StrokeRoundRot-SrcCopy-Radial
 
49.0
Blend2D
 
198.0
AGG
 
215.0
ctx
 
262.0
Skia
 
1024.0
Qt6
 
1390.0
cairo
StrokeWorld-SrcCopy-Radial
 
658.0
Blend2D
 
2332.0
AGG
 
2438.0
ctx
 
3716.0
Skia
 
6822.0
cairo
 
19183.0
Qt6

ctx in fourth place

FillRectA-SrcOver-Radial
 
95.0
Blend2D
 
120.0
Qt6
 
286.0
Skia
 
303.0
ctx
 
1408.0
AGG
 
1655.0
cairo
FillRectA-SrcCopy-Radial
 
67.0
Blend2D
 
104.0
Qt6
 
252.0
Skia
 
271.0
ctx
 
961.0
AGG
 
1583.0
cairo
FillRectA-SrcCopy-Pattern_NN
 
17.0
Blend2D
 
19.0
Qt6
 
19.0
cairo
 
21.0
ctx
 
724.0
Skia
FillRectA-SrcCopy-Pattern_BI
 
17.0
Blend2D
 
19.0
Qt6
 
19.0
cairo
 
21.0
ctx
 
730.0
Skia

ctx in fifth place

ctx last

Pixel formats

This shows performance for doing color fills of circles without and with alpha==1.0. The native formats of ctx, BGRA8, GRAYA8 GRAYAF RGBAF and CMYKAF are performing well, for some others like RGB565 shortcuts have been added to increase performance.

color alpha=1.0
 
232
cairo
 
102
RGBA8
 
102
BGRA8
 
533
RGB332
 
121
RGB565
 
266
RGB565_BS
 
892
RGB8
 
221
RGBAF
 
88
GRAYA8
 
571
GRAY1
 
1056
GRAY2
 
851
GRAY4
 
458
GRAY8
 
534
GRAYF
 
201
GRAYAF
 
1679
CMYKA8
 
230
CMYK8
 
1011
CMYKAF
color alpha=0.7
 
483
cairo
 
159
RGBA8
 
160
BGRA8
 
2950
RGB332
 
372
RGB565
 
395
RGB565_BS
 
636
RGB8
 
476
RGBAF
 
439
GRAYA8
 
875
GRAY1
 
1377
GRAY2
 
1171
GRAY4
 
493
GRAY8
 
535
GRAYF
 
204
GRAYAF
 
7706
CMYKA8
 
5386
CMYK8
 
4688
CMYKAF