2D software rasterizer tournament

This benchmark was done on a single Cortex-A74 aarch64 core at 2Ghz

built using clang18, cairo and qt6 from alpine edge, blend2d, AGG and ctx with static linking.

Last updated:August 2024

The data for the RGBA8 time-trial benchmark is a blend2d-bench dataset, the numbers in the tables below are milliseconds to render 1000 shapes in the specified fill style - The data also can be visualized in more detail Blend2D's performance comparison page by using the custom dataset functionality.

🥇🥈🥉
Blend2D 179 33 4
ctx 37 171 8
Qt6 3 88 75 50
cairo 8 48 80 44
AGG 1 68 25 14

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

Heats won by ctx:

FillRectRot-SrcOver-Solid
 
88.0
ctx
 
95.0
Blend2D
 
266.0
Qt6
 
294.0
cairo
 
756.0
AGG
StrokeRectA-SrcOver-Solid
 
8.0
ctx
 
19.0
cairo
 
28.0
Blend2D
 
75.0
AGG
 
258.0
Qt6
StrokeRectU-SrcOver-Solid
 
11.0
ctx
 
28.0
Blend2D
 
75.0
AGG
 
124.0
cairo
 
201.0
Qt6
StrokeLine-SrcOver-Solid
 
9.9
ctx
 
11.0
Blend2D
 
20.0
AGG
 
35.0
cairo
 
54.0
Qt6
StrokeTriangle-SrcOver-Solid
 
19.0
ctx
 
20.0
Blend2D
 
41.0
AGG
 
71.0
cairo
 
202.0
Qt6
StrokeRectA-SrcOver-Linear
 
25.0
ctx
 
35.0
Blend2D
 
118.0
AGG
 
125.0
cairo
 
255.0
Qt6
StrokeRectA-SrcOver-Radial
 
28.0
ctx
 
46.0
Blend2D
 
133.0
AGG
 
146.0
cairo
 
274.0
Qt6
StrokeTriangle-SrcOver-Radial
 
29.0
ctx
 
29.0
Blend2D
 
60.0
AGG
 
243.0
cairo
 
252.0
Qt6
StrokeRectA-SrcOver-Conic
 
42.0
ctx
 
58.0
Blend2D
 
503.0
Qt6
StrokeTriangle-SrcOver-Conic
 
37.0
ctx
 
40.0
Blend2D
 
304.0
Qt6
FillRectU-SrcOver-Pattern_NN
 
148.0
ctx
 
175.0
cairo
 
182.0
Blend2D
 
217.0
Qt6
FillRectRot-SrcOver-Pattern_NN
 
458.0
ctx
 
544.0
Blend2D
 
812.0
Qt6
 
2025.0
cairo
FillRoundRot-SrcOver-Pattern_NN
 
457.0
ctx
 
548.0
Blend2D
 
1138.0
Qt6
 
2025.0
cairo
StrokeTriangle-SrcOver-Pattern_NN
 
32.0
ctx
 
34.0
Blend2D
 
92.0
cairo
 
228.0
Qt6
FillRectU-SrcOver-Pattern_BI
 
338.0
ctx
 
398.0
Blend2D
 
416.0
cairo
 
813.0
Qt6
FillRectRot-SrcOver-Pattern_BI
 
1007.0
ctx
 
1484.0
Blend2D
 
1522.0
Qt6
 
3063.0
cairo
FillRoundU-SrcOver-Pattern_BI
 
348.0
ctx
 
414.0
Blend2D
 
524.0
cairo
 
954.0
Qt6
FillRoundRot-SrcOver-Pattern_BI
 
994.0
ctx
 
1487.0
Blend2D
 
1967.0
Qt6
 
3049.0
cairo
StrokeLine-SrcOver-Pattern_BI
 
19.0
ctx
 
26.0
Blend2D
 
76.0
Qt6
 
103.0
cairo
StrokeTriangle-SrcOver-Pattern_BI
 
38.0
ctx
 
50.0
Blend2D
 
191.0
cairo
 
252.0
Qt6
StrokeRectA-SrcCopy-Solid
 
3.2
ctx
 
4.6
cairo
 
23.0
Blend2D
 
54.0
Qt6
 
141.0
AGG
StrokeRectU-SrcCopy-Solid
 
12.0
ctx
 
24.0
Blend2D
 
55.0
cairo
 
57.0
Qt6
 
128.0
AGG
StrokeRectA-SrcCopy-Linear
 
11.0
ctx
 
34.0
Blend2D
 
66.0
cairo
 
166.0
AGG
 
272.0
Qt6
StrokeRectA-SrcCopy-Radial
 
16.0
ctx
 
44.0
Blend2D
 
84.0
cairo
 
205.0
AGG
 
320.0
Qt6
StrokeLine-SrcCopy-Radial
 
16.0
ctx
 
16.0
Blend2D
 
40.0
AGG
 
95.0
Qt6
 
148.0
cairo
StrokeTriangle-SrcCopy-Radial
 
29.0
ctx
 
29.0
Blend2D
 
74.0
AGG
 
274.0
Qt6
 
290.0
cairo
StrokeRectA-SrcCopy-Conic
 
28.0
ctx
 
56.0
Blend2D
 
623.0
Qt6
FillRectU-SrcCopy-Pattern_NN
 
78.0
ctx
 
116.0
Blend2D
 
118.0
Qt6
 
141.0
cairo
FillRectRot-SrcCopy-Pattern_NN
 
355.0
ctx
 
449.0
Blend2D
 
835.0
Qt6
 
1992.0
cairo
FillRoundRot-SrcCopy-Pattern_NN
 
359.0
ctx
 
510.0
Blend2D
 
1028.0
Qt6
 
1986.0
cairo
StrokeLine-SrcCopy-Pattern_NN
 
17.0
ctx
 
17.0
Blend2D
 
37.0
cairo
 
50.0
Qt6
StrokeTriangle-SrcCopy-Pattern_NN
 
32.0
ctx
 
32.0
Blend2D
 
76.0
cairo
 
224.0
Qt6
FillRectU-SrcCopy-Pattern_BI
 
228.0
ctx
 
254.0
cairo
 
316.0
Blend2D
 
720.0
Qt6
FillRectRot-SrcCopy-Pattern_BI
 
908.0
ctx
 
1129.0
Blend2D
 
1518.0
Qt6
 
3094.0
cairo
FillRoundU-SrcCopy-Pattern_BI
 
257.0
ctx
 
328.0
Blend2D
 
387.0
cairo
 
1038.0
Qt6
FillRoundRot-SrcCopy-Pattern_BI
 
903.0
ctx
 
1147.0
Blend2D
 
1858.0
Qt6
 
3080.0
cairo
StrokeTriangle-SrcCopy-Pattern_BI
 
39.0
ctx
 
40.0
Blend2D
 
221.0
cairo
 
279.0
Qt6

ctx in second place

FillRectA-SrcOver-Solid
 
53.0
Blend2D
 
54.0
ctx
 
83.0
cairo
 
116.0
Qt6
 
160.0
AGG
FillRectU-SrcOver-Solid
 
59.0
Blend2D
 
60.0
ctx
 
101.0
cairo
 
157.0
Qt6
 
730.0
AGG
FillRoundU-SrcOver-Solid
 
77.0
Blend2D
 
83.0
ctx
 
153.0
cairo
 
241.0
Qt6
 
738.0
AGG
FillRoundRot-SrcOver-Solid
 
95.0
Blend2D
 
100.0
ctx
 
323.0
cairo
 
487.0
Qt6
 
758.0
AGG
FillTriangle-SrcOver-Solid
 
18.0
Blend2D
 
20.0
ctx
 
83.0
AGG
 
90.0
cairo
 
161.0
Qt6
FillPolyNZi40-SrcOver-Solid
 
169.0
Blend2D
 
273.0
ctx
 
771.0
AGG
 
1229.0
cairo
 
5731.0
Qt6
FillPolyEOi40-SrcOver-Solid
 
166.0
Blend2D
 
227.0
ctx
 
748.0
AGG
 
1520.0
cairo
 
5994.0
Qt6
FillWorld-SrcOver-Solid
 
248.0
Blend2D
 
701.0
ctx
 
891.0
AGG
 
2111.0
cairo
 
3331.0
Qt6
StrokeRectRot-SrcOver-Solid
 
57.0
Blend2D
 
100.0
ctx
 
148.0
AGG
 
311.0
cairo
 
1591.0
Qt6
StrokeRoundU-SrcOver-Solid
 
48.0
Blend2D
 
77.0
ctx
 
108.0
AGG
 
219.0
cairo
 
411.0
Qt6
StrokeRoundRot-SrcOver-Solid
 
70.0
Blend2D
 
128.0
ctx
 
169.0
AGG
 
403.0
cairo
 
878.0
Qt6
StrokePoly40-SrcOver-Solid
 
209.0
Blend2D
 
425.0
ctx
 
1020.0
AGG
 
2795.0
cairo
 
18338.0
Qt6
StrokeWorld-SrcOver-Solid
 
668.0
Blend2D
 
1344.0
ctx
 
2284.0
AGG
 
6086.0
cairo
 
21101.0
Qt6
FillRectA-SrcOver-Linear
 
179.0
Blend2D
 
217.0
ctx
 
311.0
Qt6
 
1019.0
cairo
 
1206.0
AGG
FillRectU-SrcOver-Linear
 
190.0
Blend2D
 
234.0
ctx
 
424.0
Qt6
 
1151.0
cairo
 
1211.0
AGG
FillRectRot-SrcOver-Linear
 
214.0
Blend2D
 
263.0
ctx
 
486.0
Qt6
 
1256.0
AGG
 
2045.0
cairo
FillRoundU-SrcOver-Linear
 
202.0
Blend2D
 
252.0
ctx
 
518.0
Qt6
 
1220.0
AGG
 
1235.0
cairo
FillRoundRot-SrcOver-Linear
 
216.0
Blend2D
 
268.0
ctx
 
729.0
Qt6
 
1271.0
AGG
 
2043.0
cairo
FillTriangle-SrcOver-Linear
 
28.0
Blend2D
 
42.0
ctx
 
135.0
AGG
 
207.0
Qt6
 
289.0
cairo
FillPolyNZi40-SrcOver-Linear
 
208.0
Blend2D
 
368.0
ctx
 
1069.0
AGG
 
1771.0
cairo
 
5886.0
Qt6
FillPolyEOi40-SrcOver-Linear
 
196.0
Blend2D
 
314.0
ctx
 
984.0
AGG
 
1925.0
cairo
 
6315.0
Qt6
FillWorld-SrcOver-Linear
 
301.0
Blend2D
 
788.0
ctx
 
1153.0
AGG
 
2851.0
cairo
 
3338.0
Qt6
StrokeRectU-SrcOver-Linear
 
38.0
Blend2D
 
49.0
ctx
 
122.0
AGG
 
263.0
Qt6
 
476.0
cairo
StrokeRectRot-SrcOver-Linear
 
60.0
Blend2D
 
151.0
ctx
 
210.0
AGG
 
1095.0
cairo
 
1140.0
Qt6
StrokeRoundU-SrcOver-Linear
 
55.0
Blend2D
 
101.0
ctx
 
156.0
AGG
 
372.0
Qt6
 
611.0
cairo
StrokeRoundRot-SrcOver-Linear
 
75.0
Blend2D
 
185.0
ctx
 
226.0
AGG
 
977.0
Qt6
 
1167.0
cairo
StrokeLine-SrcOver-Linear
 
13.0
Blend2D
 
16.0
ctx
 
30.0
AGG
 
86.0
Qt6
 
134.0
cairo
StrokeTriangle-SrcOver-Linear
 
24.0
Blend2D
 
27.0
ctx
 
57.0
AGG
 
239.0
cairo
 
246.0
Qt6
StrokePoly40-SrcOver-Linear
 
239.0
Blend2D
 
487.0
ctx
 
1203.0
AGG
 
3258.0
cairo
 
18875.0
Qt6
StrokeWorld-SrcOver-Linear
 
711.0
Blend2D
 
1411.0
ctx
 
2417.0
AGG
 
7143.0
cairo
 
21495.0
Qt6
FillRectU-SrcOver-Radial
 
257.0
Blend2D
 
412.0
ctx
 
621.0
Qt6
 
1564.0
AGG
 
2042.0
cairo
FillRectRot-SrcOver-Radial
 
278.0
Blend2D
 
493.0
ctx
 
634.0
Qt6
 
1605.0
AGG
 
2921.0
cairo
FillRoundU-SrcOver-Radial
 
268.0
Blend2D
 
429.0
ctx
 
682.0
Qt6
 
1565.0
AGG
 
2119.0
cairo
FillRoundRot-SrcOver-Radial
 
280.0
Blend2D
 
497.0
ctx
 
952.0
Qt6
 
1578.0
AGG
 
2920.0
cairo
FillTriangle-SrcOver-Radial
 
35.0
Blend2D
 
56.0
ctx
 
162.0
AGG
 
221.0
Qt6
 
360.0
cairo
FillPolyNZi40-SrcOver-Radial
 
242.0
Blend2D
 
457.0
ctx
 
1213.0
AGG
 
2159.0
cairo
 
5959.0
Qt6
FillPolyEOi40-SrcOver-Radial
 
229.0
Blend2D
 
397.0
ctx
 
1108.0
AGG
 
2247.0
cairo
 
6476.0
Qt6
FillWorld-SrcOver-Radial
 
333.0
Blend2D
 
907.0
ctx
 
1286.0
AGG
 
3195.0
cairo
 
3476.0
Qt6
StrokeRectU-SrcOver-Radial
 
48.0
Blend2D
 
58.0
ctx
 
130.0
AGG
 
268.0
Qt6
 
515.0
cairo
StrokeRectRot-SrcOver-Radial
 
71.0
Blend2D
 
233.0
ctx
 
234.0
AGG
 
1156.0
Qt6
 
1164.0
cairo
StrokeRoundU-SrcOver-Radial
 
84.0
Blend2D
 
123.0
ctx
 
171.0
AGG
 
376.0
Qt6
 
680.0
cairo
StrokeLine-SrcOver-Radial
 
15.0
Blend2D
 
16.0
ctx
 
33.0
AGG
 
90.0
Qt6
 
139.0
cairo
StrokePoly40-SrcOver-Radial
 
264.0
Blend2D
 
565.0
ctx
 
1235.0
AGG
 
3511.0
cairo
 
18880.0
Qt6
StrokeWorld-SrcOver-Radial
 
708.0
Blend2D
 
1505.0
ctx
 
2489.0
AGG
 
7312.0
cairo
 
21529.0
Qt6
FillRectA-SrcOver-Conic
 
430.0
Blend2D
 
617.0
ctx
 
2065.0
Qt6
FillRectU-SrcOver-Conic
 
448.0
Blend2D
 
646.0
ctx
 
2279.0
Qt6
FillRectRot-SrcOver-Conic
 
471.0
Blend2D
 
792.0
ctx
 
2940.0
Qt6
FillRoundU-SrcOver-Conic
 
458.0
Blend2D
 
663.0
ctx
 
2767.0
Qt6
FillRoundRot-SrcOver-Conic
 
471.0
Blend2D
 
794.0
ctx
 
3288.0
Qt6
FillTriangle-SrcOver-Conic
 
54.0
Blend2D
 
80.0
ctx
 
535.0
Qt6
FillPolyNZi40-SrcOver-Conic
 
372.0
Blend2D
 
599.0
ctx
 
7580.0
Qt6
FillPolyEOi40-SrcOver-Conic
 
336.0
Blend2D
 
530.0
ctx
 
7575.0
Qt6
FillWorld-SrcOver-Conic
 
442.0
Blend2D
 
1057.0
ctx
 
5109.0
Qt6
StrokeRectU-SrcOver-Conic
 
63.0
Blend2D
 
93.0
ctx
 
472.0
Qt6
StrokeRectRot-SrcOver-Conic
 
89.0
Blend2D
 
343.0
ctx
 
1319.0
Qt6
StrokeRoundU-SrcOver-Conic
 
78.0
Blend2D
 
160.0
ctx
 
580.0
Qt6
StrokeRoundRot-SrcOver-Conic
 
98.0
Blend2D
 
402.0
ctx
 
1140.0
Qt6
StrokeLine-SrcOver-Conic
 
18.0
Blend2D
 
21.0
ctx
 
109.0
Qt6
StrokePoly40-SrcOver-Conic
 
359.0
Blend2D
 
687.0
ctx
 
19336.0
Qt6
StrokeWorld-SrcOver-Conic
 
778.0
Blend2D
 
1621.0
ctx
 
22133.0
Qt6
FillRectA-SrcOver-Pattern_NN
 
87.0
Blend2D
 
122.0
ctx
 
126.0
Qt6
 
141.0
cairo
FillRoundU-SrcOver-Pattern_NN
 
120.0
Blend2D
 
171.0
ctx
 
240.0
cairo
 
282.0
Qt6
FillTriangle-SrcOver-Pattern_NN
 
31.0
Blend2D
 
43.0
ctx
 
109.0
cairo
 
175.0
Qt6
FillPolyNZi40-SrcOver-Pattern_NN
 
187.0
Blend2D
 
354.0
ctx
 
1288.0
cairo
 
5743.0
Qt6
FillPolyEOi40-SrcOver-Pattern_NN
 
181.0
Blend2D
 
304.0
ctx
 
1558.0
cairo
 
6148.0
Qt6
FillWorld-SrcOver-Pattern_NN
 
293.0
Blend2D
 
736.0
ctx
 
2345.0
cairo
 
3187.0
Qt6
StrokeRectU-SrcOver-Pattern_NN
 
54.0
Blend2D
 
82.0
ctx
 
199.0
Qt6
 
237.0
cairo
StrokeRectRot-SrcOver-Pattern_NN
 
105.0
Blend2D
 
220.0
ctx
 
1086.0
Qt6
 
1118.0
cairo
StrokeRoundU-SrcOver-Pattern_NN
 
69.0
Blend2D
 
108.0
ctx
 
283.0
Qt6
 
311.0
cairo
StrokeRoundRot-SrcOver-Pattern_NN
 
130.0
Blend2D
 
269.0
ctx
 
928.0
Qt6
 
1161.0
cairo
StrokeLine-SrcOver-Pattern_NN
 
15.0
Blend2D
 
17.0
ctx
 
46.0
cairo
 
65.0
Qt6
StrokePoly40-SrcOver-Pattern_NN
 
226.0
Blend2D
 
479.0
ctx
 
2847.0
cairo
 
18408.0
Qt6
StrokeWorld-SrcOver-Pattern_NN
 
690.0
Blend2D
 
1379.0
ctx
 
6747.0
cairo
 
21195.0
Qt6
FillRectA-SrcOver-Pattern_BI
 
88.0
Blend2D
 
122.0
ctx
 
138.0
cairo
 
172.0
Qt6
FillTriangle-SrcOver-Pattern_BI
 
56.0
Blend2D
 
61.0
ctx
 
260.0
Qt6
 
294.0
cairo
FillPolyNZi40-SrcOver-Pattern_BI
 
342.0
Blend2D
 
451.0
ctx
 
2279.0
cairo
 
6394.0
Qt6
FillPolyEOi40-SrcOver-Pattern_BI
 
321.0
Blend2D
 
394.0
ctx
 
2791.0
cairo
 
6701.0
Qt6
FillWorld-SrcOver-Pattern_BI
 
439.0
Blend2D
 
771.0
ctx
 
3171.0
cairo
 
3700.0
Qt6
StrokeRectU-SrcOver-Pattern_BI
 
64.0
Blend2D
 
74.0
ctx
 
263.0
Qt6
 
1014.0
cairo
StrokeRectRot-SrcOver-Pattern_BI
 
121.0
Blend2D
 
393.0
ctx
 
1109.0
cairo
 
1155.0
Qt6
StrokeRoundU-SrcOver-Pattern_BI
 
79.0
Blend2D
 
133.0
ctx
 
367.0
Qt6
 
1133.0
cairo
StrokeRoundRot-SrcOver-Pattern_BI
 
221.0
Blend2D
 
466.0
ctx
 
975.0
Qt6
 
1189.0
cairo
StrokePoly40-SrcOver-Pattern_BI
 
348.0
Blend2D
 
563.0
ctx
 
3724.0
cairo
 
19101.0
Qt6
StrokeWorld-SrcOver-Pattern_BI
 
777.0
Blend2D
 
1405.0
ctx
 
7470.0
cairo
 
21680.0
Qt6
FillRectA-SrcCopy-Solid
 
23.0
Blend2D
 
24.0
ctx
 
28.0
Qt6
 
29.0
AGG
 
30.0
cairo
FillRectU-SrcCopy-Solid
 
26.0
Blend2D
 
30.0
ctx
 
37.0
Qt6
 
52.0
cairo
 
281.0
AGG
FillRectRot-SrcCopy-Solid
 
50.0
Blend2D
 
53.0
ctx
 
63.0
Qt6
 
141.0
cairo
 
320.0
AGG
FillRoundU-SrcCopy-Solid
 
39.0
Blend2D
 
50.0
ctx
 
63.0
Qt6
 
93.0
cairo
 
292.0
AGG
FillRoundRot-SrcCopy-Solid
 
53.0
Blend2D
 
65.0
ctx
 
181.0
cairo
 
197.0
Qt6
 
320.0
AGG
FillTriangle-SrcCopy-Solid
 
12.0
Blend2D
 
16.0
ctx
 
48.0
cairo
 
57.0
AGG
 
70.0
Qt6
FillPolyNZi40-SrcCopy-Solid
 
135.0
Blend2D
 
248.0
ctx
 
699.0
AGG
 
989.0
cairo
 
4603.0
Qt6
FillPolyEOi40-SrcCopy-Solid
 
132.0
Blend2D
 
205.0
ctx
 
711.0
AGG
 
1180.0
cairo
 
4634.0
Qt6
FillWorld-SrcCopy-Solid
 
223.0
Blend2D
 
682.0
ctx
 
799.0
AGG
 
1968.0
cairo
 
2170.0
Qt6
StrokeRectRot-SrcCopy-Solid
 
45.0
Blend2D
 
89.0
ctx
 
197.0
AGG
 
221.0
cairo
 
690.0
Qt6
StrokeRoundU-SrcCopy-Solid
 
38.0
Blend2D
 
72.0
ctx
 
119.0
Qt6
 
150.0
cairo
 
162.0
AGG
StrokeRoundRot-SrcCopy-Solid
 
56.0
Blend2D
 
116.0
ctx
 
221.0
AGG
 
316.0
cairo
 
569.0
Qt6
StrokeLine-SrcCopy-Solid
 
9.7
Blend2D
 
9.8
ctx
 
13.0
Qt6
 
27.0
AGG
 
30.0
cairo
StrokeTriangle-SrcCopy-Solid
 
17.0
Blend2D
 
18.0
ctx
 
61.0
cairo
 
61.0
AGG
 
115.0
Qt6
StrokePoly40-SrcCopy-Solid
 
190.0
Blend2D
 
407.0
ctx
 
1237.0
AGG
 
2659.0
cairo
 
15763.0
Qt6
StrokeWorld-SrcCopy-Solid
 
648.0
Blend2D
 
1329.0
ctx
 
2440.0
AGG
 
6410.0
cairo
 
18912.0
Qt6
FillRectA-SrcCopy-Linear
 
86.0
Blend2D
 
116.0
ctx
 
201.0
Qt6
 
744.0
AGG
 
941.0
cairo
FillRectU-SrcCopy-Linear
 
99.0
Blend2D
 
132.0
ctx
 
324.0
Qt6
 
806.0
AGG
 
1204.0
cairo
FillRectRot-SrcCopy-Linear
 
122.0
Blend2D
 
162.0
ctx
 
314.0
Qt6
 
852.0
AGG
 
2064.0
cairo
FillRoundU-SrcCopy-Linear
 
111.0
Blend2D
 
157.0
ctx
 
409.0
Qt6
 
813.0
AGG
 
1304.0
cairo
FillRoundRot-SrcCopy-Linear
 
125.0
Blend2D
 
175.0
ctx
 
645.0
Qt6
 
854.0
AGG
 
2047.0
cairo
FillTriangle-SrcCopy-Linear
 
20.0
Blend2D
 
33.0
ctx
 
113.0
AGG
 
179.0
Qt6
 
307.0
cairo
FillPolyNZi40-SrcCopy-Linear
 
168.0
Blend2D
 
332.0
ctx
 
985.0
AGG
 
2563.0
cairo
 
6170.0
Qt6
FillPolyEOi40-SrcCopy-Linear
 
161.0
Blend2D
 
285.0
ctx
 
1001.0
AGG
 
3295.0
cairo
 
6498.0
Qt6
FillWorld-SrcCopy-Linear
 
257.0
Blend2D
 
771.0
ctx
 
1122.0
AGG
 
3332.0
Qt6
 
3829.0
cairo
StrokeRectU-SrcCopy-Linear
 
35.0
Blend2D
 
46.0
ctx
 
166.0
AGG
 
179.0
cairo
 
276.0
Qt6
StrokeRectRot-SrcCopy-Linear
 
54.0
Blend2D
 
150.0
ctx
 
285.0
AGG
 
1201.0
Qt6
 
1259.0
cairo
StrokeRoundU-SrcCopy-Linear
 
51.0
Blend2D
 
99.0
ctx
 
200.0
AGG
 
375.0
Qt6
 
381.0
cairo
StrokeRoundRot-SrcCopy-Linear
 
69.0
Blend2D
 
178.0
ctx
 
269.0
AGG
 
951.0
Qt6
 
1308.0
cairo
StrokeLine-SrcCopy-Linear
 
13.0
Blend2D
 
16.0
ctx
 
37.0
AGG
 
78.0
Qt6
 
141.0
cairo
StrokeTriangle-SrcCopy-Linear
 
22.0
Blend2D
 
27.0
ctx
 
69.0
AGG
 
236.0
Qt6
 
275.0
cairo
StrokePoly40-SrcCopy-Linear
 
206.0
Blend2D
 
478.0
ctx
 
1417.0
AGG
 
5437.0
cairo
 
18958.0
Qt6
StrokeWorld-SrcCopy-Linear
 
669.0
Blend2D
 
1402.0
ctx
 
2580.0
AGG
 
8729.0
cairo
 
21650.0
Qt6
FillRectA-SrcCopy-Radial
 
153.0
Blend2D
 
289.0
ctx
 
307.0
Qt6
 
1095.0
AGG
 
1825.0
cairo
FillRectU-SrcCopy-Radial
 
166.0
Blend2D
 
308.0
ctx
 
458.0
Qt6
 
1159.0
AGG
 
2070.0
cairo
FillRectRot-SrcCopy-Radial
 
188.0
Blend2D
 
392.0
ctx
 
500.0
Qt6
 
1186.0
AGG
 
2921.0
cairo
FillRoundU-SrcCopy-Radial
 
178.0
Blend2D
 
333.0
ctx
 
507.0
Qt6
 
1161.0
AGG
 
2153.0
cairo
FillRoundRot-SrcCopy-Radial
 
194.0
Blend2D
 
403.0
ctx
 
725.0
Qt6
 
1195.0
AGG
 
2934.0
cairo
FillTriangle-SrcCopy-Radial
 
30.0
Blend2D
 
48.0
ctx
 
141.0
AGG
 
209.0
Qt6
 
378.0
cairo
FillPolyNZi40-SrcCopy-Radial
 
213.0
Blend2D
 
421.0
ctx
 
1127.0
AGG
 
2962.0
cairo
 
5968.0
Qt6
FillPolyEOi40-SrcCopy-Radial
 
206.0
Blend2D
 
367.0
ctx
 
1127.0
AGG
 
3615.0
cairo
 
6499.0
Qt6
FillWorld-SrcCopy-Radial
 
305.0
Blend2D
 
884.0
ctx
 
1226.0
AGG
 
3429.0
Qt6
 
4293.0
cairo
StrokeRectU-SrcCopy-Radial
 
49.0
Blend2D
 
61.0
ctx
 
176.0
AGG
 
202.0
cairo
 
307.0
Qt6
StrokeRectRot-SrcCopy-Radial
 
81.0
Blend2D
 
227.0
ctx
 
253.0
AGG
 
1226.0
Qt6
 
1295.0
cairo
StrokeRoundU-SrcCopy-Radial
 
66.0
Blend2D
 
122.0
ctx
 
215.0
AGG
 
379.0
cairo
 
428.0
Qt6
StrokeRoundRot-SrcCopy-Radial
 
89.0
Blend2D
 
272.0
ctx
 
305.0
AGG
 
1056.0
Qt6
 
1369.0
cairo
StrokePoly40-SrcCopy-Radial
 
245.0
Blend2D
 
555.0
ctx
 
1501.0
AGG
 
5574.0
cairo
 
19093.0
Qt6
StrokeWorld-SrcCopy-Radial
 
733.0
Blend2D
 
1490.0
ctx
 
2656.0
AGG
 
8935.0
cairo
 
21734.0
Qt6
FillRectA-SrcCopy-Conic
 
323.0
Blend2D
 
513.0
ctx
 
1979.0
Qt6
FillRectU-SrcCopy-Conic
 
341.0
Blend2D
 
540.0
ctx
 
2172.0
Qt6
FillRectRot-SrcCopy-Conic
 
367.0
Blend2D
 
690.0
ctx
 
2734.0
Qt6
FillRoundU-SrcCopy-Conic
 
360.0
Blend2D
 
565.0
ctx
 
2731.0
Qt6
FillRoundRot-SrcCopy-Conic
 
371.0
Blend2D
 
697.0
ctx
 
3156.0
Qt6
FillTriangle-SrcCopy-Conic
 
45.0
Blend2D
 
71.0
ctx
 
522.0
Qt6
FillPolyNZi40-SrcCopy-Conic
 
308.0
Blend2D
 
559.0
ctx
 
7715.0
Qt6
FillPolyEOi40-SrcCopy-Conic
 
285.0
Blend2D
 
500.0
ctx
 
8216.0
Qt6
FillWorld-SrcCopy-Conic
 
407.0
Blend2D
 
1037.0
ctx
 
5625.0
Qt6
StrokeRectU-SrcCopy-Conic
 
64.0
Blend2D
 
87.0
ctx
 
570.0
Qt6
StrokeRectRot-SrcCopy-Conic
 
89.0
Blend2D
 
334.0
ctx
 
1571.0
Qt6
StrokeRoundU-SrcCopy-Conic
 
84.0
Blend2D
 
155.0
ctx
 
727.0
Qt6
StrokeRoundRot-SrcCopy-Conic
 
97.0
Blend2D
 
393.0
ctx
 
1455.0
Qt6
StrokeLine-SrcCopy-Conic
 
18.0
Blend2D
 
21.0
ctx
 
123.0
Qt6
StrokeTriangle-SrcCopy-Conic
 
35.0
Blend2D
 
37.0
ctx
 
309.0
Qt6
StrokePoly40-SrcCopy-Conic
 
310.0
Blend2D
 
670.0
ctx
 
19860.0
Qt6
StrokeWorld-SrcCopy-Conic
 
771.0
Blend2D
 
1608.0
ctx
 
22463.0
Qt6
FillRoundU-SrcCopy-Pattern_NN
 
82.0
Blend2D
 
101.0
ctx
 
201.0
Qt6
 
204.0
cairo
FillTriangle-SrcCopy-Pattern_NN
 
26.0
Blend2D
 
37.0
ctx
 
69.0
cairo
 
151.0
Qt6
FillPolyNZi40-SrcCopy-Pattern_NN
 
169.0
Blend2D
 
319.0
ctx
 
1013.0
cairo
 
5669.0
Qt6
FillPolyEOi40-SrcCopy-Pattern_NN
 
167.0
Blend2D
 
274.0
ctx
 
1281.0
cairo
 
6024.0
Qt6
FillWorld-SrcCopy-Pattern_NN
 
266.0
Blend2D
 
715.0
ctx
 
2521.0
cairo
 
3034.0
Qt6
StrokeRectU-SrcCopy-Pattern_NN
 
41.0
Blend2D
 
79.0
ctx
 
117.0
cairo
 
251.0
Qt6
StrokeRectRot-SrcCopy-Pattern_NN
 
90.0
Blend2D
 
213.0
ctx
 
1204.0
Qt6
 
1295.0
cairo
StrokeRoundU-SrcCopy-Pattern_NN
 
59.0
Blend2D
 
106.0
ctx
 
239.0
cairo
 
318.0
Qt6
StrokeRoundRot-SrcCopy-Pattern_NN
 
128.0
Blend2D
 
261.0
ctx
 
1050.0
Qt6
 
1277.0
cairo
StrokePoly40-SrcCopy-Pattern_NN
 
220.0
Blend2D
 
473.0
ctx
 
3111.0
cairo
 
18457.0
Qt6
StrokeWorld-SrcCopy-Pattern_NN
 
710.0
Blend2D
 
1360.0
ctx
 
6956.0
cairo
 
21483.0
Qt6
FillTriangle-SrcCopy-Pattern_BI
 
49.0
Blend2D
 
54.0
ctx
 
247.0
Qt6
 
315.0
cairo
FillPolyNZi40-SrcCopy-Pattern_BI
 
304.0
Blend2D
 
416.0
ctx
 
2616.0
cairo
 
6403.0
Qt6
FillPolyEOi40-SrcCopy-Pattern_BI
 
290.0
Blend2D
 
364.0
ctx
 
3321.0
cairo
 
6951.0
Qt6
FillWorld-SrcCopy-Pattern_BI
 
400.0
Blend2D
 
750.0
ctx
 
3616.0
cairo
 
3945.0
Qt6
StrokeRectU-SrcCopy-Pattern_BI
 
59.0
Blend2D
 
90.0
ctx
 
122.0
cairo
 
392.0
Qt6
StrokeRectRot-SrcCopy-Pattern_BI
 
115.0
Blend2D
 
392.0
ctx
 
1287.0
Qt6
 
1350.0
cairo
StrokeRoundU-SrcCopy-Pattern_BI
 
74.0
Blend2D
 
138.0
ctx
 
285.0
cairo
 
535.0
Qt6
StrokeRoundRot-SrcCopy-Pattern_BI
 
197.0
Blend2D
 
472.0
ctx
 
1110.0
Qt6
 
1309.0
cairo
StrokeLine-SrcCopy-Pattern_BI
 
19.0
Blend2D
 
20.0
ctx
 
89.0
Qt6
 
116.0
cairo
StrokePoly40-SrcCopy-Pattern_BI
 
309.0
Blend2D
 
567.0
ctx
 
4500.0
cairo
 
19540.0
Qt6
StrokeWorld-SrcCopy-Pattern_BI
 
779.0
Blend2D
 
1397.0
ctx
 
7840.0
cairo
 
21870.0
Qt6

ctx in third place

FillRectA-SrcOver-Radial
 
243.0
Blend2D
 
376.0
Qt6
 
392.0
ctx
 
1550.0
AGG
 
1939.0
cairo
StrokeRoundRot-SrcOver-Radial
 
84.0
Blend2D
 
236.0
AGG
 
280.0
ctx
 
991.0
Qt6
 
1236.0
cairo
StrokeRectA-SrcOver-Pattern_NN
 
53.0
Blend2D
 
74.0
cairo
 
78.0
ctx
 
206.0
Qt6
StrokeRectA-SrcOver-Pattern_BI
 
41.0
Blend2D
 
66.0
cairo
 
76.0
ctx
 
294.0
Qt6
FillRectA-SrcCopy-Pattern_NN
 
47.0
Blend2D
 
48.0
Qt6
 
52.0
ctx
 
68.0
cairo
StrokeRectA-SrcCopy-Pattern_NN
 
35.0
Blend2D
 
38.0
cairo
 
76.0
ctx
 
229.0
Qt6
FillRectA-SrcCopy-Pattern_BI
 
48.0
Blend2D
 
50.0
Qt6
 
51.0
ctx
 
63.0
cairo
StrokeRectA-SrcCopy-Pattern_BI
 
37.0
Blend2D
 
38.0
cairo
 
80.0
ctx
 
382.0
Qt6

ctx in fourth place

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
 
356
cairo
 
142
RGBA8
 
142
BGRA8
 
179
RGB332
 
161
RGB565
 
173
RGB565_BS
 
123
RGB8
 
123
BGR8
 
654
RGBAF
 
100
GRAYA8
 
925
GRAY1
 
1272
GRAY2
 
1079
GRAY4
 
101
GRAY8
 
706
GRAYF
 
374
GRAYAF
 
1911
CMYKA8
 
338
CMYK8
 
1892
CMYKAF
color alpha=0.7
 
718
cairo
 
281
RGBA8
 
281
BGRA8
 
865
RGB332
 
661
RGB565
 
757
RGB565_BS
 
273
RGB8
 
273
BGR8
 
651
RGBAF
 
607
GRAYA8
 
1366
GRAY1
 
1733
GRAY2
 
1519
GRAY4
 
699
GRAY8
 
706
GRAYF
 
377
GRAYAF
 
8609
CMYKA8
 
6722
CMYK8
 
5559
CMYKAF