2D software rasterizer tournament

This benchmark was done on a AMD Ryzen AI 5 350

built using clang, cairo and qt6 from debian, blend2d statically linked. ctx dynamically linked.

Last updated:May 2026

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. The numbers and bar graphs are render calls per millisecond.

color alpha=1.0
 
24
cairo
 
48
RGBA8
 
48
BGRA8
 
36
RGB332
 
43
RGB565
 
42
RGB565_BS
 
45
RGB8
 
43
BGR8
 
23
RGBAF
 
56
GRAYA8
 
4
GRAY1
 
4
GRAY2
 
6
GRAY4
 
48
GRAY8
 
17
GRAYF
 
24
GRAYAF
 
3
CMYKA8
 
34
CMYK8
 
3
CMYKAF
color alpha=0.7
 
8
cairo
 
34
RGBA8
 
34
BGRA8
 
10
RGB332
 
14
RGB565
 
13
RGB565_BS
 
20
RGB8
 
20
BGR8
 
10
RGBAF
 
23
GRAYA8
 
4
GRAY1
 
4
GRAY2
 
6
GRAY4
 
19
GRAY8
 
17
GRAYF
 
25
GRAYAF
 
2
CMYKA8
 
2
CMYK8
 
3
CMYKAF

The data for the RGBA8 time-trial benchmark is a blend2d-bench dataset, the numbers in the tables below are render calls per milliseconds to render 256x256 bound 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 90 15 3
ctx 17 74 13 4
Qt6 13 40 55
cairo 1 6 52 49

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:

FillRectA-256x256-SrcOver-Solid
 
261.0
ctx
 
196.0
Blend2D
 
97.9
cairo
 
97.2
Qt6
FillRectU-256x256-SrcOver-Solid
 
195.0
ctx
 
165.0
Blend2D
 
86.3
cairo
 
54.0
Qt6
StrokeRectA-256x256-SrcOver-Solid
 
815.0
ctx
 
542.0
cairo
 
278.0
Blend2D
 
28.1
Qt6
StrokeRectA-8x8-SrcOver-Solid
 
6405.0
ctx
 
2895.0
Blend2D
 
2232.0
cairo
 
1109.0
Qt6
StrokeRectU-256x256-SrcOver-Solid
 
286.0
ctx
 
273.0
Blend2D
 
88.9
cairo
 
27.3
Qt6
StrokeLine-256x256-SrcOver-Solid
 
424.0
ctx
 
398.0
Blend2D
 
119.0
cairo
 
76.6
Qt6
StrokeLine-8x8-SrcOver-Solid
 
2241.0
ctx
 
1634.0
Blend2D
 
1357.0
Qt6
 
700.0
cairo
StrokeButterfly-8x8-SrcOver-Solid
 
26.2
ctx
 
25.7
Blend2D
 
16.1
cairo
 
12.3
Qt6
StrokeDragon-8x8-SrcOver-Solid
 
14.1
ctx
 
9.7
Blend2D
 
4.9
cairo
 
4.7
Qt6
StrokeWorld-8x8-SrcOver-Solid
 
16.3
ctx
 
13.4
Blend2D
 
3.1
Qt6
 
1.8
cairo
FillRectU-256x256-SrcCopy-Solid
 
341.0
ctx
 
277.0
Blend2D
 
215.0
Qt6
 
188.0
cairo
StrokeRectA-8x8-SrcCopy-Solid
 
7764.0
ctx
 
3571.0
cairo
 
3058.0
Blend2D
 
1349.0
Qt6
StrokeLine-256x256-SrcCopy-Solid
 
412.0
ctx
 
406.0
Blend2D
 
311.0
Qt6
 
180.0
cairo
StrokeLine-8x8-SrcCopy-Solid
 
2223.0
ctx
 
1646.0
Blend2D
 
1452.0
Qt6
 
854.0
cairo
StrokeButterfly-8x8-SrcCopy-Solid
 
26.1
ctx
 
25.7
Blend2D
 
16.3
cairo
 
6.6
Qt6
StrokeDragon-8x8-SrcCopy-Solid
 
14.1
ctx
 
9.7
Blend2D
 
4.9
cairo
 
2.8
Qt6
StrokeWorld-8x8-SrcCopy-Solid
 
16.5
ctx
 
13.5
Blend2D
 
2.1
Qt6
 
1.8
cairo

ctx in second place

FillRectA-8x8-SrcOver-Solid
 
37092.0
Blend2D
 
8798.0
ctx
 
3899.0
Qt6
 
3706.0
cairo
FillRectU-8x8-SrcOver-Solid
 
18097.0
Blend2D
 
5267.0
ctx
 
2503.0
Qt6
 
2161.0
cairo
FillRectRot-256x256-SrcOver-Solid
 
79.3
Blend2D
 
75.5
ctx
 
25.2
Qt6
 
19.3
cairo
FillRectRot-8x8-SrcOver-Solid
 
2499.0
Blend2D
 
1783.0
ctx
 
1298.0
Qt6
 
507.0
cairo
FillRoundU-256x256-SrcOver-Solid
 
99.1
Blend2D
 
86.8
ctx
 
42.5
cairo
 
34.3
Qt6
FillRoundU-8x8-SrcOver-Solid
 
1557.0
Blend2D
 
1163.0
ctx
 
698.0
Qt6
 
353.0
cairo
FillRoundRot-256x256-SrcOver-Solid
 
73.2
Blend2D
 
68.9
ctx
 
16.1
cairo
 
13.5
Qt6
FillRoundRot-8x8-SrcOver-Solid
 
1325.0
Blend2D
 
869.0
ctx
 
736.0
Qt6
 
308.0
cairo
FillTriangle-256x256-SrcOver-Solid
 
292.0
Blend2D
 
195.0
ctx
 
47.6
cairo
 
33.9
Qt6
FillTriangle-8x8-SrcOver-Solid
 
3521.0
Blend2D
 
2874.0
ctx
 
1403.0
Qt6
 
810.0
cairo
FillPolyNZi10-256x256-SrcOver-Solid
 
73.7
Blend2D
 
63.2
ctx
 
12.7
cairo
 
6.0
Qt6
FillPolyNZi10-8x8-SrcOver-Solid
 
1530.0
Blend2D
 
597.0
ctx
 
519.0
Qt6
 
206.0
cairo
FillPolyEOi10-256x256-SrcOver-Solid
 
77.5
Blend2D
 
67.1
ctx
 
11.7
cairo
 
5.8
Qt6
FillPolyEOi10-8x8-SrcOver-Solid
 
1531.0
Blend2D
 
643.0
ctx
 
516.0
Qt6
 
207.0
cairo
FillPolyNZi40-256x256-SrcOver-Solid
 
22.2
Blend2D
 
14.6
ctx
 
2.6
cairo
 
0.7
Qt6
FillPolyEOi40-256x256-SrcOver-Solid
 
22.8
Blend2D
 
17.8
ctx
 
2.1
cairo
 
0.7
Qt6
FillButterfly-256x256-SrcOver-Solid
 
36.4
Blend2D
 
19.4
ctx
 
7.4
Qt6
 
4.9
cairo
FillButterfly-8x8-SrcOver-Solid
 
147.0
Blend2D
 
77.9
ctx
 
72.7
cairo
 
67.7
Qt6
FillFish-256x256-SrcOver-Solid
 
14.9
Blend2D
 
4.4
ctx
 
1.7
cairo
 
1.2
Qt6
FillDragon-256x256-SrcOver-Solid
 
20.0
Blend2D
 
7.3
ctx
 
3.3
Qt6
 
2.6
cairo
FillWorld-256x256-SrcOver-Solid
 
26.3
Blend2D
 
6.0
ctx
 
3.3
Qt6
 
3.0
cairo
StrokeRectU-8x8-SrcOver-Solid
 
2782.0
Blend2D
 
2439.0
ctx
 
1039.0
Qt6
 
918.0
cairo
StrokeRectRot-256x256-SrcOver-Solid
 
100.0
Blend2D
 
61.0
ctx
 
20.3
cairo
 
4.9
Qt6
StrokeRectRot-8x8-SrcOver-Solid
 
1427.0
Blend2D
 
385.0
ctx
 
222.0
Qt6
 
162.0
cairo
StrokeRoundU-256x256-SrcOver-Solid
 
124.0
Blend2D
 
58.8
ctx
 
29.0
cairo
 
15.9
Qt6
StrokeRoundU-8x8-SrcOver-Solid
 
607.0
Blend2D
 
309.0
ctx
 
212.0
Qt6
 
167.0
cairo
StrokeRoundRot-256x256-SrcOver-Solid
 
72.4
Blend2D
 
35.7
ctx
 
12.5
cairo
 
5.7
Qt6
StrokeTriangle-256x256-SrcOver-Solid
 
223.0
Blend2D
 
197.0
ctx
 
58.6
cairo
 
21.4
Qt6
StrokeTriangle-8x8-SrcOver-Solid
 
1361.0
Blend2D
 
988.0
ctx
 
441.0
Qt6
 
349.0
cairo
StrokePoly10-256x256-SrcOver-Solid
 
64.2
Blend2D
 
39.7
ctx
 
8.2
cairo
 
2.1
Qt6
StrokePoly40-256x256-SrcOver-Solid
 
18.3
Blend2D
 
5.6
ctx
 
1.1
cairo
 
0.2
Qt6
StrokeButterfly-256x256-SrcOver-Solid
 
14.9
Blend2D
 
5.4
ctx
 
2.7
cairo
 
1.9
Qt6
StrokeFish-256x256-SrcOver-Solid
 
4.4
Blend2D
 
1.0
ctx
 
0.9
cairo
 
0.4
Qt6
StrokeDragon-256x256-SrcOver-Solid
 
6.0
Blend2D
 
1.9
ctx
 
1.2
cairo
 
0.6
Qt6
StrokeWorld-256x256-SrcOver-Solid
 
11.9
Blend2D
 
1.4
ctx
 
1.1
cairo
 
0.4
Qt6
FillRectA-256x256-SrcCopy-Solid
 
529.0
Blend2D
 
507.0
ctx
 
477.0
cairo
 
372.0
Qt6
FillRectA-8x8-SrcCopy-Solid
 
73964.0
Blend2D
 
8876.0
ctx
 
5133.0
cairo
 
4440.0
Qt6
FillRectU-8x8-SrcCopy-Solid
 
19548.0
Blend2D
 
6117.0
ctx
 
3322.0
Qt6
 
3151.0
cairo
FillRectRot-256x256-SrcCopy-Solid
 
117.0
Blend2D
 
89.0
ctx
 
70.3
Qt6
 
39.9
cairo
FillRectRot-8x8-SrcCopy-Solid
 
2589.0
Blend2D
 
1784.0
ctx
 
1566.0
Qt6
 
677.0
cairo
FillRoundU-256x256-SrcCopy-Solid
 
194.0
Blend2D
 
123.0
ctx
 
75.9
Qt6
 
75.3
cairo
FillRoundU-8x8-SrcCopy-Solid
 
1575.0
Blend2D
 
1166.0
ctx
 
768.0
Qt6
 
423.0
cairo
FillRoundRot-256x256-SrcCopy-Solid
 
101.0
Blend2D
 
76.8
ctx
 
31.0
cairo
 
20.5
Qt6
FillRoundRot-8x8-SrcCopy-Solid
 
1336.0
Blend2D
 
870.0
ctx
 
794.0
Qt6
 
345.0
cairo
FillTriangle-256x256-SrcCopy-Solid
 
319.0
Blend2D
 
199.0
ctx
 
91.2
cairo
 
51.7
Qt6
FillTriangle-8x8-SrcCopy-Solid
 
3531.0
Blend2D
 
2897.0
ctx
 
1472.0
Qt6
 
1050.0
cairo
FillPolyNZi10-256x256-SrcCopy-Solid
 
74.5
Blend2D
 
64.2
ctx
 
21.3
cairo
 
7.5
Qt6
FillPolyNZi10-8x8-SrcCopy-Solid
 
1539.0
Blend2D
 
598.0
ctx
 
541.0
Qt6
 
222.0
cairo
FillPolyEOi10-256x256-SrcCopy-Solid
 
78.0
Blend2D
 
67.9
ctx
 
19.9
cairo
 
7.4
Qt6
FillPolyEOi10-8x8-SrcCopy-Solid
 
1536.0
Blend2D
 
650.0
ctx
 
538.0
Qt6
 
220.0
cairo
FillPolyNZi40-256x256-SrcCopy-Solid
 
22.2
Blend2D
 
14.5
ctx
 
3.2
cairo
 
0.7
Qt6
FillPolyEOi40-256x256-SrcCopy-Solid
 
22.8
Blend2D
 
17.8
ctx
 
2.7
cairo
 
0.7
Qt6
FillButterfly-256x256-SrcCopy-Solid
 
41.1
Blend2D
 
19.9
ctx
 
10.8
Qt6
 
6.7
cairo
FillButterfly-8x8-SrcCopy-Solid
 
149.0
Blend2D
 
78.0
ctx
 
73.8
cairo
 
67.4
Qt6
FillFish-256x256-SrcCopy-Solid
 
15.3
Blend2D
 
4.4
ctx
 
2.0
cairo
 
1.4
Qt6
FillDragon-256x256-SrcCopy-Solid
 
20.4
Blend2D
 
7.3
ctx
 
4.1
Qt6
 
3.2
cairo
FillWorld-256x256-SrcCopy-Solid
 
26.6
Blend2D
 
6.0
ctx
 
4.1
Qt6
 
3.5
cairo
StrokeRectA-256x256-SrcCopy-Solid
 
906.0
cairo
 
627.0
ctx
 
306.0
Blend2D
 
80.3
Qt6
StrokeRectU-256x256-SrcCopy-Solid
 
298.0
Blend2D
 
218.0
ctx
 
135.0
cairo
 
78.5
Qt6
StrokeRectU-8x8-SrcCopy-Solid
 
2931.0
Blend2D
 
2524.0
ctx
 
1484.0
cairo
 
1276.0
Qt6
StrokeRectRot-256x256-SrcCopy-Solid
 
103.0
Blend2D
 
60.8
ctx
 
27.1
cairo
 
6.7
Qt6
StrokeRectRot-8x8-SrcCopy-Solid
 
1437.0
Blend2D
 
368.0
ctx
 
316.0
Qt6
 
174.0
cairo
StrokeRoundU-256x256-SrcCopy-Solid
 
129.0
Blend2D
 
59.4
ctx
 
35.9
cairo
 
33.2
Qt6
StrokeRoundU-8x8-SrcCopy-Solid
 
615.0
Blend2D
 
303.0
ctx
 
218.0
Qt6
 
179.0
cairo
StrokeRoundRot-256x256-SrcCopy-Solid
 
74.2
Blend2D
 
36.0
ctx
 
16.0
cairo
 
8.3
Qt6
StrokeTriangle-256x256-SrcCopy-Solid
 
233.0
Blend2D
 
192.0
ctx
 
75.6
cairo
 
33.3
Qt6
StrokeTriangle-8x8-SrcCopy-Solid
 
1350.0
Blend2D
 
975.0
ctx
 
447.0
Qt6
 
397.0
cairo
StrokePoly10-256x256-SrcCopy-Solid
 
65.1
Blend2D
 
40.0
ctx
 
9.5
cairo
 
2.5
Qt6
StrokePoly10-8x8-SrcCopy-Solid
 
504.0
Blend2D
 
126.0
ctx
 
118.0
Qt6
 
87.6
cairo
StrokePoly40-256x256-SrcCopy-Solid
 
18.5
Blend2D
 
5.5
ctx
 
1.2
cairo
 
0.2
Qt6
StrokeButterfly-256x256-SrcCopy-Solid
 
15.0
Blend2D
 
5.4
ctx
 
2.8
cairo
 
2.1
Qt6
StrokeFish-256x256-SrcCopy-Solid
 
4.5
Blend2D
 
1.0
ctx
 
0.9
cairo
 
0.4
Qt6
StrokeDragon-256x256-SrcCopy-Solid
 
6.0
Blend2D
 
1.9
ctx
 
1.3
cairo
 
0.6
Qt6
StrokeWorld-256x256-SrcCopy-Solid
 
12.0
Blend2D
 
1.4
ctx
 
1.1
cairo
 
0.4
Qt6

ctx in third place

FillPolyNZi40-8x8-SrcOver-Solid
 
472.0
Blend2D
 
169.0
Qt6
 
83.4
ctx
 
59.8
cairo
FillPolyEOi40-8x8-SrcOver-Solid
 
472.0
Blend2D
 
169.0
Qt6
 
100.0
ctx
 
61.9
cairo
FillDragon-8x8-SrcOver-Solid
 
73.9
Blend2D
 
45.2
Qt6
 
39.3
ctx
 
38.1
cairo
FillWorld-8x8-SrcOver-Solid
 
127.0
Blend2D
 
55.2
Qt6
 
54.9
ctx
 
27.6
cairo
StrokeRoundRot-8x8-SrcOver-Solid
 
513.0
Blend2D
 
233.0
Qt6
 
189.0
ctx
 
119.0
cairo
StrokePoly10-8x8-SrcOver-Solid
 
506.0
Blend2D
 
135.0
Qt6
 
127.0
ctx
 
84.4
cairo
StrokeFish-8x8-SrcOver-Solid
 
8.6
Blend2D
 
5.0
cairo
 
4.6
ctx
 
4.0
Qt6
FillPolyNZi40-8x8-SrcCopy-Solid
 
474.0
Blend2D
 
173.0
Qt6
 
83.3
ctx
 
60.5
cairo
FillPolyEOi40-8x8-SrcCopy-Solid
 
473.0
Blend2D
 
172.0
Qt6
 
99.7
ctx
 
62.8
cairo
FillDragon-8x8-SrcCopy-Solid
 
73.9
Blend2D
 
45.4
Qt6
 
39.3
ctx
 
39.0
cairo
FillWorld-8x8-SrcCopy-Solid
 
127.0
Blend2D
 
54.9
Qt6
 
54.9
ctx
 
27.5
cairo
StrokeRoundRot-8x8-SrcCopy-Solid
 
514.0
Blend2D
 
251.0
Qt6
 
187.0
ctx
 
123.0
cairo
StrokeFish-8x8-SrcCopy-Solid
 
8.6
Blend2D
 
5.0
cairo
 
4.5
ctx
 
2.0
Qt6

ctx in fourth place

FillFish-8x8-SrcOver-Solid
 
55.0
Blend2D
 
31.5
cairo
 
29.2
Qt6
 
24.9
ctx
StrokePoly40-8x8-SrcOver-Solid
 
148.0
Blend2D
 
25.9
Qt6
 
21.1
cairo
 
20.2
ctx
FillFish-8x8-SrcCopy-Solid
 
54.9
Blend2D
 
32.1
cairo
 
29.1
Qt6
 
24.9
ctx
StrokePoly40-8x8-SrcCopy-Solid
 
148.0
Blend2D
 
24.2
Qt6
 
21.7
cairo
 
20.2
ctx