1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
11484
11485
11486
11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501
11502
11503
11504
11505
11506
11507
11508
11509
11510
11511
11512
11513
11514
11515
11516
11517
11518
11519
11520
11521
11522
11523
11524
11525
11526
11527
11528
11529
11530
11531
11532
11533
11534
11535
11536
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640
11641
11642
11643
11644
11645
11646
11647
11648
11649
11650
11651
11652
11653
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664
11665
11666
11667
11668
11669
11670
11671
11672
11673
11674
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687
11688
11689
11690
11691
11692
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703
11704
11705
11706
11707
11708
11709
11710
11711
11712
11713
11714
11715
11716
11717
11718
11719
11720
11721
11722
11723
11724
11725
11726
11727
11728
11729
11730
11731
11732
11733
11734
11735
11736
11737
11738
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762
11763
11764
11765
11766
11767
11768
11769
11770
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781
11782
11783
11784
11785
11786
11787
11788
11789
11790
11791
11792
11793
11794
11795
11796
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811
11812
11813
11814
11815
11816
11817
11818
11819
11820
11821
11822
11823
11824
11825
11826
11827
11828
11829
11830
11831
11832
11833
11834
11835
11836
11837
11838
11839
11840
11841
11842
11843
11844
11845
11846
11847
11848
11849
11850
11851
11852
11853
11854
11855
11856
11857
11858
11859
11860
11861
11862
11863
11864
11865
11866
11867
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882
11883
11884
11885
11886
11887
11888
11889
11890
11891
11892
11893
11894
11895
11896
11897
11898
11899
11900
11901
11902
11903
11904
11905
11906
11907
11908
11909
11910
11911
11912
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925
11926
11927
11928
11929
11930
11931
11932
11933
11934
11935
11936
11937
11938
11939
11940
11941
11942
11943
11944
11945
11946
11947
11948
11949
11950
11951
11952
11953
11954
11955
11956
11957
11958
11959
11960
11961
11962
11963
11964
11965
11966
11967
11968
11969
11970
11971
11972
11973
11974
11975
11976
11977
11978
11979
11980
11981
11982
11983
11984
11985
11986
11987
11988
11989
11990
11991
11992
11993
11994
11995
11996
11997
11998
11999
12000
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
12076
12077
12078
12079
12080
12081
12082
12083
12084
12085
12086
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
12173
12174
12175
12176
12177
12178
12179
12180
12181
12182
12183
12184
12185
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
12568
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
12632
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
12667
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
12749
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
13163
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
13191
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
13253
13254
13255
13256
13257
13258
13259
13260
13261
13262
13263
13264
13265
13266
13267
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
13307
13308
13309
13310
13311
13312
13313
13314
13315
13316
13317
13318
13319
13320
13321
13322
13323
13324
13325
13326
13327
13328
13329
13330
13331
13332
13333
13334
13335
13336
13337
13338
13339
13340
13341
13342
13343
13344
13345
13346
13347
13348
13349
13350
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
13483
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
13501
13502
13503
13504
13505
13506
13507
13508
13509
13510
13511
13512
13513
13514
13515
13516
13517
13518
13519
13520
13521
13522
13523
13524
13525
13526
13527
13528
13529
13530
13531
13532
13533
13534
13535
13536
13537
13538
13539
13540
13541
13542
13543
13544
13545
13546
13547
13548
13549
13550
13551
13552
13553
13554
13555
13556
13557
13558
13559
13560
13561
13562
13563
13564
13565
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
13640
13641
13642
13643
13644
13645
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
13741
13742
13743
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
14397
14398
14399
14400
14401
14402
14403
14404
14405
14406
14407
14408
14409
14410
14411
14412
14413
14414
14415
14416
14417
14418
14419
14420
14421
14422
14423
14424
14425
14426
14427
14428
14429
14430
14431
14432
14433
14434
14435
14436
14437
14438
14439
14440
14441
14442
14443
14444
14445
14446
14447
14448
14449
14450
14451
14452
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478
14479
14480
14481
14482
14483
14484
14485
14486
14487
14488
14489
14490
14491
14492
14493
14494
14495
14496
14497
14498
14499
14500
14501
14502
14503
14504
14505
14506
14507
14508
14509
14510
14511
14512
14513
14514
14515
14516
14517
14518
14519
14520
14521
14522
14523
14524
14525
14526
14527
14528
14529
14530
14531
14532
14533
14534
14535
14536
14537
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548
14549
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606
14607
14608
14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675
14676
14677
14678
14679
14680
14681
14682
14683
14684
14685
14686
14687
14688
14689
14690
14691
14692
14693
14694
14695
14696
14697
14698
14699
14700
14701
14702
14703
14704
14705
14706
14707
14708
14709
14710
14711
14712
14713
14714
14715
14716
14717
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739
14740
14741
14742
14743
14744
14745
14746
14747
14748
14749
14750
14751
14752
14753
14754
14755
14756
14757
14758
14759
14760
14761
14762
14763
14764
14765
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
14781
14782
14783
14784
14785
14786
14787
14788
14789
14790
14791
14792
14793
14794
14795
14796
14797
14798
14799
14800
14801
14802
14803
14804
14805
14806
14807
14808
14809
14810
14811
14812
14813
14814
14815
14816
14817
14818
14819
14820
14821
14822
14823
14824
14825
14826
14827
14828
14829
14830
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914
14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942
14943
14944
14945
14946
14947
14948
14949
14950
14951
14952
14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978
14979
14980
14981
14982
14983
14984
14985
14986
14987
14988
14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003
15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056
15057
15058
15059
15060
15061
15062
15063
15064
15065
15066
15067
15068
15069
15070
15071
15072
15073
15074
15075
15076
15077
15078
15079
15080
15081
15082
15083
15084
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095
15096
15097
15098
15099
15100
15101
15102
15103
15104
15105
15106
15107
15108
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
15135
15136
15137
15138
15139
15140
15141
15142
15143
15144
15145
15146
15147
15148
15149
15150
15151
15152
15153
15154
15155
15156
15157
15158
15159
15160
15161
15162
15163
15164
15165
15166
15167
15168
15169
15170
15171
15172
15173
15174
15175
15176
15177
15178
15179
15180
15181
15182
15183
15184
15185
15186
15187
15188
15189
15190
15191
15192
15193
15194
15195
15196
15197
15198
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220
15221
15222
15223
15224
15225
15226
15227
15228
15229
15230
15231
15232
15233
15234
15235
15236
15237
15238
15239
15240
15241
15242
15243
15244
15245
15246
15247
15248
15249
15250
15251
15252
15253
15254
15255
15256
15257
15258
15259
15260
15261
15262
15263
15264
15265
15266
15267
15268
15269
15270
15271
15272
15273
15274
15275
15276
15277
15278
15279
15280
15281
15282
15283
15284
15285
15286
15287
15288
15289
15290
15291
15292
15293
15294
15295
15296
15297
15298
15299
15300
15301
15302
15303
15304
15305
15306
15307
15308
15309
15310
15311
15312
15313
15314
15315
15316
15317
15318
15319
15320
15321
15322
15323
15324
15325
15326
15327
15328
15329
15330
15331
15332
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353
15354
15355
15356
15357
15358
15359
15360
15361
15362
15363
15364
15365
15366
15367
15368
15369
15370
15371
15372
15373
15374
15375
15376
15377
15378
15379
15380
15381
15382
15383
15384
15385
15386
15387
15388
15389
15390
15391
15392
15393
15394
15395
15396
15397
15398
15399
15400
15401
15402
15403
15404
15405
15406
15407
15408
15409
15410
15411
15412
15413
15414
15415
15416
15417
15418
15419
15420
15421
15422
15423
15424
15425
15426
15427
15428
15429
15430
15431
15432
15433
15434
15435
15436
15437
15438
15439
15440
15441
15442
15443
15444
15445
15446
15447
15448
15449
15450
15451
15452
15453
15454
15455
15456
15457
15458
15459
15460
15461
15462
15463
15464
15465
15466
15467
15468
15469
15470
15471
15472
15473
15474
15475
15476
15477
15478
15479
15480
15481
15482
15483
15484
15485
15486
15487
15488
15489
15490
15491
15492
15493
15494
15495
15496
15497
15498
15499
15500
15501
15502
15503
15504
15505
15506
15507
15508
15509
15510
15511
15512
15513
15514
15515
15516
15517
15518
15519
15520
15521
15522
15523
15524
15525
15526
15527
15528
15529
15530
15531
15532
15533
15534
15535
15536
15537
15538
15539
15540
15541
15542
15543
15544
15545
15546
15547
15548
15549
15550
15551
15552
15553
15554
15555
15556
15557
15558
15559
15560
15561
15562
15563
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
15579
15580
15581
15582
15583
15584
15585
15586
15587
15588
15589
15590
15591
15592
15593
15594
15595
15596
15597
15598
15599
15600
15601
15602
15603
15604
15605
15606
15607
15608
15609
15610
15611
15612
15613
15614
15615
15616
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
15632
15633
15634
15635
15636
15637
15638
15639
15640
15641
15642
15643
15644
15645
15646
15647
15648
15649
15650
15651
15652
15653
15654
15655
15656
15657
15658
15659
15660
15661
15662
15663
15664
15665
15666
15667
15668
15669
15670
15671
15672
15673
15674
15675
15676
15677
15678
15679
15680
15681
15682
15683
15684
15685
15686
15687
15688
15689
15690
15691
15692
15693
15694
15695
15696
15697
15698
15699
15700
15701
15702
15703
15704
15705
15706
15707
15708
15709
15710
15711
15712
15713
15714
15715
15716
15717
15718
15719
15720
15721
15722
15723
15724
15725
15726
15727
15728
15729
15730
15731
15732
15733
15734
15735
15736
15737
15738
15739
15740
15741
15742
15743
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
15762
15763
15764
15765
15766
15767
15768
15769
15770
15771
15772
15773
15774
15775
15776
15777
15778
15779
15780
15781
15782
15783
15784
15785
15786
15787
15788
15789
15790
15791
15792
15793
15794
15795
15796
15797
15798
15799
15800
15801
15802
15803
15804
15805
15806
15807
15808
15809
15810
15811
15812
15813
15814
15815
15816
15817
15818
15819
15820
15821
15822
15823
15824
15825
15826
15827
15828
15829
15830
15831
15832
15833
15834
15835
15836
15837
15838
15839
15840
15841
15842
15843
15844
15845
15846
15847
15848
15849
15850
15851
15852
15853
15854
15855
15856
15857
15858
15859
15860
15861
15862
15863
15864
15865
15866
15867
15868
15869
15870
15871
15872
15873
15874
15875
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
15900
15901
15902
15903
15904
15905
15906
15907
15908
15909
15910
15911
15912
15913
15914
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925
15926
15927
15928
15929
15930
15931
15932
15933
15934
15935
15936
15937
15938
15939
15940
15941
15942
15943
15944
15945
15946
15947
15948
15949
15950
15951
15952
15953
15954
15955
15956
15957
15958
15959
15960
15961
15962
15963
15964
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
15980
15981
15982
15983
15984
15985
15986
15987
15988
15989
15990
15991
15992
15993
15994
15995
15996
15997
15998
15999
16000
16001
16002
16003
16004
16005
16006
16007
16008
16009
16010
16011
16012
16013
16014
16015
16016
16017
16018
16019
16020
16021
16022
16023
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034
16035
16036
16037
16038
16039
16040
16041
16042
16043
16044
16045
16046
16047
16048
16049
16050
16051
16052
16053
16054
16055
16056
16057
16058
16059
16060
16061
16062
16063
16064
16065
16066
16067
16068
16069
16070
16071
16072
16073
16074
16075
16076
16077
16078
16079
16080
16081
16082
16083
16084
16085
16086
16087
16088
16089
16090
16091
16092
16093
16094
16095
16096
16097
16098
16099
16100
16101
16102
16103
16104
16105
16106
16107
16108
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
16123
16124
16125
16126
16127
16128
16129
16130
16131
16132
16133
16134
16135
16136
16137
16138
16139
16140
16141
16142
16143
16144
16145
16146
16147
16148
16149
16150
16151
16152
16153
16154
16155
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166
16167
16168
16169
16170
16171
16172
16173
16174
16175
16176
16177
16178
16179
16180
16181
16182
16183
16184
16185
16186
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197
16198
16199
16200
16201
16202
16203
16204
16205
16206
16207
16208
16209
16210
16211
16212
16213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
16224
16225
16226
16227
16228
16229
16230
16231
16232
16233
16234
16235
16236
16237
16238
16239
16240
16241
16242
16243
16244
16245
16246
16247
16248
16249
16250
16251
16252
16253
16254
16255
16256
16257
16258
16259
16260
16261
16262
16263
16264
16265
16266
16267
16268
16269
16270
16271
16272
16273
16274
16275
16276
16277
16278
16279
16280
16281
16282
16283
16284
16285
16286
16287
16288
16289
16290
16291
16292
16293
16294
16295
16296
16297
16298
16299
16300
16301
16302
16303
16304
16305
16306
16307
16308
16309
16310
16311
16312
16313
16314
16315
16316
16317
16318
16319
16320
16321
16322
16323
16324
16325
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336
16337
16338
16339
16340
16341
16342
16343
16344
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355
16356
16357
16358
16359
16360
16361
16362
16363
16364
16365
16366
16367
16368
16369
16370
16371
16372
16373
16374
16375
16376
16377
16378
16379
16380
16381
16382
16383
16384
16385
16386
16387
16388
16389
16390
16391
16392
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415
16416
16417
16418
16419
16420
16421
16422
16423
16424
16425
16426
16427
16428
16429
16430
16431
16432
16433
16434
16435
16436
16437
16438
16439
16440
16441
16442
16443
16444
16445
16446
16447
16448
16449
16450
16451
16452
16453
16454
16455
16456
16457
16458
16459
16460
16461
16462
16463
16464
16465
16466
16467
16468
16469
16470
16471
16472
16473
16474
16475
16476
16477
16478
16479
16480
16481
16482
16483
16484
16485
16486
16487
16488
16489
16490
16491
16492
16493
16494
16495
16496
16497
16498
16499
16500
16501
16502
16503
16504
16505
16506
16507
16508
16509
16510
16511
16512
16513
16514
16515
16516
16517
16518
16519
16520
16521
16522
16523
16524
16525
16526
16527
16528
16529
16530
16531
16532
16533
16534
16535
16536
16537
16538
16539
16540
16541
16542
16543
16544
16545
16546
16547
16548
16549
16550
16551
16552
16553
16554
16555
16556
16557
16558
16559
16560
16561
16562
16563
16564
16565
16566
16567
16568
16569
16570
16571
16572
16573
16574
16575
16576
16577
16578
16579
16580
16581
16582
16583
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
16603
16604
16605
16606
16607
16608
16609
16610
16611
16612
16613
16614
16615
16616
16617
16618
16619
16620
16621
16622
16623
16624
16625
16626
16627
16628
16629
16630
16631
16632
16633
16634
16635
16636
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647
16648
16649
16650
16651
16652
16653
16654
16655
16656
16657
16658
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671
16672
16673
16674
16675
16676
16677
16678
16679
16680
16681
16682
16683
16684
16685
16686
16687
16688
16689
16690
16691
16692
16693
16694
16695
16696
16697
16698
16699
16700
16701
16702
16703
16704
16705
16706
16707
16708
16709
16710
16711
16712
16713
16714
16715
16716
16717
16718
16719
16720
16721
16722
16723
16724
16725
16726
16727
16728
16729
16730
16731
16732
16733
16734
16735
16736
16737
16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
16752
16753
16754
16755
16756
16757
16758
16759
16760
16761
16762
16763
16764
16765
16766
16767
16768
16769
16770
16771
16772
16773
16774
16775
16776
16777
16778
16779
16780
16781
16782
16783
16784
16785
16786
16787
16788
16789
16790
16791
16792
16793
16794
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805
16806
16807
16808
16809
16810
16811
16812
16813
16814
16815
16816
16817
16818
16819
16820
16821
16822
16823
16824
16825
16826
16827
16828
16829
16830
16831
16832
16833
16834
16835
16836
16837
16838
16839
16840
16841
16842
16843
16844
16845
16846
16847
16848
16849
16850
16851
16852
16853
16854
16855
16856
16857
16858
16859
16860
16861
16862
16863
16864
16865
16866
16867
16868
16869
16870
16871
16872
16873
16874
16875
16876
16877
16878
16879
16880
16881
16882
16883
16884
16885
16886
16887
16888
16889
16890
16891
16892
16893
16894
16895
16896
16897
16898
16899
16900
16901
16902
16903
16904
16905
16906
16907
16908
16909
16910
16911
16912
16913
16914
16915
16916
16917
16918
16919
16920
16921
16922
16923
16924
16925
16926
16927
16928
16929
16930
16931
16932
16933
16934
16935
16936
16937
16938
16939
16940
16941
16942
16943
16944
16945
16946
16947
16948
16949
16950
16951
16952
16953
16954
16955
16956
16957
16958
16959
16960
16961
16962
16963
16964
16965
16966
16967
16968
16969
16970
16971
16972
16973
16974
16975
16976
16977
16978
16979
16980
16981
16982
16983
16984
16985
16986
16987
16988
16989
16990
16991
16992
16993
16994
16995
16996
16997
16998
16999
17000
17001
17002
17003
17004
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
17022
17023
17024
17025
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040
17041
17042
17043
17044
17045
17046
17047
17048
17049
17050
17051
17052
17053
17054
17055
17056
17057
17058
17059
17060
17061
17062
17063
17064
17065
17066
17067
17068
17069
17070
17071
17072
17073
17074
17075
17076
17077
17078
17079
17080
17081
17082
17083
17084
17085
17086
17087
17088
17089
17090
17091
17092
17093
17094
17095
17096
17097
17098
17099
17100
17101
17102
17103
17104
17105
17106
17107
17108
17109
17110
17111
17112
17113
17114
17115
17116
17117
17118
17119
17120
17121
17122
17123
17124
17125
17126
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137
17138
17139
17140
17141
17142
17143
17144
17145
17146
17147
17148
17149
17150
17151
17152
17153
17154
17155
17156
17157
17158
17159
17160
17161
17162
17163
17164
17165
17166
17167
17168
17169
17170
17171
17172
17173
17174
17175
17176
17177
17178
17179
17180
17181
17182
17183
17184
17185
17186
17187
17188
17189
17190
17191
17192
17193
17194
17195
17196
17197
17198
17199
17200
17201
17202
17203
17204
17205
17206
17207
17208
17209
17210
17211
17212
17213
17214
17215
17216
17217
17218
17219
17220
17221
17222
17223
17224
17225
17226
17227
17228
17229
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240
17241
17242
17243
17244
17245
17246
17247
17248
17249
17250
17251
17252
17253
17254
17255
17256
17257
17258
17259
17260
17261
17262
17263
17264
17265
17266
17267
17268
17269
17270
17271
17272
17273
17274
17275
17276
17277
17278
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310
17311
17312
17313
17314
17315
17316
17317
17318
17319
17320
17321
17322
17323
17324
17325
17326
17327
17328
17329
17330
17331
17332
17333
17334
17335
17336
17337
17338
17339
17340
17341
17342
17343
17344
17345
17346
17347
17348
17349
17350
17351
17352
17353
17354
17355
17356
17357
17358
17359
17360
17361
17362
17363
17364
17365
17366
17367
17368
17369
17370
17371
17372
17373
17374
17375
17376
17377
17378
17379
17380
17381
17382
17383
17384
17385
17386
17387
17388
17389
17390
17391
17392
17393
17394
17395
17396
17397
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408
17409
17410
17411
17412
17413
17414
17415
17416
17417
17418
17419
17420
17421
17422
17423
17424
17425
17426
17427
17428
17429
17430
17431
17432
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
17448
17449
17450
17451
17452
17453
17454
17455
17456
17457
17458
17459
17460
17461
17462
17463
17464
17465
17466
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
17480
17481
17482
17483
17484
17485
17486
17487
17488
17489
17490
17491
17492
17493
17494
17495
17496
17497
17498
17499
17500
17501
17502
17503
17504
17505
17506
17507
17508
17509
17510
17511
17512
17513
17514
17515
17516
17517
17518
17519
17520
17521
17522
17523
17524
17525
17526
17527
17528
17529
17530
17531
17532
17533
17534
17535
17536
17537
17538
17539
17540
17541
17542
17543
17544
17545
17546
17547
17548
17549
17550
17551
17552
17553
17554
17555
17556
17557
17558
17559
17560
17561
17562
17563
17564
17565
17566
17567
17568
17569
17570
17571
17572
17573
17574
17575
17576
17577
17578
17579
17580
17581
17582
17583
17584
17585
17586
17587
17588
17589
17590
17591
17592
17593
17594
17595
17596
17597
17598
17599
17600
17601
17602
17603
17604
17605
17606
17607
17608
17609
17610
17611
17612
17613
17614
17615
17616
17617
17618
17619
17620
17621
17622
17623
17624
17625
17626
17627
17628
17629
17630
17631
17632
17633
17634
17635
17636
17637
17638
17639
17640
17641
17642
17643
17644
17645
17646
17647
17648
17649
17650
17651
17652
17653
17654
17655
17656
17657
17658
17659
17660
17661
17662
17663
17664
17665
17666
17667
17668
17669
17670
17671
17672
17673
17674
17675
17676
17677
17678
17679
17680
17681
17682
17683
17684
17685
17686
17687
17688
17689
17690
17691
17692
17693
17694
17695
17696
17697
17698
17699
17700
17701
17702
17703
17704
17705
17706
17707
17708
17709
17710
17711
17712
17713
17714
17715
17716
17717
17718
17719
17720
17721
17722
17723
17724
17725
17726
17727
17728
17729
17730
17731
17732
17733
17734
17735
17736
17737
17738
17739
17740
17741
17742
17743
17744
17745
17746
17747
17748
17749
17750
17751
17752
17753
17754
17755
17756
17757
17758
17759
17760
17761
17762
17763
17764
17765
17766
17767
17768
17769
17770
17771
17772
17773
17774
17775
17776
17777
17778
17779
17780
17781
17782
17783
17784
17785
17786
17787
17788
17789
17790
17791
17792
17793
17794
17795
17796
17797
17798
17799
17800
17801
17802
17803
17804
17805
17806
17807
17808
17809
17810
17811
17812
17813
17814
17815
17816
17817
17818
17819
17820
17821
17822
17823
17824
17825
17826
17827
17828
17829
17830
17831
17832
17833
17834
17835
17836
17837
17838
17839
17840
17841
17842
17843
17844
17845
17846
17847
17848
17849
17850
17851
17852
17853
17854
17855
17856
17857
17858
17859
17860
17861
17862
17863
17864
17865
17866
17867
17868
17869
17870
17871
17872
17873
17874
17875
17876
17877
17878
17879
17880
17881
17882
17883
17884
17885
17886
17887
17888
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
17912
17913
17914
17915
17916
17917
17918
17919
17920
17921
17922
17923
17924
17925
17926
17927
17928
17929
17930
17931
17932
17933
17934
17935
17936
17937
17938
17939
17940
17941
17942
17943
17944
17945
17946
17947
17948
17949
17950
17951
17952
17953
17954
17955
17956
17957
17958
17959
17960
17961
17962
17963
17964
17965
17966
17967
17968
17969
17970
17971
17972
17973
17974
17975
17976
17977
17978
17979
17980
17981
17982
17983
17984
17985
17986
17987
17988
17989
17990
17991
17992
17993
17994
17995
17996
17997
17998
17999
18000
18001
18002
18003
18004
18005
18006
18007
18008
18009
18010
18011
18012
18013
18014
18015
18016
18017
18018
18019
18020
18021
18022
18023
18024
18025
18026
18027
18028
18029
18030
18031
18032
18033
18034
18035
18036
18037
18038
18039
18040
18041
18042
18043
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
18060
18061
18062
18063
18064
18065
18066
18067
18068
18069
18070
18071
18072
18073
18074
18075
18076
18077
18078
18079
18080
18081
18082
18083
18084
18085
18086
18087
18088
18089
18090
18091
18092
18093
18094
18095
18096
18097
18098
18099
18100
18101
18102
18103
18104
18105
18106
18107
18108
18109
18110
18111
18112
18113
18114
18115
18116
18117
18118
18119
18120
18121
18122
18123
18124
18125
18126
18127
18128
18129
18130
18131
18132
18133
18134
18135
18136
18137
18138
18139
18140
18141
18142
18143
18144
18145
18146
18147
18148
18149
18150
18151
18152
18153
18154
18155
18156
18157
18158
18159
18160
18161
18162
18163
18164
18165
18166
18167
18168
18169
18170
18171
18172
18173
18174
18175
18176
18177
18178
18179
18180
18181
18182
18183
18184
18185
18186
18187
18188
18189
18190
18191
18192
18193
18194
18195
18196
18197
18198
18199
18200
18201
18202
18203
18204
18205
18206
18207
18208
18209
18210
18211
18212
18213
18214
18215
18216
18217
18218
18219
18220
18221
18222
18223
18224
18225
18226
18227
18228
18229
18230
18231
18232
18233
18234
18235
18236
18237
18238
18239
18240
18241
18242
18243
18244
18245
18246
18247
18248
18249
18250
18251
18252
18253
18254
18255
18256
18257
18258
18259
18260
18261
18262
18263
18264
18265
18266
18267
18268
18269
18270
18271
18272
18273
18274
18275
18276
18277
18278
18279
18280
18281
18282
18283
18284
18285
18286
18287
18288
18289
18290
18291
18292
18293
18294
18295
18296
18297
18298
18299
18300
18301
18302
18303
18304
18305
18306
18307
18308
18309
18310
18311
18312
18313
18314
18315
18316
18317
18318
18319
18320
18321
18322
18323
18324
18325
18326
18327
18328
18329
18330
18331
18332
18333
18334
18335
18336
18337
18338
18339
18340
18341
18342
18343
18344
18345
18346
18347
18348
18349
18350
18351
18352
18353
18354
18355
18356
18357
18358
18359
18360
18361
18362
18363
18364
18365
18366
18367
18368
18369
18370
18371
18372
18373
18374
18375
18376
18377
18378
18379
18380
18381
18382
18383
18384
18385
18386
18387
18388
18389
18390
18391
18392
18393
18394
18395
18396
18397
18398
18399
18400
18401
18402
18403
18404
18405
18406
18407
18408
18409
18410
18411
18412
18413
18414
18415
18416
18417
18418
18419
18420
18421
18422
18423
18424
18425
18426
18427
18428
18429
18430
18431
18432
18433
18434
18435
18436
18437
18438
18439
18440
18441
18442
18443
18444
18445
18446
18447
18448
18449
18450
18451
18452
18453
18454
18455
18456
18457
18458
18459
18460
18461
18462
18463
18464
18465
18466
18467
18468
18469
18470
18471
18472
18473
18474
18475
18476
18477
18478
18479
18480
18481
18482
18483
18484
18485
18486
18487
18488
18489
18490
18491
18492
18493
18494
18495
18496
18497
18498
18499
18500
18501
18502
18503
18504
18505
18506
18507
18508
18509
18510
18511
18512
18513
18514
18515
18516
18517
18518
18519
18520
18521
18522
18523
18524
18525
18526
18527
18528
18529
18530
18531
18532
18533
18534
18535
18536
18537
18538
18539
18540
18541
18542
18543
18544
18545
18546
18547
18548
18549
18550
18551
18552
18553
18554
18555
18556
18557
18558
18559
18560
18561
18562
18563
18564
18565
18566
18567
18568
18569
18570
18571
18572
18573
18574
18575
18576
18577
18578
18579
18580
18581
18582
18583
18584
18585
18586
18587
18588
18589
18590
18591
18592
18593
18594
18595
18596
18597
18598
18599
18600
18601
18602
18603
18604
18605
18606
18607
18608
18609
18610
18611
18612
18613
18614
18615
18616
18617
18618
18619
18620
18621
18622
18623
18624
18625
18626
18627
18628
18629
18630
18631
18632
18633
18634
18635
18636
18637
18638
18639
18640
18641
18642
18643
18644
18645
18646
18647
18648
18649
18650
18651
18652
18653
18654
18655
18656
18657
18658
18659
18660
18661
18662
18663
18664
18665
18666
18667
18668
18669
18670
18671
18672
18673
18674
18675
18676
18677
18678
18679
18680
18681
18682
18683
18684
18685
18686
18687
18688
18689
18690
18691
18692
18693
18694
18695
18696
18697
18698
18699
18700
18701
18702
18703
18704
18705
18706
18707
18708
18709
18710
18711
18712
18713
18714
18715
18716
18717
18718
18719
18720
18721
18722
18723
18724
18725
18726
18727
18728
18729
18730
18731
18732
18733
18734
18735
18736
18737
18738
18739
18740
18741
18742
18743
18744
18745
18746
18747
18748
18749
18750
18751
18752
18753
18754
18755
18756
18757
18758
18759
18760
18761
18762
18763
18764
18765
18766
18767
18768
18769
18770
18771
18772
18773
18774
18775
18776
18777
18778
18779
18780
18781
18782
18783
18784
18785
18786
18787
18788
18789
18790
18791
18792
18793
18794
18795
18796
18797
18798
18799
18800
18801
18802
18803
18804
18805
18806
18807
18808
18809
18810
18811
18812
18813
18814
18815
18816
18817
18818
18819
18820
18821
18822
18823
18824
18825
18826
18827
18828
18829
18830
18831
18832
18833
18834
18835
18836
18837
18838
18839
18840
18841
18842
18843
18844
18845
18846
18847
18848
18849
18850
18851
18852
18853
18854
18855
18856
18857
18858
18859
18860
18861
18862
18863
18864
18865
18866
18867
18868
18869
18870
18871
18872
18873
18874
18875
18876
18877
18878
18879
18880
18881
18882
18883
18884
18885
18886
18887
18888
18889
18890
18891
18892
18893
18894
18895
18896
18897
18898
18899
18900
18901
18902
18903
18904
18905
18906
18907
18908
18909
18910
18911
18912
18913
18914
18915
18916
18917
18918
18919
18920
18921
18922
18923
18924
18925
18926
18927
18928
18929
18930
18931
18932
18933
18934
18935
18936
18937
18938
18939
18940
18941
18942
18943
18944
18945
18946
18947
18948
18949
18950
18951
18952
18953
18954
18955
18956
18957
18958
18959
18960
18961
18962
18963
18964
18965
18966
18967
18968
18969
18970
18971
18972
18973
18974
18975
18976
18977
18978
18979
18980
18981
18982
18983
18984
18985
18986
18987
18988
18989
18990
18991
18992
18993
18994
18995
18996
18997
18998
18999
19000
19001
19002
19003
19004
19005
19006
19007
19008
19009
19010
19011
19012
19013
19014
19015
19016
19017
19018
19019
19020
19021
19022
19023
19024
19025
19026
19027
19028
19029
19030
19031
19032
19033
19034
19035
19036
19037
19038
19039
19040
19041
19042
19043
19044
19045
19046
19047
19048
19049
19050
19051
19052
19053
19054
19055
19056
19057
19058
19059
19060
19061
19062
19063
19064
19065
19066
19067
19068
19069
19070
19071
19072
19073
19074
19075
19076
19077
19078
19079
19080
19081
19082
19083
19084
19085
19086
19087
19088
19089
19090
19091
19092
19093
19094
19095
19096
19097
19098
19099
19100
19101
19102
19103
19104
19105
19106
19107
19108
19109
19110
19111
19112
19113
19114
19115
19116
19117
19118
19119
19120
19121
19122
19123
19124
19125
19126
19127
19128
19129
19130
19131
19132
19133
19134
19135
19136
19137
19138
19139
19140
19141
19142
19143
19144
19145
19146
19147
19148
19149
19150
19151
19152
19153
19154
19155
19156
19157
19158
19159
19160
19161
19162
19163
19164
19165
19166
19167
19168
19169
19170
19171
19172
19173
19174
19175
19176
19177
19178
19179
19180
19181
19182
19183
19184
19185
19186
19187
19188
19189
19190
19191
19192
19193
19194
19195
19196
19197
19198
19199
19200
19201
19202
19203
19204
19205
19206
19207
19208
19209
19210
19211
19212
19213
19214
19215
19216
19217
19218
19219
19220
19221
19222
19223
19224
19225
19226
19227
19228
19229
19230
19231
19232
19233
19234
19235
19236
19237
19238
19239
19240
19241
19242
19243
19244
19245
19246
19247
19248
19249
19250
19251
19252
19253
19254
19255
19256
19257
19258
19259
19260
19261
19262
19263
19264
19265
19266
19267
19268
19269
19270
19271
19272
19273
19274
19275
19276
19277
19278
19279
19280
19281
19282
19283
19284
19285
19286
19287
19288
19289
19290
19291
19292
19293
19294
19295
19296
19297
19298
19299
19300
19301
19302
19303
19304
19305
19306
19307
19308
19309
19310
19311
19312
19313
19314
19315
19316
19317
19318
19319
19320
19321
19322
19323
19324
19325
19326
19327
19328
19329
19330
19331
19332
19333
19334
19335
19336
19337
19338
19339
19340
19341
19342
19343
19344
19345
19346
19347
19348
19349
19350
19351
19352
19353
19354
19355
19356
19357
19358
19359
19360
19361
19362
19363
19364
19365
19366
19367
19368
19369
19370
19371
19372
19373
19374
19375
19376
19377
19378
19379
19380
19381
19382
19383
19384
19385
19386
19387
19388
19389
19390
19391
19392
19393
19394
19395
19396
19397
19398
19399
19400
19401
19402
19403
19404
19405
19406
19407
19408
19409
19410
19411
19412
19413
19414
19415
19416
19417
19418
19419
19420
19421
19422
19423
19424
19425
19426
19427
19428
19429
19430
19431
19432
19433
19434
19435
19436
19437
19438
19439
19440
19441
19442
19443
19444
19445
19446
19447
19448
19449
19450
19451
19452
19453
19454
19455
19456
19457
19458
19459
19460
19461
19462
19463
19464
19465
19466
19467
19468
19469
19470
19471
19472
19473
19474
19475
19476
19477
19478
19479
19480
19481
19482
19483
19484
19485
19486
19487
19488
19489
19490
19491
19492
19493
19494
19495
19496
19497
19498
19499
19500
19501
19502
19503
19504
19505
19506
19507
19508
19509
19510
19511
19512
19513
19514
19515
19516
19517
19518
19519
19520
19521
19522
19523
19524
19525
19526
19527
19528
19529
19530
19531
19532
19533
19534
19535
19536
19537
19538
19539
19540
19541
19542
19543
19544
19545
19546
19547
19548
19549
19550
19551
19552
19553
19554
19555
19556
19557
19558
19559
19560
19561
19562
19563
19564
19565
19566
19567
19568
19569
19570
19571
19572
19573
19574
19575
19576
19577
19578
19579
19580
19581
19582
19583
19584
19585
19586
19587
19588
19589
19590
19591
19592
19593
19594
19595
19596
19597
19598
19599
19600
19601
19602
19603
19604
19605
19606
19607
19608
19609
19610
19611
19612
19613
19614
19615
19616
19617
19618
19619
19620
19621
19622
19623
19624
19625
19626
19627
19628
19629
19630
19631
19632
19633
19634
19635
19636
19637
19638
19639
19640
19641
19642
19643
19644
19645
19646
19647
19648
19649
19650
19651
19652
19653
19654
19655
19656
19657
19658
19659
19660
19661
19662
19663
19664
19665
19666
19667
19668
19669
19670
19671
19672
19673
19674
19675
19676
19677
19678
19679
19680
19681
19682
19683
19684
19685
19686
19687
19688
19689
19690
19691
19692
19693
19694
19695
19696
19697
19698
19699
19700
19701
19702
19703
19704
19705
19706
19707
19708
19709
19710
19711
19712
19713
19714
19715
19716
19717
19718
19719
19720
19721
19722
19723
19724
19725
19726
19727
19728
19729
19730
19731
19732
19733
19734
19735
19736
19737
19738
19739
19740
19741
19742
19743
19744
19745
19746
19747
19748
19749
19750
19751
19752
19753
19754
19755
19756
19757
19758
19759
19760
19761
19762
19763
19764
19765
19766
19767
19768
19769
19770
19771
19772
19773
19774
19775
19776
19777
19778
19779
19780
19781
19782
19783
19784
19785
19786
19787
19788
19789
19790
19791
19792
19793
19794
19795
19796
19797
19798
19799
19800
19801
19802
19803
19804
19805
19806
19807
19808
19809
19810
19811
19812
19813
19814
19815
19816
19817
19818
19819
19820
19821
19822
19823
19824
19825
19826
19827
19828
19829
19830
19831
19832
19833
19834
19835
19836
19837
19838
19839
19840
19841
19842
19843
19844
19845
19846
19847
19848
19849
19850
19851
19852
19853
19854
19855
19856
19857
19858
19859
19860
19861
19862
19863
19864
19865
19866
19867
19868
19869
19870
19871
19872
19873
19874
19875
19876
19877
19878
19879
19880
19881
19882
19883
19884
19885
19886
19887
19888
19889
19890
19891
19892
19893
19894
19895
19896
19897
19898
19899
19900
19901
19902
19903
19904
19905
19906
19907
19908
19909
19910
19911
19912
19913
19914
19915
19916
19917
19918
19919
19920
19921
19922
19923
19924
19925
19926
19927
19928
19929
19930
19931
19932
19933
19934
19935
19936
19937
19938
19939
19940
19941
19942
19943
19944
19945
19946
19947
19948
19949
19950
19951
19952
19953
19954
19955
19956
19957
19958
19959
19960
19961
19962
19963
19964
19965
19966
19967
19968
19969
19970
19971
19972
19973
19974
19975
19976
19977
19978
19979
19980
19981
19982
19983
19984
19985
19986
19987
19988
19989
19990
19991
19992
19993
19994
19995
19996
19997
19998
19999
20000
20001
20002
20003
20004
20005
20006
20007
20008
20009
20010
20011
20012
20013
20014
20015
20016
20017
20018
20019
20020
20021
20022
20023
20024
20025
20026
20027
20028
20029
20030
20031
20032
20033
20034
20035
20036
20037
20038
20039
20040
20041
20042
20043
20044
20045
20046
20047
20048
20049
20050
20051
20052
20053
20054
20055
20056
20057
20058
20059
20060
20061
20062
20063
20064
20065
20066
20067
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080
20081
20082
20083
20084
20085
20086
20087
20088
20089
20090
20091
20092
20093
20094
20095
20096
20097
20098
20099
20100
20101
20102
20103
20104
20105
20106
20107
20108
20109
20110
20111
20112
20113
20114
20115
20116
20117
20118
20119
20120
20121
20122
20123
20124
20125
20126
20127
20128
20129
20130
20131
20132
20133
20134
20135
20136
20137
20138
20139
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
20163
20164
20165
20166
20167
20168
20169
20170
20171
20172
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
20191
20192
20193
20194
20195
20196
20197
20198
20199
20200
20201
20202
20203
20204
20205
20206
20207
20208
20209
20210
20211
20212
20213
20214
20215
20216
20217
20218
20219
20220
20221
20222
20223
20224
20225
20226
20227
20228
20229
20230
20231
20232
20233
20234
20235
20236
20237
20238
20239
20240
20241
20242
20243
20244
20245
20246
20247
20248
20249
20250
20251
20252
20253
20254
20255
20256
20257
20258
20259
20260
20261
20262
20263
20264
20265
20266
20267
20268
20269
20270
20271
20272
20273
20274
20275
20276
20277
20278
20279
20280
20281
20282
20283
20284
20285
20286
20287
20288
20289
20290
20291
20292
20293
20294
20295
20296
20297
20298
20299
20300
20301
20302
20303
20304
20305
20306
20307
20308
20309
20310
20311
20312
20313
20314
20315
20316
20317
20318
20319
20320
20321
20322
20323
20324
20325
20326
20327
20328
20329
20330
20331
20332
20333
20334
20335
20336
20337
20338
20339
20340
20341
20342
20343
20344
20345
20346
20347
20348
20349
20350
20351
20352
20353
20354
20355
20356
20357
20358
20359
20360
20361
20362
20363
20364
20365
20366
20367
20368
20369
20370
20371
20372
20373
20374
20375
20376
20377
20378
20379
20380
20381
20382
20383
20384
20385
20386
20387
20388
20389
20390
20391
20392
20393
20394
20395
20396
20397
20398
20399
20400
20401
20402
20403
20404
20405
20406
20407
20408
20409
20410
20411
20412
20413
20414
20415
20416
20417
20418
20419
20420
20421
20422
20423
20424
20425
20426
20427
20428
20429
20430
20431
20432
20433
20434
20435
20436
20437
20438
20439
20440
20441
20442
20443
20444
20445
20446
20447
20448
20449
20450
20451
20452
20453
20454
20455
20456
20457
20458
20459
20460
20461
20462
20463
20464
20465
20466
20467
20468
20469
20470
20471
20472
20473
20474
20475
20476
20477
20478
20479
20480
20481
20482
20483
20484
20485
20486
20487
20488
20489
20490
20491
20492
20493
20494
20495
20496
20497
20498
20499
20500
20501
20502
20503
20504
20505
20506
20507
20508
20509
20510
20511
20512
20513
20514
20515
20516
20517
20518
20519
20520
20521
20522
20523
20524
20525
20526
20527
20528
20529
20530
20531
20532
20533
20534
20535
20536
20537
20538
20539
20540
20541
20542
20543
20544
20545
20546
20547
20548
20549
20550
20551
20552
20553
20554
20555
20556
20557
20558
20559
20560
20561
20562
20563
20564
20565
20566
20567
20568
20569
20570
20571
20572
20573
20574
20575
20576
20577
20578
20579
20580
20581
20582
20583
20584
20585
20586
20587
20588
20589
20590
20591
20592
20593
20594
20595
20596
20597
20598
20599
20600
20601
20602
20603
20604
20605
20606
20607
20608
20609
20610
20611
20612
20613
20614
20615
20616
20617
20618
20619
20620
20621
20622
20623
20624
20625
20626
20627
20628
20629
20630
20631
20632
20633
20634
20635
20636
20637
20638
20639
20640
20641
20642
20643
20644
20645
20646
20647
20648
20649
20650
20651
20652
20653
20654
20655
20656
20657
20658
20659
20660
20661
20662
20663
20664
20665
20666
20667
20668
20669
20670
20671
20672
20673
20674
20675
20676
20677
20678
20679
20680
20681
20682
20683
20684
20685
20686
20687
20688
20689
20690
20691
20692
20693
20694
20695
20696
20697
20698
20699
20700
20701
20702
20703
20704
20705
20706
20707
20708
20709
20710
20711
20712
20713
20714
20715
20716
20717
20718
20719
20720
20721
20722
20723
20724
20725
20726
20727
20728
20729
20730
20731
20732
20733
20734
20735
20736
20737
20738
20739
20740
20741
20742
20743
20744
20745
20746
20747
20748
20749
20750
20751
20752
20753
20754
20755
20756
20757
20758
20759
20760
20761
20762
20763
20764
20765
20766
20767
20768
20769
20770
20771
20772
20773
20774
20775
20776
20777
20778
20779
20780
20781
20782
20783
20784
20785
20786
20787
20788
20789
20790
20791
20792
20793
20794
20795
20796
20797
20798
20799
20800
20801
20802
20803
20804
20805
20806
20807
20808
20809
20810
20811
20812
20813
20814
20815
20816
20817
20818
20819
20820
20821
20822
20823
20824
20825
20826
20827
20828
20829
20830
20831
20832
20833
20834
20835
20836
20837
20838
20839
20840
20841
20842
20843
20844
20845
20846
20847
20848
20849
20850
20851
20852
20853
20854
20855
20856
20857
20858
20859
20860
20861
20862
20863
20864
20865
20866
20867
20868
20869
20870
20871
20872
20873
20874
20875
20876
20877
20878
20879
20880
20881
20882
20883
20884
20885
20886
20887
20888
20889
20890
20891
20892
20893
20894
20895
20896
20897
20898
20899
20900
20901
20902
20903
20904
20905
20906
20907
20908
20909
20910
20911
20912
20913
20914
20915
20916
20917
20918
20919
20920
20921
20922
20923
20924
20925
20926
20927
20928
20929
20930
20931
20932
20933
20934
20935
20936
20937
20938
20939
20940
20941
20942
20943
20944
20945
20946
20947
20948
20949
20950
20951
20952
20953
20954
20955
20956
20957
20958
20959
20960
20961
20962
20963
20964
20965
20966
20967
20968
20969
20970
20971
20972
20973
20974
20975
20976
20977
20978
20979
20980
20981
20982
20983
20984
20985
20986
20987
20988
20989
20990
20991
20992
20993
20994
20995
20996
20997
20998
20999
21000
21001
21002
21003
21004
21005
21006
21007
21008
21009
21010
21011
21012
21013
21014
21015
21016
21017
21018
21019
21020
21021
21022
21023
21024
21025
21026
21027
21028
21029
21030
21031
21032
21033
21034
21035
21036
21037
21038
21039
21040
21041
21042
21043
21044
21045
21046
21047
21048
21049
21050
21051
21052
21053
21054
21055
21056
21057
21058
21059
21060
21061
21062
21063
21064
21065
21066
21067
21068
21069
21070
21071
21072
21073
21074
21075
21076
21077
21078
21079
21080
21081
21082
21083
21084
21085
21086
21087
21088
21089
21090
21091
21092
21093
21094
21095
21096
21097
21098
21099
21100
21101
21102
21103
21104
21105
21106
21107
21108
21109
21110
21111
21112
21113
21114
21115
21116
21117
21118
21119
21120
21121
21122
21123
21124
21125
21126
21127
21128
21129
21130
21131
21132
21133
21134
21135
21136
21137
21138
21139
21140
21141
21142
21143
21144
21145
21146
21147
21148
21149
21150
21151
21152
21153
21154
21155
21156
21157
21158
21159
21160
21161
21162
21163
21164
21165
21166
21167
21168
21169
21170
21171
21172
21173
21174
21175
21176
21177
21178
21179
21180
21181
21182
21183
21184
21185
21186
21187
21188
21189
21190
21191
21192
21193
21194
21195
21196
21197
21198
21199
21200
21201
21202
21203
21204
21205
21206
21207
21208
21209
21210
21211
21212
21213
21214
21215
21216
21217
21218
21219
21220
21221
21222
21223
21224
21225
21226
21227
21228
21229
21230
21231
21232
21233
21234
21235
21236
21237
21238
21239
21240
21241
21242
21243
21244
21245
21246
21247
21248
21249
21250
21251
21252
21253
21254
21255
21256
21257
21258
21259
21260
21261
21262
21263
21264
21265
21266
21267
21268
21269
21270
21271
21272
21273
21274
21275
21276
21277
21278
21279
21280
21281
21282
21283
21284
21285
21286
21287
21288
21289
21290
21291
21292
21293
21294
21295
21296
21297
21298
21299
21300
21301
21302
21303
21304
21305
21306
21307
21308
21309
21310
21311
21312
21313
|
commit f8a0812b1c4d5a4e24939da5ad6229f5adcafb34
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 7 10:07:35 2013 -0400
Pre-release version bump to 0.30.2
commit b5167b8a5439d30bde8a178568cb3fe1c95b509a
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Jul 27 19:25:32 2013 +0300
test: fix matrix-test on big endian systems
commit a82b95a26487344023623ead34f26af235dfd24e
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Jul 17 16:14:20 2012 +0200
test: Fix build on MSVC
The MSVC compiler is very strict about variable declarations after
statements.
Move all the declarations of each block before any statement in the
same block to fix multiple instances of:
alpha-loop.c(XX) : error C2275: 'pixman_image_t' : illegal use of this
type as an expression
commit 4c04a86c684d929ff734170eff8be8fea74b4c51
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Aug 1 07:19:21 2013 -0400
Version bump to 0.30.1
commit 63004529526db1ba1ba5a95a93522fa0cf385ec5
Author: Alexander Troosh <trush@yandex.ru>
Date: Tue Jun 11 15:55:34 2013 +0400
Require GTK+ version >= 2.16
I'm got bug in my system:
lcc: "scale.c", line 374: warning: function "gtk_scale_add_mark" declared
implicitly [-Wimplicit-function-declaration]
gtk_scale_add_mark (GTK_SCALE (widget), 0.0, GTK_POS_LEFT, NULL);
^
CCLD scale
scale.o: In function `app_new':
(.text+0x23e4): undefined reference to `gtk_scale_add_mark'
scale.o: In function `app_new':
(.text+0x250c): undefined reference to `gtk_scale_add_mark'
scale.o: In function `app_new':
(.text+0x2634): undefined reference to `gtk_scale_add_mark'
make[2]: *** [scale] Error 1
make[2]: Target `all' not remade because of errors.
$ pkg-config --modversion gtk+-2.0
2.12.1
The demos/scale.c use call to gtk_scale_add_mark() function from 2.16+
version of GTK+. Need do support old GTK+ (rewrite scale.c) or simple
demand of high version of GTK+, like this:
commit 02869a1229833a3272355f3d9e1206936b430fa1
Author: Matthieu Herrb <matthieu.herrb@laas.fr>
Date: Sat Jun 8 18:07:20 2013 +0200
configure.ac: Don't use '+=' since it's not POSIX
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr>
commit 35da06c828049d90975c08655bb9b77184cdab68
Author: Markos Chandras <markos.chandras@imgtec.com>
Date: Wed May 15 09:51:20 2013 -0700
Use AC_LINK_IFELSE to check if the Loongson MMI code can link
The Loongson code is compiled with -march=loongson2f to enable the MMI
instructions, but binutils refuses to link object code compiled with
different -march settings, leading to link failures later in the
compile. This avoids that problem by checking if we can link code
compiled for Loongson.
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
commit e14f5a739f3ea1a3a6cff9bd5681677f05962314
Author: ingmar@irsoft.de <ingmar@irsoft.de>
Date: Sat May 11 11:55:04 2013 +0200
Fix broken build when HAVE_CONFIG_H is undefined, e.g. on Win32.
Build fix for platforms without a generated config.h, for example Win32.
commit 41daf50aaeca71e70bc27aa4bf27ae4812c6eecf
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed May 8 19:31:22 2013 -0400
Pre-release version bump to 0.30.0
commit 5a7179191dba6c592a63cad8aa8bc8af7ab5e586
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Apr 30 18:57:43 2013 -0400
Post-release version bump to 0.29.5
commit 2714b5d201525e176429c0c030b8376a32b4f6c7
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Apr 30 18:50:04 2013 -0400
Pre-release version bump to 0.29.4
commit 7fc2654a1fdd6d6c41eddaac50b3668433873679
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 27 04:27:39 2013 -0400
pixman/refactor: Delete this file
Essentially all of it is obsolete by now.
commit cb928a77c05a9c581e596b8eb24962d47fc39e9f
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:33:02 2013 +0200
MIPS: DSPr2: Added rpixbuf fast path.
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
rpixbuf = L1: 14.63 L2: 13.55 M: 9.91 ( 79.53%) HT: 8.47 VT: 8.32 R: 8.17 RT: 4.90 ( 33Kops/s)
Optimized:
rpixbuf = L1: 45.69 L2: 37.30 M: 17.24 (138.31%) HT: 15.66 VT: 14.88 R: 13.97 RT: 8.38 ( 44Kops/s)
commit c6a6fbdcd3ef18f733ff7ad11d5fafac384744cd
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:33:01 2013 +0200
MIPS: DSPr2: Added pixbuf fast path.
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
pixbuf = L1: 18.18 L2: 16.47 M: 13.36 (107.27%) HT: 10.16 VT: 10.07 R: 9.84 RT: 5.54 ( 35Kops/s)
Optimized:
pixbuf = L1: 43.54 L2: 36.02 M: 17.08 (137.09%) HT: 15.58 VT: 14.85 R: 13.87 RT: 8.38 ( 44Kops/s)
commit f69335d5292310dc18f2f84d462430137a771976
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:33:00 2013 +0200
test: add "pixbuf" and "rpixbuf" to lowlevel-blt-bench
Add necessary support to lowlevel-blt benchmark for benchmarking pixbuf and
rpixbuf fast paths. bench_composite function now checks for pixbuf string in
testname, and if that is detected, use same bits for src and mask images.
commit 3dc9e3827e342b415c519da1039b9a2e4fb293ec
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:32:59 2013 +0200
test: add "src_0888_8888_rev" and "src_0888_0565_rev" to lowlevel-blt-bench
commit 44174ce51d1ed5a1bf988b9dd9218d8cbd379de3
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:32:58 2013 +0200
MIPS: DSPr2: Fix for bug in in_n_8 routine.
Rounding logic was not implemented right.
Instead of using rounding version of the 8-bit shift, logical shifts were used.
Also, code used unnecessary multiplications, which could be avoided by packing
4 destination (a8) pixel into one 32bit register. There were also, unnecessary
spills on stack. Code is rewritten to address mentioned issues.
The bug was revealed by increasing number of the iterations in blitters-test.
Performance numbers on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
in_n_8 = L1: 21.20 L2: 22.86 M: 21.42 ( 14.21%) HT: 15.97 VT: 15.69 R: 15.47 RT: 8.00 ( 48Kops/s)
Optimized (first implementation, with bug):
in_n_8 = L1: 89.38 L2: 86.07 M: 65.48 ( 43.44%) HT: 44.64 VT: 41.50 R: 40.77 RT: 16.94 ( 66Kops/s)
Optimized (with bug fix, and code revisited):
in_n_8 = L1: 102.33 L2: 95.65 M: 70.54 ( 46.84%) HT: 48.35 VT: 45.06 R: 43.20 RT: 17.60 ( 66Kops/s)
commit 5858f09d264ef762ddcf7ede324bfce9f5991d29
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:32:57 2013 +0200
MIPS: DSPr2: Added src_0565_8888 nearest neighbor fast path.
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
src_0565_8888 = L1: 20.70 L2: 19.22 M: 12.50 ( 49.79%) HT: 10.45 VT: 10.18 R: 9.99 RT: 5.31 ( 31Kops/s)
Optimized:
src_0565_8888 = L1: 62.98 L2: 53.44 M: 23.07 ( 91.87%) HT: 19.85 VT: 19.15 R: 17.70 RT: 9.68 ( 43Kops/s)
commit 311d55b6d8e1ac3acaa12d1d7c3eefdcfdc70718
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:32:56 2013 +0200
MIPS: DSPr2: Added over_8888_0565 nearest neighbor fast path.
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_8888_0565 = L1: 13.22 L2: 12.02 M: 9.77 ( 38.92%) HT: 8.58 VT: 8.35 R: 8.38 RT: 5.78 ( 35Kops/s)
Optimized:
over_8888_0565 = L1: 26.20 L2: 22.97 M: 15.92 ( 63.40%) HT: 13.33 VT: 13.13 R: 12.72 RT: 7.65 ( 39Kops/s)
commit bd487ee34c343142cbe451a2e04541d8aba0eaa7
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:32:55 2013 +0200
MIPS: DSPr2: Added over_8888_8888 nearest neighbor fast path.
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_8888_8888 = L1: 19.47 L2: 16.30 M: 11.24 ( 59.69%) HT: 9.54 VT: 9.29 R: 9.47 RT: 6.24 ( 37Kops/s)
Optimized:
over_8888_8888 = L1: 43.67 L2: 33.30 M: 16.32 ( 86.65%) HT: 14.10 VT: 13.78 R: 12.96 RT: 7.85 ( 39Kops/s)
commit 66def909ad82ed4ccb49380031cb828655c9a47f
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Apr 15 19:32:54 2013 +0200
MIPS: DSPr2: Fix bug in over_n_8888_8888_ca/over_n_8888_0565_ca routines
After introducing new PRNG (pseudorandom number generator) a bug in two DSPr2
routines was revealed. Bug manifested by wrong calculation in composite and
glyph tests, which caused make check to fail for MIPS DSPr2 optimizations.
Bug was in the calculation of the:
*dst = over (src, *dst) when ma == 0xffffffff
In this case src was not negated and shifted right by 24 bits, it was only
negated. When implementing this routine in the first place, I missplaced those
shifts, which alowed me to combine code for over operation and:
UN8x4_MUL_UN8x4 (s, ma);
UN8x4_MUL_UN8 (ma, srca);
ma = ~ma;
UN8x4_MUL_UN8x4_ADD_UN8x4 (d, ma, s);
So I decided to rewrite that piece of code from scratch. I changed logic, so
now assembly code mimics code from pixman-fast-path.c but processes two pixels
at a time. This code should be easier to debug and maintain.
The bug was revealed in commit b31a6962. Errors were detected by composite
and glyph tests.
commit d768558ce195caa208262866f9262b29efff22dc
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Jan 28 07:00:12 2013 +0200
sse2: faster bilinear interpolation (get rid of XOR instruction)
The old code was calculating horizontal weights for right pixels
in the following way (for simplicity assume 8-bit interpolation
precision):
Start with "x = vx" and do increment "x += ux" after each pixel.
In this case right pixel weight for interpolation can be calculated
as "((x >> 8) ^ 0xFF) + 1", which is the same as "256 - (x >> 8)".
The new code instead:
Starts with "x = -(vx + 1)", performs increment "x += -ux" after
each pixel and calculates right weights as just "(x >> 8) + 1",
eliminating the need for XOR operation in the inner loop.
So we have one instruction less on the critical path. Benchmarks
with "lowlevel-blt-bench -b src_8888_8888" using GCC 4.7.2 on
x86-64 system and default optimizations:
Intel Core i7 860 (2.8GHz):
before: src_8888_8888 = L1: 291.37 L2: 288.58 M:285.38
after: src_8888_8888 = L1: 319.66 L2: 316.47 M:312.06
Intel Core2 T7300 (2GHz):
before: src_8888_8888 = L1: 121.95 L2: 118.38 M:118.52
after: src_8888_8888 = L1: 128.82 L2: 125.12 M:124.88
Intel Atom N450 (1.67GHz):
before: src_8888_8888 = L1: 64.25 L2: 62.37 M: 61.80
after: src_8888_8888 = L1: 64.23 L2: 62.37 M: 61.82
Inspired by the "sse2_bilinear_interpolation" function (single
pixel interpolation) from:
http://lists.freedesktop.org/archives/pixman/2013-January/002575.html
commit 59109f32930a0c163628f8087cbb0a15b19cb96b
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Tue Mar 5 00:59:13 2013 +0200
test: larger 0xFF/0x00 filled clusters in random images for blitters-test
Current blitters-test program had difficulties detecting a bug in
over_n_8888_8888_ca implementation for MIPS DSPr2:
http://lists.freedesktop.org/archives/pixman/2013-March/002645.html
In order to hit the buggy code path, two consecutive mask values had
to be equal to 0xFFFFFFFF because of loop unrolling. The current
blitters-test generates random images in such a way that each byte
has 25% probability for having 0xFF value. Hence each 32-bit mask
value has ~0.4% probability for 0xFFFFFFFF. Because we are testing
many compositing operations with many pixels, encountering at least
one 0xFFFFFFFF mask value reasonably fast is not a problem. If a
bug related to 0xFFFFFFFF mask value is artificialy introduced into
over_n_8888_8888_ca generic C function, it gets detected on 675591
iteration in blitters-test (out of 2000000).
However two consecutive 0xFFFFFFFF mask values are much less likely
to be generated, so the bug was missed by blitters-test.
This patch addresses the problem by also randomly setting the 32-bit
values in images to either 0xFFFFFFFF or 0x00000000 (also with 25%
probability). It allows to have larger clusters of consecutive 0x00
or 0xFF bytes in images which may have special shortcuts for handling
them in unrolled or SIMD optimized code.
commit a99147d1ea0d67f635f9284c242485fb5621cab3
Author: Stefan Weil <sw@weilnetz.de>
Date: Sat Apr 27 08:00:38 2013 +0200
Trivial spelling fixes in comments
They were found by codespell.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
commit 9d0bb10312e5de0653c9e28df79ce8a5e8cec97a
Author: Peter Breitenlohner <peb@mppmu.mpg.de>
Date: Mon Apr 8 13:13:05 2013 +0200
Check for missing sqrtf() as, e.g., for Solaris 9
Signed-off-by: Peter Breitenlohner <peb@mppmu.mpg.de>
commit d8ac35af1208a4fa4d67f03fee10b5449fb8495a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Feb 14 08:06:19 2013 -0500
Improve precision of calculations in pixman-gradient-walker.c
The computations in pixman-gradient-walker.c currently take place at
very limited 8 bit precision which results in quite visible artefacts
in gradients. An example is the one produced by demos/linear-gradient
which currently looks like this:
http://i.imgur.com/kQbX8nd.png
With the changes in this commit, the gradient looks like this:
http://i.imgur.com/nUlyuKI.png
The images are also available here:
http://people.freedesktop.org/~sandmann/gradients/before.png
http://people.freedesktop.org/~sandmann/gradients/after.png
This patch computes pixels using floating point, but uses a faster
algorithm, which makes up for the loss of performance.
== Theory:
In both the new and the old algorithm, the various gradient
implementations compute a parameter x that indicates how far along the
gradient the current scanline is. The current algorithm has a cache of
the two color stops surrounding the last parameter; those are used in
a SIMD-within-register fashion in this way:
t1 = walker->left_rb * idist + walker->right_rb * dist;
where dist and idist are the distances to the left and right color
stops respectively normalized to the distance between the left and
right stops. The normalization (which involves a division) is captured
in another cached variable "stepper". The cached values are recomputed
whenever the parameter moves in between two different stops (called
"reset" in the implementation).
Because idist and dist are computed in 8 bits only, a lot of
information is lost, which is quite visible as the image linked above
shows.
The new algorithm caches more information in the following way. When
interpolating between stops, the formula to be used is this:
t = ((x - left) / (right - left));
result = lc * (1 - t) + rc * t;
where
- x is the parameter as computed by the main gradient code,
- left is the position of the left color stop,
- right is the position of the right color stop
- lc is the color of the left color stop
- rc is the color of the right color stop
That formula can also be written like this:
result
= lc * (1 - t) + rc * t;
= lc + (rc - lc) * t
= lc + (rc - lc) * ((x - left) / (right - left))
= (rc - lc) / (right - left) * x +
lc - (left * (rc - lc)) / (right - left)
= s * x + b
where
s = (rc - lc) / (right - left)
and
b = lc - left * (rc - lc) / (right - left)
= (lc * (right - left) - left * (rc - lc)) / (right - left)
= (lc * right - rc * left) / (right - left)
To summarize, setting w = (right - left):
s = (rc - lc) / w
b = (lc * right - rc * left) / w
r = s * x + b
Since s and b only depend on the two active stops, both can be cached
so that the computation only needs to do one multiplication and one
addition per pixel (followed by premultiplication of the alpha
channel). That is, seven multiplications in total, which is the same
number as the old SIMD-within-register implementation had.
== Implementation notes:
The new formula described above is implemented in single precision
floating point, and the eight divisions necessary to compute the
cached values are done by multiplication with the reciprocal of the
distance between the color stops.
The alpha values used in the cached computation are scaled by 255.0,
whereas the RGB values are kept in the [0, 1] interval. The ensures
that after premultiplication, all values will be in the [0, 255]
interval.
This scaling is done by first dividing all the all the channels by
257, and then later on dividing the r, g, b channels by 255. It would
be more natural to do all this scaling in only one place, but
inexplicably, that results in a (substantial) slowdown on Sandy Bridge
with GCC v 4.7.
== Performance impact (median of three runs of radial-perf-test):
== Intel Sandy Bridge, Core i3 @ 1.2GHz
Before: 0.014553
After: 0.014410
Change: 1.0% faster
== AMD Barcelona @ 1.2 GHz
Before: 0.021735
After: 0.021328
Change: 1.9% faster
Ie., slightly faster, though conceivably there could be a negative
impact on machines with a bigger difference between integer and
floating point performance.
V2:
- Use 's' and 'b' in the variable names instead of 'm' and 'd'. This
way they match the explanation above
- Move variable declarations to the top of the function
- Remove unused stepper field
- Some formatting fixes
- Don't pointlessly include pixman-combine32.h
- Don't offset x for each pixel; go back to offsetting left_x and
right_x at reset time. The offsets cancel out in the formula above,
so there is no impact on the calcualations.
commit a1c2331e0eb35d87cf295518838debe1217ca9df
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 8 14:05:50 2013 -0500
Move the IS_ZERO() to pixman-private.h and rename to FLOAT_IS_ZERO()
Some upcoming changes to pixman-gradient-walker.c will need this
macro.
commit 2c953e572f6c3c18046e768dd07d12150b1f2e94
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Feb 24 21:49:06 2013 -0500
test: Add radial-perf-test, a microbenchmark for radial gradients
This benchmark renders one of the radial gradients used in the
swfdec-youtube cairo trace 500 times and reports the average time it
took.
V2: Update .gitignore
commit 460faaa41105c2939d041506f6ff08e2b12e7596
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Feb 14 20:32:31 2013 -0500
demos: Add linear-gradient demo program
This program displays a linear gradient from blue to yellow. Due to
limited precision in pixman-gradient-walker.c, it currently has some
ugly artefacts that gives it a 'brushed metal' appearance.
V2: Update .gitignore
commit aaae3d8eefa069098e9014822817ca1429fdea46
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Fri Mar 8 06:00:00 2013 -0500
Remove unused macro
commit 5feda20fc39407879993ed4a6d861ef7f78d9432
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Wed Feb 27 14:40:51 2013 +0100
MIPS: DSPr2: Added more fast-paths for SRC operation:
- src_0888_8888_rev
- src_0888_0565_rev
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
src_0888_8888_rev = L1: 51.88 L2: 42.00 M: 19.04 ( 88.50%) HT: 15.27 VT: 14.62 R: 14.13 RT: 7.12 ( 45Kops/s)
src_0888_0565_rev = L1: 31.96 L2: 30.90 M: 22.60 ( 75.03%) HT: 15.32 VT: 15.11 R: 14.49 RT: 6.64 ( 43Kops/s)
Optimized:
src_0888_8888_rev = L1: 222.73 L2: 113.70 M: 20.97 ( 97.35%) HT: 18.31 VT: 17.14 R: 16.71 RT: 9.74 ( 54Kops/s)
src_0888_0565_rev = L1: 100.37 L2: 74.27 M: 29.43 ( 97.63%) HT: 22.92 VT: 21.59 R: 20.52 RT: 10.56 ( 56Kops/s)
commit 43914d68d1c87a9da6f53e6b0a12941c97bb0e5d
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Wed Feb 27 14:39:45 2013 +0100
MIPS: DSPr2: Added more fast-paths for OVER operation:
- over_8888_0565
- over_n_8_8
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_8888_0565 = L1: 14.30 L2: 13.22 M: 10.43 ( 41.56%) HT: 12.51 VT: 12.95 R: 11.82 RT: 7.34 ( 49Kops/s)
over_n_8_8 = L1: 12.77 L2: 16.93 M: 15.03 ( 29.94%) HT: 10.78 VT: 10.72 R: 10.29 RT: 4.92 ( 33Kops/s)
Optimized:
over_8888_0565 = L1: 26.03 L2: 22.92 M: 15.68 ( 62.43%) HT: 16.19 VT: 16.27 R: 14.93 RT: 8.60 ( 52Kops/s)
over_n_8_8 = L1: 62.00 L2: 55.17 M: 40.29 ( 80.23%) HT: 26.77 VT: 25.64 R: 24.13 RT: 10.01 ( 47Kops/s)
commit 2156fb51b353867d5a18b734690ca551f74d4fb1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 15 18:34:46 2013 -0500
gtk-utils.c: Use cairo in show_image() rather than GdkPixbuf
GdkPixbufs are not premultiplied, so when using them to display pixman
images, there is some unecessary conversions going on: First the image
is converted to non-premultiplied, and then GdkPixbuf premultiplies
before sending the result to the X server. These conversions may cause
the displayed image to not be exactly identical to the original.
This patch just uses a cairo image surface instead, which avoids these
conversions.
Also make the comment about sRGB a little more concise.
commit 5e207f825bd1ed3142a623bcbceca00508907c5e
Author: Ben Avison <bavison@riscosopen.org>
Date: Wed Feb 6 00:39:12 2013 +0000
Fix to lowlevel-blt-bench
The source, mask and destination buffers are initialised to 0xCC just after
they are allocated. Between each benchmark, there are a pair of memcpys,
from the destination buffer to the source buffer and back again (there are
no explanatory comments, but presumably this is an effort to flush the
caches). However, it has an unintended consequence, which is to change the
contents of the buffers on entry to subsequent benchmarks. This means it is
not a fair test: for example, with over_n_8888 (featured in the following
patches) it reports L2 and even M tests as being faster than the L1 test,
because after the L1 test, the source buffer is filled with fully opaque
pixels, for which over_n_8888 has a shortcut.
The fix here is simply to reverse the order of the memcpys, so src and
destination are both filled with 0xCC on entry to all tests.
commit d26f922dc1a605dae00fa0540198707485ba1f08
Author: Stefan Weil <sw@weilnetz.de>
Date: Sat Feb 9 12:40:16 2013 +0100
sse2: Use uintptr_t in type casts from pointer to integral value
Some recent code added new type casts from pointer to unsigned long.
These type casts result in compiler warnings for systems like
MinGW-w64 (64 bit Windows) where sizeof(unsigned long) != sizeof(void *).
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
commit dc80eb09e2831d5ad3bfe638462f80921357952b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jan 31 14:54:49 2013 -0500
lookup_composite: Don't update cache in case of error
If we fail to find a composite function, don't update the fast path
cache with the dummy compositing function.
Also make the error message state that the bug is likely caused by
issues with thread local storage.
commit 4dced81c917c753a4e699e3793efa15a39361cf0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jan 31 14:36:38 2013 -0500
Turn on error logging at all times
While releasing 0.29.2 the distcheck run produced a number of error
messages that had to be fixed in 349015e1fc5d912ba4253133b90e751d0b.
These were not caught before so nobody had actually run pixman with
debugging turned on. It's not the first time this has happened, see
5b0563f39eb29e4ae431717696174da5 for example.
So this patch makes the return_if_fail() macros use unlikely() around
the expressions and then turns on error logging at all times. The
performance hit should negligible since we were already evaluating the
expressions.
The place where DEBUG actually does cause a performance hit is in the
region selfcheck code, and that will still only be enabled in
development snapshots.
commit f4c9492c12d98f76d99b4dbdca56d517e1ffdb19
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jan 31 14:31:26 2013 -0500
pixman-compiler.h: Add unlikely() macro
When compiling with GCC this macro expands to __builtin_expect((expr), 0).
On other compilers, it just expands to (expr).
commit 5ebb5ac3807cdc7bb76358041a15cc5adca2ef23
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 22 08:29:57 2013 -0500
utils.c: Increase acceptable deviation to 0.0064 in pixel_checker_t
The check-formats programs reveals that the 8 bit pipeline cannot meet
the current 0.004 acceptable deviation specified in utils.c, so we
have to increase it. Some of the failing pixels were captured in
pixel-test, which with this commit now passes.
== a4r4g4b4 DISJOINT_XOR a8r8g8b8 ==
The DISJOINT_XOR operator applied to an a4r4g4b4 source pixel of
0xd0c0 and a destination pixel of 0x5300ea00 results in the exact
value:
fa = (1 - da) / sa = (1 - 0x53 / 255.0) / (0xd / 15.0) = 0.7782
fb = (1 - sa) / da = (1 - 0xd / 15.0) / (0x53 / 255.0) = 0.4096
r = fa * (0xc / 15.0) + fb * (0xea / 255.0) = 0.99853
But when computing in 8 bits, we get:
fa8 = ((255 - 0x53) * 255 + 0xdd / 2) / 0xdd = 0xc6
fb8 = ((255 - 0xdd) * 255 + 0x53 / 3) / 0x53 = 0x68
r8 = (fa8 * 0xcc + 127) / 255 + (fb8 * 0xea + 127) / 255 = 0xfd
and
0xfd / 255.0 = 0.9921568627450981
for a deviation of 0.00637118610187, which we then have to consider
acceptable given the current implementation.
By switching to computing the result with
r = (fa * s + fb * d + 127) / 255
rather than
r = (fa * s + 127) / 255 + (fb * d + 127) / 255
the deviation would be only 0.00244961747442, so at some point it may
be worth doing either this, or switching to floating point for
operators that involve divisions.
Note that the conversion from 4 bits to 8 bits does not cause any
error in this case because both rounding and bit replication produces
an exact result when the number of from-bits divide the number of
to-bits.
== a8r8g8b8 OVER r5g6b5 ==
When OVER compositing the a8r8g8b8 pixel 0x0f00c300 with the x14r6g6b6
pixel 0x03c0, the true floating point value of the resulting green
channel is:
0xc3 / 255.0 + (1.0 - 0x0f / 255.0) * (0x0f / 63.0) = 0.9887955
but when compositing 8 bit values, where the 6-bit green channel is
converted to 8 bit through bit replication, the 8-bit result is:
0xc3 + ((255 - 0x0f) * 0x3c + 127) / 255 = 251
which corresponds to a real value of 0.984314. The difference from the
true value is 0.004482 which is bigger than the acceptable deviation
of 0.004. So, if we were to compute all the CONJOINT/DISJOINT
operators in floating point, or otherwise make them more accurate, the
acceptable deviation could be set at 0.0045.
If we were doing the 6-bit conversion with rounding:
(x / 63.0 * 255.0 + 0.5)
instead of bit replication, the deviation in this particular case
would be only 0.0005, so we may want to consider this at some
point.
commit f2ba7fe1d812a30004b734e398f45b586833d43f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 19 16:32:15 2013 -0500
test: Add new pixel-test regression test
This test program contains a table of individual operator/pixel
combinations. For each pixel combination, images of various sizes are
filled with the pixels and then composited. The result is then
verified against the output of do_composite(). If the result doesn't
match, detailed error information is printed.
The initial 14 pixel combinations currently all fail.
commit 6781636740099633b9a8f7e0cc8e7828770f2fc3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jan 21 15:02:53 2013 -0500
a1-trap-test: Add tests for operator_name and format_name()
The check-formats.c test depends on the exact format of the strings
returned from these functions, so add a test here.
a1-trap-test isn't the ideal place, but it seems like overkill to add
a new test just for these trivial checks.
commit d1434d112ca5cd325e4fb85fc60afd1b9e902786
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jan 21 15:54:05 2013 -0500
test: Add new check-formats utility
Given an operator and two formats, this program will composite and
check all pixels where the red and blue channels are 0. That is, if
the two formats are a8r8g8b8 and a4r4g4b4, all source pixels matching
the mask
0xff00ff00
are composited with the given operator against all destination pixels
matching the mask
0xf0f0
and the result is then verified against the do_composite() function
that was moved to utils.c earlier.
This program reveals that a number of operators and format
combinations are not computed to within the precision currently
accepted by pixel_checker_t. For example:
check-formats over a8r8g8b8 r5g6b5 | grep failed | wc -l
30
reveals that there are 30 pixel combinations where OVER produces
insufficiently precise results for the a8r8g8b8 and r5g6b5 formats.
commit 1820131fe6674d46b9876965b30b331d593124a8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 22 07:36:19 2013 -0500
utils.[ch]: Add pixel_checker_get_masks()
This function returns the a, r, g, and b masks corresponding to the
pixel checker's format.
commit 5eb61f72ea50e02eb185c746108909945b589e65
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 22 11:57:53 2013 -0500
test/utils.[ch]: Add pixel_checker_convert_pixel_to_color()
This function takes a pixel in the format corresponding to the pixel
checker, and converts to a color_t.
commit 3ae717f71a31620a5cb28792b9effd0c69ffb822
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 19 12:14:24 2013 -0500
test: Move do_composite() function from composite.c to utils.c
So that it can be used in other tests.
commit 958bd334b3c17f529c80f2eeef4224f45c62f292
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 29 21:42:02 2013 -0500
Post-release version bump to 0.29.3
commit a56707e23bf2d3ef7c2ff9f66f214716791a424d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 29 20:23:39 2013 -0500
Pre-release version bump to 0.29.2
commit 349015e1fc5d912ba4253133b90e751d0b6ca7f2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 29 20:23:31 2013 -0500
stresstest: Ensure that the rasterizer is only given alpha formats
In c2cb303d33ec11390b93cabd90f0f9, return_if_fail()s were added to
prevent the trapezoid rasterizers from being called with non-alpha
formats. However, stress-test actually does call the rasterizers with
non-alpha formats, but because _pixman_log_error() is disabled in
versions with an odd minor number, the errors never materialized.
Fix this by changing the argument to random format to an enum of three
values DONT_CARE, PREFER_ALPHA, or REQUIRE_ALPHA, and then in the
switch that calls the trapezoid rasterizers, pass the appropriate
value for the function in question.
commit afde862928da7ac927cf4b60a022fafe5f060d26
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jan 27 20:08:06 2013 -0500
Change default GPGKEY to 3892336E, which is soren.sandmann@gmail.com
The old one belongs to the email address sandmann@daimi.au.dk, which
doesn't work anyore.
Also use gpg to get the name and address for the "(Signed by ...)"
line since that works more reliably for me than using git.
commit 69a7a9b6b6dc5b769888c469de3435059318f7cc
Author: Ben Avison <bavison@riscosopen.org>
Date: Thu Jan 24 18:19:48 2013 +0000
Improve L1 and L2 benchmark tests for caches that don't use allocate-on-write
In particular this affects single-core ARMs (e.g. ARM11, Cortex-A8), which
are usually configured this way. For other CPUs, this should only add a
constant time, which will be cancelled out by the EXCLUDE_OVERHEAD runs.
The problems were caused by cachelines becoming permanently evicted from
the cache, because the code that was intended to pull them back in again on
each iteration assumed too long a cache line (for the L1 test) or failed to
read memory beyond the first pixel row (for the L2 test). Also, the reloading
of the source buffer was unnecessary.
These issues were identified by Siarhei in this post:
http://lists.freedesktop.org/archives/pixman/2013-January/002543.html
commit 1fa67f499d3826fad8783684bb90c8aadd9f682f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jan 18 14:13:21 2013 -0500
pixman-combine-float.c: Use IS_ZERO() in clip_color() and set_sat()
The clip_color() function has some checks to avoid division by zero,
but they are done by comparing the value to 4 * FLT_EPSILON, where a
better choice is the IS_ZERO() macro that compares to +/- FLT_MIN.
In set_sat(), the check is that *max > *min before dividing by *max -
*min, but that has the potential problem that interactions between GCC
optimizions and 80 bit x87 registers could mean that (*max > *min) is
true in 80 bits, but (*max - *min) is 0 in 32 bits, so that the
division by zero is not prevented. Using IS_ZERO() here as well
prevents this.
commit 7e53e5866458fe592fc109cb1455c21c4b61dee9
Author: Ben Avison <bavison@riscosopen.org>
Date: Sat Jan 19 16:16:53 2013 +0000
ARMv6: Replacement add_8_8, over_8888_8888, over_8888_n_8888 and over_n_8_8888 routines
Improved by adding preloads, combining writes and using the SEL
instruction.
add_8_8
Before After
Mean StdDev Mean StdDev Confidence Change
L1 62.1 0.2 543.4 12.4 100.0% +774.9%
L2 38.7 0.4 116.8 1.7 100.0% +201.8%
M 40.0 0.1 110.1 0.5 100.0% +175.3%
HT 30.9 0.2 43.4 0.5 100.0% +40.4%
VT 30.6 0.3 39.2 0.5 100.0% +28.0%
R 21.3 0.2 35.4 0.4 100.0% +66.6%
RT 8.6 0.2 10.2 0.3 100.0% +19.4%
over_8888_8888
Before After
Mean StdDev Mean StdDev Confidence Change
L1 32.3 0.1 38.0 0.2 100.0% +17.7%
L2 15.9 0.4 30.6 0.5 100.0% +92.8%
M 13.3 0.0 25.6 0.0 100.0% +92.9%
HT 10.5 0.1 15.5 0.1 100.0% +47.1%
VT 10.4 0.1 14.6 0.1 100.0% +40.8%
R 10.3 0.1 15.8 0.1 100.0% +53.3%
RT 6.0 0.1 7.6 0.1 100.0% +25.9%
over_8888_n_8888
Before After
Mean StdDev Mean StdDev Confidence Change
L1 17.6 0.1 21.0 0.1 100.0% +19.2%
L2 11.2 0.2 19.2 0.1 100.0% +71.2%
M 10.2 0.0 19.6 0.0 100.0% +92.6%
HT 8.4 0.0 11.9 0.1 100.0% +41.7%
VT 8.3 0.0 11.3 0.1 100.0% +36.4%
R 8.3 0.0 11.8 0.1 100.0% +43.1%
RT 5.1 0.1 6.2 0.1 100.0% +21.3%
over_n_8_8888
Before After
Mean StdDev Mean StdDev Confidence Change
L1 17.5 0.1 22.8 0.8 100.0% +30.1%
L2 14.2 0.3 21.7 0.2 100.0% +52.6%
M 12.0 0.0 22.3 0.0 100.0% +84.8%
HT 10.5 0.1 14.1 0.1 100.0% +34.5%
VT 10.0 0.1 13.5 0.1 100.0% +35.3%
R 9.4 0.0 12.9 0.2 100.0% +37.7%
RT 5.5 0.1 6.5 0.2 100.0% +19.2%
commit f87dfd6f37a29c69320edd92f28aed5334b09366
Author: Ben Avison <bavison@riscosopen.org>
Date: Sat Jan 19 16:16:52 2013 +0000
ARMv6: New conversion routines
There was no previous attempt at accelerating these specifically for
ARMv6.
src_x888_8888
Before After
Mean StdDev Mean StdDev Confidence Change
L1 96.7 0.5 270.4 2.6 100.0% +179.5%
L2 44.6 2.7 110.6 9.7 100.0% +148.0%
M 26.9 0.1 87.6 0.5 100.0% +226.1%
HT 19.3 0.2 37.5 0.4 100.0% +93.7%
VT 18.6 0.1 33.7 0.4 100.0% +81.6%
R 18.4 0.1 32.2 0.3 100.0% +75.2%
RT 9.2 0.2 12.1 0.3 100.0% +31.4%
src_0565_8888
Before After
Mean StdDev Mean StdDev Confidence Change
L1 37.0 0.3 66.9 0.2 100.0% +80.8%
L2 30.3 0.2 55.9 0.3 100.0% +84.4%
M 25.9 0.0 62.3 0.2 100.0% +140.3%
HT 15.2 0.1 33.1 0.3 100.0% +116.9%
VT 15.1 0.1 30.7 0.3 100.0% +103.6%
R 14.2 0.1 27.6 0.3 100.0% +94.0%
RT 6.0 0.1 11.2 0.3 100.0% +87.2%
commit a0f59f3b2884b056428229363576666f158a9bb4
Author: Ben Avison <bavison@riscosopen.org>
Date: Sat Jan 19 16:16:51 2013 +0000
ARMv6: New blit routines
These are usable either as various composite operations, or via the
top-level function pixman_blt() which now does some blitting for the
first time on an ARMv6 platform (previously it just returned FALSE).
src_8888_8888
Before After
Mean StdDev Mean StdDev Confidence Change
L1 414.5 9.4 445.8 3.6 100.0% +7.6%
L2 93.3 20.7 114.5 12.9 100.0% +22.7%
M 57.0 0.2 89.2 0.5 100.0% +56.4%
HT 28.7 0.3 39.6 0.4 100.0% +37.9%
VT 25.5 0.2 35.3 0.4 100.0% +38.4%
R 20.1 0.1 33.8 0.3 100.0% +67.8%
RT 7.8 0.2 12.7 0.4 100.0% +62.7%
src_0565_0565
Before After
Mean StdDev Mean StdDev Confidence Change
L1 397.4 6.1 412.5 5.2 100.0% +3.8%
L2 143.2 10.9 141.9 6.5 68.9% -0.9% (insignificant)
M 90.7 0.4 133.5 0.7 100.0% +47.1%
HT 38.6 0.3 53.7 0.7 100.0% +39.0%
VT 33.0 0.3 47.3 0.6 100.0% +43.3%
R 25.7 0.2 42.1 0.5 100.0% +64.1%
RT 8.0 0.2 13.3 0.3 100.0% +65.6%
src_8_8
Before After
Mean StdDev Mean StdDev Confidence Change
L1 716.5 9.8 768.2 20.4 100.0% +7.2%
L2 246.2 12.7 260.5 8.8 100.0% +5.8%
M 146.8 0.7 227.9 0.7 100.0% +55.2%
HT 44.9 0.6 62.1 1.0 100.0% +38.2%
VT 35.6 0.4 53.4 0.7 100.0% +50.0%
R 29.7 0.3 48.2 0.6 100.0% +62.2%
RT 8.6 0.2 12.9 0.4 100.0% +49.3%
commit 3cff56c5b091d2e584503e7887414e224876de37
Author: Ben Avison <bavison@riscosopen.org>
Date: Sat Jan 19 16:16:50 2013 +0000
ARMv6: New fill routines
Note that this also effectively accelerates src_n_8888, src_n_0565 and
src_n_8 composite types, because of the fast paths in
pixman-fast-path.c implemented by fast_composite_solid_fill(), which
end up dispatching these platform-specific fill routines.
src_n_8888
Before After
Mean StdDev Mean StdDev Confidence Change
L1 157.3 1.1 574.2 8.7 100.0% +265.0%
L2 94.2 0.5 364.8 4.2 100.0% +287.3%
M 92.7 0.4 358.7 1.1 100.0% +287.1%
HT 68.5 0.9 133.6 4.0 100.0% +95.2%
VT 61.3 0.8 111.8 2.6 100.0% +82.4%
R 61.1 0.9 108.7 2.8 100.0% +78.1%
RT 24.6 1.0 28.6 1.6 100.0% +16.0%
src_n_0565
Before After
Mean StdDev Mean StdDev Confidence Change
L1 157.4 1.0 983.1 38.5 100.0% +524.6%
L2 93.6 0.5 696.0 14.3 100.0% +643.4%
M 92.7 0.4 680.5 1.0 100.0% +634.0%
HT 68.3 0.9 160.3 6.6 100.0% +134.6%
VT 61.1 0.8 130.1 3.4 100.0% +112.9%
R 61.0 0.8 125.4 4.1 100.0% +105.7%
RT 24.9 1.3 29.5 1.5 100.0% +18.2%
src_n_8
Before After
Mean StdDev Mean StdDev Confidence Change
L1 154.7 1.0 1324.4 48.5 100.0% +756.3%
L2 92.4 0.4 1178.4 10.9 100.0% +1175.6%
M 92.9 0.4 1275.7 2.1 100.0% +1273.5%
HT 68.2 1.0 169.8 5.5 100.0% +149.0%
VT 61.2 1.0 138.5 3.6 100.0% +126.3%
R 61.3 0.9 130.1 3.8 100.0% +112.4%
RT 25.5 1.3 29.2 1.9 100.0% +14.6%
commit 2e173326aaf232d84ed71faf3517bd7989680e27
Author: Ben Avison <bavison@riscosopen.org>
Date: Mon Jan 28 17:03:50 2013 +0000
ARMv6: Lay the groundwork for later patches in the series
Move the entire contents of pixman-arm-simd-asm.S to a new file;
ultimately this will only retain the scaled operations, so it is
named pixman-arm-simd-asm-scaled.S. Added new header file
pixman-arm-simd-asm.h, containing the macros which are the basis of
all the new ARMv6 implementations, although at this point in the
series, nothing uses them and the library should be binary-identical.
commit 65fc1adb6545737058e938105ae948a3607c277c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 26 00:34:53 2013 -0500
demo/scale: Add a spin button to set the number of subsample bits
For large upscalings the level of subsampling for the filter has a
quite visible effect, so make it settable in the UI so that people can
experiment with various values.
commit ed39992564beefe6b12f81e842caba11aff98a9c
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Dec 15 07:18:53 2012 +0200
Use pixman_transform_point_31_16() from pixman_transform_point()
Old functions pixman_transform_point() and pixman_transform_point_3d()
now become just wrappers for pixman_transform_point_31_16() and
pixman_transform_point_31_16_3d(). Eventually their uses should be
completely eliminated in the pixman code and replaced with their
extended range counterparts. This is needed in order to be able
to correctly handle any matrices and parameters that may come
to pixman from the code responsible for XRender implementation.
commit 5a78d74ccccba2aeb473f04ade44512d2f6c0613
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Dec 15 06:19:21 2012 +0200
test: Added matrix-test for testing projective transform accuracy
This test uses __float128 data type when it is available
for implementing a "perfect" reference implementation. The
output from from pixman_transform_point_31_16() and
pixman_transform_point_31_16_affine() is compared with the
reference implementation to make sure that the rounding
errors may only show up in a single least significant bit.
The platforms and compilers, which do not support __float128
data type, can rely on crc32 checksum for the pseudorandom
transform results.
commit 09600ae7e34eb777471c931cd4c3a8cdbda6e84a
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Wed Dec 12 02:41:55 2012 +0200
configure.ac: Added detection for __float128 support
GCC supports 128-bit floating point data type on some platforms (including
but not limited to x86 and x86-64). This may be useful for tests, which
need prefectly accurate reference implementations of certain algorithms.
commit c3deb8334a71998b986a7b8d5b74bedf26cc23aa
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Fri Dec 14 18:43:57 2012 +0200
Add higher precision "pixman_transform_point_*" functions
The following new functions are added:
pixman_transform_point_31_16_3d() -
Calculates the product of a matrix and a vector multiplication.
pixman_transform_point_31_16() -
Calculates the product of a matrix and a vector multiplication.
Then converts the homogenous resulting vector [x, y, z] to
cartesian [x', y', 1] variant, where x' = x / z, and y' = y / z.
pixman_transform_point_31_16_affine() -
A faster sibling of the other two functions, which assumes affine
transformation, where the bottom row of the matrix is [0, 0, 1] and
the last element of the input vector is set to 1.
These functions transform a point with 31.16 fixed point coordinates from
the destination space to a point with 48.16 fixed point coordinates in
the source space.
The results are accurate and the rounding errors may only show up in
the least significant bit. No overflows are possible for the affine
transformations as long as the input data is provided in 31.16 format.
In the case of projective transformations, some output values may be not
representable using 48.16 fixed point format. In this case the results
are clamped to return maximum or minimum 48.16 values (so that the caller
can at least handle NONE and PAD repeats correctly).
commit a47ed2c31180e6c3b332747a1721731e0649b10f
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Dec 3 17:42:21 2012 +0200
Faster fetch for the C variant of r5g6b5 src/dest iterator
Processing two pixels at once is used to reduce the number of
arithmetic operations.
The speedup relative to the generic fetch_scanline_r5g6b5() from
"pixman-access.c" (pixman was compiled with gcc 4.7.2):
MIPS 74K 480MHz : 20.32 MPix/s -> 26.47 MPix/s
ARM11 700MHz : 34.95 MPix/s -> 38.22 MPix/s
ARM Cortex-A8 1000MHz : 87.44 MPix/s -> 100.92 MPix/s
ARM Cortex-A9 1700MHz : 150.95 MPix/s -> 158.13 MPix/s
ARM Cortex-A15 1700MHz : 148.91 MPix/s -> 155.42 MPix/s
IBM Cell PPU 3200MHz : 75.29 MPix/s -> 98.33 MPix/s
Intel Core i7 2800MHz : 257.02 MPix/s -> 376.93 MPix/s
That's the performance for C code (SIMD and assembly optimizations
are disabled via PIXMAN_DISABLE environment variable).
commit e66fd5ccb6b69dfa1acde36220dc3c3c44026890
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Dec 3 17:07:31 2012 +0200
Faster write-back for the C variant of r5g6b5 dest iterator
Unrolling loops improves performance, so just use it here.
Also GCC can't properly optimize this code for RISC processors and
allocate 0x1F001F constant in a register. Because this constant is
too large to be represented as an immediate operand in instructions,
GCC inserts some redundant arithmetics. This problem can be workarounded
by explicitly using a variable for 0x1F001F constant and also initializing
it by a read from another volatile variable. In this case GCC is forced
to allocate a register for it, because it is not seen as a constant anymore.
The speedup relative to the generic store_scanline_r5g6b5() from
"pixman-access.c" (pixman was compiled with gcc 4.7.2):
MIPS 74K 480MHz : 33.22 MPix/s -> 43.42 MPix/s
ARM11 700MHz : 50.16 MPix/s -> 78.23 MPix/s
ARM Cortex-A8 1000MHz : 117.75 MPix/s -> 196.34 MPix/s
ARM Cortex-A9 1700MHz : 177.04 MPix/s -> 320.32 MPix/s
ARM Cortex-A15 1700MHz : 231.44 MPix/s -> 261.64 MPix/s
IBM Cell PPU 3200MHz : 130.25 MPix/s -> 145.61 MPix/s
Intel Core i7 2800MHz : 502.21 MPix/s -> 721.73 MPix/s
That's the performance for C code (SIMD and assembly optimizations
are disabled via PIXMAN_DISABLE environment variable).
commit a9f66694163da9e8e41a69497acbadd630e0cb51
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Dec 3 06:32:46 2012 +0200
Added C variants of r5g6b5 fetch/write-back iterators
Adding specialized iterators for r5g6b5 color format allows us to work
on fine tuning performance of r5g6b5 fetch/write-back operations in the
pixman general "fetch -> combine -> store" pipeline.
These iterators also make "src_x888_0565" fast path redundant, so it can
be removed.
commit 794033ed43ed74ad66075a4d0c83fd36565da876
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Jan 23 10:27:22 2013 +0000
Eliminate duplicate copies of channel flags for pixman_image_composite32()
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
commit a59f081df45ec5c15b295bb31b22dbe787e2f2b1
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sat Jan 12 16:52:47 2013 +0000
Always return a valid function from lookup_combiner()
We should always have at least a C combiner available, so we never
expect the search to fail. If it does, emit an error and return a
dummy function.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
commit 520230914bbb56473b872f2ef7dc59092f426415
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sat Jan 12 08:28:32 2013 +0000
Always return a valid function from lookup_composite()
We never expect to fail to find the appropriate function as the
general_composite_rect should always match. So if somehow we fallthrough
the search, emit a _pixman_log_error() and return a dummy function.
Note that we remove some conditionals and a level of indentation hence a
large amount of code movement. This also reveals that in a few places we
are duplicating stack variables that can be eliminated later.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
commit b283c864a3de039f9213adaf402c6597db12d0c4
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Jan 8 18:39:03 2013 +0000
sse2: Add fast paths for bilinear source with a solid mask
Based on the existing sse2_8888_n_8888 nearest scaling routines.
fishbowl on an i5-2500: 60.9s -> 56.9s
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
commit d00ce4091215e8a648c6f1912829b35c02b06add
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Jan 1 19:41:54 2013 +0000
sse2: Add a fast path for add_n_8_8888
This path is being exercised by compositing of trapezoids for clipmasks, for
instance as used in the firefox-asteroids cairo-trace.
IVB i7-3720qm ./tests/lowlevel-blt-bench add_n_8_8888:
reference memcpy speed = 14846.7MB/s (3711.7MP/s for 32bpp fills)
before: L1: 681.10 L2: 735.14 M:701.44 ( 28.35%) HT:283.32 VT:213.23 R:208.93 RT: 77.89 ( 793Kops/s)
after: L1: 992.91 L2:1017.33 M:982.58 ( 39.88%) HT:458.93 VT:332.32 R:326.13 RT:136.66 (1287Kops/s)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
commit 7ced3beec99e9965717f76cc822d0702383a1fce
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Jan 1 19:41:54 2013 +0000
sse2: Add a fast path for add_n_8888
This path is being exercised by inplace compositing of trapezoids, for
instance as used in the firefox-asteroids cairo-trace.
IVB i3-3720qm ./tests/lowlevel-blt-bench add_n_888:
reference memcpy speed = 14918.3MB/s (3729.6MP/s for 32bpp fills)
before: L1:1752.44 L2:2259.48 M:2215.73 ( 58.80%) HT:589.49 VT:404.04 R:424.69 RT:134.68 (1182Kops/s)
after: L1:3931.21 L2:6132.78 M:3440.17 ( 92.24%) HT:1337.70 VT:1357.64 R:1270.27 RT:359.78 (2161Kops/s)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
commit b7f523e3bcbef1f08bf9b374f2704723d5298c1f
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Thu Jan 24 14:49:41 2013 -0500
Add a version of bilinear_interpolation for precision <=4
Having 4 or fewer bits means we can do two components at
a time in a single 32 bit register.
Here are the results for firefox-fishtank on a Pandaboard with
4.6.3 and PIXMAN_DISABLE="arm-neon"
Before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image t-firefox-fishtank 7.841 7.910 0.70% 6/6
After:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image t-firefox-fishtank 6.951 6.995 1.11% 6/6
commit 24e83cae64eaa238a7bf67488917b0f8cac89114
Author: Ben Avison <bavison@riscosopen.org>
Date: Sat Jan 19 16:36:22 2013 +0000
Tweaks to lowlevel-blt-bench
This adds two extra tests, src_n_8 and src_8_8, which I have been
using to benchmark my ARMv6 changes.
I'd also like to propose that it requires an exact test name as the
executable's argument, as achieved by this strstr to strcmp change.
Without this, it is impossible to only benchmark (for example)
add_8_8, add_n_8 or src_n_8, due to those also being substrings of
many other test names.
commit b527a0e615a726aa6a7d18f0ea0b38564b153afa
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 19 12:29:48 2013 -0500
test: Use operator_name() and format_name() in composite.c
With the operator_name() and format_name() functions there is no
longer any reason for composite.c to have its own table of format and
operator names.
commit 4eb9a24abae6cee7562c3ec8965dc4eaaba0e8ab
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 19 09:36:50 2013 -0500
utils.[ch]: Add new format_name() function
This function returns the name of the given format code, which is
useful for printing out debug information. The function is written as
a switch without a default value so that the compiler will warn if new
formats are added in the future. The fake formats used in the fast
path tables are also recognized.
The function is used in alpha_map.c, where it replaces an existing
format_name() function, and in blitters-test.c, affine-test.c, and
scaling-test.c.
commit 1676b4938912bd140791c347aa4d08db255dd60f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 19 08:55:27 2013 -0500
test/utils.[ch]: Add new function operator_name()
This function returns the name of the given operator, which is useful
for printing out debug information. The function is done as a switch
without a default value so that the compiler will warn if new
operators are added in the future.
The function is used in affine-test.c, scaling-test.c, and
blitters-test.c.
commit 8d85311143b0bc30d3490c0ca2ddbe927a1f9ac8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 12 08:03:35 2013 -0500
README: Add guidelines on how to contribute patches
Ben Avison pointed out here:
http://lists.freedesktop.org/archives/pixman/2013-January/002485.html
that there isn't really any documentation about how to submit patches
to pixman. This patch adds some information to the README file.
v2: Incorporate some comments from Ben Avison
v3: Change gitweb URL to cgit
commit 61dacffaf47e6b631a2c67230f8f111038d1de09
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Jan 18 16:53:32 2013 -0800
Convert INCLUDES to AM_CPPFLAGS
INCLUDES has been deprecated starting with automake 1.13. Convert all
occurrences with the recommended AM_CPPFLAGS replacement.
commit c7c28f440db083d69ca930b44fc6280bb558e098
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Jan 18 16:49:00 2013 -0800
Add new demos and tests to .gitignore
commit 2c6577476e5b18e17904ae8af244a39c352e2e33
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Tue Jan 22 03:01:05 2013 +0100
MIPS: DSPr2: Added more fast-paths:
- over_reverse_n_8888
- in_n_8_8
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_reverse_n_8888 = L1: 19.42 L2: 19.07 M: 15.38 ( 40.80%) HT: 13.35 VT: 13.10 R: 12.92 RT: 8.27 ( 49Kops/s)
in_n_8_8 = L1: 21.20 L2: 22.86 M: 21.42 ( 14.21%) HT: 15.97 VT: 15.69 R: 15.47 RT: 8.00 ( 48Kops/s)
Optimized:
over_reverse_n_8888 = L1: 60.09 L2: 47.87 M: 28.65 ( 76.02%) HT: 23.58 VT: 22.51 R: 21.99 RT: 12.28 ( 60Kops/s)
in_n_8_8 = L1: 89.38 L2: 86.07 M: 65.48 ( 43.44%) HT: 44.64 VT: 41.50 R: 40.77 RT: 16.94 ( 66Kops/s)
commit a67b0e24d7eaba3b9525eeb8bf357ded95cc6b7c
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Tue Jan 22 02:59:44 2013 +0100
MIPS: DSPr2: Added more fast-paths for REVERSE operation:
- out_reverse_8_0565
- out_reverse_8_8888
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
out_reverse_8_0565 = L1: 14.29 L2: 13.58 M: 12.14 ( 24.16%) HT: 9.23 VT: 9.12 R: 8.84 RT: 4.75 ( 36Kops/s)
out_reverse_8_8888 = L1: 27.46 L2: 23.24 M: 17.41 ( 57.73%) HT: 12.61 VT: 12.47 R: 11.79 RT: 5.86 ( 41Kops/s)
Optimized:
out_reverse_8_0565 = L1: 28.24 L2: 25.64 M: 20.63 ( 41.05%) HT: 16.69 VT: 16.14 R: 15.50 RT: 8.69 ( 52Kops/s)
out_reverse_8_8888 = L1: 52.78 L2: 41.44 M: 23.50 ( 77.94%) HT: 18.79 VT: 18.16 R: 16.90 RT: 9.11 ( 53Kops/s)
commit 35cc965514ca6e665c18411fcf66db826d559c2a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Dec 20 11:28:25 2012 -0500
pixman-filter.c: Cope with NULL returns from malloc()
v2: Don't return a pointer to uninitialized memory when the allocation
of horz and vert fails, but allocation of params doesn't.
commit 58526cfc7290a740f61e288f09fe721c4e6511bd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 26 22:06:27 2012 -0400
Handle solid images in the noop iterator
The noop src iterator already has code to handle solid images, but
that code never actually runs currently because it is not possible for
an image to have both a format code of PIXMAN_solid and a flag of
FAST_PATH_BITS_IMAGE.
If these two were to be set at the same time, the
fast_composite_tiled_repeat() fast path would trigger for solid images
(because it triggers for PIXMAN_any formats, which includes
PIXMAN_solid), but for solid images we can usually do better than that
fast path.
So this patch removes _pixman_solid_fill_iter_init() and instead
handles such images (along with repeating 1x1 bits images without an
alpha map) in pixman-noop.c.
When a 1x1R image is involved in the general composite path, before
this patch, it would hit this code in repeat() in pixman-inlines.h:
while (*c >= size)
*c -= size;
while (*c < 0)
*c += size;
and those loops could run for a huge number of iteratons (proportional
to the composite width). For such cases, the performance improvement
is really big:
./test/lowlevel-blt-bench -n add_n_8888:
Before:
add_n_8888 = L1: 3.86 L2: 3.78 M: 1.40 ( 0.06%) HT: 1.43 VT: 1.41 R: 1.41 RT: 1.38 ( 19Kops/s)
After:
add_n_8888 = L1:1236.86 L2:2468.49 M:1097.88 ( 49.04%) HT:476.49 VT:429.05 R:417.04 RT:155.12 ( 817Kops/s)
commit 480dd38fd190fb7ca4ff172a31a4a6ef2944f20c
Author: Marko Lindqvist <cazfi74@gmail.com>
Date: Thu Jan 3 06:38:01 2013 +0200
Fix build with automake-1.13
Automake-1.13 has removed long obsolete AM_CONFIG_HEADER macro (
http://lists.gnu.org/archive/html/automake/2012-12/msg00038.html )
and autoreconf errors out upon seeing it.
Attached patch replaces obsolete AM_CONFIG_HEADER with now proper
AC_CONFIG_HEADERS.
commit 1abde88ae60ae0877073d85cbf5b39013337f5da
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Thu Dec 20 05:14:39 2012 +0200
Use more appropriate types and remove a magic constant
commit c1fd5a42439b21872170979d8c400cbb374e1f9d
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Thu Dec 20 05:00:46 2012 +0200
Define SIZE_MAX if it is not provided by the standard C headers
C++ compilers do not define SIZE_MAX. It is also not available
if the code is compiled by some C compilers:
http://lists.freedesktop.org/archives/pixman/2012-August/002196.html
commit 66c429282282176cdb5913b7396116c28725363e
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sun Dec 16 04:03:58 2012 +0200
Rename 'xor' variable to 'filler' (because 'xor' is a C++ keyword)
commit 4dfda2adfe2eb1130fc27b1da35df778284afd91
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 14 21:53:34 2012 -0500
float-combiner.c: Change tests for x == 0.0 tests to - FLT_MIN < x < FLT_MIN
pixman-float-combiner.c currently uses checks like these:
if (x == 0.0f)
...
else
... / x;
to prevent division by 0. In theory this is correct: a division-by-zero
exception is only supposed to happen when the floating point numerator is
exactly equal to a positive or negative zero.
However, in practice, the combination of x87 and gcc optimizations
causes issues. The x87 registers are 80 bits wide, which means the
initial test:
if (x == 0.0f)
may be false when x is an 80 bit floating point number, but when x is
rounded to a 32 bit single precision number, it becomes equal to
0.0. In principle, gcc should compensate for this quirk of x87, and
there are some options such as -ffloat-store, -fexcess-precision=standard,
and -std=c99 that will make it do so, but these all have a performance
cost. It is also possible to set the FPU to a mode that makes it do
all computation with single or double precision, but that would
require pixman to save the existing mode before doing anything with
floating point and restore it afterwards.
Instead, this patch side-steps the issue by replacing exact checks for
equality with zero with a new macro that checkes whether the value is
between -FLT_MIN and FLT_MIN.
There is extensive reading material about this issue linked off the
infamous gcc bug 323:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=323
commit 2734071d7bee699401dc8c98d5c2ef0e2dbb0c91
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Thu Dec 6 17:13:16 2012 +0200
ARM: make use of UQADD8 instruction even in generic C code paths
ARMv6 has UQADD8 instruction, which implements unsigned saturated
addition for 8-bit values packed in 32-bit registers. It is very useful
for UN8x4_ADD_UN8x4, UN8_rb_ADD_UN8_rb and ADD_UN8 macros (which would
otherwise need a lot of arithmetic operations to simulate this operation).
Since most of the major ARM linux distros are built for ARMv7, we are
much less dependent on runtime CPU detection and can get practical
benefits from conditional compilation here for a lot of users.
The results of cairo-perf-trace benchmark on ARM Cortex-A15 with pixman
compiled by gcc 4.7.2 and PIXMAN_DISABLE set to "arm-simd arm-neon":
Speedups
========
image firefox-talos-gfx (29938.22 0.12%) -> (27814.76 0.51%) : 1.08x speedup
image firefox-asteroids (23241.11 0.07%) -> (21795.19 0.07%) : 1.07x speedup
image firefox-canvas-alpha (174519.85 0.08%) -> (164788.64 0.20%) : 1.06x speedup
image poppler (9464.46 1.61%) -> (8991.53 0.14%) : 1.05x speedup
commit f9a41703b2d46c988b9e4e378d27396f718006ae
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Dec 3 03:01:21 2012 +0200
Faster conversion from a8r8g8b8 to r5g6b5 in C code
This change reduces 3 shifts, 3 ANDs and 2 ORs (total 8 arithmetic
operations) to 3 shifts, 2 ANDs and 2 ORs (total 7 arithmetic
operations).
We get garbage in the high 16 bits of the result, which might need
to be cleared when casting to uint16_t (it would bring us back to
total 8 arithmetic operations). However in the case if the result
of a8r8g8b8->r5g6b5 conversion is immediately stored to memory, no
extra instructions for clearing these garbage bits are needed.
This allows the a8r8g8b8->r5g6b5 conversion code to be compiled
into 4 instructions for ARM instead of 5 (assuming a good optimizing
compiler), which has no pipeline stalls on ARM11 as an additional
bonus.
The change in benchmark results for 'lowlevel-blt-bench src_8888_0565'
with PIXMAN_DISABLE="arm-simd arm-neon mips-dspr2 mmx sse2" and pixman
compiled by gcc-4.7.2:
MIPS 74K 480MHz : 40.44 MPix/s -> 40.13 MPix/s
ARM11 700MHz : 50.28 MPix/s -> 62.85 MPix/s
ARM Cortex-A8 1000MHz : 124.38 MPix/s -> 141.85 MPix/s
ARM Cortex-A15 1700MHz : 281.07 MPix/s -> 303.29 MPix/s
Intel Core i7 2800MHz : 515.92 MPix/s -> 531.16 MPix/s
The same trick was used in xomap (X server for Nokia N800/N810):
http://repository.maemo.org/pool/diablo/free/x/xorg-server/
xorg-server_1.3.99.0~git20070321-0osso20083801.tar.gz
commit 3922e90c400fca3ac43dc77b8dd0c0591e7e4fbc
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Dec 3 02:50:20 2012 +0200
Change CONVERT_XXXX_TO_YYYY macros into inline functions
It is easier and safer to modify their code in the case if the
calculations need some temporary variables. And the temporary
variables will be needed soon.
commit e4519360c15772ac51038b9f86e3f730f06cfb65
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Dec 3 05:44:36 2012 +0200
test: add "src_0565_8888" to lowlevel-blt-bench
commit 6a6c8c51ed9e7272e624b3c99187ddf71d19a0fd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Dec 13 15:37:40 2012 -0500
pixman_composite_trapezoids(): Check for NULL return from create_bits()
A check is needed that the creation of the temporary image in
pixman_composite_trapezoids() succeeds.
Fixes crash in stress-test -s 0x313c on my system.
commit c2cb303d33ec11390b93cabd90f0f95bc9264113
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Dec 13 15:26:17 2012 -0500
pixman_composite_trapezoids: Return early if mask_format is not of TYPE_ALPHA
stress-test -s 0x17ee crashes because pixman_composite_trapezoids() is
given a mask_format of PIXMAN_c8, which causes it to create a
temporary image with that format but without a palette. This causes
crashes later.
The only mask_format that we actually support are those of TYPE_ALPHA,
so this patch add a return_if_fail() to ensure this.
Similarly, although currently it won't crash if given an invalid
format, alpha-only formats have always been the only thing that made
sense for the pixman_rasterize_edges() functions, so add a
return_if_fail() ensuring that the destination format is of type
PIXMAN_TYPE_ALPHA.
commit 1f0c02811ea71b36380b9d4029a248659bd9af50
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Dec 13 11:21:16 2012 -0500
Add testing of trapezoids to stress-test
The entry points add_trapezoids(), rasterize_trapezoid() and
composite_trapezoid() are exercised with random trapezoids.
This uncovers crashes with stress-test seeds 0x17ee and 0x313c.
commit 526dc06e5694172abf979c03a5cf530207fe2d27
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Dec 8 06:06:34 2012 -0500
demos/radial-test: Add checkerboard to display the alpha channel
commit 6402b2aa0c2215a5add233b3c1bc2ae634d43aaf
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Dec 8 06:46:38 2012 -0500
demos/conical-test: Use the draw_checkerboard() utility function
Instead of having its own copy.
commit e382e52d675a4ae86ed94ab1124ea7d98c3db75a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Dec 8 06:44:24 2012 -0500
test/utils.[ch]: Add utility function to draw a checkerboard
This is useful in demo programs to display the alpha channel.
commit b0a6504122ba4f585fb60626ec71bf613fc64fae
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 7 19:51:19 2012 -0500
radial: When comparing t to mindr, use >= rather than >
Radial gradients are conceptually rendered as a sequence of circles
generated by linearly extrapolating from the two circles given by the
gradient specification. Any circles in that sequence that would end up
with a negative radius are not drawn, a condition that is enforced by
checking that t * dr is bigger than mindr:
if (t * dr > mindr)
However, it is legitimate for a circle to have radius exactly 0, so
the test should use >= rather than >.
This gets rid of the dots in demos/radial-test except for when the c2
circle has radius 0 and a repeat mode of either NONE or NORMAL. Both
those dots correspond to a t value of 1.0, which is outside the
defined interval of [0.0, 1.0) and therefore subject to the repeat
algorithm. As a result, in the NONE case, a value of 1.0 turns into
transparent black. In the NORMAL case, 1.0 wraps around and becomes
0.0 which is red, unlike 0.99 which is blue.
Cc: ranma42@gmail.com
commit 54aca22058e8f4daf999b37e5c5e6ddd8e67f811
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 7 19:43:53 2012 -0500
demos/radial-test: Add zero-radius circles to demonstrate rendering bugs
Add two new gradient columns, one where the start circle is has radius
0 and one where the end circle has radius 0. All the new gradients
except for one are rendered with a bright dot in the middle. In most
but not all cases this is incorrect.
Cc: ranma42@gmail.com
commit fdab3c1b6cd9c5e197ec3f6bc0a03da32880e317
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Dec 8 15:16:51 2012 +0200
test: Workaround unaligned MOVDQA bug (http://gcc.gnu.org/PR55614)
Just use SSE2 intrinsics to do unaligned memory accesses as
a workaround for this gcc bug related to vector extensions.
commit 2bc59006d7fe91abf68a2061ad86c06e1b2964ab
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Fri Nov 30 12:00:47 2012 +0200
Improve performance of combine_over_u
The generic C over_u combiner can be a lot faster with the
addition of special shortcuts for 0xFF and 0x00 alpha/mask
values. This is already implemented in C and SSE2 fast paths.
Profiling the run of cairo-perf-trace benchmarks with PIXMAN_DISABLE
environment variable set to "fast mmx sse2" on Intel Core i7:
=== before ===
37.32% cairo-perf-trac libpixman-1.so.0.29.1 [.] combine_over_u
21.37% cairo-perf-trac libpixman-1.so.0.29.1 [.] bits_image_fetch_bilinear_no_repeat_8888
13.51% cairo-perf-trac libpixman-1.so.0.29.1 [.] bits_image_fetch_bilinear_affine_none_a8r8g8b8
2.96% cairo-perf-trac libpixman-1.so.0.29.1 [.] radial_compute_color
2.74% cairo-perf-trac libpixman-1.so.0.29.1 [.] fetch_scanline_a8
2.71% cairo-perf-trac libpixman-1.so.0.29.1 [.] fetch_scanline_x8r8g8b8
2.17% cairo-perf-trac libpixman-1.so.0.29.1 [.] _pixman_gradient_walker_pixel
1.86% cairo-perf-trac libcairo.so.2.11200.0 [.] _cairo_tor_scan_converter_generate
1.57% cairo-perf-trac libpixman-1.so.0.29.1 [.] bits_image_fetch_bilinear_affine_pad_a8r8g8b8
0.97% cairo-perf-trac libpixman-1.so.0.29.1 [.] combine_in_reverse_u
0.96% cairo-perf-trac libpixman-1.so.0.29.1 [.] combine_over_ca
=== after ===
28.79% cairo-perf-trac libpixman-1.so.0.29.1 [.] bits_image_fetch_bilinear_no_repeat_8888
18.44% cairo-perf-trac libpixman-1.so.0.29.1 [.] bits_image_fetch_bilinear_affine_none_a8r8g8b8
15.54% cairo-perf-trac libpixman-1.so.0.29.1 [.] combine_over_u
3.94% cairo-perf-trac libpixman-1.so.0.29.1 [.] radial_compute_color
3.69% cairo-perf-trac libpixman-1.so.0.29.1 [.] fetch_scanline_a8
3.69% cairo-perf-trac libpixman-1.so.0.29.1 [.] fetch_scanline_x8r8g8b8
2.94% cairo-perf-trac libpixman-1.so.0.29.1 [.] _pixman_gradient_walker_pixel
2.52% cairo-perf-trac libcairo.so.2.11200.0 [.] _cairo_tor_scan_converter_generate
2.08% cairo-perf-trac libpixman-1.so.0.29.1 [.] bits_image_fetch_bilinear_affine_pad_a8r8g8b8
1.31% cairo-perf-trac libpixman-1.so.0.29.1 [.] combine_in_reverse_u
1.29% cairo-perf-trac libpixman-1.so.0.29.1 [.] combine_over_ca
commit 8ca4e144724ba2041bc5ef077ccf6d24e7cf4d1f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Nov 26 14:27:34 2012 -0500
Add fast paths for separable convolution
Similar to the fast paths for general affine access, add some fast
paths for the separable filter for all combinations of formats
x8r8g8b8, a8r8g8b8, r5g6b5, a8 with the four repeat modes.
It is easy to see the speedup in the demos/scale program.
commit 4f18ba30cea56331e30992242201b20954c8f7f2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Dec 4 13:17:49 2012 -0500
Add demo program for conical gradients
This new test is derived from radial-test.c and displays conical
gradients at various angles.
It also demonstrates how PIXMAN_REPEAT_NORMAL is supposed to work when
used with a gradient specification where the first stop is not a 0.0:
In this case the gradient is supposed to have a smooth transition from
the last stop back to the first stop with no sharp transitions. It
also shows that the repeat mode is not ignored for conical gradients
as one might be tempted to think.
commit 3a98787bddeb007a1cd2b86235205774c15250f2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Nov 12 12:27:39 2012 -0500
Add demos/zone_plate.png
The zone plate image is a useful test case for image scalers because
it contains all representable frequencies, so any imperfection in
resampling filters will show up as Moire patterns.
This version is symmetric around the midpoint of the image, so since
rotating it is supposed to be a noop, it can also be used to verify
that the resampling filters don't shift the image.
V2: Run the file through OptiPNG to cut the size in half, as suggested
by Siarhei.
commit 97491ed26cfd4bad9cceffa789bfcbef77421d38
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Nov 22 10:18:26 2012 -0500
demos: Add new demo program, "scale"
This program allows interactively scaling and rotating images with
using various filters and repeat modes. It uses
pixman_filter_create_separate_convolution() to generate the filters.
commit 7f5bb22d17f17c2032914163a318f4ec438ba280
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Nov 22 10:16:16 2012 -0500
demos/gtk-utils.[ch]: Add pixman_image_from_file()
This function uses GdkPixbuf to load various common formats such as
.png and .jpg into a pixman image.
commit 6915f3e24f4169260a8ad6ab7ff3087388dbe5db
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Nov 22 10:15:06 2012 -0500
Add new pixman_filter_create_separable_convolution() API
This new API is a helper function to create filter parameters suitable
for use with PIXMAN_FILTER_SEPARABLE_CONVOLUTION.
For each dimension, given a scale factor, reconstruction and sample
filter kernels, and a subsampling resolution, this function will
compute a convolution of the two kernels scaled appropriately, then
sample that convolution and return the resulting vectors in a form
suitable for being used as parameters to
PIXMAN_FILTER_SEPARABLE_CONVOLUTION.
The filter kernels offered are the following:
- IMPULSE: Dirac delta function, ie., point sampling
- BOX: Box filter
- LINEAR: Linear filter, aka. "Tent" filter
- CUBIC: Cubic filter, currently Mitchell-Netravali
- GAUSSIAN: Gaussian function, sigma=1, support=3*sigma
- LANCZOS2: Two-lobed Lanczos filter
- LANCZOS3: Three-lobed Lanczos filter
- LANCZOS3_STRETCHED: Three-lobed Lanczos filter, stretched by 4/3.0.
This is the "Nice" filter from Dirty Pixels by
Jim Blinn.
The intended way to use this function is to extract scaling factors
from the transformation and then pass those to this function to get a
filter suitable for compositing with that transformation. The filter
kernels can be chosen according to quality and performance tradeoffs.
To get equivalent quality to GdkPixbuf for downscalings, use BOX for
both reconstruction and sampling. For upscalings, use LINEAR for
reconstruction and IMPULSE for sampling (though note that for
upscaling in both X and Y directions, simply using
PIXMAN_FILTER_BILINEAR will likely be a better choice).
commit 68760d3fe1351cb745aedcada7d765edc08bbe8b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Nov 22 10:17:56 2012 -0500
rounding.txt: Describe how SEPARABLE_CONVOLUTION filter works
Add some notes on how to compute the convolution matrices to be used
with the SEPARABLE_CONVOLUTION filter.
commit 6fd480b17c8398c217e4c11e826c82dbb8288006
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Nov 22 10:14:06 2012 -0500
Add new filter PIXMAN_FILTER_SEPARABLE_CONVOLUTION
This filter is a new way to use a convolution matrix for filtering. In
contrast to the existing CONVOLUTION filter, this new variant is
different in two respects:
- It is subsampled: Instead of just one convolution matrix, this
filter chooses between a number of matrices based on the subpixel
sample location, allowing the convolution kernel to be sampled at a
higher resolution.
- It is separable: Each matrix is specified as the tensor product of
two vectors. This has the advantages that many fewer values have to
be stored, and that the filtering can be done separately in the x
and y dimensions (although the initial implementation doesn't
actually do that).
The motivation for this new filter is to improve image downsampling
quality. Currently, the best pixman can do is the regular convolution
filter which is limited to coarsely sampled convolution kernels.
With this new feature, any separable filter can be used at any desired
resolution.
commit 7e39861da3655779ce76a72592feed3c1dd90017
Author: Benjamin Gilbert <bgilbert@backtick.net>
Date: Sat Dec 1 23:55:31 2012 -0500
Fix thread safety on mingw-w64 and clang
After finding a working TLS storage class specifier, configure was
continuing to test other candidates. This caused it to prefer
__declspec(thread) over __thread. However, __declspec(thread) is
ignored with a warning by mingw-w64 [1] and silently ignored by clang [2].
The resulting binary behaved as if PIXMAN_NO_TLS was defined.
Bug introduced by a069da6c.
[1] https://bugs.freedesktop.org/show_bug.cgi?id=57591
[2] http://lists.freedesktop.org/archives/pixman/2012-October/002320.html
commit ebedd9a2ad8e841cd8323838b5136657d9ebb988
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sun Nov 25 02:59:25 2012 +0200
test: Get rid of the obsolete 'prng_rand_N' and 'prng_rand_u32'
They are the same as 'prng_rand_n' and 'prng_rand'
commit b31a696263f1ae9aebb9bb21b93a0c15453bf611
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sun Nov 25 02:50:35 2012 +0200
test: Switch to the new PRNG instead of old LCG
Wallclock time for running pixman "make check" (compile time not included):
----------------------------+----------------+-----------------------------+
| old PRNG (LCG) | new PRNG (Bob Jenkins) |
Processor type +----------------+------------+----------------+
| gcc 4.5 | gcc 4.5 | gcc 4.7 (simd) |
----------------------------+----------------+------------+----------------+
quad Intel Core i7 @2.8GHz | 0m49.494s | 0m43.722s | 0m37.560s |
dual ARM Cortex-A15 @1.7GHz | 5m8.465s | 4m37.375s | 3m45.819s |
IBM Cell PPU @3.2GHz | 23m0.821s | 20m38.316s | 16m37.513s |
----------------------------+----------------+------------+----------------+
But some tests got a particularly large boost. For example benchmarking and
profiling blitters-test on Core i7:
=== before ===
$ time ./blitters-test
real 0m10.907s
user 0m55.650s
sys 0m0.000s
70.45% blitters-test blitters-test [.] create_random_image
15.81% blitters-test blitters-test [.] compute_crc32_for_image_internal
2.26% blitters-test blitters-test [.] _pixman_implementation_lookup_composite
1.07% blitters-test libc-2.15.so [.] _int_free
0.89% blitters-test libc-2.15.so [.] malloc_consolidate
0.87% blitters-test libc-2.15.so [.] _int_malloc
0.75% blitters-test blitters-test [.] combine_conjoint_general_u
0.61% blitters-test blitters-test [.] combine_disjoint_general_u
0.40% blitters-test blitters-test [.] test_composite
0.31% blitters-test libc-2.15.so [.] _int_memalign
0.31% blitters-test blitters-test [.] _pixman_bits_image_setup_accessors
0.28% blitters-test libc-2.15.so [.] malloc
=== after ===
$ time ./blitters-test
real 0m3.655s
user 0m20.550s
sys 0m0.000s
41.77% blitters-test.n blitters-test.new [.] compute_crc32_for_image_internal
15.77% blitters-test.n blitters-test.new [.] prng_randmemset_r
6.15% blitters-test.n blitters-test.new [.] _pixman_implementation_lookup_composite
3.09% blitters-test.n libc-2.15.so [.] _int_free
2.68% blitters-test.n libc-2.15.so [.] malloc_consolidate
2.39% blitters-test.n libc-2.15.so [.] _int_malloc
2.27% blitters-test.n blitters-test.new [.] create_random_image
2.22% blitters-test.n blitters-test.new [.] combine_conjoint_general_u
1.52% blitters-test.n blitters-test.new [.] combine_disjoint_general_u
1.40% blitters-test.n blitters-test.new [.] test_composite
1.02% blitters-test.n blitters-test.new [.] prng_srand_r
1.00% blitters-test.n blitters-test.new [.] _pixman_image_validate
0.96% blitters-test.n blitters-test.new [.] _pixman_bits_image_setup_accessors
0.90% blitters-test.n libc-2.15.so [.] malloc
commit 309e66f047cab0951d8e42628dcd181e2d14c58d
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Nov 24 23:22:48 2012 +0200
test: Search/replace 'lcg_*' -> 'prng_*'
The 'lcg' prefix is going to be misleading if we replace
PRNG algorithm.
commit d6545a2fc6f65c4959c6f85a15e95675347c0940
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Nov 24 19:43:41 2012 +0200
test: Added a better PRNG (pseudorandom number generator)
This adds a fast SIMD-optimized variant of a small noncryptographic
PRNG originally developed by Bob Jenkins:
http://www.burtleburtle.net/bob/rand/smallprng.html
The generated pseudorandom data is good enough to pass "Big Crush"
tests from TestU01 (http://en.wikipedia.org/wiki/TestU01).
SIMD code uses http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
which is a GCC specific extension. There is also a slower alternative
code path, which should work with any C compiler.
The performance of filling buffer with random data:
Intel Core i7 @2.8GHz (SSE2) : ~5.9 GB/s
ARM Cortex-A15 @1.7GHz (NEON) : ~2.2 GB/s
IBM Cell PPU @3.2GHz (Altivec) : ~1.7 GB/s
commit 41f98a07fc3235b64713a39238238801304ac346
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Fri Nov 23 09:07:23 2012 +0200
test: Change is_little_endian() into inline function
Also dropped redundant volatile keyword because any object
can be accessed via char* pointer without breaking aliasing
rules. The compilers are able to optimize this function to either
constant 0 or 1.
commit 978bab253d1d061b00b5e80aa45ab6986aac466f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Nov 21 11:43:31 2012 -0500
Add text file rounding.txt describing how rounding works
It is not entirely obvious how pixman gets from "location in the
source image" to "pixel value stored in the destination". This file
describes how the filters work, and in particular how positions are
rounded to samples.
commit 74319e9d39f5d7f85cb75fcb91343f298b0e62e2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Nov 20 23:28:43 2012 -0500
Convolution filter: round color values instead of truncating
The pixel computed by the convolution filter should be rounded off,
not truncated. As a simple example consider a convolution matrix
consisting of five times 0x3333. If all five all five input pixels are
0xff, then the result of truncating will be
(5 * 0x3333 * 255) >> 16 = 254
But the real value of the computation is (5 * 0x3333 / 65536.0) * 254
= 254.9961, so the error is almost 1. If the user isn't very careful
about normalizing the convolution kernel so that it sums to one in
fixed point, such error might cause solid images to change color, or
opaque images to become translucent.
The fix is simply to round instead of truncate.
commit f0816ddaf4e61d9295de5b1cbe51f956db7fbd16
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Nov 20 03:23:51 2012 -0500
Round fixed-point multiplication
After two fixed-point numbers are multiplied, the result is shifted
into place, but up until now pixman has simply discarded the low-order
bits instead of rounding to the closest number.
Fix that by adding 0x8000 (or 0x2 in one place) before shifting and
update the test checksums to match.
commit 44dd746bb68625b2f6be77c3f80292b45defe9d7
Author: Stefan Weil <sw@weilnetz.de>
Date: Tue Nov 13 19:44:44 2012 +0100
test: Fix compiler warnings caused by unused code
Signed-off-by: Stefan Weil <sw@weilnetz.de>
commit 5f96022d3bca15050958512f1c15a0067d2225af
Author: Stefan Weil <sw@weilnetz.de>
Date: Tue Nov 13 19:38:32 2012 +0100
pixman: Use uintptr_t in type casts from pointer to integral value
These modifications fix lots of compiler warnings for systems where
sizeof(unsigned long) != sizeof(void *).
This is especially true for MinGW-w64 (64 bit Windows).
Signed-off-by: Stefan Weil <sw@weilnetz.de>
commit a96efd02d68b726d6d140d0bd211bc7cc1be127a
Author: Stefan Weil <sw@weilnetz.de>
Date: Tue Nov 13 19:44:15 2012 +0100
Always use xmmintrin.h for 64 bit Windows
MinGW-w64 uses the GNU compiler and does not define _MSC_VER.
Nevertheless, it provides xmmintrin.h and must be handled
here like the MS compiler. Otherwise compilation fails due to
conflicting declarations.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
commit 899e0d60524bcd2cff6cad6acb310181fb96b39a
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Nov 12 22:48:51 2012 +0100
MIPS: DSPr2: Added several nearest neighbor fast paths with a8 mask:
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench -n
Referent (before):
over_8888_8_0565 = L1: 9.62 L2: 8.85 M: 7.40 ( 39.27%) HT: 5.67 VT: 5.61 R: 5.45 RT: 2.98 ( 22Kops/s)
over_0565_8_0565 = L1: 7.90 L2: 7.49 M: 6.72 ( 26.75%) HT: 5.24 VT: 5.20 R: 5.06 RT: 2.90 ( 22Kops/s)
Optimized:
over_8888_8_0565 = L1: 18.51 L2: 16.82 M: 12.13 ( 64.43%) HT: 10.06 VT: 9.88 R: 9.54 RT: 5.63 ( 31Kops/s)
over_0565_8_0565 = L1: 14.82 L2: 13.94 M: 11.34 ( 45.20%) HT: 9.45 VT: 9.35 R: 9.03 RT: 5.50 ( 31Kops/s)
commit a432bdce6637aa96060b9f1e25aae51c6fb95670
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Nov 12 22:48:53 2012 +0100
MIPS: DSPr2: Added more fast-paths for OVER operation:
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_n_0565 = L1: 14.48 L2: 21.36 M: 17.57 ( 23.30%) HT: 6.95 VT: 6.44 R: 6.39 RT: 2.16 ( 22Kops/s)
over_n_8888 = L1: 92.60 L2: 86.13 M: 24.41 ( 64.74%) HT: 8.94 VT: 8.06 R: 8.00 RT: 2.53 ( 25Kops/s)
Optimized:
over_n_0565 = L1: 27.65 L2: 189.22 M: 58.19 ( 77.12%) HT: 52.80 VT: 49.88 R: 47.53 RT: 23.67 ( 72Kops/s)
over_n_8888 = L1: 235.99 L2: 230.86 M: 29.09 ( 77.11%) HT: 27.95 VT: 27.24 R: 26.58 RT: 18.10 ( 67Kops/s)
commit e33e9d3f55590c369c532b0305f928045e0a46cb
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Nov 12 22:48:52 2012 +0100
MIPS: DSPr2: Added more fast-paths for SRC operation:
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
src_n_8_8888 = L1: 13.79 L2: 22.47 M: 17.55 ( 58.28%) HT: 6.95 VT: 6.46 R: 6.34 RT: 2.07 ( 20Kops/s)
src_n_8_8 = L1: 20.22 L2: 20.21 M: 18.20 ( 24.17%) HT: 6.65 VT: 6.22 R: 6.11 RT: 2.03 ( 20Kops/s)
Optimized:
src_n_8_8888 = L1: 58.31 L2: 53.34 M: 25.69 ( 85.29%) HT: 22.55 VT: 21.44 R: 19.91 RT: 10.34 ( 48Kops/s)
src_n_8_8 = L1: 102.60 L2: 89.43 M: 65.01 ( 86.32%) HT: 37.87 VT: 37.02 R: 32.43 RT: 12.41 ( 51Kops/s)
commit d881e1f5801ca0aefecccb43db05db539b3080d5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Nov 11 14:05:54 2012 -0500
Allow src and dst to be identical in pixman_f_transform_invert()
It is useful to be able to invert a matrix in place, but currently
pixman_f_transform_invert() will produce wrong results if you pass the
same matrix as both source and destination.
Fix that by inverting into a temporary matrix and then copying that to
the destination.
commit 614e7aaf14652c726b067bbc7562ef237dcd50de
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Nov 8 03:11:51 2012 -0500
pixman.h: Add typedefs for pixman_f_transform and pixman_f_vector
commit b2e0e240fec4a8eaa7fe8da3a6807bcb8ac97edf
Author: Joshua Root <jmr@macports.org>
Date: Fri Nov 9 14:39:14 2012 +1100
Fix undeclared variable use and sysctlbyname error handling on ppc
Fixes bug 56889.
commit 400436dc52450359de35cac9efa6aea631cf34e9
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 31 13:14:07 2012 -0400
pixman_image_composite: Reduce opaque masks to NULL
When the mask is known to be opaque, we might as well reduce it to
NULL to take advantage of the various fast paths that operate on NULL
masks.
commit f2ada9e63fdd1034766e86d71008e0d819074f27
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Nov 7 13:45:09 2012 -0500
Post-release version bump to 0.29.1
commit 8a2ff3e0ef0449921d962f8b9c093c2353ffd945
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Nov 7 13:40:34 2012 -0500
Pre-release version bump to 0.28.0
commit 4b91f6ca72db3e8cbd7e97e9ef44be2f8994040d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Oct 25 10:42:26 2012 -0400
Post-release version bump to 0.27.5
commit 0de3f3344908757b61f9f51b59d4a39f7447451b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Oct 25 10:35:27 2012 -0400
Pre-release version bump to 0.27.4
commit f0750258459580bbc9f136710f8e5c551bd01a0f
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Sun Oct 14 11:58:52 2012 +0200
MIPS: DSPr2: Added more fast-paths for ADD operation: - add_8888_8888_8888 - add_8_8 - add_8888_8888
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
add_8888_8888_8888 = L1: 17.55 L2: 13.35 M: 8.13 ( 93.95%) HT: 6.60 VT: 6.64 R: 6.45 RT: 3.47 ( 26Kops/s)
add_8_8 = L1: 86.07 L2: 84.89 M: 62.36 ( 90.11%) HT: 36.36 VT: 34.74 R: 29.56 RT: 11.56 ( 52Kops/s)
add_8888_8888 = L1: 95.59 L2: 73.05 M: 17.62 (101.84%) HT: 15.46 VT: 15.01 R: 13.94 RT: 6.71 ( 42Kops/s)
Optimized:
add_8888_8888_8888 = L1: 41.52 L2: 33.21 M: 11.97 (138.45%) HT: 10.47 VT: 10.19 R: 9.42 RT: 4.86 ( 32Kops/s)
add_8_8 = L1: 135.06 L2: 104.82 M: 57.13 ( 82.58%) HT: 34.79 VT: 36.60 R: 28.28 RT: 10.54 ( 51Kops/s)
add_8888_8888 = L1: 176.36 L2: 67.82 M: 17.48 (101.06%) HT: 15.16 VT: 14.62 R: 13.88 RT: 8.05 ( 45Kops/s)
commit ca83717c63813b6f53f89dd94b5771bd32382a18
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Sun Oct 14 11:58:51 2012 +0200
MIPS: DSPr2: Added more fast-paths for ADD operation: - add_0565_8_0565 - add_8888_8_8888 - add_8888_n_8888
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
add_0565_8_0565 = L1: 8.89 L2: 8.37 M: 7.35 ( 29.22%) HT: 5.90 VT: 5.85 R: 5.67 RT: 3.31 ( 26Kops/s)
add_8888_8_8888 = L1: 17.22 L2: 14.17 M: 9.89 ( 65.56%) HT: 7.57 VT: 7.50 R: 7.36 RT: 4.10 ( 30Kops/s)
add_8888_n_8888 = L1: 17.79 L2: 14.87 M: 10.35 ( 54.89%) HT: 5.19 VT: 4.93 R: 4.92 RT: 1.90 ( 19Kops/s)
Optimized:
add_0565_8_0565 = L1: 21.72 L2: 20.01 M: 14.96 ( 59.54%) HT: 12.03 VT: 11.81 R: 11.26 RT: 6.33 ( 37Kops/s)
add_8888_8_8888 = L1: 47.42 L2: 38.64 M: 15.90 (105.48%) HT: 13.34 VT: 13.03 R: 11.84 RT: 6.63 ( 38Kops/s)
add_8888_n_8888 = L1: 54.83 L2: 42.66 M: 17.36 ( 92.11%) HT: 15.20 VT: 14.82 R: 13.66 RT: 7.83 ( 41Kops/s)
commit 52d20e692ebc605077448ab6f52fd257f83481b2
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Sun Oct 14 11:58:50 2012 +0200
MIPS: DSPr2: Added fast-paths for ADD operation: - add_n_8_8 - add_n_8_8888 - add_8_8_8
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
add_n_8_8 = L1: 41.37 L2: 37.83 M: 30.38 ( 60.45%) HT: 23.70 VT: 22.85 R: 21.51 RT: 10.32 ( 45Kops/s)
add_n_8_8888 = L1: 16.01 L2: 14.46 M: 11.64 ( 46.32%) HT: 5.50 VT: 5.18 R: 5.06 RT: 1.89 ( 18Kops/s)
add_8_8_8 = L1: 13.26 L2: 12.47 M: 11.16 ( 29.61%) HT: 8.09 VT: 8.04 R: 7.68 RT: 3.90 ( 29Kops/s)
Optimized:
add_n_8_8 = L1: 96.03 L2: 79.37 M: 51.89 (103.31%) HT: 32.59 VT: 31.29 R: 28.52 RT: 11.08 ( 46Kops/s)
add_n_8_8888 = L1: 53.61 L2: 46.92 M: 23.78 ( 94.70%) HT: 19.06 VT: 18.64 R: 17.30 RT: 9.15 ( 43Kops/s)
add_8_8_8 = L1: 89.65 L2: 66.82 M: 37.10 ( 98.48%) HT: 22.10 VT: 21.74 R: 20.12 RT: 8.12 ( 41Kops/s)
commit 9df645dfb04b5a790faabe1e9a84fc37287d91b0
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Fri Oct 19 01:59:16 2012 +0300
Workaround for FTBFS with gcc 4.6 (http://gcc.gnu.org/PR54965)
GCC 4.6 has problems with force_inline, so just use normal inline instead.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=55630
commit 31e5a0a393defb8e0534ab1bde29ab23fc04795d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Oct 12 18:34:33 2012 -0400
pixman_composite_trapezoids(): don't clip to extents for some operators
pixman_composite_trapezoids() is supposed to composite across the
entire destination, but it actually only composites across the extent
of the trapezoids. For operators such as ADD or OVER this doesn't
matter since a zero source has no effect on the destination. But for
operators such as SRC or IN, it does matter.
So for such operators where a zero source has an effect, don't clip to
the trap extents.
commit 65db2362e2793a527c2e831cceb81d8d6ad51b8f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Oct 12 18:29:56 2012 -0400
pixman_composite_trapezoids(): Factor out extents computation
The computation of the extents rectangle is moved to its own
function.
commit 2d9cb563b415e90cef898de03de7ed9c6f091db1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Oct 12 18:07:29 2012 -0400
Add new pixman_image_create_bits_no_clear() API
When pixman_image_create_bits() function is given NULL for bits, it
will allocate a new buffer and initialize it to zero. However, in some
cases, only a small region of the image is actually used; in that case
it is wasteful to touch all of the memory.
The new pixman_image_create_bits_no_clear() works exactly like
_create_bits() except that it doesn't initialize any newly allocated
memory.
commit af803be17b4ea5f53db9af57b6c6ef06db99ebbd
Author: Benny Siegert <bsiegert@gmail.com>
Date: Sun Oct 14 16:28:48 2012 +0200
configure.ac: PIXMAN_LINK_WITH_ENV fix
(fixes bug #52101)
On MirBSD, the compiler produces a (harmless) warning when the compiler
is called without the standard CFLAGS:
foo.c:0: note: someone does not honour COPTS correctly, passed 0 times
However, PIXMAN_LINK_WITH_ENV considers _any_ output on stderr as an
error, even if the exit status of the compiler is 0. Furthermore, it
resets CFLAGS and LDFLAGS at the start. On MirBSD, this will lead to a
warning in each test, making all such tests fail. In particular, the
pthread_setspecific test fails, thus pixman is compiled without thread
support. This leads to compile errors later on, or at least it did when
I tried this on pkgsrc. Re-adding the saved CFLAGS, LDFLAGS and LIBS
before the test makes it work.
The second hunk inverts the order of the pthread flag checks. On BSD
systems (this is true at least on OpenBSD and MirBSD), both -lpthread
and -pthread work but the latter is "preferred", whatever this means.
commit 6e56098c0338ce74228187e4c96fed1a66cb0956
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Sep 29 02:29:22 2012 +0300
Add missing force_inline to in() function used for C fast paths
commit 90bcafa495c1074b0ea1d35f99aa4837917494bd
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sun Jul 8 23:10:00 2012 +0300
MIPS: skip runtime detection for DSPr2 if -mdspr2 option is in CFLAGS
This provides a way to enable MIPS DSP ASE optimizations if running
under qemu-user (where /proc/cpuinfo contains information about the
host processor instead of the emulated one). Can be used for running
pixman test suite in qemu-user when having no access to real MIPS
hardware.
commit d5f2f39319fc358cccda60abe0bc927bd27131c1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Oct 11 04:04:04 2012 -0400
region: Remove overlap argument from pixman_op()
This is used to compute whether the regions in question overlap, but
nothing makes use of this information, so it can be removed.
commit cb4f325ec0e844008075fe89ceb9f634ae41e7c9
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Oct 11 04:07:00 2012 -0400
region: Formatting fix
The while part of a do/while loop was formatted as if it were a while
loop with an empty body. Probably some indent tool misinterpreted the
code at some point.
commit 15b153d633fcfce886c30fee98599fddbf019ee8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Oct 7 17:58:32 2012 -0400
Only regard images as pixbufs if they have identity transformations
In order for a src/mask pair to be considered a pixbuf, they have to
have identical transformations, but we don't check for that. Since the
only fast paths we have for pixbufs require identity transformations,
it sufficies to check that both source and mask are
untransformed.
This is also the reason that this bug can't be triggered by any test
code - if the source and mask had different transformations, we would
consider them a pixbuf, but then wouldn't take the fast path because
at least one of the transformations would be different from the
identity.
commit 3d81d89c292058522cce91338028d9b4c4a23c24
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Oct 4 12:41:08 2012 -0400
Remove BUILT_SOURCES
pixman-combine32.[ch] were the only built sources, so BUILT_SOURCES
can now be removed.
commit ec7aa11a6e4d0d02df9b339dfce9460dce954602
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 23 03:52:34 2012 -0400
Speed up pixman_expand_to_float()
GCC doesn't move the divisions out of the loop, so do it manually by
looking up the four (1.0f / mask) values in a table. Table lookups are
used under the theory that one L2 hit plus three L1 hits is preferable
to four floating point divisions.
commit 8ccda2be30adf9dfcc3087b38a5062258324dcce
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Sep 21 18:36:16 2012 -0400
Don't auto-generate pixman-combine32.[ch] anymore
Since pixman-combine64.[ch] are not used anymore, there is no point
generating these files from pixman-combine.[ch].template.
Also get rid of dependency on perl in configure.ac.
commit 4afd20cc71ba75190ebcead774b946157d0995a6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 18 14:39:29 2012 -0400
Remove 64 bit pipeline
The 64 bit pipeline is not used anymore, so it can now be removed.
Don't generate pixman-combine64.[ch] anymore. Don't generate the
pixman-srgb.c anymore. Delete all the 64 bit fetchers in
pixman-access.c, all the 64 bit iterator functions in
pixman-bits-image.c and all the functions that expand from 8 to 16
bits.
commit 5ff0bbd9721bb216a8332cbde18adc458af3cdec
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 18 14:11:07 2012 -0400
Switch the wide pipeline over to using floating point
In pixman-bits-image.c, remove bits_image_fetch_untransformed_64() and
add bits_image_fetch_untransformed_float(); change
dest_get_scanline_wide() to produce a floating point buffer,
In the gradients, change *_get_scanline_wide() to call
pixman_expand_to_float() instead of pixman_expand().
In pixman-general.c change the wide Bpp to 16 instead of 8, and
initialize the buffers to 0 to prevent NaNs from causing trouble.
In pixman-noop.c make the wide solid iterator generate floating point
pixels.
In pixman-solid-fill.c, cache a floating point pixel, and make the
wide iterator generate floating point pixels.
Bug fix in bits_image_fetch_untransformed_repeat_normal
commit e75bacc5f9196c3980ce331c7d53de5b7e92d699
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 18 13:22:15 2012 -0400
pixman-access.c: Add floating point accessor functions
Three new function pointer fields are added to bits_image_t:
fetch_scanline_float
fetch_pixel_float
store_scanline_float
similar to the existing 32 and 64 bit accessors. The fetcher_info_t
struct in pixman_access similarly gets a new get_scanline_float field.
For most formats, the new get_scanline_float field is set to a new
function fetch_scanline_generic_float() that first calls the 32 bit
fetcher uses the 32 bit scanline fetcher and then expands these pixels
to floating point.
For the 10 bpc formats, new floating point accessors are added that
use pixman_unorm_to_float() and pixman_float_to_unorm() to convert
back and forth.
The PIXMAN_a8r8g8b8_sRGB format is handled with a 256-entry table that
maps 8 bit sRGB channels to linear single precision floating point
numbers. The sRGB->linear direction can then be done with a simple
table lookup.
The other direction is currently done with 4096-entry table which
works fine for 16 bit integers, but not so great for floating
point. So instead this patch uses a binary search in the sRGB->linear
table. The existing 32 bit accessors for the sRGB format are also
converted to use this method.
commit 23252393a2dcae4dc5a7d03727dd66cdd81286ba
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 18 13:02:31 2012 -0400
pixman-utils.c, pixman-private.h: Add floating point conversion routines
A new struct argb_t containing a floating point pixel is added to
pixman-private.h and conversion routines are added to pixman-utils.c
to convert normalized integers to and from that struct.
New functions:
- pixman_expand_to_float()
Expands a buffer of integer pixels to a buffer of argb_t pixels
- pixman_contract_from_float()
Converts a buffer of argb_t pixels to a buffer integer pixels
- pixman_float_to_unorm()
Converts a floating point number to an unsigned normalized integer
- pixman_unorm_to_float()
Converts an unsigned normalized integer to a floating point number
commit 4760599ff3008ab0f1e36a7d4d362362817fd930
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 9 17:56:53 2012 -0400
Add combiner test
This test runs the new floating point combiners on random input with
divide-by-zero exceptions turned on.
With the floating point combiners the only thing we guarantee is that
divide-by-zero exceptions are not generated, so change
enable_fp_exceptions() to only enable those, and rename accordingly.
commit a5b459114e35c7a946362f1e5857e8a87a403ec3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri May 14 00:42:04 2010 -0400
Add pixman-combine-float.c
This file contains floating point implementations of combiners for all
pixman operators. These combiners operate on buffers containing single
precision floating point pixels stored in (a, r, g, b) order.
The combiners are added to the pixman_implementation_t struct, but
nothing uses them yet.
This commit incorporates a number of bug fixes contributed by Andrea
Canciani.
Some notes:
- The combiners are making sure to never divide by zero regardless of
input, so an application could enable divide-by-zero exceptions and
pixman wouldn't generate any.
- The operators are implemented according to the Render spec. Ie.,
- If the input pixels are between 0 and 1, then so is the output.
- The source and destination coefficients for the conjoint and
disjoint operators are clamped to [0, 1].
- The PDF operators are not described in the render spec, and the
implementation here doesn't do any clamping except in the final
conversion from floating point to destination format.
All of the above will need to be rethought if we add support for pixel
formats that can support negative and greater-than-one pixels. It is
in fact already the case in principle that convolution filters can
produce pixels with negative values, but since these go through the
broken "wide" path that narrows everything to 32 bits, these negative
values don't currently survive to the combiners.
commit 7a9c2d586b2349b5e17966a96d7fe8c390abb75a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jun 2 00:15:54 2012 -0400
blitters-test: Prepare for floating point
Comment out some formats in blitters-test that are going to rely on
floating point in some upcoming patches.
commit 600a06c81d3999bc6551c7e889726ed7b8bec84d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jul 11 03:27:49 2012 -0400
glyph-test: Prepare for floating point
In preparation for an upcoming change of the wide pipe to use floating
point, comment out some formats in glyph-test that are going to be
using floating point and update the CRC32 value to match.
commit 2e17b6dd4ee7c32684fb7ffc70d3ad3ebf7cb2ef
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 29 10:34:17 2012 -0400
Make pixman.h more const-correct
Add const to pointer arguments when the function doesn't change the
pointed-to data.
Also in add_glyphs() in pixman-glyph.c make 'white' in add_glyphs()
static and const.
commit 183afcf1d95625a1f237ef349a1c8931d94d000d
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Sep 30 11:59:23 2012 -0700
iwmmxt: Don't define dummy _mm_empty for >=gcc-4.8
Definition was not present in <4.8.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55451
commit d4b72eb6ccc1f004efedbc6552ee22499350be4d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 29 18:15:54 2012 -0400
rotate-test: Call image_endian_swap() in make_image()
Otherwise the test fails on big-endian.
Tested-by: Matt Turner <mattst88@gmail.com>
commit aff796d6cee4cb81f0352c2f7d0c994229bd5ca1
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Jun 25 22:36:52 2012 -0400
Add scaled nearest repeat fast paths
Before this patch it was often faster to scale and repeat
in two passes because each pass used a fast path vs.
the slow path that the single pass approach takes. This
makes it so that the single pass approach has competitive
performance.
commit 05560828c495ed9226b43b30e1824447e3d8eff3
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Sep 21 16:34:24 2012 -0700
sse2: mark pack_565_2x128_128 as static force_inline
commit de60e2e0e3eb6084f8f14b63f25b3cbfb012943f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 03:13:09 2012 -0400
Fix for infinite-loop test
The infinite loop detected by "affine-test 212944861" is caused by an
overflow in this expression:
max_x = pixman_fixed_to_int (vx + (width - 1) * unit_x) + 1;
where (width - 1) * unit_x doesn't fit in a signed int. This causes
max_x to be too small so that this:
src_width = 0
while (src_width < REPEAT_NORMAL_MIN_WIDTH && src_width <= max_x)
src_width += src_image->bits.width;
results in src_width being 0. Later on when src_width is used for
repeat calculations, we get the infinite loop.
By casting unit_x to int64_t, the expression no longer overflows and
affine-test 212944861 and infinite-loop no longer loop forever.
commit aa311a4641b79eac39fe602b75d7bee3de9b1dce
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 13 19:31:29 2012 -0400
test: Add inifinite-loop test
This test demonstrates a bug where a certain transformation matrix can
result in an infinite loop. It was extracted as a standalone version
of "affine-test 212944861".
If given the option -nf, the test program will not call fail_after()
and therefore potentially run forever.
commit d5c721768c9811ce22bc0cd50bdf1c7bccc264e0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 13 19:29:19 2012 -0400
affine-test: Print out the transformation matrix when verbose
Printing out the translation and scale is a bit misleading because the
actual transformation matrix can be modified in various other ways.
Instead simply print the whole transformation matrix that is actually
used.
commit 292fce7a230dd253fff71bd1bb2fbf9b7996a892
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Fri Sep 14 09:31:26 2012 +0200
MIPS: DSPr2: Added OVER combiner and two new fast paths: - over_8888_8888 - over_8888_8888_8888
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_8888_8888 = L1: 19.61 L2: 17.10 M: 11.16 ( 59.20%) HT: 16.47 VT: 15.81 R: 14.82 RT: 8.90 ( 50Kops/s)
over_8888_8888_8888 = L1: 13.56 L2: 11.22 M: 7.46 ( 79.18%) HT: 6.24 VT: 6.20 R: 6.11 RT: 3.95 ( 29Kops/s)
Optimized:
over_8888_8888 = L1: 46.42 L2: 36.70 M: 16.69 ( 88.57%) HT: 17.11 VT: 16.55 R: 15.31 RT: 9.48 ( 52Kops/s)
over_8888_8888_8888 = L1: 26.06 L2: 22.53 M: 11.49 (121.91%) HT: 9.93 VT: 9.62 R: 9.19 RT: 5.75 ( 36Kops/s)
commit 28c9bd4866088a017a0cdf3f0fb47467b97bbc29
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Fri Sep 14 09:31:25 2012 +0200
MIPS: DSPr2: Added fast-paths for OVER operation: - over_0565_n_0565 - over_0565_8_0565
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_0565_n_0565 = L1: 7.56 L2: 7.24 M: 6.16 ( 16.38%) HT: 4.01 VT: 3.84 R: 3.79 RT: 1.66 ( 18Kops/s)
over_0565_8_0565 = L1: 7.43 L2: 7.05 M: 5.98 ( 23.85%) HT: 5.27 VT: 5.23 R: 5.09 RT: 3.14 ( 28Kops/s)
Optimized:
over_0565_n_0565 = L1: 15.47 L2: 14.52 M: 12.30 ( 32.65%) HT: 10.76 VT: 10.57 R: 10.27 RT: 6.63 ( 46Kops/s)
over_0565_8_0565 = L1: 15.47 L2: 14.61 M: 11.78 ( 46.92%) HT: 10.00 VT: 9.84 R: 9.40 RT: 5.81 ( 43Kops/s)
commit b660eb30b4e5f690d191b26a500a6ba224986b3a
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Fri Sep 14 09:31:24 2012 +0200
MIPS: DSPr2: Added fast-paths for OVER operation: - over_8888_n_0565 - over_8888_8_0565
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_8888_n_0565 = L1: 8.95 L2: 8.33 M: 6.95 ( 27.74%) HT: 4.27 VT: 4.07 R: 4.01 RT: 1.74 ( 19Kops/s)
over_8888_8_0565 = L1: 8.86 L2: 8.11 M: 6.72 ( 35.71%) HT: 5.68 VT: 5.62 R: 5.47 RT: 3.35 ( 30Kops/s)
Optimized:
over_8888_n_0565 = L1: 18.76 L2: 17.55 M: 13.11 ( 52.19%) HT: 11.35 VT: 11.10 R: 10.88 RT: 6.94 ( 47Kops/s)
over_8888_8_0565 = L1: 18.14 L2: 16.79 M: 12.10 ( 64.25%) HT: 10.24 VT: 9.98 R: 9.63 RT: 5.89 ( 43Kops/s)
commit 37e3368e20cee42f1e1039bb112ed9a09d21156f
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Fri Sep 14 09:31:23 2012 +0200
MIPS: DSPr2: Added fast-paths for OVER operation: - over_8888_n_8888 - over_8888_8_8888
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench results
Referent (before):
over_8888_n_8888 = L1: 9.92 L2: 11.27 M: 8.50 ( 45.23%) HT: 4.70 VT: 4.45 R: 4.49 RT: 1.85 ( 20Kops/s)
over_8888_8_8888 = L1: 12.54 L2: 10.86 M: 8.18 ( 54.36%) HT: 6.53 VT: 6.45 R: 6.41 RT: 3.83 ( 33Kops/s)
Optimized:
over_8888_n_8888 = L1: 28.02 L2: 24.92 M: 14.72 ( 78.15%) HT: 13.03 VT: 12.65 R: 12.00 RT: 7.49 ( 49Kops/s)
over_8888_8_8888 = L1: 26.92 L2: 23.93 M: 13.65 ( 90.58%) HT: 11.68 VT: 11.29 R: 10.56 RT: 6.37 ( 45Kops/s)
commit f580c4c5b2a435ebe2751ce0dace6c42568557f8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Sep 21 16:52:16 2012 -0400
pixman-combine.c.template: Formatting clean-ups
Various formatting fixes, and removal of some obsolete comments about
strength reduction of operators.
commit 58f8704664d1f8c812a85b929a50818f213a8438
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 20 21:43:24 2012 -0400
Fix bugs in pixman-image.c
In the checks for whether the transforms are rotation matrices "-1"
and "1" were used instead of the correct -pixman_fixed_1 and
pixman_fixed_1.
Fixes test suite failure for rotate-test.
commit 550dfc5e7ecd5b099c1009d77c56cb91a62caeb1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 20 18:41:33 2012 -0400
Add rotate-test.c test program
This program exercises a bug in pixman-image.c where "-1" and "1" were
used instead of the correct "- pixman_fixed_1" and "pixman_fixed_1".
With the fast implementation enabled:
% ./rotate-test
rotate test failed! (checksum=35A01AAB, expected 03A24D51)
Without it:
% env PIXMAN_DISABLE=fast ./rotate-test
pixman: Disabled fast implementation
rotate test passed (checksum=03A24D51)
V2: The first version didn't have lcg_srand (testnum) in test_transform().
commit 2ab77c97a5a3a816d6383bdc3b6c8bdceb0383b7
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Sep 19 12:04:11 2012 -0400
Fix bugs in component alpha combiners for separable PDF operators
In general, the component alpha version of an operator is supposed to
do this:
- multiply source with mask in all channels
- multiply mask with source alpha in all channels
- compute the regular operator in all channels using the
mask value whenever source alpha is called for
The first two steps are usually accomplished with the function
combine_mask_ca(), but for operators where source alpha is not used,
such as SRC, ADD and OUT, the simpler function
combine_mask_value_ca(), which doesn't compute the new mask values,
can be used.
However, the PDF blend modes generally *do* make use of source alpha,
so they can't use combine_mask_value_ca() as they do now. They have to
use combine_mask_ca().
This patch fixes this in combine_multiply_ca() and the CA combiners
generated by PDF_SEPARABLE_BLEND_MODE.
commit c4b69e706e63e01fbc70e0026c2079007c89de14
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Sep 19 19:46:13 2012 -0400
Fix bug in fast_composite_scaled_nearest()
The fast_composite_scaled_nearest() function can be called when the
format is x8b8g8r8. In that case pixels fetched in fetch_nearest()
need to have their alpha channel set to 0xff.
Fixes test suite failure in scaling-test.
Reviewed-by: Matt Turner <mattst88@gmail.com>
commit 35be7acb660228d4e350b5806c81e55606352e0d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Sep 19 19:26:49 2012 -0400
Add PIXMAN_x8b8g8r8 and PIXMAN_a8b8g8r8 formats to scaling-test
Update the CRC values based on what the general implementation
reports. This reveals a bug in the fast implementation:
% env PIXMAN_DISABLE="mmx sse2" ./test/scaling-test
pixman: Disabled mmx implementation
pixman: Disabled sse2 implementation
scaling test failed! (checksum=AA722B06, expected 03A23E0C)
vs.
% env PIXMAN_DISABLE="mmx sse2 fast" ./test/scaling-test
pixman: Disabled fast implementation
pixman: Disabled mmx implementation
pixman: Disabled sse2 implementation
scaling test passed (checksum=03A23E0C)
Reviewed-by: Matt Turner <mattst88@gmail.com>
commit 9decb9a97975ae6bf25a42c0fd2eaa21b166c36d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 19:10:56 2012 -0400
implementation: Rename delegate to fallback
At this point the chain of implementations has nothing to do with the
delegation design pattern anymore, so rename the delegate pointer to
'fallback'.
commit b96599ccf353e89f95aa106853fcf310203c5874
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 13:58:45 2012 -0400
_pixman_implementation_create(): Initialize implementation with memset()
All the function pointers are NULL by default now, so we can just zero
the struct. Also write the function a little more compactly.
commit 9539a18832c278ca0f6f572d8765932be6c9ad65
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 13:53:17 2012 -0400
Rename _pixman_lookup_composite_function() to _pixman_implementation_lookup_composite()
And move it into pixman-implementation.c which is where it belongs
logically.
commit ee6af72dadaf9eb049bfeb35dc9ff57c3902403a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 13:20:52 2012 -0400
Move delegation of src/dest iter init into pixman-implementation.c
Instead of relying on each implementation to delegate when an iterator
can't be initialized, change the type of iterator initializers to
boolean and make pixman-implementation.c do the delegation whenever an
iterator initializer returns FALSE.
commit c710d0fae2a9dc7d20913e5e39a1bb53f7c942db
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 13:08:51 2012 -0400
Move fill delegation into pixman-implementation.c
As in the blt commit, do the delegation in pixman-implementation.c
whenever the implementation fill returns FALSE instead of relying on
each implementation to do it by itself.
With this change there is no longer any reason for the implementations
to have one fill function that delegates and one that actually blits,
so consolidate those in the NEON, DSPr2, SSE2, and MMX
implementations.
commit 534507ba3b00b9aaadc9f181c282b01e4e2fe415
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 13:03:10 2012 -0400
Move blt delegation into pixman-implementation.c
Rather than require each individual implementation to do the
delegation for blt, just do it in pixman-implementation.c whenever the
implementation blt returns FALSE.
With this change, there is no longer any reason for the
implementations to have one blt function that delegates and one that
actually blits, so consolidate those in the NEON, DSPr2, SSE2, and MMX
implementations.
commit 7ef4436abbdb898dc656ebb5832ed5d6fd764bba
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Sep 15 12:48:42 2012 -0400
implementation: Write lookup_combiner() in a less convoluted way.
Instead of initializing an array on the stack, just use a simple
switch to select which set of combiners to look up in.
commit 3124a51abb89475b8c5045bc96e04c5852694a16
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Sep 16 00:25:38 2012 -0400
build: Remove useless DEP_CFLAGS/DEP_LIBS variables
commit 46e4faf8ef34d49f15e1946d105289fb06365553
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Jun 21 06:07:07 2012 +0200
build: Improve win32 build system
Handle cross-directory dependencies using PHONY targets and clean up
some redundancies.
commit c89efdd211cf7cd3dc69a4140045ceab6f445730
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Jul 17 16:14:20 2012 +0200
mmx: Fix x86 build on MSVC
The MSVC compiler is very strict about variable declarations after
statements.
Move all the declarations of each block before any statement in
the same block to fix multiple instances of:
pixman-mmx.c(xxxx) : error C2275: '__m64' : illegal use of this type
as an expression
commit 1e3e569b04f45592ce2174e48df0fcb333ce0ad3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 26 18:23:53 2012 -0400
test/utils.c: Use pow(), not powf() in sRGB conversion routines
These functions are operating on double precision values, so use pow()
instead of powf().
commit 8577daba04e60c1b4c44ce01c6874a573952913a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 26 18:13:47 2012 -0400
pixel_checker: Move sRGB conversion into get_limits()
The sRGB conversion has to be done every time the limits are being
computed. Without this fix, pixel_checker_get_min/max() will produce
the wrong results when called from somewhere other than
pixel_checker_check().
commit 62eb6e5e054da498e38da80ba8143f0a069b0c17
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 25 17:14:50 2012 -0400
Remove obsolete TODO file
commit 384846b38cfb5e1895ae49c40adbf72a85b63d95
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 19 13:45:21 2012 -0400
Remove pointless declaration of _pixman_image_get_scanline_generic_64()
This declaration used to be necessary when
_pixman_image_get_scanline_generic_64() referred to a structure that
itself referred back to _pixman_image_get_scanline_generic_64().
commit 09cb1ae10b1976970233c934d27c36e0a4203e1c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jun 9 09:15:53 2012 -0400
demos: Add srgb_trap_test.c
This demo program composites a bunch of trapezoids side by side with
and without gamma aware compositing.
commit 04e878c231ad3624c57e51a5fcdc55a177d4dc0f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jun 9 09:42:56 2012 -0400
Make show_image() cope with more formats
This makes show_image() deal with more formats than just a8r8g8b8, in
particular, a8r8g8b8_sRGB can now be handled.
Images that are passed to show_image with a format of a8r8g8b8_sRGB
are displayed without modification under the assumption that the
monitor is approximately sRGB.
Images with a format of a8r8g8b8 are also displayed without
modification since many other users of show_image() have been
generating essentially sRGB data with this format. Other formats are
also assumed to be gamma compressed; these are converted to a8r8g8b8
before being displayed.
With these changes, srgb-test.c doesn't need to do its own conversion
anymore.
commit 8db9ec9814a3dcd8211ec60cd4fd3c9ae9d77924
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jul 31 15:01:16 2012 -0400
Define TIMER_BEGIN and TIMER_END even when timers are not enabled
This allows code that uses these macros to build when timers are
disabled.
commit da5268cc19e03b24737dec3e2c51296156b869a8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 1 15:56:13 2012 -0400
Post-release version bump to 0.27.3
commit e8ddef78b67a0699a990f3c785396d4b1955f972
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 1 15:22:57 2012 -0400
Pre-release version bump to 0.27.2
commit c214ca51a00fdd0e773ace32076c3ed8a5d0d482
Author: Sebastian Bauer <mail@sebastianbauer.info>
Date: Tue Jul 31 07:30:32 2012 +0200
Use angle brackets form of including config.h
commit 98617b3796d12c18d8306cca590160caa3c95454
Author: Sebastian Bauer <mail@sebastianbauer.info>
Date: Tue Jul 31 07:30:31 2012 +0200
Added HAVE_CONFIG_H check before including config.h
commit 5b0563f39eb29e4ae431717696174da5e282c346
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 30 16:21:39 2012 -0400
glyph-test: Avoid setting solid images as alpha maps.
glyph-test would sometimes set a solid image as an alpha map, which is
not allowed. When this happened and the debug spew was enabled,
messages like this one would be generated:
*** BUG ***
In pixman_image_set_alpha_map: The expression
!alpha_map || alpha_map->type == BITS was false
Set a breakpoint on '_pixman_log_error' to debug
Fix this by not passing the ALLOW_SOLID flag to create_image() when
the resulting is to be used as an alpha map.
commit 38fe7cd7be388aae6dff7d9b9979eb4ffa5fa175
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 30 16:10:05 2012 -0400
stress-test: Avoid overflows in clip rectangles
The rectangles in the clip region set in set_general_properties()
would sometimes overflow, which would lead to messages like these:
*** BUG ***
In pixman_region32_union_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug
when the micro version number of pixman is even.
Fix this by detecting the overflow and clamping such that the x2/y2
coordinates are less than INT32_MAX.
commit 24d83cbf3df06505fa4cf827271aa2985414cfdd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 30 15:54:27 2012 -0400
Add make-srgb.pl to EXTRA_DIST
Otherwise make distcheck doesn't pass.
commit 72ba0b955504ecdc69f4cbf96a677b82be18b0cb
Author: Antti S. Lankila <alankila@bel.fi>
Date: Sun Jul 29 22:14:34 2012 +0300
Add tests to validate new sRGB behavior
Composite checks random combinations of operations that now also have
sRGB sources, masks and destinations, and stress-test validates the
read/write primitives.
commit a161a6ba2394aed68148304de83b8f2c185f4c32
Author: Antti S. Lankila <alankila@bel.fi>
Date: Sun Jul 29 21:56:18 2012 +0300
Add sRGB blending demo program
Simple sRGB color blender test can be used to determine if the sRGB processing
works as expected. It blends alpha ramps of purple and green together such that
at midpoint of image, 50 % blend of both is realized. At that point, sRGB-aware
processing yields a result close to #bbb rather than #888, which is the linear
light blending result.
The demo also contains the sample computation for sRGB premultiplied alpha.
commit 7460457f80b1482338318f0ddcdf5311659fae7b
Author: Antti S. Lankila <alankila@bel.fi>
Date: Sun Jul 29 21:46:58 2012 +0300
Add support for sRGB surfaces
sRGB format is defined as a new format type, PIXMAN_TYPE_ARGB_SRGB. One form of
this type is provided, PIXMAN_a8r8g8b8_sRGB. Use of an sRGB format triggers
wide processing, and the pixel fetch/store functions handle the relevant
conversion between color spaces. Pixman itself is thought to compose in the
linearized sRGB color space.
sRGB conversion is tabularized. For sRGB to linear, we are using only 256
values because the current source format uses 8 bits per component precision.
For linear to sRGB, it turns out that only 4096 brightness levels are required
to generate all of the 256 sRGB color values, and therefore only 12 bits per
component are considered during store. As a special case, a no-op
sRGB->linear->sRGB conversion is constructed to be lossless by adjusting the
sRGB->linear conversion table where necessary.
commit 1dcca0f7ae64e9a96f2feba85dd728c636744009
Author: Antti S. Lankila <alankila@bel.fi>
Date: Sat Jul 28 14:02:42 2012 +0300
Remove unnecessary dst initialization
The initialization work is already performed correctly in image_init().
commit 56321eff65832791252c7c324930d14c44d4d5f7
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 9 06:58:59 2012 -0400
Make pixman-mmx.c compile on x86-32 without optimization
When not optimizing, write _mm_shuffle_pi16() as a statement
expression with inline assembly. That way we avoid
__builtin_ia32_pshufw(), which is only available when compiling with
-msse, while still allowing the non-optimizing gcc to understand that
the second argument is a compile time constant.
Tested-by: Knut Petersen <knut_petersen@t-online.de>
commit 0c81957e9b4f83944075167ae27a955bb253e267
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jun 28 15:53:14 2012 -0400
Cleanups and simplifications in x86 CPU feature detection
A new function pixman_cpuid() is added that runs the cpuid instruction
and returns the results. On GCC this function uses inline assembly; on
MSVC, the function calls the __cpuid intrinsic.
There is also a new function called have_cpuid() which detects whether
cpuid is available. On x86-64 and MSVC, it simply returns TRUE; on
x86-32 bit, it checks whether the 22nd bit of eflags can be
modified. On MSVC this does have the consequence that pixman will no
longer work CPUS without cpuid (ie., older than 486 and some 486
models).
These two functions together makes it possible to write a generic
detect_cpu_features() in plain C. This function is then used in a new
have_feature() function that checks whether a specific set of feature
bits is available.
Aside from the cleanups and simplifications, the main benefit from
this patch is that pixman now can do feature detection on x86-64, so
that newer instruction sets such as SSSE3 and SSE4.1 can be used. (And
apparently the assumption that x86-64 CPUs always have MMX and SSE2 is
no longer correct: Knight's Corner is x86-64, but doesn't have them).
V2: Rename the constants in the getisax() code, as pointed out by Alan
Coopersmith. Also reinstate the result variable and initialize
features to 0.
V3: Fixes for the fact that the upper 32 bits of a 64 bit register are
zeroed whenever the corresponding 32 bit register is written to.
V4: Fixes for the fact that in 32 bit mode, when gcc is not optimizing
there were not enough registers available. The new code uses the "a",
"b", "c", and "d" constraints instead, and has two separate versions
for 32 and 64 bit modes.
commit 4d641c3803d508ba1eb40e61257949422ae2b90d
Author: Sebastian Bauer <mail@sebastianbauer.info>
Date: Sun Jul 8 18:48:45 2012 -0400
Changed the style of two function headers
Declare functions *_inverse() and *_contains_rectangle() in the same
way as the other functions are declared. This doesn't imply any semantic
changes. It's just a unification of coding styles.
commit 86ad09b548b45a5a5074d9d83970d5e7e7f89d31
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Jul 2 20:54:20 2012 +0200
MIPS: DSPr2: Added more bilinear fast paths (without mask)
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench -b
Referent (before):
src_8888_8888 = L1: 8.18 L2: 7.79 M: 6.32 ( 33.51%) HT: 5.78 VT: 5.70 R: 5.61 RT: 3.79 ( 29Kops/s)
src_8888_0565 = L1: 6.90 L2: 7.14 M: 6.47 ( 25.75%) HT: 5.54 VT: 5.51 R: 5.46 RT: 3.53 ( 28Kops/s)
src_0565_x888 = L1: 3.76 L2: 3.71 M: 3.37 ( 13.41%) HT: 3.26 VT: 3.22 R: 3.20 RT: 2.58 ( 23Kops/s)
src_0565_0565 = L1: 3.59 L2: 3.56 M: 3.47 ( 9.19%) HT: 3.19 VT: 3.18 R: 3.16 RT: 2.46 ( 22Kops/s)
over_8888_8888 = L1: 5.99 L2: 5.66 M: 4.95 ( 26.28%) HT: 4.40 VT: 4.38 R: 4.31 RT: 3.02 ( 26Kops/s)
add_8888_8888 = L1: 6.84 L2: 6.39 M: 5.48 ( 29.09%) HT: 4.80 VT: 4.79 R: 4.70 RT: 3.20 ( 27Kops/s)
Optimized:
src_8888_8888 = L1: 18.27 L2: 16.69 M: 12.87 ( 68.25%) HT: 11.80 VT: 11.61 R: 10.60 RT: 7.05 ( 41Kops/s)
src_8888_0565 = L1: 15.18 L2: 14.10 M: 11.75 ( 46.71%) HT: 10.64 VT: 10.50 R: 10.03 RT: 7.15 ( 41Kops/s)
src_0565_x888 = L1: 10.45 L2: 9.96 M: 9.23 ( 36.72%) HT: 8.39 VT: 8.29 R: 8.02 RT: 5.75 ( 37Kops/s)
src_0565_0565 = L1: 9.37 L2: 8.98 M: 8.50 ( 22.53%) HT: 7.71 VT: 7.66 R: 7.52 RT: 5.59 ( 37Kops/s)
over_8888_8888 = L1: 12.21 L2: 11.01 M: 8.56 ( 45.36%) HT: 7.71 VT: 7.64 R: 7.43 RT: 5.51 ( 36Kops/s)
add_8888_8888 = L1: 17.72 L2: 15.16 M: 10.78 ( 57.13%) HT: 9.46 VT: 9.30 R: 9.00 RT: 6.03 ( 38Kops/s)
commit 707a8be11280c4d395e662e869d4a98d75bb5571
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Mon Jul 2 20:54:19 2012 +0200
MIPS: DSPr2: Added several bilinear fast paths with a8 mask
Performance numbers before/after on MIPS-74kc @ 1GHz:
lowlevel-blt-bench -b
Referent (before):
src_8888_8_8888 = L1: 6.37 L2: 6.08 M: 5.46 ( 32.57%) HT: 4.64 VT: 4.61 R: 4.52 RT: 2.85 ( 23Kops/s)
src_8888_8_0565 = L1: 5.89 L2: 5.66 M: 5.11 ( 23.71%) HT: 4.36 VT: 4.34 R: 4.26 RT: 2.71 ( 22Kops/s)
src_0565_8_x888 = L1: 3.32 L2: 3.27 M: 3.17 ( 14.71%) HT: 2.86 VT: 2.84 R: 2.81 RT: 2.07 ( 19Kops/s)
src_0565_8_0565 = L1: 3.19 L2: 3.15 M: 3.05 ( 10.11%) HT: 2.75 VT: 2.74 R: 2.71 RT: 2.00 ( 18Kops/s)
over_8888_8_8888 = L1: 4.99 L2: 4.71 M: 4.11 ( 27.22%) HT: 3.59 VT: 3.58 R: 3.50 RT: 2.36 ( 21Kops/s)
add_8888_8_8888 = L1: 5.60 L2: 5.26 M: 4.52 ( 29.95%) HT: 3.92 VT: 3.89 R: 3.80 RT: 2.49 ( 21Kops/s)
Optimized:
src_8888_8_8888 = L1: 13.19 L2: 12.13 M: 9.75 ( 58.22%) HT: 8.60 VT: 8.44 R: 7.90 RT: 5.06 ( 33Kops/s)
src_8888_8_0565 = L1: 11.64 L2: 10.81 M: 9.18 ( 42.63%) HT: 8.04 VT: 7.90 R: 7.57 RT: 5.02 ( 32Kops/s)
src_0565_8_x888 = L1: 8.34 L2: 7.95 M: 7.29 ( 33.85%) HT: 6.55 VT: 6.48 R: 6.25 RT: 4.35 ( 30Kops/s)
src_0565_8_0565 = L1: 7.71 L2: 7.35 M: 6.90 ( 22.90%) HT: 6.14 VT: 6.10 R: 5.94 RT: 4.07 ( 29Kops/s)
over_8888_8_8888 = L1: 9.73 L2: 8.99 M: 7.15 ( 47.41%) HT: 6.40 VT: 6.30 R: 6.11 RT: 4.28 ( 30Kops/s)
add_8888_8_8888 = L1: 13.01 L2: 11.72 M: 8.70 ( 57.68%) HT: 7.59 VT: 7.46 R: 7.20 RT: 4.74 ( 32Kops/s)
commit 6aac8e85701be418e1ce13debc1bc8a30687f66b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jun 27 22:11:29 2012 -0400
Simplify CPU detection on PPC.
Get rid of the initialized and have_vmx static variables in
pixman-ppc.c There is no point to them since CPU detection only
happens once per process.
On Linux, just read /proc/self/auxv instead of generating the filename
with getpid() and don't bother with the stack buffer. Instead just
read the aux entries one by one.
commit 4b78d785373c1d02abe695267379674776b3da3d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jun 27 22:05:18 2012 -0400
Simplifications to ARM CPU detection
Organize pixman-arm.c such that each operating system/compiler exports
a detect_cpu_features() function that returns a bitmask with the
various features that we are interested in. A new function
have_feature() then calls this function, caches the result, and return
whether the given feature is available.
The result is that all the pixman_have_arm_<feature> functions become
redundant and can be deleted.
commit 8b795a9c17aa25328b9c76b949d319bb578d5f1e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jun 27 14:14:54 2012 -0400
Simplify MIPS CPU detection
There is no reason to have pixman_have_<feature> functions when all
they do is call pixman_have_mips_feature().
Instead rename pixman_have_mips_feature() to have_feature() and call
it directly from _pixman_mips_get_implementations(). Also on
non-Linux, just make have_feature() return FALSE.
commit 16502dd3ae3bf1d49faf1de533bd58013e168e64
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jun 27 23:04:24 2012 -0400
Move the remaining bits of pixman-cpu into pixman-implementation.c
commit 5813bb96aec1c48636db621558534561fef67b68
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jun 26 17:26:34 2012 -0400
Move MIPS specific CPU detection to its own file, pixman-mips.c
commit 4ac0a1d60fccf4f9a782747ce61fd15825eddb5a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jun 26 17:30:22 2012 -0400
Move PowerPC specific CPU detection to its own file pixman-ppc.c
commit 8590415f0e54520a176ff0fb53deb82be16873dd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jun 26 17:02:24 2012 -0400
Move ARM specific CPU detection to a new file pixman-arm.c
Similar to the x86 commit, this moves the ARM specific CPU detection
to its own file which exports a pixman_arm_get_implementations()
function that is supposed to be a noop on non-ARM.
commit 39ac18570a70674897aa7085406d9a4f6069feb4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jun 26 12:44:32 2012 -0400
Move x86 specific CPU detection to a new file pixman-x86.c
Extract the x86 specific parts of pixman-cpu.c and put them in their
own file called pixman-x86.c which exports one function
pixman_x86_get_implementations() that creates the MMX and SSE2
implementations. This file is supposed to be compiled on all
architectures, but pixman_x86_get_implementations() should be a noop
on non-x86.
commit 1a3b7614a9808f8af15204d0751a6820bf67059c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jun 26 18:07:39 2012 -0400
pixman-cpu.c: Rename disabled to _pixman_disabled() and export it
commit d4aa82fb9148862904bb7ca33655ce8d571643b0
Author: Sebastian Bauer <mail@sebastianbauer.info>
Date: Tue Jul 3 05:55:14 2012 -0400
Qualify the static variables in pixman_f_transform_invert() with the const keyword.
Their contents is not overwritten.
commit f9c91ee2f27eaea68d8c3a130bf7d4bc0c860834
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jul 1 16:59:53 2012 -0400
Use a compile-time constant for the "K" constraint in the MMX detection.
When compiling with -O0, gcc doesn't understand that in
signed char x = 0;
...
asm ("...",
: "K" (x));
x is constant. Fix this by using an immediate constant instead of a
variable.
commit cd7ecf548a9e8115226bf0fec174f3abc54becb5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jul 1 06:54:06 2012 -0400
In fast_composite_tiled_repeat() don't clone images with a palette
In fast_composite_tiled_repeat() if the source image is less than a
certain constant width, a clone is created which is then
pre-repeated. However, the source image's palette, if it has one, is
not cloned, so for indexed images, the pre-repeating would crash.
Fix this by not doing any pre-repeating for images with a palette set.
commit 7b20ad39f778d765566d3f2c5f7c50964100efc1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jul 1 06:53:18 2012 -0400
test: Make stress-test more likely to actually composite something
stress-test current almost never composites anything because the clip
rectangles and transformations are such that either
_pixman_compute_composite_region32() or analyze_extent() will return
FALSE.
Fix this by:
- making log_rand() return smaller numbers so that the clip rectangles
are more likely to be within the destination image
- adding rand_x() and rand_y() functions that pick positions within an
image and using them for positioning alpha maps and source/mask
positions.
- making it less likely that clip regions are used in general
These changes make the test take longer, so speed it up a little by
making most images smaller and by reducing the maximum convolution
filter from 17x19 to 3x4.
With these changes, stress-test reveals a crash in iteration 0xd39
where fast_composite_tiled_repeat() creates an indexed image without a
palette.
commit 4cdf8e9f3aca1925aeca25debb9268877ba3cd3d
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Jul 1 16:35:46 2012 -0400
sse2: add missing ABGR entires for bilinear src_8888_8888
commit ef99f9e97260cc55678385a6d691c195f57bd6b1
Author: Matt Turner <mattst88@gmail.com>
Date: Mon May 21 05:56:58 2012 -0400
loongson: optimize _mm_set_pi* functions with shuffle instructions
commit 9aa8e3a26071739d160496ef9f6126f296c500eb
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Jun 27 13:00:36 2012 -0400
mmx: optimize bilinear function when using 7-bit precision
Loongson:
image firefox-fishtank 1037.738 1040.218 0.19% 3/3
image firefox-fishtank 1056.611 1057.581 0.20% 3/3
ARM/iwMMXt:
image firefox-fishtank 1487.282 1492.640 0.17% 3/3
image firefox-fishtank 1363.913 1364.366 0.11% 3/3
commit 1ad6ae6ee8a350f6fe4f30ba928aacf44d04f86e
Author: Matt Turner <mattst88@gmail.com>
Date: Sun May 20 20:51:08 2012 -0400
mmx: add scaled bilinear over_8888_8_8888
Loongson:
image firefox-fishtank 1665.163 1670.370 0.17% 3/3
image firefox-fishtank 1037.738 1040.218 0.19% 3/3
ARM/iwMMXt:
image firefox-fishtank 2042.723 2045.308 0.10% 3/3
image firefox-fishtank 1487.282 1492.640 0.17% 3/3
commit c43de364cbcd195f7d1d6881a6109cbb3d6b73b8
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Jun 27 12:57:45 2012 -0400
mmx: add scaled bilinear over_8888_8888
Loongson:
image firefox-planet-gnome 157.012 158.087 0.30% 6/6
image firefox-planet-gnome 156.617 157.109 0.15% 5/6
ARM/iwMMXt:
image firefox-planet-gnome 148.086 149.339 0.76% 6/6
image firefox-planet-gnome 144.939 146.123 0.61% 6/6
commit 9209cd746b7a81d0536df6dadd6a0b0b983291cb
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Jun 19 00:30:51 2012 -0400
mmx: add scaled bilinear src_8888_8888
Loongson:
image firefox-planet-gnome 170.025 170.229 0.09% 3/4
image firefox-planet-gnome 157.012 158.087 0.30% 6/6
ARM/iwMMXt:
image firefox-planet-gnome 164.192 164.875 0.34% 3/4
image firefox-planet-gnome 148.086 149.339 0.76% 6/6
commit 51f27d7364d66e47d882ee531b6655368159231a
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Jun 28 12:17:16 2012 -0400
mmx: Use expand_alpha instead of mask/shift
commit b0855f095aba8e0c98d1fd1863b278fc72a4dd2c
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sun Jul 1 23:00:34 2012 +0300
Change default bilinear interpolation precision to 7 bits
This improves performance for the current SSE2 code. Further
reduction to 4 bits may be considered later if it proves
to allow additional speedup.
commit c430b1dba7bfea0031227dd4b976da3dd7c4ac02
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Tue Jun 26 01:47:18 2012 +0300
sse2: _mm_madd_epi16 for faster bilinear scaling with 7-bit precision
Reducing interpolation precision allows the use of PMADDWD instruction.
This makes bilinear scaling much faster (on Intel Core i7):
8-bit: image firefox-fishtank 57.584 58.349 0.74% 3/3
7-bit: image firefox-fishtank 51.139 51.229 0.30% 3/3
8-bit: src_8888_8888 = L1: 228.71 L2: 226.52 M:224.82 ( 14.95%) HT:183.22 VT:154.02 R:171.72 RT:109.36
7-bit: src_8888_8888 = L1: 320.45 L2: 317.43 M:314.38 ( 20.77%) HT:215.13 VT:177.35 R:204.46 RT:121.93
commit ccd31896bc2f1f323b3be9e8b1447cab892ee62d
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Tue Jun 26 01:06:10 2012 +0300
Bilinear interpolation precision is now configurable at compile time
Macro BILINEAR_INTERPOLATION_BITS in pixman-private.h selects
the number of fractional bits used for bilinear interpolation.
scaling-test and affine-test have checksums for 4-bit, 7-bit
and 8-bit configurations.
commit ad9f1d020188fe90ae742041195baebdfbe6fe27
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Jun 29 14:24:30 2012 -0400
Fix distcheck due to custom iwMMXt rules
commit ff5d041b88c667141b891909acd3085c3ed54994
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Jun 25 07:24:27 2012 +0300
sse2: faster bilinear scaling (use _mm_loadl_epi64)
Using _mm_loadl_epi64() to load two pixels at once (pairs of top
and bottom pixels) is faster than loading each pixel separately
and combining them with _mm_set_epi32().
=== cairo-perf-trace ===
before: image firefox-fishtank 66.912 66.931 0.13% 3/3
after: image firefox-fishtank 57.584 58.349 0.74% 3/3
=== lowlevel-blt-bench ===
before: src_8888_8888 = L1: 181.10 L2: 179.14 M:178.08 ( 11.02%) HT:153.22 VT:133.45 R:142.24 RT: 95.32
after: src_8888_8888 = L1: 228.68 L2: 225.75 M:223.98 ( 14.23%) HT:185.32 VT:155.06 R:162.73 RT:102.52
This improvement was suggested by Matt Turner on irc.
commit fc162bad561a516f648daf07e9d22d427fe60e74
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Mon Jun 25 07:11:59 2012 +0300
test: support nearest/bilinear scaling in lowlevel-blt-bench
Scale factor is selected to be nearly 1x, so that the MPix/s results
can be directly compared with the results of non-scaled compositing
operations.
commit 387e9bcddb90bd2c7d1dfb81c073196f9f81042d
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Sat Jun 23 04:08:28 2012 +0300
test: Fix for strict aliasing issue in 'get_random_seed'
Gets rid of gcc warning when compiled with -fstrict-aliasing option in CFLAGS
commit 4cbeb0aedccde5d2eb87daec08040a8bf161f6d7
Author: Andrea Canciani <ranma42@gmail.com>
Date: Wed Jun 20 17:13:33 2012 +0200
build: Fix compilation on win32
When compiling using the win32 build system, config.h is not
available nor needed.
Fixes:
pixman-glyph.c(26) : fatal error C1083: Cannot open include file:
'config.h': No such file or directory
commit 21077e1b83912b5e895b160bbbcd9b4664191506
Author: Matt Turner <mattst88@gmail.com>
Date: Wed May 2 23:13:43 2012 -0400
sse2: add src_x888_0565
Port of 2ddd1c498b to SSE2.
Uses the pmadd technique described in
http://software.intel.com/sites/landingpage/legacy/mmx/MMX_App_24-16_Bit_Conversion.pdf
Works around lack of packusdw instruction by first sign extending the
values.
fast: src_8888_0565 = L1: 681.40 L2: 689.20 M: 644.76 ( 25.51%) HT:404.42 VT:288.04 R:306.07 RT:150.80 (1619Kops/s)
mmx: src_8888_0565 = L1:2056.03 L2:1985.44 M:1574.91 ( 61.87%) HT:533.10 VT:376.35 R:416.10 RT:178.79 (1833Kops/s)
sse2: src_8888_0565 = L1:3793.42 L2:3653.44 M:1878.83 ( 73.94%) HT:535.03 VT:407.96 R:421.46 RT:163.31 (1727Kops/s)
and for reference, using packusdw
sse4: src_8888_0565 = L1:4396.18 L2:4229.25 M:1904.04 ( 75.18%) HT:559.79 VT:427.96 R:440.06 RT:165.71 (1744Kops/s)
Notice that MMX is faster in the RT case because it can operate on
8-bytes instead of the current 16-bytes for SSE2.
commit 7db07cb731e3689328d9ecbdafffe99d7d38388e
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Jun 13 13:18:49 2012 -0400
sse2: enable over_n_0565 for b5g6r5
Same as b950bb12 for MMX.
commit 45946c5fa1760ad185ae20e8797635b0a256ea08
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Jun 13 16:37:48 2012 -0400
.gitignore: add test/glyph-test
commit eadb442b5c825679016de7e7acb837e58f92bfc4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jun 12 22:04:29 2012 -0400
test: Add missing break in stress-test.c
Found by coverity:
https://bugzilla.redhat.com/show_bug.cgi?id=756069
commit 492dac7593075e622cfeddc73298df29d50b76bc
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Wed Jun 6 23:54:20 2012 +0300
test: fix bisecting issue in fuzzer-find-diff.pl
Before bisecting to find the exact test which has failed, we
first need to make sure that the first test is fine (the first
test is "good" and the whole range is "bad"). Otherwise
test 2 gets incorrectly flagged as problematic in the case
if we already got a failure on test 1 right from the start.
commit 40a0d10eeaedb879bbffe41f0537e8468c563df7
Author: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Date: Wed Jun 6 22:21:32 2012 +0300
test: OpenMP 2.5 requires signed loop iteration variables
Unsigned loop variables are only supported since version 3.0
of OpenMP specification. Changing loop variables to use int32_t
type fixes pixman build problems with path64 compiler.
commit 619a60d201bfdfe2f15fca75f6e686fc7c275b5b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jun 11 19:13:45 2012 -0400
test: Make glyph test pass on big endian
The destination buffer was initialized with random uint32_t values, so
it started out different on big endian vs. little endian. Fix that by
initializing the buffer with random uint8_t values instead.
commit f80e7ad3cbf46218bb3b4247e7b9e5d448670ad8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jan 8 13:21:11 2012 -0500
bits-image: Turn all the fetchers into iterator getters
Instead of caching these fetchers in the image structure, and then
have the iterator getter call them from there, simply change them to
be iterator getters themselves.
This avoids an extra indirect function call and lets us get rid of the
get_scanline_32/64 fields in pixman_image_t.
commit fd175f9d02f36b1e91973e4264519228547f5dc7
Author: Antti S. Lankila <alankila@bel.fi>
Date: Sun Jun 10 19:22:56 2012 +0300
Faster unorm_to_unorm for wide processing.
Optimizing the unorm_to_unorm functions allows a speedup from:
src_8888_2x10 = L1: 62.08 L2: 60.73 M: 59.61 ( 4.30%) HT: 46.81
VT: 42.17 R: 43.18 RT: 26.01 (325Kops/s)
to:
src_8888_2x10 = L1: 76.94 L2: 78.43 M: 75.87 ( 5.59%) HT: 56.73
VT: 52.39 R: 53.00 RT: 29.29 (363Kops/s)
on a i7 Q720 -based laptop.
The key of the patch is the observation that unorm_to_unorm's work can
more easily be done with a simple multiplication and shift, when the
function is applied repeatedly and the parameters are not compile-time
constants. For instance, converting from 0xfe to 0xfefe (expanding
from 8 bits to 16 bits) can be done by calculating
c = c * 0x101
However, sometimes the result is not a neat replication of all the
bits. For instance, going from 10 bits to 16 bits can be done by
calculating
c = c * 0x401UL >> 4
where the intermediate result is 20 bit wide repetition of the 10-bit
pattern followed by shifting off the unnecessary lowest bits.
The patch has the algorithm to calculate the factor and the shift, and
converts the code to use it.
commit 367b78fd5c57ee05298eb11370b68d01613961e5
Author: Matt Turner <mattst88@gmail.com>
Date: Wed May 30 16:44:04 2012 -0400
configure.ac: add iwmmxt2 configure flag
The flag allows the user to select whether pixman-mmx.c is compiled with
-march=iwmmxt or -march=iwmmxt2.
gcc has scheduling support for the Marvell CPU in the XO 1.75 when
building with -march=iwmmxt2.
commit 31a6563ec5167d6b15fdb8c158a71ab4f97015ab
Author: Matt Turner <mattst88@gmail.com>
Date: Wed May 30 16:26:32 2012 -0400
autotools: use custom build rule to build iwMMXt code
gcc has no sane way of enabling iwmmxt code generation, like -msse for
SSE, so you have to use -march=iwmmxt{,2}. User CFLAGS are placed after
-march=iwmmxt and override the march value, so we have to use a custom
build rule to order the CFLAGS such that pixman-mmx.c will be built with
the necessary CFLAGS.
commit 706bf8264cb48aac36e36ff5e23f0ad8a47ff73c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue May 3 07:25:50 2011 -0400
Speed up _pixman_image_get_solid() in common cases
Make _pixman_image_get_solid() faster by special-casing the common
cases where the image is SOLID or a repeating a8r8g8b8 image.
This optimization together with the previous one results in a small
but reproducable performance improvement on the xfce4-terminal-a1
cairo trace:
[ # ] backend test min(s) median(s) stddev. count
Before:
[ 0] image xfce4-terminal-a1 1.221 1.239 1.21% 100/100
After:
[ 0] image xfce4-terminal-a1 1.170 1.199 1.26% 100/100
Either optimization by itself is difficult to separate from noise.
commit 934c9d8546b71ddea91ac16b0928101903e2608e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon May 28 02:36:22 2012 -0400
Speed up _pixman_composite_glyphs_no_mask()
Bypass much of the overhead of pixman_image_composite32() by only
computing the composite region once instead of once per glyph, and by
only looking up the composite function whenever the glyph format or
flags change.
As part of this, the pixman_compute_composite_region32() was renamed
to _pixman_compute_composite_region32() and exported in
pixman-private.h.
I couldn't find a trace that would reliably demonstrate that this is
actually an improvement by itself (since _pixman_composite_glyphs_no_mask()
is called so rarely), but together with the following optimization for
solid sources, there is a small but reliable improvement to the
xfce4-a1-terminal cairo trace.
commit a162189dc0fa9978a3b5b6dd24f9bc12995805ed
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon May 28 01:22:26 2012 -0400
Speed up pixman_composite_glyphs()
When adding glyphs to the mask, bypass most of the overhead of
pixman_image_composite32() by:
- Only looking up the composite function when the glyph changes either
format or flags.
- Only using a white source when the glyph format is different from
the mask format.
- Simply intersecting the glyph rectangle with the destination
rectangle instead of doing the full _pixman_composite_region32().
Performance results:
[ # ] backend test min(s) median(s) stddev. count
Before:
[ 0] image firefox-talos-gfx 6.570 6.577 0.13% 8/10
After:
[ 0] image firefox-talos-gfx 4.272 4.289 0.28% 10/10
V2: Changes to deal with white sources
commit d9710442b4b2294e1ccd1594c54ca8a4feda2ac5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 27 18:23:20 2012 -0400
test: Add glyph-test
This test tests the new glyph cache and compositing API. Much of this
test is intending to making sure that clipping and alpha map handling
survive any optimizations that may be added to the glyph compositing.
V2: Evaluating lcg_rand_n() multiple times in an argument list lead
to undefined behavior.
commit dc9237472789b0b45393f6f7eeafa057a86280c4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon May 28 16:14:12 2012 -0400
Add support for alpha maps to compute_crc32_for_image().
When a destination image I has an alpha map A, the following rules apply:
- If I has an alpha channel itself, the content of that channel is
undefined
- If A has RGB channels, the content of those channels is
undefined.
Hence in order to compute the CRC32 for such an image, we have to mask
off the alpha channel of the image, and the RGB channels of the alpha
map.
V2: Shifting by 32 is undefined in C
commit 43e029d525c191a771e5b964fccff09b6d341bb2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 27 13:38:14 2012 -0400
Move CRC32 computation from blitters-test.c into utils.c
This way it can be used in other tests.
commit fce31a5ef8c915ee6b7aee4c6b57bee245185c1f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue May 29 04:14:38 2012 -0400
Add pixman_glyph_cache_t API
This new API allows entire glyph strings to be composited in one go
which reduces overhead compared to multiple calls to
pixman_image_composite32().
The pixman_glyph_cache_t is a hash table that maps two keys (a "font"
and a "glyph" key, but they are just keys; there is no distinction
between them as far as pixman is concerned) to a glyph. Glyphs in the
cache can be composited through two new entry points
pixman_glyph_cache_composite_glyphs() and
pixman_glyph_cache_composite_glyphs_no_mask().
A glyph cache may only be inserted into when it is "frozen", which is
achieved by calling pixman_glyph_cache_freeze(). When
pixman_glyph_cache_thaw() is later called, if the cache has become too
crowded, some glyphs (currently the least-recently-used) will
automatically be evicted. This means that a user must ensure that all
the required glyphs are present in the cache before compositing a
string. The intended way to use the cache is like this:
pixman_glyph_t glyphs[MAX_GLYPHS];
pixman_glyph_cache_freeze (cache);
for (i = 0; i < n_glyphs; ++i)
{
const void *g;
if (!(g = pixman_glyph_cache_lookup (cache, font_key, glyph_key)))
{
img = <rasterize glyph as a pixman_image_t>;
g = pixman_glyph_cache_insert (cache, font_key, glyph_key,
glyph_origin_x, glyph_origin_y,
img);
if (!g)
{
/* Clean up out-of-memory condition */
goto oom;
}
glyphs[i].pos_x = glyph_x_pos;
glyphs[i].pos_y = glyph_y_pos;
glyphs[i].glyph = g;
}
}
pixman_composite_glyphs (op, src, dest, ..., cache, n_glyphs, glyphs);
pixman_glyph_cache_thaw (cache);
V2:
- Move glyphs to front of the MRU list when they are used. Pointed
out by Behdad Esfahbod.
- Composite glyphs with (white IN glyph) ADD mask in order to support
mixed a8 and a8r8g8b8 glyphs. Also pointed out by Behdad.
- Add pixman_glyph_get_mask_format
commit a3ae88b71b9d2dfc53303963157ecce4b29f0486
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Apr 27 12:07:16 2011 -0400
Add doubly linked lists
This commit adds some new inline functions to maintain a doubly linked
list.
The way to use them is to embed a pixman_link_t into the structures
that should be linked, and use a pixman_list_t as the head of the
list.
The new functions are
pixman_list_init (pixman_list_t *list);
pixman_list_prepend (pixman_list_t *list, pixman_link_t *link);
pixman_list_move_to_front (pixman_list_t *list, pixman_link_t *link);
There are also a new macro:
CONTAINER_OF(type, member, data);
that can be used to get from a pointer to a member to the containing
structure.
V2: Use the C89 macro offsetof() instead of rolling our own -
suggested by Alan Coopersmith.
commit c2230fe2aff709de21cc2ee3fa27c3f7578e7f9d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu May 24 03:10:34 2012 -0400
Make use of image flags in mmx and sse2 iterators
Now that we have the full image flags available, the SSE2 and MMX
iterators can simply check against SAMPLES_COVER_CLIP_NEAREST (which
is computed in pixman_image_composite32()) instead of comparing all
the x/y/width/height parameters.
commit c1065a9cb4ab1f5847b2373847c65d8ea68975f1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu May 24 03:00:38 2012 -0400
Pass the full image flags to iterators
When pixman_image_composite32() is called some flags are computed that
indicate various things about the composite operation that can't be
deduced from the image flags themselves. These additional flags are
not currently available to iterators. All they can do is read the
image flags in image->common.flags.
Fix that by passing the info->{src, mask, dest}_flags on to the
iterator initialization and store the flags in the iter struct as
"image_flags". At the same time rename the *iterator* flags variable
to "iter_flags" to avoid confusion.
commit da6193b1fcc1dfab27f4c36917864f2f2c41cf3e
Author: Matt Turner <mattst88@gmail.com>
Date: Sun May 27 13:01:57 2012 -0400
mmx: add missing _mm_empty calls
Fixes spurious test failures on x86-32.
commit 62c4bdc94f82d1e4c5dc0e58b5903382d74f3883
Author: Matt Turner <mattst88@gmail.com>
Date: Fri May 18 01:37:07 2012 -0400
mmx: add over_reverse_n_8888
Loongson:
over_reverse_n_8888 = L1: 16.04 L2: 15.35 M: 10.20 ( 27.96%) HT: 10.95 VT: 10.45 R: 9.18 RT: 6.99 ( 76Kops/s)
over_reverse_n_8888 = L1: 27.40 L2: 26.67 M: 16.97 ( 45.78%) HT: 16.66 VT: 15.38 R: 14.15 RT: 9.44 ( 97Kops/s)
image poppler 34.106 35.500 1.48% 6/6
image poppler 29.598 30.835 1.70% 6/6
ARM/iwMMXt:
over_reverse_n_8888 = L1: 15.63 L2: 14.33 M: 10.83 ( 27.55%) HT: 9.78 VT: 9.91 R: 9.49 RT: 6.96 ( 69Kops/s)
over_reverse_n_8888 = L1: 22.79 L2: 19.40 M: 13.76 ( 34.19%) HT: 11.66 VT: 11.86 R: 11.17 RT: 7.85 ( 75Kops/s)
image poppler 38.040 38.606 1.10% 6/6
image poppler 31.686 32.278 0.80% 5/6
commit 17acc7a4c707db4804b6bf47db30883745049fdb
Author: Matt Turner <mattst88@gmail.com>
Date: Thu May 17 23:27:59 2012 -0400
mmx: add add_0565_0565
Loongson:
add_0565_0565 = L1: 15.37 L2: 14.91 M: 11.83 ( 16.06%) HT: 10.53 VT: 10.15 R: 9.74 RT: 6.19 ( 68Kops/s)
add_0565_0565 = L1: 45.06 L2: 46.71 M: 27.45 ( 38.00%) HT: 23.76 VT: 22.84 R: 18.96 RT: 9.79 ( 104Kops/s)
ARM/iwMMXt:
add_0565_0565 = L1: 12.87 L2: 11.58 M: 10.11 ( 12.50%) HT: 9.06 VT: 8.66 R: 7.70 RT: 5.62 ( 58Kops/s)
add_0565_0565 = L1: 31.14 L2: 28.87 M: 22.46 ( 28.60%) HT: 18.61 VT: 17.04 R: 15.21 RT: 9.35 ( 90Kops/s)
commit d551dc049498d17ab879fd67d47508cafaaede06
Author: Matt Turner <mattst88@gmail.com>
Date: Thu May 17 23:29:51 2012 -0400
fast: add add_0565_0565 function
I'll need this code for header and tail alignment loops in MMX, so I
might as well implement a fast path here.
commit f8dc0e98343c7936a37a3624721c5782e7ac309c
Author: Matt Turner <mattst88@gmail.com>
Date: Thu May 17 13:22:18 2012 -0400
mmx: implement expand_4x565 in terms of expand_4xpacked565
Loongson:
over_n_0565 = L1: 38.57 L2: 38.88 M: 30.01 ( 20.97%) HT: 23.60 VT: 23.88 R: 21.95 RT: 11.65 ( 113Kops/s)
over_n_0565 = L1: 56.28 L2: 55.90 M: 34.20 ( 23.82%) HT: 25.66 VT: 26.60 R: 23.78 RT: 11.80 ( 115Kops/s)
over_8888_0565 = L1: 35.89 L2: 36.11 M: 21.56 ( 45.47%) HT: 18.33 VT: 17.90 R: 16.27 RT: 9.07 ( 98Kops/s)
over_8888_0565 = L1: 40.91 L2: 41.06 M: 23.13 ( 48.46%) HT: 19.24 VT: 18.71 R: 16.82 RT: 9.18 ( 99Kops/s)
over_n_8_0565 = L1: 28.92 L2: 29.12 M: 21.42 ( 30.00%) HT: 18.37 VT: 17.75 R: 16.15 RT: 8.79 ( 91Kops/s)
over_n_8_0565 = L1: 32.32 L2: 32.13 M: 22.44 ( 31.27%) HT: 19.15 VT: 18.66 R: 16.62 RT: 8.86 ( 92Kops/s)
over_n_8888_0565_ca = L1: 29.33 L2: 29.22 M: 18.99 ( 66.69%) HT: 16.69 VT: 16.22 R: 14.63 RT: 8.42 ( 88Kops/s)
over_n_8888_0565_ca = L1: 34.97 L2: 34.14 M: 20.32 ( 71.73%) HT: 17.67 VT: 17.19 R: 15.23 RT: 8.50 ( 89Kops/s)
ARM/iwMMXt:
over_n_0565 = L1: 29.70 L2: 30.53 M: 24.47 ( 14.84%) HT: 22.28 VT: 21.72 R: 21.13 RT: 12.58 ( 105Kops/s)
over_n_0565 = L1: 41.42 L2: 40.00 M: 30.95 ( 19.13%) HT: 27.06 VT: 27.28 R: 23.43 RT: 14.44 ( 114Kops/s)
over_8888_0565 = L1: 12.73 L2: 11.53 M: 9.07 ( 16.47%) HT: 9.00 VT: 9.25 R: 8.44 RT: 7.27 ( 76Kops/s)
over_8888_0565 = L1: 23.72 L2: 21.76 M: 15.89 ( 29.51%) HT: 14.36 VT: 14.05 R: 12.44 RT: 8.94 ( 86Kops/s)
over_n_8_0565 = L1: 6.80 L2: 7.15 M: 6.37 ( 7.90%) HT: 6.58 VT: 6.24 R: 6.49 RT: 5.94 ( 59Kops/s)
over_n_8_0565 = L1: 12.06 L2: 11.02 M: 10.16 ( 13.43%) HT: 9.57 VT: 8.49 R: 9.10 RT: 6.86 ( 69Kops/s)
over_n_8888_0565_ca = L1: 7.62 L2: 7.01 M: 6.27 ( 20.52%) HT: 6.00 VT: 6.07 R: 5.68 RT: 5.53 ( 57Kops/s)
over_n_8888_0565_ca = L1: 13.54 L2: 11.96 M: 9.76 ( 30.66%) HT: 9.72 VT: 8.45 R: 9.37 RT: 6.85 ( 67Kops/s)
commit 51681a052f9e1d0970a79187974da77d9bf69450
Author: Matt Turner <mattst88@gmail.com>
Date: Sun May 13 20:39:05 2012 -0400
mmx: add and use expand_4xpacked565 function
Loongson:
add_0565_0565 = L1: 14.39 L2: 13.98 M: 11.28 ( 15.22%) HT: 10.11 VT: 9.74 R: 9.39 RT: 6.05 ( 67Kops/s)
add_0565_0565 = L1: 15.37 L2: 14.91 M: 11.83 ( 16.06%) HT: 10.53 VT: 10.15 R: 9.74 RT: 6.19 ( 68Kops/s)
ARM/iwMMXt:
add_0565_0565 = L1: 11.12 L2: 10.40 M: 8.82 ( 10.65%) HT: 7.98 VT: 7.41 R: 7.57 RT: 5.21 ( 54Kops/s)
add_0565_0565 = L1: 12.87 L2: 11.58 M: 10.11 ( 12.50%) HT: 9.06 VT: 8.66 R: 7.70 RT: 5.62 ( 58Kops/s)
commit 6491c70e3a2a2e10e99c84024895f346f2300f63
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat May 26 16:34:13 2012 -0400
Post-release version bump to 0.27.1
commit b1a401e6c9f204d33a55eee41897d66ab81d6117
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat May 26 16:17:14 2012 -0400
Pre-release version bump to 0.26.0
commit f71e3dba979fcfc1cf87d01137e1e32451a173b1
Author: Ingmar Runge <ingmar@irsoft.de>
Date: Sat May 19 15:45:18 2012 +0200
Fix MSVC compilation
Only up to three SSE intrinsics supported in function declaration.
commit 1e59e18d73a6e45729a99fe6ccc74d61631ff5f0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu May 24 15:30:41 2012 -0400
test: Composite with solid images instead of using pixman_image_fill_*
There is a couple of places where the test suite uses the
pixman_image_fill_* functions to initialize images. These functions
can fail, and will do so if the "fast" implementation is disabled.
So to make sure the test suite passes even using
PIXMAN_DISABLE="fast", use pixman_image_composite32() with a solid
image instead of pixman_image_fill_*.
commit 30816e3068bccf7c78c78f916b54971d24873bdc
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Thu May 3 00:03:43 2012 +0200
MIPS: DSPr2: Added bilinear over_8888_8_8888 fast path.
Performance numbers before/after on MIPS-74kc @ 1GHz
Referent (before):
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.3
[ 0] image firefox-fishtank 2289.180 2290.567 0.05% 5/6
Optimized:
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.3
[ 0] image firefox-fishtank 1700.925 1708.314 0.22% 5/6
commit aea0522f6f1a51b97a673cfe4dc157e501008580
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Wed May 23 18:53:43 2012 +0200
MIPS: DSPr2: Fix bug in over_n_8888_8888_ca/over_n_8888_0565_ca routines
In main loop (unrolled by factor 2), instead of negating multiplied
mask values by srca, values of srca was negated, and passed as alpha
argument for
UN8x4_MUL_UN8x4_ADD_UN8x4 macro.
Instead of:
ma = ~ma;
UN8x4_MUL_UN8x4_ADD_UN8x4 (d, ma, s);
Code was doing this:
ma = ~srca;
UN8x4_MUL_UN8x4_ADD_UN8x4 (d, ma, s);
Key is in substituting registers s0/s1 (containing srca value), with
t0/t1 containing mask values multiplied by srca. Register usage is
also improved (less registers are saved on stack, for
over_n_8888_8888_ca routine).
The bug was introduced in commit d2ee5631 and revealed by composite test.
commit 74bf5dc2f99245e7b486203b6ba074fb629eb5f3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 20 13:09:16 2012 -0400
demos: Add parrot.jpg to EXTRA_DIST
Pointed out by Cyril Brulebois.
commit 55698584be93706794b181cbf595846da578e103
Author: Matt Turner <mattst88@gmail.com>
Date: Tue May 15 16:32:08 2012 -0400
configure.ac: Fail the ARM/iwMMXt test if not compiling with -march=iwmmxt
If not compiling with -march=iwmmxt, the configure test will still pass,
thinking that the __builtin_arm_* intrinsic is a function instead of
generating a single instruction. Since no linking is done, the configure
test doesn't catch this, and we get linking errors in the build.
commit 3682b615154338f9754e7c1e046b42bb8ad584fa
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue May 15 13:38:44 2012 -0400
Post-release version bump to 0.25.7
commit 1e1a00e964a1d8ef43d6d75c1c3a0b5d518d1979
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue May 15 13:20:09 2012 -0400
Pre-release version bump to 0.25.6
Note that 0.25.4 was a botched release that doesn't have a tag and
doesn't correspond to any commit ID. It was however uploaded and
announced, so I'll just use the 0.25.6 version number.
commit b2c16aaadfae64d2573abb537bfedd92c13b8d06
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue May 15 13:19:19 2012 -0400
demos/Makefile.am: Add parrot.c to EXTRA_DIST
To get 'make distcheck' to pass.
commit 50d3088d7882e1054a35e917becb7752662da6f0
Author: Matt Turner <mattst88@gmail.com>
Date: Fri May 11 21:59:13 2012 -0400
configure.ac: Rename loongson -> loongson-mmi
Make it match with the other fast paths, and the PIXMAN_DISABLE value is
already loongson-mmi.
commit a0a40cb822bec52494c64e6750be50b734dc29df
Author: Matt Turner <mattst88@gmail.com>
Date: Fri May 11 21:49:42 2012 -0400
configure.ac: Fix loongson-mmi out-of-tree builds
When building out-of-tree, gcc wasn't able to find loongson-mmintrin.h
to compile the test program. Add -I$srcdir to CFLAGS to point gcc to it.
commit 618a08e6aa03b38e8dc71ac610f7fdd55e8a8558
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Thu May 3 00:03:42 2012 +0200
MIPS: DSPr2: Added over_n_8_8888 and over_n_8_0565 fast paths.
Performance numbers before/after on MIPS-74kc @ 1GHz
Referent (before):
lowlevel-blt-bench:
over_n_8_8888 = L1: 10.40 L2: 9.79 M: 8.47 ( 33.62%) HT: 7.64 VT: 7.59 R: 7.48 RT: 5.30 ( 40Kops/s)
over_n_8_0565 = L1: 7.40 L2: 7.23 M: 6.78 ( 17.94%) HT: 6.23 VT: 6.17 R: 6.14 RT: 4.62 ( 37Kops/s)
Optimized:
lowlevel-blt-bench:
over_n_8_8888 = L1: 27.25 L2: 26.24 M: 18.15 ( 72.12%) HT: 14.52 VT: 14.31 R: 13.83 RT: 7.57 ( 48Kops/s)
over_n_8_0565 = L1: 18.91 L2: 17.59 M: 15.06 ( 39.90%) HT: 12.18 VT: 11.98 R: 11.83 RT: 6.80 ( 46Kops/s)
commit 7d4beedc612a32b73d7673bbf6447de0f3fca298
Author: Matt Turner <mattst88@gmail.com>
Date: Wed May 9 19:20:55 2012 -0400
mmx: add and use pack_4x565 function
The pack_4x565 makes use of the pack_4xpacked565 function which uses pmadd.
Some of the speed up is probably attributable to removing the artificial
serialization imposed by the
vdest = pack_565 (..., vdest, 0);
vdest = pack_565 (..., vdest, 1);
...
pattern.
Loongson:
over_n_0565 = L1: 16.44 L2: 16.42 M: 13.83 ( 9.85%) HT: 12.83 VT: 12.61 R: 12.34 RT: 8.90 ( 93Kops/s)
over_n_0565 = L1: 42.48 L2: 42.53 M: 29.83 ( 21.20%) HT: 23.39 VT: 23.72 R: 21.80 RT: 11.60 ( 113Kops/s)
over_8888_0565 = L1: 15.61 L2: 15.42 M: 12.11 ( 25.79%) HT: 11.07 VT: 10.70 R: 10.37 RT: 7.25 ( 82Kops/s)
over_8888_0565 = L1: 35.01 L2: 35.20 M: 21.42 ( 45.57%) HT: 18.12 VT: 17.61 R: 16.09 RT: 9.01 ( 97Kops/s)
over_n_8_0565 = L1: 15.17 L2: 14.94 M: 12.57 ( 17.86%) HT: 11.96 VT: 11.52 R: 10.79 RT: 7.31 ( 79Kops/s)
over_n_8_0565 = L1: 29.83 L2: 29.79 M: 21.85 ( 30.94%) HT: 18.82 VT: 18.25 R: 16.15 RT: 8.72 ( 91Kops/s)
over_n_8888_0565_ca = L1: 15.25 L2: 15.02 M: 11.64 ( 41.39%) HT: 11.08 VT: 10.72 R: 10.02 RT: 7.00 ( 77Kops/s)
over_n_8888_0565_ca = L1: 30.12 L2: 29.99 M: 19.47 ( 68.99%) HT: 17.05 VT: 16.55 R: 14.67 RT: 8.38 ( 88Kops/s)
ARM/iwMMXt:
over_n_0565 = L1: 19.29 L2: 19.88 M: 17.38 ( 10.54%) HT: 15.53 VT: 16.11 R: 13.69 RT: 11.00 ( 96Kops/s)
over_n_0565 = L1: 36.02 L2: 34.85 M: 28.04 ( 16.97%) HT: 22.12 VT: 24.21 R: 22.36 RT: 12.22 ( 103Kops/s)
over_8888_0565 = L1: 18.38 L2: 16.59 M: 12.34 ( 22.29%) HT: 11.67 VT: 11.71 R: 11.02 RT: 6.89 ( 72Kops/s)
over_8888_0565 = L1: 24.96 L2: 22.17 M: 15.11 ( 26.81%) HT: 14.14 VT: 13.71 R: 13.18 RT: 8.13 ( 78Kops/s)
over_n_8_0565 = L1: 14.65 L2: 12.44 M: 11.56 ( 14.50%) HT: 10.93 VT: 10.39 R: 10.06 RT: 7.05 ( 70Kops/s)
over_n_8_0565 = L1: 18.37 L2: 14.98 M: 13.97 ( 16.51%) HT: 12.67 VT: 10.35 R: 11.80 RT: 8.14 ( 74Kops/s)
over_n_8888_0565_ca = L1: 14.27 L2: 12.93 M: 10.52 ( 33.23%) HT: 9.70 VT: 9.90 R: 9.31 RT: 6.34 ( 65Kops/s)
over_n_8888_0565_ca = L1: 19.69 L2: 17.58 M: 13.40 ( 42.35%) HT: 11.75 VT: 11.33 R: 11.17 RT: 7.49 ( 73Kops/s)
commit 2beabd9fed76de0023eb36b0c938b8803aa8d129
Author: Matt Turner <mattst88@gmail.com>
Date: Thu May 10 16:15:34 2012 -0400
configure.ac: make -march=loongson2f come before CFLAGS
Otherwise we'd have -march=loongson2f being overridden by automake's
CFLAGS ordering which causes build failures when -march=<not loongson2f>
is specified by the user.
commit dadb9a318b8ca10c65e31e7278f4335a6968d246
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue May 8 10:05:18 2012 -0400
Add Makefile.win32 and Makefile.win32.common to EXTRA_DIST
https://bugs.freedesktop.org/show_bug.cgi?id=46905
commit 3c57ec471e1aacc863747b82bbe0a84c6d776ab7
Author: Matt Turner <mattst88@gmail.com>
Date: Wed May 9 22:50:50 2012 -0400
.gitignore: add demos/checkerboard and demos/quad2quad
commit 2d431b53d3cdbf1997e2d3b8e17408c12220c3a1
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Apr 27 14:12:56 2012 -0400
mmx: Use wpackhus in src_x888_0565 on iwMMXt
iwMMXt which has an unsigned saturation pack instruction, while MMX/EXT
and Loongson don't.
ARM/iwMMXt:
src_8888_0565 = L1: 110.38 L2: 82.33 M: 40.92 ( 73.22%) HT: 35.63 VT: 32.22 R: 30.07 RT: 18.40 ( 132Kops/s)
src_8888_0565 = L1: 117.91 L2: 83.05 M: 41.52 ( 75.58%) HT: 37.63 VT: 35.40 R: 29.37 RT: 19.39 ( 134Kops/s)
commit 2ddd1c498b723e8e48a38eef01d5befba30b5259
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Apr 19 17:33:27 2012 -0400
mmx: add src_8888_0565
Uses the pmadd technique described in
http://software.intel.com/sites/landingpage/legacy/mmx/MMX_App_24-16_Bit_Conversion.pdf
The technique uses the packssdw instruction which uses signed
saturatation. This works in their example because they pack 888 to 555
leaving the high bit as zero. For packing to 565, it is unsuitable, so
we replace it with an or+shuffle.
Loongson:
src_8888_0565 = L1: 106.13 L2: 83.57 M: 33.46 ( 68.90%) HT: 30.29 VT: 27.67 R: 26.11 RT: 15.06 ( 135Kops/s)
src_8888_0565 = L1: 122.10 L2: 117.53 M: 37.97 ( 78.58%) HT: 33.14 VT: 30.09 R: 29.01 RT: 15.76 ( 139Kops/s)
ARM/iwMMXt:
src_8888_0565 = L1: 67.88 L2: 56.61 M: 31.20 ( 56.74%) HT: 29.22 VT: 27.01 R: 25.39 RT: 19.29 ( 130Kops/s)
src_8888_0565 = L1: 110.38 L2: 82.33 M: 40.92 ( 73.22%) HT: 35.63 VT: 32.22 R: 30.07 RT: 18.40 ( 132Kops/s)
commit 3e8fe65a0893fcd82bdea205de49f53be32bb074
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Apr 18 16:24:28 2012 -0400
mmx: add x8f8g8b8 fetcher
Loongson:
add_x888_x888 = L1: 29.36 L2: 27.81 M: 14.05 ( 38.74%) HT: 12.45 VT: 11.78 R: 11.52 RT: 7.23 ( 75Kops/s)
add_x888_x888 = L1: 36.06 L2: 34.55 M: 14.81 ( 41.03%) HT: 14.01 VT: 13.41 R: 13.06 RT: 9.06 ( 90Kops/s)
src_x888_8_x888 = L1: 21.92 L2: 20.15 M: 13.35 ( 41.42%) HT: 11.70 VT: 10.95 R: 10.53 RT: 6.18 ( 65Kops/s)
src_x888_8_x888 = L1: 25.43 L2: 23.51 M: 14.12 ( 44.00%) HT: 13.14 VT: 12.50 R: 11.86 RT: 7.49 ( 76Kops/s)
over_x888_8_0565 = L1: 10.64 L2: 10.17 M: 7.74 ( 21.35%) HT: 6.83 VT: 6.55 R: 6.34 RT: 4.03 ( 46Kops/s)
over_x888_8_0565 = L1: 11.41 L2: 10.97 M: 8.07 ( 22.36%) HT: 7.42 VT: 7.18 R: 6.92 RT: 4.62 ( 52Kops/s)
ARM/iwMMXt:
add_x888_x888 = L1: 22.10 L2: 18.93 M: 13.48 ( 32.29%) HT: 11.32 VT: 10.64 R: 10.36 RT: 6.51 ( 61Kops/s)
add_x888_x888 = L1: 24.26 L2: 20.83 M: 14.52 ( 35.64%) HT: 12.66 VT: 12.98 R: 11.34 RT: 7.69 ( 72Kops/s)
src_x888_8_x888 = L1: 19.33 L2: 17.66 M: 14.26 ( 38.43%) HT: 11.53 VT: 10.83 R: 10.57 RT: 6.12 ( 58Kops/s)
src_x888_8_x888 = L1: 21.23 L2: 19.60 M: 15.41 ( 42.55%) HT: 12.66 VT: 13.30 R: 11.55 RT: 7.32 ( 67Kops/s)
over_x888_8_0565 = L1: 8.15 L2: 7.56 M: 6.50 ( 15.58%) HT: 5.73 VT: 5.49 R: 5.50 RT: 3.53 ( 38Kops/s)
over_x888_8_0565 = L1: 8.35 L2: 7.85 M: 6.68 ( 16.40%) HT: 6.12 VT: 5.97 R: 5.78 RT: 4.03 ( 43Kops/s)
commit c2b1630d9603f80c2636e8a8bfebca87707d4235
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Apr 18 16:14:08 2012 -0400
mmx: add a8 fetcher
oprofile of xfce4-terminal-a1
210535 9.0407 libpixman-1.so.0.25.3 fetch_scanline_a8
144802 6.0054 libpixman-1.so.0.25.3 mmx_fetch_a8
Loongson:
add_8_8_8 = L1: 17.98 L2: 17.28 M: 14.28 ( 19.79%) HT: 11.11 VT: 10.38 R: 9.97 RT: 5.14 ( 55Kops/s)
add_8_8_8 = L1: 20.44 L2: 19.65 M: 15.62 ( 21.53%) HT: 12.86 VT: 11.98 R: 11.32 RT: 6.13 ( 64Kops/s)
src_8888_8_0565 = L1: 19.97 L2: 18.59 M: 13.42 ( 32.55%) HT: 11.46 VT: 10.78 R: 10.33 RT: 5.87 ( 61Kops/s)
src_8888_8_0565 = L1: 21.16 L2: 19.68 M: 13.94 ( 33.64%) HT: 12.31 VT: 11.52 R: 11.02 RT: 6.54 ( 68Kops/s)
src_x888_8_x888 = L1: 20.54 L2: 18.88 M: 13.07 ( 40.74%) HT: 11.05 VT: 10.36 R: 10.02 RT: 5.68 ( 60Kops/s)
src_x888_8_x888 = L1: 21.92 L2: 20.15 M: 13.35 ( 41.42%) HT: 11.70 VT: 10.95 R: 10.53 RT: 6.18 ( 65Kops/s)
over_x888_8_0565 = L1: 10.32 L2: 9.85 M: 7.63 ( 21.13%) HT: 6.56 VT: 6.30 R: 6.12 RT: 3.80 ( 43Kops/s)
over_x888_8_0565 = L1: 10.64 L2: 10.17 M: 7.74 ( 21.35%) HT: 6.83 VT: 6.55 R: 6.34 RT: 4.03 ( 46Kops/s)
ARM/iwMMXt:
add_8_8_8 = L1: 13.10 L2: 11.67 M: 10.74 ( 13.46%) HT: 8.62 VT: 8.15 R: 7.94 RT: 4.39 ( 44Kops/s)
add_8_8_8 = L1: 13.81 L2: 12.79 M: 11.63 ( 13.93%) HT: 9.33 VT: 9.20 R: 9.04 RT: 5.43 ( 52Kops/s)
src_8888_8_0565 = L1: 16.62 L2: 15.07 M: 12.52 ( 27.46%) HT: 10.07 VT: 10.17 R: 9.95 RT: 5.64 ( 54Kops/s)
src_8888_8_0565 = L1: 16.84 L2: 16.11 M: 13.22 ( 27.71%) HT: 11.74 VT: 10.90 R: 10.80 RT: 6.66 ( 62Kops/s)
src_x888_8_x888 = L1: 17.49 L2: 16.22 M: 13.73 ( 38.73%) HT: 10.10 VT: 10.33 R: 9.55 RT: 5.21 ( 52Kops/s)
src_x888_8_x888 = L1: 19.33 L2: 17.66 M: 14.26 ( 38.43%) HT: 11.53 VT: 10.83 R: 10.57 RT: 6.12 ( 58Kops/s)
over_x888_8_0565 = L1: 7.57 L2: 7.29 M: 6.37 ( 15.97%) HT: 5.53 VT: 5.33 R: 5.21 RT: 3.22 ( 35Kops/s)
over_x888_8_0565 = L1: 8.15 L2: 7.56 M: 6.50 ( 15.58%) HT: 5.73 VT: 5.49 R: 5.50 RT: 3.53 ( 38Kops/s)
commit 20bad64d9a7ff5c2662f12a87f66fcf77c1f3f2c
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Apr 18 16:08:57 2012 -0400
mmx: add r5g6b5 fetcher
Loongson:
add_0565_0565 = L1: 12.73 L2: 12.26 M: 10.05 ( 13.87%) HT: 8.77 VT: 8.50 R: 8.25 RT: 5.28 ( 58Kops/s)
add_0565_0565 = L1: 14.04 L2: 13.63 M: 10.96 ( 15.19%) HT: 9.73 VT: 9.43 R: 9.11 RT: 5.93 ( 64Kops/s)
ARM/iwMMXt:
add_0565_0565 = L1: 10.36 L2: 10.03 M: 9.04 ( 10.88%) HT: 3.11 VT: 7.16 R: 7.72 RT: 5.12 ( 51Kops/s)
add_0565_0565 = L1: 10.84 L2: 10.20 M: 9.15 ( 11.46%) HT: 7.60 VT: 7.82 R: 7.70 RT: 5.41 ( 53Kops/s)
commit c136e535adf33069cbf229b8773934d78099af85
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Apr 17 12:16:55 2012 -0400
mmx: Use Loongson pextrh instruction in expand565
Same story as pinsrh in the previous commit.
text data bss dec hex filename
25336 1952 0 27288 6a98 .libs/libpixman_loongson_mmi_la-pixman-mmx.o
25072 1952 0 27024 6990 .libs/libpixman_loongson_mmi_la-pixman-mmx.o
-dsll: 95
+dsll: 70
-dsrl: 135
+dsrl: 105
-ldc1: 462
+ldc1: 445
-lw: 721
+lw: 700
+pextrh: 30
commit facceb4a1fbba476ad98e76d15868bf7eecd3a30
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Apr 17 11:28:33 2012 -0400
mmx: Use Loongson pinsrh instruction in pack_565
The pinsrh instruction is analogous to MMX EXT's pinsrw, except like
other Loongson vector instructions it cannot access the general purpose
registers. In the cases of other Loongson vector instructions, this is a
headache, but it is actually a good thing here. Since the instruction is
different from MMX, I've named the intrinsic loongson_insert_pi16.
text data bss dec hex filename
25976 1952 0 27928 6d18 .libs/libpixman_loongson_mmi_la-pixman-mmx.o
25336 1952 0 27288 6a98 .libs/libpixman_loongson_mmi_la-pixman-mmx.o
-and: 181
+and: 147
-dsll: 143
+dsll: 95
-dsrl: 87
+dsrl: 135
-ldc1: 523
+ldc1: 462
-lw: 767
+lw: 721
+pinsrh: 35
commit 6d29b7d7557ccb657054e867f4e27f4aa89cb25e
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 15:23:09 2012 -0500
mmx: don't pack and unpack src unnecessarily
The combine function was store8888'ing the result, and all consumers
were immediately load8888'ing it, causing lots of unnecessary pack and
unpack instructions.
It's a very straight forward conversion, except for mmx_combine_over_u
and mmx_combine_saturate_u. mmx_combine_over_u was testing the integer
result to skip pixels, so we use the is_* functions to test the __m64
data directly without loading it into an integer register.
For mmx_combine_saturate_u there's not a lot we can do, since it uses
DIV_UN8.
commit ee750034252fb8f44c871e84a5057bc114699ae7
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 17:39:39 2012 -0500
mmx: introduce is_equal, is_opaque, and is_zero functions
To be used by the next commit.
commit 10c77b339f40fc027b682ef16edec234508d327b
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Feb 23 16:25:11 2012 -0500
mmx: simplify srcsrcsrcsrc calculation in over_n_8_0565
commit e06947d1010ffec4903493df4979119b0ac080d3
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Feb 23 16:15:56 2012 -0500
mmx: remove unnecessary uint64_t<->__m64 conversions
Loongson:
add_8888_8888 = L1: 68.73 L2: 55.09 M: 25.39 ( 68.18%) HT: 25.28 VT: 22.42 R: 20.74 RT: 13.26 ( 131Kops/s)
add_8888_8888 = L1: 159.19 L2: 114.10 M: 30.74 ( 77.91%) HT: 27.63 VT: 24.99 R: 24.61 RT: 14.49 ( 141Kops/s)
commit c78e986085b3993f1b4355151820228c53d54cad
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 12:43:43 2012 -0500
mmx: compile on MIPS for Loongson MMI optimizations
image image16
evolution 32.985 -> 29.667 27.314 -> 23.870
firefox-planet-gnome 197.982 -> 180.437 220.986 -> 205.057
gnome-system-monitor 48.482 -> 49.752 52.820 -> 49.528
gnome-terminal-vim 60.799 -> 50.528 51.655 -> 44.131
grads-heat-map 3.167 -> 3.181 3.328 -> 3.321
gvim 38.646 -> 32.552 38.126 -> 34.453
midori-zoomed 44.371 -> 43.338 28.860 -> 28.865
ocitysmap 23.065 -> 18.057 23.046 -> 18.055
poppler 43.676 -> 36.077 43.065 -> 36.090
swfdec-giant-steps 20.166 -> 20.365 22.354 -> 16.578
swfdec-youtube 31.502 -> 28.118 44.052 -> 41.771
xfce4-terminal-a1 69.517 -> 51.288 62.225 -> 53.309
commit 4e0c7902b2c8e517d102a8fccb9cf7da9725f59f
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Feb 15 01:19:07 2012 -0500
mmx: make ldq_u take __m64* directly
Before, if __m64 is allocated in vector or floating-point registers,
__m64 vs = ldq_u((uint64_t *)src);
would cause src to be loaded into an integer register and then
transferred to an __m64 register. By switching ldq_u's argument type to
__m64 we give the compile enough information to recognize that it can
load to the vector register directly.
This patch is necessary for the Loongson optimizations when __m64 is
typedef'd as double.
commit 2e54b76a2d2203b6a70190f488d76d6d409e879a
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 12:34:41 2012 -0500
mmx: add load function and use it in add_8888_8888
commit 084e3f2f4be900041cc35830359606addc1fc3be
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 12:32:03 2012 -0500
mmx: add store function and use it in add_8888_8888
commit e24c1c849d29f43dc6e50e1f15102709059b40f8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Apr 5 00:52:21 2012 -0400
bits_image_fetch_pixel_convolution(): Make sure channels are signed
In the computation:
srtot += RED_8 (pixel) * f
RED_8 (pixel) is an unsigned quantity, which means the signed filter
coefficient f gets converted to an unsigned integer before the
multiplication. We get away with this because when the 32 bit unsigned
result is converted to int32_t, the correct sign is produced. But if
srtot had been an int64_t, the result would have been a very large
positive number.
Fix this by explicitly casting the channels to int.
commit 4d2fee14063b960c6b81b55dd3aa94b956d23eeb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Apr 5 00:42:55 2012 -0400
test/utils.c: Clip values to the [0, 255] interval
Unpremultiplying a superluminescent pixel can result in values greater
than 255.
commit e2917645846b64fdc7f2190806c97b0ef4b0fd5b
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Apr 18 18:14:13 2012 -0400
configure.ac: fix iwMMXt/gcc version error message
commit b87cd1f6059789cb154677d8432045a5ca8e16c1
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Apr 15 14:03:08 2012 -0400
mmx: fix _mm_shuffle_pi16 function when compiling without optimization
The last argument must be an immediate value, and when compiling without
optimization the compiler might not recognize this. So use a macro if
not optimizing.
commit e927d2397141f80aecd2702ce5f38349c41aebe5
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Apr 15 14:00:17 2012 -0400
configure.ac: require >= gcc-4.5 for ARM iwMMXt
We're using a patched gcc-4.5, and having to modify configure.ac and
autoreconf between changes is annoying. And besides, 4.5, 4.6, and 4.7's
iwMMXt intrinsic support is equally broken, and we test a known broken
intrinsic in the configure test program, so the version check is rather
meaningless.
commit 0531170436a2a10a995c7487b396f1378affdb98
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Apr 5 17:36:05 2012 -0400
mmx: Use force_inline instead of __inline__ (bug 46906)
Fixes the build on MSVC.
commit b950bb12dc2baaee441b875bd81b67e48947d2f6
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Mar 15 19:16:20 2012 -0400
mmx: enable over_n_0565 for b5g6r5
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 87ecec8d72be4106358e843a1e7a907b0e814f7f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Apr 2 15:16:18 2012 -0400
gtk-utils.c: In pixbuf_from_argb32() use a8r8g8b8_to_rgba_np()
Instead of inlining a copy of that functionality.
commit d1ec1467f607c21a4d8b445eab5465ca60a12a97
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Apr 2 15:09:16 2012 -0400
test/utils.c: Rename and export the pngify_pixels() function.
This function converts from a8r8g8b8 to non-premultiplied RGBA (the
PNG or GdkPixbuf format that has the channels in this order: R, G, B,
A in memory regardless of the computer's endianness). The function's
new name is a8r8g8b8_to_rgba_np().
commit b16ddf17829633ec6eb54656924b7e841c6c69a4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Apr 2 14:59:02 2012 -0400
gtk-utils.c: Don't include pixman-private.h
Use pixman_image_get_format() instead of image->bits.format.
commit b9ca23a9c711280a706eb1df30a0cfaf3b2d8e27
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Mar 25 12:14:54 2012 -0400
Rename fast_composite_add_1000_1000 to _add_1_1()
The 1000_1000 name is a relic from before the refactoring.
commit 746291a19ed29e2da6de57b382a1dfaa900d067b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jan 16 06:46:52 2011 -0500
Add the original parrot image.
This is the Parrot image that was downscaled and cropped before being
used in the composite-test.c demo.
commit 451b25ae90ea077a78d2606ce107b826043a252b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 6 06:06:59 2010 -0400
composite-test.c: Add a parrot image
Instead of the yellow square, use a parrot as the source image. This
demonstrates the various blend modes much better.
The parrot is a cropped version of finger painting by Rubens LP:
http://www.flickr.com/photos/dorubens/4030604504/in/set-72157622586088192/
where the background has been removed. Used here under Creative
Commons Attribution. The artist's web site:
http://www.rubenslp.com.br/
commit 3aa45d62e45f40faa98f9bb47046578bf19e7574
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 6 03:56:55 2010 -0400
composite-test.c: Use similar gradient to the one in the PDF spec.
commit e1b8969e78eecf9abaaf2b317c10fddf64b02799
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 12 04:49:27 2011 -0400
demos: Add checkerboard demo
This is a simple demo that displays a checkboard with a projective
transformation.
commit 41863fbabb6dd08871aed47beba5d08ae2ae3cf6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 12 04:48:33 2011 -0400
demos: Add quad2quad program
This program can compute the projective transformation that transforms
one quadrilateral into another. The code is basically maxima[1] output
translated into C.
[1] http://maxima.sourceforge.net/
commit cf0d0d63645bcb6425a1e2d7b5d9f1e26e205247
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Mar 14 17:11:14 2012 -0400
Use "=a" and "=d" constraints for rdtsc inline assembly
In 32 bit mode the "=A" constraint refers to the register pair
edx:eax, but according to GCC developers this is not the case in 64
bit mode, where it refers to "rax".
Hence, using "=A" for rdtsc is incorrect in 64 bit mode.
See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21249
commit 8a8aabf05c8e6c7b68b68c80e4e73877fd35ce78
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date: Fri Mar 16 11:37:23 2012 -0700
configure.ac: Fix a copy-paste-o in TLS detection
Regression from: a069da6c66da407cc52e1e92321d69c68fd6beb5
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Tested-by: Matt Turner <mattst88@gmail.com>
commit ee6bac11c28b350c183f190b6c648c316ee1109d
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Mar 14 16:48:00 2012 -0400
Use AC_LANG_SOURCE for DSPr2 configure program
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 21eeecffa93ba5912487d88851b1a5c60fc37768
Author: Chun-wei Fan <fanchunwei@src.gnome.org>
Date: Fri Mar 9 15:54:06 2012 +0800
Just include xmmintrin.h on MSVC as well
The xmmintrin.h as shipped with recent Visual C++ (2003+) provides
_mm_shuffle_pi16 and _mm_mulhi_pu16, so including that header
will do for using these functions, and MSVC does not like the GCC-specific
implementations of _mm_shuffle_pi16 and _mm_mulhi_pu16 that is
currently in the code.
_MM_SHUFFLE is declared in the same way in MSVC's xmmintrin.h, so don't
re-define it here to avoid a compilation warning.
commit 94aea2e868ae02235785f31b275f89b9661bca0e
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date: Wed Mar 14 10:26:18 2012 -0700
Fix a false-negative in MMX check
Silence warnings that could make -Werror give a false negative
Use signed char to avoid cases where int8_t isn't declared
Reported-by: Mike Lothian <mike@fireburn.co.uk>
Tested-by: Mike Lothian <mike@fireburn.co.uk>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
commit d2ee5631ae42d031289ae80352e02bafa3f06ed4
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Sun Mar 11 18:52:25 2012 +0100
MIPS: DSPr2: Added over_n_8888_8888_ca and over_n_8888_0565_ca fast paths.
Performance numbers before/after on MIPS-74kc @ 1GHz
Referent (before):
lowlevel-blt-bench:
over_n_8888_8888_ca = L1: 8.32 L2: 7.65 M: 6.38 ( 51.08%) HT: 5.78 VT: 5.74 R: 5.84 RT: 4.39 ( 37Kops/s)
over_n_8888_0565_ca = L1: 7.40 L2: 6.95 M: 6.16 ( 41.06%) HT: 5.72 VT: 5.52 R: 5.63 RT: 4.28 ( 36Kops/s)
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.3
[ 0] image xfce4-terminal-a1 138.223 139.070 0.33% 6/6
[ # ] image16: pixman 0.25.3
[ 0] image16 xfce4-terminal-a1 132.763 132.939 0.06% 5/6
Optimized:
lowlevel-blt-bench:
over_n_8888_8888_ca = L1: 19.35 L2: 23.84 M: 13.68 (109.39%) HT: 11.39 VT: 11.19 R: 11.27 RT: 6.90 ( 47Kops/s)
over_n_8888_0565_ca = L1: 18.68 L2: 17.00 M: 12.56 ( 83.70%) HT: 10.72 VT: 10.45 R: 10.43 RT: 5.79 ( 43Kops/s)
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.3
[ 0] image xfce4-terminal-a1 130.400 131.720 0.46% 6/6
[ # ] image16: pixman 0.25.3
[ 0] image16 xfce4-terminal-a1 125.830 126.604 0.34% 6/6
commit a069da6c66da407cc52e1e92321d69c68fd6beb5
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date: Thu Mar 8 09:41:34 2012 -0800
Expand TLS support beyond __thread to __declspec(thread)
This code was pretty much coppied from a similar commit that I made to
xorg-server in April.
cf: xorg/xserver: bb4d145bd25e2aee988b100ecf1105ea3b6a40b8
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
commit 61d999b9101c76bd463101923d2143e31857e7f8
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date: Thu Mar 8 09:41:32 2012 -0800
Disable MMX when incompatible clang is being used.
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
commit ad4b6922f23e91b291c794b9fde5ee81941adb64
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date: Thu Mar 8 09:41:33 2012 -0800
Silence a warning about unused pixman_have_mmx
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
commit bb5ff2687815eff20757612de965663ef3a2525b
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date: Thu Mar 8 09:41:31 2012 -0800
Revert "Disable MMX when Clang is being used."
This reverts commit 5eb4c12a79b3017ec6cc22ab756f53f225731533.
commit a6ad5120f7bd4add3b2e9c03c9fd769d5bbfd191
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Mar 8 10:11:20 2012 -0500
Post-release version bump to 0.25.3
commit f73f7985318bf0e7446941d9bea9a94b35580342
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Mar 8 09:33:16 2012 -0500
Pre-release version bump to 0.25.2
commit 62df04eb257d16fbb4449855a48f6fdaf567e201
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Mar 8 09:29:46 2012 -0500
mmx: Squash a warning by making the argument to ldl_u() const
commit 85943733cbd7b62991ee962aa22f28bc5d1be353
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Feb 24 18:02:56 2012 -0800
Just use xmmintrin.h when building with Solaris Studio compilers
Since the Solaris Studio compilers don't have a mode where MMX
instructions are available and SSE instructions are not, we can
just use the <xmmintrin.h> header directly.
Fixes build failure due to Studio not supporting the __gnu_inline__
or __artificial__ attributes.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Acked-by: Matt Turner <mattst88@gmail.com>
commit 304f57644ac6a991c6e538675de935356252c0a5
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Wed Feb 29 12:04:33 2012 +0100
MIPS: DSPr2: Added mips_dspr2_blt and mips_dspr2_fill routines.
Performance numbers before/after on MIPS-74kc @ 1GHz
Referent (before):
lowlevel-blt-bench:
src_n_0565 = L1: 238.14 L2: 233.15 M: 57.88 ( 77.23%) HT: 53.22 VT: 49.99 R: 47.73 RT: 24.79 ( 91Kops/s)
src_n_8888 = L1: 190.19 L2: 187.57 M: 28.94 ( 77.23%) HT: 27.91 VT: 27.33 R: 26.64 RT: 14.68 ( 77Kops/s)
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.1
[ 0] image gnome-system-monitor 268.460 269.712 0.22% 6/6
Optimized:
lowlevel-blt-bench:
src_n_0565 = L1:1081.39 L2: 258.22 M:189.59 (252.91%) HT: 60.23 VT: 55.01 R: 53.44 RT: 23.68 ( 89Kops/s)
src_n_8888 = L1: 653.46 L2: 113.55 M:135.26 (360.86%) HT: 38.99 VT: 37.38 R: 34.95 RT: 18.67 ( 84Kops/s)
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.1
[ 0] image gnome-system-monitor 246.565 246.706 0.04% 6/6
commit 999e72b80bd5e3fab5f45b6ad19511389b58d9ab
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Mar 1 02:24:54 2012 -0500
pixman-access.c: Remove some unused macros
The macros related to palette entries:
RGB15_TO_ENTRY,
RGB24_TO_ENTRY,
RGB24_TO_ENTRY_Y
are not used anywhere.
commit c0cb48aae0d09200a187965094138fbf488498cd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Feb 29 04:44:46 2012 -0500
pixman-accessors.h: Delete unused macros
The MEMCPY_WRAPPED and ACCESS macros are not used anymore.
commit 5adf569317f923cd5eb547209a8d927be0d81049
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Feb 26 17:35:20 2012 -0500
Move fetching for solid bits images to pixman-noop.c
This should be a bit faster because it can reuse the scanline on each iteration.
commit 3c3c70fa0b524569df0ec20c50d481626e518462
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 20:11:11 2012 -0500
lowlevel-blt-bench: add in_8_8 and in_n_8_8
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit fcea053561893d116a79f41a113993f1f61b58cf
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jan 26 13:16:09 2011 -0500
Disable implementations mentioned in the PIXMAN_DISABLE environment variable.
With this, it becomes possible to do
PIXMAN_DISABLE="sse2 mmx" some_app
which will run some_app without SSE2 and MMX enabled. This is useful
for benchmarking, testing and narrowing down bugs.
The current list of implementations that can be disabled:
fast
mmx
sse2
arm-simd
arm-iwmmxt
arm-neon
mips-dspr2
vmx
The general and noop implementations can't be disabled because pixman
depends on those being available for correct operation.
Reviewed-by: Matt Turner <mattst88@gmail.com>
commit e7574d336b7c812a888fac22f99f1b0e9a3518b0
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Wed Feb 22 14:23:48 2012 +0100
MIPS: DSPr2: Added fast-paths for SRC operation.
Following fast-path functions are implemented (routines 4, 5 and 6 utilize
same fast-memcpy routine):
1. src_x888_8888
2. src_8888_0565
3. src_0565_8888
4. src_0565_0565
5. src_8888_8888
6. src_0888_0888
Performance numbers before/after on MIPS-74kc @ 1GHz
Referent (before):
lowlevel-blt-bench:
src_x888_8888 = L1: 199.35 L2: 96.54 M: 18.87 (100.68%) HT: 17.12 VT: 16.24 R: 15.43 RT: 9.33 ( 61Kops/s)
src_8888_0565 = L1: 71.22 L2: 51.95 M: 24.19 ( 96.17%) HT: 20.71 VT: 19.92 R: 18.15 RT: 9.92 ( 63Kops/s)
src_0565_8888 = L1: 38.82 L2: 36.22 M: 18.60 ( 73.95%) HT: 14.47 VT: 13.19 R: 12.97 RT: 6.61 ( 49Kops/s)
src_0565_0565 = L1: 286.05 L2: 155.02 M: 37.68 (100.54%) HT: 31.08 VT: 28.07 R: 26.26 RT: 11.93 ( 68Kops/s)
src_8888_8888 = L1: 454.32 L2: 139.15 M: 19.30 (102.98%) HT: 17.73 VT: 16.08 R: 16.62 RT: 10.45 ( 64Kops/s)
src_0888_0888 = L1: 190.47 L2: 106.14 M: 25.26 (101.08%) HT: 21.88 VT: 20.32 R: 18.83 RT: 10.10 ( 63Kops/s)
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.1
[ 0] image firefox-asteroids 421.215 421.325 0.01% 4/6
[ 1] image firefox-planet-gnome 647.708 648.486 0.13% 6/6
[ 2] image gnome-system-monitor 276.073 277.506 0.38% 6/6
[ 3] image gnome-terminal-vim 263.866 265.229 0.39% 6/6
[ 4] image poppler 123.576 124.003 0.15% 6/6
Optimized (with these optimizations):
lowlevel-blt-bench:
src_x888_8888 = L1: 369.50 L2: 99.37 M: 27.19 (145.07%) HT: 20.24 VT: 19.48 R: 19.00 RT: 10.22 ( 63Kops/s)
src_8888_0565 = L1: 105.65 L2: 67.87 M: 25.41 (101.00%) HT: 20.78 VT: 19.84 R: 18.52 RT: 9.81 ( 63Kops/s)
src_0565_8888 = L1: 77.10 L2: 63.04 M: 23.37 ( 92.90%) HT: 20.29 VT: 19.37 R: 18.14 RT: 10.02 ( 63Kops/s)
src_0565_0565 = L1: 519.02 L2: 241.32 M: 62.35 (166.34%) HT: 33.74 VT: 27.63 R: 26.12 RT: 11.70 ( 67Kops/s)
src_8888_8888 = L1: 390.48 L2: 113.99 M: 30.32 (161.77%) HT: 19.55 VT: 17.05 R: 17.13 RT: 10.19 ( 63Kops/s)
src_0888_0888 = L1: 349.74 L2: 156.68 M: 40.68 (162.78%) HT: 25.58 VT: 20.57 R: 20.20 RT: 9.96 ( 63Kops/s)
cairo-perf-trace:
[ # ] backend test min(s) median(s) stddev. count
[ # ] image: pixman 0.25.1
[ 0] image firefox-asteroids 400.050 400.308 0.04% 6/6
[ 1] image firefox-planet-gnome 628.978 629.364 0.07% 6/6
[ 2] image gnome-system-monitor 270.247 270.313 0.03% 6/6
[ 3] image gnome-terminal-vim 256.413 257.641 0.21% 6/6
[ 4] image poppler 119.540 120.023 0.21% 6/6
commit 1364c91bd106f8b67c9cd1bda2fdd9d46ac40363
Author: Nemanja Lukic <nemanja.lukic@rt-rk.com>
Date: Wed Feb 22 14:23:47 2012 +0100
MIPS: DSPr2: Basic infrastructure for MIPS architecture
MIPS DSP instruction set extensions
commit e43d65d49da2c3e929cf20e82a2f7ed1fa0d0167
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 20:02:55 2012 -0500
lowlevel-blt: add over_x888_n_8888
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 9f607049956c6858706c7ca45829c5ad19f18191
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 24 19:58:09 2012 -0500
lowlevel-blt: add over_8888_8888
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 5eb4c12a79b3017ec6cc22ab756f53f225731533
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Feb 23 18:36:04 2012 -0500
Disable MMX when Clang is being used.
There are several issues with the Clang compiler and pixman-mmx.c:
- When not optimizing, it doesn't seem to recognize that an argument
to an __always_inline__ function is compile-time constant. This
results in this error being produced:
fatal error: error in backend: Invalid operand for inline asm
constraint 'K'!
- This inline assembly:
asm ("pmulhuw %1, %0\n\t"
: "+y" (__A)
: "y" (__B)
);
results in
fatal error: error in backend: Unsupported asm: input constraint
with a matching output constraint of incompatible type!
So disable MMX when the compiler is Clang.
commit 350e231b3f01d6f82a2fdc7d9a9945234c404d0a
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Feb 21 23:33:02 2012 -0500
mmx: make load8888 take a pointer to data instead of the data itself
Allows us to tune how we load data into the vector registers.
Signed-off-by: Matt Turner <mattst88@gmail.com>
And squashed in:
mmx: define and use load8888u function
For unaligned loads.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit ab68316eda91bbf6bb41158c622347723e1fa8c4
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Feb 21 19:29:59 2012 -0500
mmx: make store8888 take uint32_t *dest as argument
Allows us to tune how we store data from the vector registers.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 57a245a6e00987191faad9a34bef9f4524a6848c
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Feb 22 16:32:21 2012 -0500
Update .gitignore with more demos and tests
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 51ae3f2d7f25daebbc767f161f0097b581d1554b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 21 19:30:04 2012 -0500
mmx: Delete unused function in_over_full_src_alpha()
Also a few minor formatting fixes.
Reviewed-by: Matt Turner <mattst88@gmail.com>
commit bbd1e6941b39adcdb64c77670889314fa8461c0b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 21 19:23:33 2012 -0500
mmx: Enable over_x888_8_8888() for x86 as well
It used to be slower than the generic code (with the gcc that was
current in 2007), but that doesn't seem to be the case anymore:
over_x888_8_8888 = L1: 22.97 L2: 22.88 M: 22.27 ( 5.29%) HT: 18.30 VT: 15.81 R: 15.54 RT: 10.35 ( 131Kops/s)
over_x888_8_8888 = L1: 53.56 L2: 53.20 M: 50.50 ( 11.99%) HT: 38.60 VT: 31.19 R: 29.00 RT: 17.37 ( 208Kops/s)
Reviewed-by: Matt Turner <mattst88@gmail.com>
commit 4fc586c3df9a53cc1406891e751a6eed3d7da400
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Feb 21 16:28:37 2012 -0500
mmx: fix typo in pix_add_mul on MSVC
Typo introduced in commit a075a870.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 84221f4c1687b8ea14e9cbdc78b2ba7258e62c9e
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Feb 19 18:10:03 2012 -0500
mmx: Use _mm_shuffle_pi16
The pshufw x86 instruction is part of Extended 3DNow! and SSE1. The
equivalent ARM wshufh instruction was available from the first iwMMXt
instrucion set.
This instruction is already used in the SSE2 code.
Reduces code size by ~9%.
amd64
text data bss dec hex filename
29925 2240 0 32165 7da5 .libs/libpixman_mmx_la-pixman-mmx.o
27237 2240 0 29477 7325 .libs/libpixman_mmx_la-pixman-mmx.o
x86
text data bss dec hex filename
27677 1792 0 29469 731d .libs/libpixman_mmx_la-pixman-mmx.o
24959 1792 0 26751 687f .libs/libpixman_mmx_la-pixman-mmx.o
arm
text data bss dec hex filename
30176 1792 0 31968 7ce0 .libs/libpixman_iwmmxt_la-pixman-mmx.o
27384 1792 0 29176 71f8 .libs/libpixman_iwmmxt_la-pixman-mmx.o
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 14208344964f341a7b4a704b05cf4804c23792e9
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Feb 19 01:32:31 2012 -0500
mmx: Use _mm_mulhi_pu16
The pmulhuw x86 instruction is part of Extended 3DNow! and SSE1. The
equivalent ARM wmuluh instruction was available from the first iwMMXt
instrucion set.
This instruction is already used in the SSE2 code.
Reduces code size by ~5%.
amd64
text data bss dec hex filename
31325 2240 0 33565 831d .libs/libpixman_mmx_la-pixman-mmx.o
29925 2240 0 32165 7da5 .libs/libpixman_mmx_la-pixman-mmx.o
x86
text data bss dec hex filename
29165 1792 0 30957 78ed .libs/libpixman_mmx_la-pixman-mmx.o
27677 1792 0 29469 731d .libs/libpixman_mmx_la-pixman-mmx.o
arm
text data bss dec hex filename
31632 1792 0 33424 8290 .libs/libpixman_iwmmxt_la-pixman-mmx.o
30176 1792 0 31968 7ce0 .libs/libpixman_iwmmxt_la-pixman-mmx.o
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 69ed71fad11d541f89eee1238c587a03a9cf59cb
Author: Matt Turner <mattst88@gmail.com>
Date: Tue Feb 21 00:05:45 2012 +0000
mmx: enable over_x888_8_8888 on ARM/iwMMXt
before: over_x888_8_8888 = L1: 7.63 L2: 7.72 M: 6.44 ( 19.17%) HT: 6.24 VT: 6.11 R: 5.87 RT: 4.61 ( 51Kops/s)
after : over_x888_8_8888 = L1: 11.88 L2: 11.11 M: 8.70 ( 26.01%) HT: 8.15 VT: 8.07 R: 7.76 RT: 5.62 ( 61Kops/s)
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit a14f0f66bba987d5cdcb4a3e0f3e9f7c35d3f6f0
Author: Matt Turner <mattst88@gmail.com>
Date: Mon Feb 20 18:36:24 2012 -0500
autoconf: use #error instead of error
We'd rather see the actual #error message rather than a syntax error in
config.log.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit fced5c82c2f0d6d00cb8d0a30ce6a04ec196d274
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Feb 17 18:17:49 2012 -0500
Convert while (w) to if (w) when possible
Missed in commit 57fd8c37.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit e27bdcd968e786079353432d14816600bf813d76
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Feb 15 18:16:42 2012 -0500
Make sure to run AC_SUBST IWMMXT_CFLAGS
Allows you to compile without -flax-vector-conversions in your CFLAGS,
though -march=iwmmxt2 is still necessary since specifying some other
-march= value will override it, and disable iwmmxt.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 82a3980701c68949ed762b1e93dc81698db1613e
Author: Jeremy Huddleston <jeremyhu@apple.com>
Date: Sat Feb 11 01:04:13 2012 -0800
configure.ac: Add an --enable-libpng option
Now there is a way to not link against libpng even if it's available.
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
commit 46fc4eb234f5c4f281c2901ea7514ff69e8670a8
Author: Matt Turner <mattst88@gmail.com>
Date: Sat Feb 11 23:21:45 2012 -0500
Use AC_LANG_SOURCE for iwMMXt configure program
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit e5555d7a749c90288463ed1c294f58963c607e52
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jan 25 14:03:05 2012 -0500
Revert "Reject trapezoids where top (botttom) is above (below) the edges"
Cairo 1.10 will sometimes generate trapezoids like this, so we can't
consider them invalid. Fixes bug 45009, reported by Michael Biebl.
This reverts commit 2437ae80e5066dec9fe52f56b016bf136d7cea06.
commit 35577876978e86783d49c500b4bb7ea1fc7fa89c
Author: Bobby Salazar <bobby8934@gmail.com>
Date: Thu Jan 26 13:19:18 2012 -0500
iOS Runtime Detection Support For ARM NEON
This patch adds runtime detection support for the ARM NEON fast paths
for code compiled with the iOS SDK.
commit 86ce1808829e3fa024acb0ebaa93ef9737ba51af
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Dec 19 19:31:25 2011 -0500
test: Port composite test over to use new pixel_checker_t object.
Also make some tweaks to the way the errors are printed.
commit f57034f678b419c3737b888f643e5bdfcaf727f9
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Dec 19 17:31:06 2011 -0500
test: Add a new "pixel_checker_t" object.
Add a new pixel_checker_t object to test/utils.[ch]. This object
should be initialized with a format and can then be used to check
whether a given "real" pixel in that format is close enough to a
"perfect" pixel given as a double precision ARGB struct.
The acceptable deviation is calcuated as follows. Each channel of the
perfect pixel has 0.004 subtracted from it and is then converted to
the format. The resulting value is the minimum value that will be
accepted. Similarly, to compute the maximum value, the channel has
0.004 added to it and is then converted to the given format. Checking
a pixel is then a matter of splitting it into channels and checking
that each is within the computed bounds.
The value of 0.004 was chosen because it is the minimum one that will
make the existing composite test pass (see next commit). A problem
with this value is that it causes 0xFE to be acceptable when the
correct value is 1.0, and 0x01 to be acceptable when the correct value
is 0. It would be better if, when the result is exactly 0 or exactly
1, an a8r8g8b8 pixel were required to produce exactly 0x00 or 0xff to
preserve full black and full white. A deviation value of 0.003 would
produce this, but currently this would cause tests with operators that
involve divisions to fail.
commit 0053a9f8694c837388b78ae26fe81979d0327d28
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Dec 19 19:53:28 2011 -0500
Rename color_correct() to round_color()
And do the rounding from float to int in the same way cairo does: by
multiplying with (1 << width), then subtracting one when the input was 1.0.
commit 55a010bf31d2eaf71126bdf93eca99fc02037535
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Dec 22 18:15:02 2011 -0500
Move the color_correct() function from composite.c to utils.c
commit 065666f33c414582425e4ac0ec9f694e93c2baf1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jan 8 10:32:47 2012 -0500
Get rid of delegates for combiners
Add a new function _pixman_implementation_lookup_combiner() that will
find a usable combiner given an operator and information about whether
the combiner should apply component alpha and whether it should be 64
bit.
In pixman-general.c use this function to look up a combiner up front
instead of walking the delegate chain for every scanline.
commit ab584ab500b4e7011a5b82051a90e2eea6744270
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 7 17:11:45 2012 -0500
test/alphamap.c: Make dst and orig_dst more independent of each other
When making the copy of the destination, do so separately for the
image and the alpha map. This ensures that the alpha channel of the
alpha map will be different from the alpha channel of the actual
image.
Previously, orig_dst would be copied onto dst along with its alpha
map, which mean that the alpha map of orig_dst would become the new
alpha channel of *both* dst and dst's alpha map. This meant that test
didn't actually test that the alpha maps alpha channel was actually
fetched.
commit 4613f2caac595b3fa1298ac49f9c9fdcd907f14a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 7 16:48:00 2012 -0500
Fix bugs with alpha maps
The alpha channel from the alpha map must be inserted as the new alpha
channel when a scanline is fetched from an image. Previously the alpha
map would overwrite the buffer instead. This wasn't caught be the
alpha map test because it would only verify that the resulting alpha
channel was correct, and not pay attention to incorrect color
channels.
commit 8bd63634cd2b2d92145b1d52b54b91ebcb9fb1b4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 7 14:32:08 2012 -0500
test: In the alphamap test, also test that we get the right red value
There is a bug where the red channel of the alpha map of the
destination image is used instead of the red channel of the
destination image itself.
commit 007d8b1813e34a7f881d9b241806f8323e9667cd
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Fri Dec 23 16:32:57 2011 -0800
Make mmx code compatible with Solaris Studio 12.3 compilers
Rearranged some of the existing gcc & Intel compiler checks to allow
easier sharing of common cases among the compilers.
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 37572455866114cbb8bb1bf3acfb1c61d200f98c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Dec 20 06:32:26 2011 -0500
Fix rounding for DIV_UNc()
We need to compute floor (a/b * 255 + 0.5), not floor (a / b * 255),
so add b/2 to the numerator in the DIV_UNc() macro.
commit 2437ae80e5066dec9fe52f56b016bf136d7cea06
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Dec 22 11:37:26 2011 -0500
Reject trapezoids where top (botttom) is above (below) the edges
When a trapezoid has a top/bottom that is above/below the left/right
edges, degenerate trapezoids become possible. For example the edge
could be very short and close to horizontal. If the bottom edge is far
below the bottom point of such a short edge, the result is that the
lower right corner of the trapezoid will be extremely far to the left.
This kind of trapezoid causes overflows in the rasterization code, so
change pixman_trapezoid_valid() to reject them.
commit 6a8192b6dd88b833bb918de28331d3a85c84a4f7
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Dec 20 06:34:41 2011 -0500
In MUL_UNc() cast to comp2_t
Otherwise, when comp1_t is 16 bits wide, we can end up with a signed
integer overflow.
commit 33ac0a9084aabd0e47fb1c9e5638eafc809c52cb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Dec 21 08:19:05 2011 -0500
Fix a bunch of signed overflow issues
In pixman-fast-path.c: (1 << 31) - 1 causes a signed overflow, so
change to (1U << n) - 1.
In pixman-image.c: The check for whether m10 == -m01 will overflow
when -m01 == INT_MIN. Instead just check whether the variables are 1
and -1.
In pixman-utils.c: When the depth of the topmost channel is 0, we can
end up shifting by 32.
In blitters-test.c: Replicating the mask would end up shifting more
than 32.
In region-contains-test.c: Computing the average of two large integers
could overflow. Instead add half the difference between them to the
first integer.
In stress-test.c: Masking the value in fake_reader() would sometimes
shift by 32. Instead just use the most significant bits instead of
the least significant.
All these issues were found by the IOC tool:
http://embed.cs.utah.edu/ioc/
commit d788f762788c2178970ff0ff2cb6e0097171cc3c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Dec 18 09:54:47 2011 -0500
Add missing cast in _pixman_edge_multi_init()
nx and e->dy are both 32 bit quantities, so a cast is needed to make
sure their product is 64 bit before subtracting it from a 64 bit
quantity.
commit 4f3fe9c9096b2261217c2d4beb7d5eb8e578ed76
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Dec 18 08:16:45 2011 -0500
Fix some signed overflow bugs
In the macros for the PDF blend modes, two comp1_t variables are
multiplied together and then used as if the result were a
comp4_t. When comp1_t is a uint8_t, this is fine because they are
promoted to int, and the product of two uint8_ts fits in an
int. However, when comp1_t is uint16, the product does not necessarily
fit in an int, so casts are necessary.
Fix for bug 43906, reported by Siarhei Siamashka.
commit 3e93bba3b04b42c2ab99d828dae12c18f29bcf7d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jan 5 10:37:51 2012 -0500
pixman-image.c: Fix typo in pixman_image_set_transform()
A parenthesis was misplaced so that the size argument to memcmp() was
always 0. The bug is harmless except that the flags might be
unnecessarily recomputed in some cases.
A bug reporting this in Mozilla's fork was discovered here:
https://bugzilla.mozilla.org/show_bug.cgi?id=710992
commit ae651e7e739253f79f345f9fcbacad8627da0d85
Author: Colin Walters <walters@verbum.org>
Date: Wed Jan 4 08:06:05 2012 -0500
autogen.sh: Support GNOME Build API
http://people.gnome.org/~walters/docs/build-api.txt
commit 89498a1178bc173857f3d1ee1f889afcc58b21b6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Dec 18 07:29:59 2011 -0500
gradient-walker: For NONE repeats, when x < 0 or x > 1, set both colors to 0
ec7c9c2b6865b48b8bd14e4 introduced a bug where NONE gradients would be
misrendered, causing the area outside the gradient to be treated as a
(very) long fade to transparent.The problem was that a check for
positions outside the gradients were dropped in favor of relying on
the sentinels.
Aside from misrendering, this also caused a signed integer overflow
when the code would compute a stepper size based on MIN_INT32.
This patches fixes the issue by reinstating a check for these cases
and setting both the right and left colors to transparent black.
commit d0091a33fcdb49b65a6f20f775cfde520380b1fa
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Dec 21 05:19:00 2011 -0500
Modify gradient-test to show a bug in NONE processing
This patch modifies demos/gradient-test to display a bug in gradients
with a repeat mode of NONE. With the current gradient code, the left
side will be a solid red (actually an extremely long fade from solid
red to transparent) instead of a sharp transition from red to green.
commit 9db980551518a09069b8ade34743238329a36661
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 9 03:59:04 2011 -0500
region: Add pixman_region{,32}_clear() functions.
These functions simply reset the region to empty. They are equivalent
to
pixman_region_fini (®ion);
pixman_region_init (®ion);
commit 6b9d6a91ed4a85f27d7e5824ce2a63f37876e937
Author: Bobby Salazar <bobby8934@gmail.com>
Date: Tue Dec 13 02:03:16 2011 -0500
Android Runtime Detection Support For ARM NEON
This patch adds runtime detection support for the ARM NEON fast paths
for code compiled with the Android NDK. This is the only code change
needed to enable the ARM NEON pixman fast paths for the ever growing
Android platform (200 million+ smartphones, tablets, etc.). Just make
sure to #define USE_ARM_NEON in your makefile.
commit 84450c411cc93309bb1d1b1f555640b3ad105500
Author: Naohiro Aota <naota@gentoo.org>
Date: Thu Nov 24 13:12:15 2011 +0100
Don't use non-POSIX test
test "$test_CFLAGS" == "" && \
may cause an error on some POSIX shells and uses a style which is not
consistent with the other tests in configure.ac
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=42588 and
https://bugs.gentoo.org/show_bug.cgi?id=387087
commit 9985febd7847b7a9c09d6395db7f89490c83be30
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Nov 8 22:00:46 2011 +0100
test: Produce autotools-looking report in the win32 build system
Tweak the commands used to run the tests on win32 to make the output
look mostly like that produced by the autotools test system.
In addition to this, make sure that the exit status of the test target
is success (0) if and only if no failure occurred.
commit b31da39f6f65d1784fc2f6915c30eb011cc2893b
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Nov 3 11:07:25 2011 +0100
demos: Consistently use G_N_ELEMENTS()
Instead of open-coding G_N_ELEMENTS(), just use it.
commit 1662c94348eda19ec35db2625749febd1dceb35e
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Nov 3 10:53:10 2011 +0100
test: Reuse the ARRAY_LENGTH() macro
It is provided by utils.h, there is no need to redefine it.
commit 97b9fa090c54f6feab54bde272df374a13c0c84d
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Nov 3 10:51:27 2011 +0100
Use the ARRAY_LENGTH() macro when possible
This patch has been generated by the following Coccinelle semantic patch:
// Use the ARRAY_LENGTH() macro when possible
//
// Replace open-coded array length computations with the
// ARRAY_LENGTH() macro
@@
type T;
T[] E;
@@
- (sizeof(E)/sizeof(T))
+ ARRAY_LENGTH (E)
commit 06760f5cb069bdc041af7a0e73c9d5fc08741f28
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Nov 3 10:40:24 2011 +0100
test: Cleanup includes
All the tests are linked to libutil, hence it makes sence to always
include utils.h and reuse what it provides (config.h inclusion, access
to private pixman APIs, ARRAY_LENGTH, ...).
commit cbd88a9416d9b33e6589e3f857ee839559a7e4de
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Nov 3 10:21:41 2011 +0100
Remove useless checks for NULL before freeing
This patch has been generated by the following Coccinelle semantic patch:
// Remove useless checks for NULL before freeing
//
// free (NULL) is a no-op, so there is no need to avoid it
@@
expression E;
@@
+ free (E);
+ E = NULL;
- if (unlikely (E != NULL)) {
- free(E);
(
- E = NULL;
|
- E = 0;
)
...
- }
@@
expression E;
@@
+ free (E);
- if (unlikely (E != NULL)) {
- free (E);
- }
commit 8d72d35b29b0fe0345e21525db9e5f25876364be
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Nov 6 16:36:01 2011 -0500
Post-release version bump to 0.25.1
commit 973dc7d319f373fc1bbb91ea54e8a7116cfaa932
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Nov 6 16:10:33 2011 -0500
Pre-release version bump to 0.24.0
commit 6bf590f38577b4c3c6f4876291360ef95086fb37
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Sun Oct 30 09:12:06 2011 -0700
Change MMX ldq_u to return _m64 instead of forcing all callers to cast
Sun/Oracle Studio compilers allow the pointers to be cast, but not the
non-pointer forms, causing pixman compiles to fail with many errors of:
"pixman-mmx.c", line 1411: invalid cast expression
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 5d7f5bc8ee178588194cb6acc2e0ceb6ff926d72
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Wed Nov 2 18:49:58 2011 -0400
Add definitions of INT64_MIN and INT64_MAX
commit 697cfe15377a8c420764ff824c0a8c2c8ff2148c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Oct 29 05:51:44 2011 -0400
Post-release version bump to 0.23.9
commit a0f1b565811388b0567c845b9b7063d5b93d325e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Oct 29 05:33:44 2011 -0400
Pre-release version bump to 0.23.8
commit 498138c293a2abce44ce122114852f4e6c5b87fe
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 25 08:45:34 2011 -0400
Fix use of uninitialized fields reported by valgrind
In pixman-noop.c and pixman-sse2.c, we are accessing
image->bits.width/height without first making sure the image is a bits
image. The warning is harmless because we never act on this
information without checking that the image is a8r8g8b8, but valgrind
does warn about it.
In pixman-noop.c, just reorder the clauses in the if statement; in
pixman-sse2.c require images to have the FAST_PATH_BITS_IMAGE flag
set.
commit 6131707e8fc39187d1d358481f7c57c57cfab206
Merge: 3d4d705 ec7c9c2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Oct 20 09:13:12 2011 -0400
Merge branch 'gradients'
commit 3d4d705d2ffa4aeab3dc02a23c2aadbea1374a3f
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Tue Oct 18 21:50:18 2011 +0900
ARM: NEON: Fix assembly typo error in src_n_8_8888
Binutils 2.21 does not complain about missing comma between ARM
register and alignement specifier in vld/vst instructions which
causes build error on binutils 2.20.
commit 19f118f41f8725f22395d31eac5670cb350b55ec
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Mon Sep 26 18:33:27 2011 +0900
ARM: NEON: Standard fast path src_n_8_8
Performance numbers of before/after on cortex-a8 @ 1GHz
- before
L1: 28.05 L2: 28.26 M: 26.97 ( 4.48%) HT: 19.79 VT: 19.14 R: 17.61 RT: 9.88 ( 101Kops/s)
- after
L1:1430.28 L2:1252.10 M:421.93 ( 75.48%) HT:170.16 VT:138.03 R:145.86 RT: 35.51 ( 255Kops/s)
commit 4db9e2bc13d3ed26416f249e57acec4b41f58b7f
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Mon Sep 26 17:03:54 2011 +0900
ARM: NEON: Standard fast path src_n_8_8888
Performance numbers of before/after on cortex-a8 @ 1GHz
- before
L1: 32.39 L2: 31.79 M: 30.84 ( 13.77%) HT: 21.58 VT: 19.75 R: 18.83 RT: 10.46 ( 106Kops/s)
- after
L1: 516.25 L2: 372.00 M:193.49 ( 85.59%) HT:136.93 VT:109.10 R:104.48 RT: 34.77 ( 253Kops/s)
commit 26659de6cd2775c83a9a6e6660324d5baacf61f9
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Mon Sep 26 19:04:53 2011 +0900
ARM: NEON: Instruction scheduling of bilinear over_8888_8_8888
Instructions are reordered to eliminate pipeline stalls and get
better memory access.
Performance of before/after on cortex-a8 @ 1GHz
<< 2000 x 2000 with scale factor close to 1.x >>
before : 40.53 Mpix/s
after : 50.76 Mpix/s
commit 4481920f405e47b3a92811a8cb06afbd37dee01b
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Sep 21 15:52:13 2011 +0900
ARM: NEON: Instruction scheduling of bilinear over_8888_8888
Instructions are reordered to eliminate pipeline stalls and get
better memory access.
Performance of before/after on cortex-a8 @ 1GHz
<< 2000 x 2000 with scale factor close to 1.x >>
before : 50.43 Mpix/s
after : 61.09 Mpix/s
commit 1cd916f3a5ebeb943f66eecf0b8ce99af0b95d11
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Fri Sep 23 00:03:22 2011 +0900
ARM: NEON: Replace old bilinear scanline generator with new template
Bilinear scanline functions in pixman-arm-neon-asm-bilinear.S can
be replaced with new template just by wrapping existing macros.
commit 6682b2b3597c9f431900bfe7b1b42dfbe006bae5
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Tue Sep 20 21:32:35 2011 +0900
ARM: NEON: Bilinear macro template for instruction scheduling
This macro template takes 6 code blocks.
1. process_last_pixel
2. process_two_pixels
3. process_four_pixels
4. process_pixblock_head
5. process_pixblock_tail
6. process_pixblock_tail_head
process_last_pixel does not need to update horizontal weight. This
is done by the template. two and four code block should update
horizontal weight inside of them. head/tail/tail_head blocks
consist unrolled core loop. You can apply instruction scheduling
to the tail_head blocks.
You can also specify size of the pixel block. Supported size is 4
and 8. If you want to use mask, give BILINEAR_FLAG_USE_MASK flags
to the template, then you can use register MASK. When using d8~d15
registers, give BILINEAR_FLAG_USE_ALL_NEON_REGS to make sure
registers are properly saved on the stack and later restored.
commit b5e4355fa4973e3edd4abeb11bdc47c42371cc76
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Tue Sep 20 19:46:25 2011 +0900
ARM: NEON: Some cleanup of bilinear scanline functions
Use STRIDE and initial horizontal weight update is done before
entering interpolation loop. Cache preload for mask and dst.
commit ec7c9c2b6865b48b8bd14e4509538f8fcbe93463
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Oct 14 09:04:48 2011 -0400
Simplify gradient_walker_reset()
The code that searches for the closest color stop to the given
position is duplicated across the various repeat modes. Replace the
switch with two if/else constructions, and put the search code between
them.
commit 2d0da8ab8d8fef60ed1bbb9d6b75f66577c3f85d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Oct 14 09:02:14 2011 -0400
Use sentinels instead of special casing first and last stops
When storing the gradient stops internally, allocate two more stops,
one before the beginning of the stop list and one after the
end. Initialize those stops based on the repeat property of the
gradient.
This allows gradient_walker_reset() to be simplified because it can
now simply pick the two closest stops to the position without special
casing the first and last stops.
commit 84d6ca7c891601b019d4862a556ed98b7e6fe525
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Oct 14 07:42:00 2011 -0400
gradient walker: Correct types and fix formatting
The type of pos in gradient_walker_reset() and gradient_walker_pixel()
is pixman_fixed_48_16_t and not pixman_fixed_32_32. The types of the
positions in the walker struct are pixman_fixed_t and not int32_t, and
need_reset is a boolean, not an integer. The spread field should be
called repeat and have the type pixman_repeat_t.
Also fix some formatting issues, make gradient_walker_reset() static,
and delete the pointless PIXMAN_GRADIENT_WALKER_NEED_RESET() macro.
commit ace225b53dee88d134753ac901f26ba3db6781da
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 11 16:12:24 2011 -0400
Add stable release / development snapshot to draft release notes
This will hopefully serve as a reminder to me that I should put this
information in the release notes.
commit bb7142d361d56d66ac40debb60a7c4d099764ba8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 11 06:10:39 2011 -0400
Post-release version bump to 0.23.7
commit e20ac40bd30484f0f711b52d0c1993ef08760284
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 11 06:00:51 2011 -0400
Pre-release version bump to 0.23.6
commit a43946a51fbbdc76be1af9bc25fe7c5c2a6314bb
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Thu Sep 22 18:42:38 2011 +0900
Simple repeat: Extend too short source scanlines into temporary buffer
Too short scanlines can cause repeat handling overhead and optimized
pixman composite functions usually process a bunch of pixels in a
single loop iteration it might be beneficial to pre-extend source
scanlines. The temporary buffers will usually reside in cache, so
accessing them should be quite efficient.
commit eaff774a3f8af6651a245711b9ab8af3211eeb10
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Mon Aug 29 21:44:36 2011 +0900
Simple repeat fast path
We can implement simple repeat by stitching existing fast path
functions. First lookup COVER_CLIP function for given input and
then stitch horizontally using the function.
commit a258e33fcb6cf08a2ef76e374cb92a12c9adb171
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Thu Sep 22 16:33:02 2011 +0900
Move _pixman_lookup_composite_function() to pixman-utils.c
commit fc62785aabbe890b656c9cbaa57f2e65e74bbcc2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jun 27 21:17:04 2011 +0000
Add src, mask, and dest flags to the composite args struct.
These flags are useful in the various compositing routines, and the
flags stored in the image structs are missing some bits of information
that can only be computed when pixman_image_composite() is called.
commit fa6523d13ae9b7986bb890df5ad66e8599bc3ed8
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Thu Sep 22 16:26:55 2011 +0900
Add new fast path flag FAST_PATH_BITS_IMAGE
This fast path flag indicate that type of the image is bits image.
commit 7272e2fcd2ff8e546cef19929cd370ae2f946135
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Thu Sep 22 16:20:03 2011 +0900
init/fini functions for pixman_image_t
pixman_image_t itself can be on stack or heap. So segregating
init/fini from create/unref can be useful when we want to use
pixman_image_t on stack or other memory.
commit 4dcf1b0107334857e1f0bb203c34efed1146535c
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Sep 7 23:00:29 2011 +0900
sse2: Bilinear scaled over_8888_8_8888
commit 81050f2784407b260a1897efa921631a19eeec6b
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Sep 7 22:57:29 2011 +0900
sse2: Bilinear scaled over_8888_8888
commit d67c0b883daeeaacf3f21f1ddbdcf9ecf94fac43
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Sep 7 22:51:46 2011 +0900
sse2: Macros for assembling bilinear interpolation code fractions
Primitive bilinear interpolation code is reusable to implement other
bilinear functions.
BILINEAR_DECLARE_VARIABLES
- Declare variables needed to interpolate src pixels.
BILINEAR_INTERPOLATE_ONE_PIXEL
- Interpolate one pixel and advance to next pixel
BILINEAR_SKIP_ONE_PIXEL
- Skip interpolation and just advance to next pixel
This is useful for skipping zero mask
commit 741eb8462c3ff72cbf2d9acfeb1e97208a414fcd
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Oct 6 17:56:09 2011 -0400
Correct the minimum gcc version needed for iwmmxt
Spotted by Søren Sandmann.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 0a34277180d29f471a2554afc2e2b682fee33c79
Author: Matt Turner <mattst88@gmail.com>
Date: Wed Oct 5 22:54:36 2011 -0400
Make sure iwMMXt is only detected on ARM
iwMMXt is incorrectly detected on x86 and amd64. This happens because
the test uses standard _mm_* intrinsic functions which it compiles with
-march=iwmmxt, but when the user has set CFLAGS=-march=k8 for instance,
no error is generated from -march=iwmmxt, even though it's not a valid
flag on x86/amd64. Passing CFLAGS=-march=native does not override the
-march=iwmmxt flag though, which is why it wasn't noticed before.
So, just #error out in the test if the __arm__ preprocessor directive
isn't defined.
Fixes https://bugs.gentoo.org/show_bug.cgi?id=385179
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 879b7c21e45b092272e689e05dc867f6260e258f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 27 11:32:13 2011 -0400
Don't include stdint.h in scaling-helpers-test.
Fixes bug 41257.
commit 01c2dcbe6936a868651160d2617d783d5b8d3d7d
Author: Benjamin Otte <otte@redhat.com>
Date: Wed Sep 14 17:52:03 2011 +0200
build: replace @VAR@ with $(VAR) in makefiles
commit 100f16eae94a54fbb9ee1f44fa3c34602ba25c4d
Author: Benjamin Otte <otte@redhat.com>
Date: Wed Sep 14 17:01:51 2011 +0200
tests: Add PNG_CFLAGS/LIBS to tests
PNG flags were accidentally included by gdk-pixbuf. This has been fixed
recently, so we need to make sure to include it ourselves.
commit d1313febbec2124ee175cd323a338caa3c1a8fc2
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Sep 22 15:28:00 2011 -0400
mmx: optimize unaligned 64-bit ARM/iwmmxt loads
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 7ab94c5f99cc524ddfbbcedca4304ec7943f74e1
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Jul 31 22:42:24 2011 -0400
mmx: compile on ARM for iwmmxt optimizations
Check in configure for at least gcc-4.6, since gcc-4.7 (and hopefully
4.6) will be the eariest version capable of compiling the _mm_*
intrinsics on ARM/iwmmxt. Even for suitable compile versions I use
_mm_srli_si64 which is known to cause unpatched compilers to fail.
Select iwmmxt at runtime only after NEON, since we expect the NEON
optimizations to be more capable and faster than iwmmxt.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit f66887d9eae9646c838d518020168b1403705b1e
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Sep 4 14:11:46 2011 -0400
mmx: prepare pixman-mmx.c to be compiled for ARM/iwmmxt
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 7c6d5d1999989187b60f1e0e82e55ed55238eb27
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Sep 8 20:33:45 2011 +0200
mmx: fix unaligned accesses
Simply return *p in the unaligned access functions, since alignment
constraints are very relaxed on x86 and this allows us to generate
identical code as before.
Tested with the test suite, lowlevel-blit-test, and cairo-perf-trace on
ARM and Alpha with no unaligned accesses found.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 5d98abb14ca9042af6d0ec7c14c8398cf4046b80
Author: Matt Turner <mattst88@gmail.com>
Date: Thu Sep 22 15:39:53 2011 -0400
mmx: wrap x86/MMX inline assembly in ifdef USE_X86_MMX
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 02c1f1a022e86ced69fc91376232d75d5d6583c5
Author: Matt Turner <mattst88@gmail.com>
Date: Sun Jul 31 20:20:12 2011 +0000
mmx: rename USE_MMX to USE_X86_MMX
This will make upcoming ARM usage of pixman-mmx.c unambiguous.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 57fd8c37aa3148b1d70bad65e1a49721e9a47d7e
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Sep 23 14:10:52 2011 -0400
mmx: convert while (w) to if (w) when possible
gcc isn't able to see that w is no greater than 1, so it generates
unnecessary loop instructions with while (w).
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 38a7aae1d9c8e1e41de22f9c3846dfc975af6838
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Sep 9 15:33:14 2011 +0200
mmx: fix formats in commented code
b8r8g8 is apparently no longer supported sometime since this code was
commented.
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit b6b77488a0259da3662edf68568e78806ca97444
Author: Matt Turner <mattst88@gmail.com>
Date: Fri Sep 9 15:34:04 2011 +0200
lowlevel-blt: add over_x888_8_8888
Signed-off-by: Matt Turner <mattst88@gmail.com>
commit 9126f36b964c71b83c69235df4c3a46ab81ab5d5
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun May 22 22:51:00 2011 +0300
BILINEAR->NEAREST filter optimization for simple rotation and translation
Simple rotation and translation are the additional cases when BILINEAR
filter can be safely reduced to NEAREST.
commit ad5c6bbb36c1c5e72313f7c7bc7c6e6b7e79daba
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 4 02:53:39 2011 -0400
Strength-reduce BILINEAR filter to NEAREST filter for identity transforms
An image with a bilinear filter and an identity transform is
equivalent to one with a nearest filter, so there is no reason the
standard fast paths shouldn't be usable.
But because a BILINEAR filter samples a 2x2 pixel block in the source
image, FAST_PATH_SAMPLES_COVER_CLIP can't be set in the case where the
source area is the entire image, because some compositing operations
might then read pixels outside the image.
This patch fixes the problem by splitting the
FAST_PATH_SAMPLES_COVER_CLIP flag into two separate flags
FAST_PATH_SAMPLES_COVER_CLIP_NEAREST and
FAST_PATH_SAMPLES_COVER_CLIP_BILINEAR that indicate that the clip
covers the samples taking into account NEAREST/BILINEAR filters
respectively.
All the existing compositing operations that require
FAST_PATH_SAMPLES_COVER_CLIP then have their flags modified to pick
either COVER_CLIP_NEAREST or COVER_CLIP_BILINEAR depending on which
filter they depend on.
In compute_image_info() both COVER_CILP_NEAREST and
COVER_CLIP_BILINEAR can be set depending on how much room there is
around the clip rectangle.
Finally, images with an identity transform and a bilinear filter get
FAST_PATH_NEAREST_FILTER set as well as FAST_PATH_BILINEAR_FILTER.
Performance measurementas with render_bench against Xephyr:
Before
*** ROUND 1 ***
---------------------------------------------------------------
Test: Test Xrender doing non-scaled Over blends
Time: 5.720 sec.
---------------------------------------------------------------
Test: Test Xrender (offscreen) doing non-scaled Over blends
Time: 5.149 sec.
---------------------------------------------------------------
Test: Test Imlib2 doing non-scaled Over blends
Time: 6.237 sec.
After:
*** ROUND 1 ***
---------------------------------------------------------------
Test: Test Xrender doing non-scaled Over blends
Time: 4.947 sec.
---------------------------------------------------------------
Test: Test Xrender (offscreen) doing non-scaled Over blends
Time: 4.487 sec.
---------------------------------------------------------------
Test: Test Imlib2 doing non-scaled Over blends
Time: 6.235 sec.
commit eb2e7ed81b324af730c1a7639c9ca9ed60152875
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Sep 5 14:43:25 2011 -0400
test: Occasionally use a BILINEAR filter in blitters-test
To test that reductions of BILINEAR->NEAREST for identity
transformations happen correctly, occasionally use a bilinear filter
in blitters test.
commit 2a9f88430e7088eccfbbbd6c6b4f4e534126b1e1
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun May 22 22:16:38 2011 +0300
test: better coverage for BILINEAR->NEAREST filter optimization
The upcoming optimization which is going to be able to replace BILINEAR filter
with NEAREST where appropriate needs to analyze the transformation matrix
and not to make any mistakes.
The changes to affine-test include:
1. Higher chance of using the same scale factor for x and y axes. This can help
to stress some special cases (for example the case when both x and y scale
factors are integer). The same applies to x/y translation.
2. Introduced a small chance for "corrupting" transformation matrix by flipping
random bits. This supposedly can help to identify the cases when some of the
fast paths or other code logic is wrongly activated due to insufficient checks.
commit 054922e2fce1f8d9db4b9b756e54b0fa5655956d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Sep 5 00:19:51 2011 -0400
Eliminate compute_sample_extents() function
In analyze_extents(), instead of calling compute_sample_extents() call
compute_transformed_extents() and inline the remaining part of
compute_sample_extents(). The upcoming bilinear->nearest optimization
will do something different with these two pieces of code.
commit 577b6c46fd39c43c2c328fed48854b50b9e85e5b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 4 17:43:29 2011 -0400
Split computation of sample area into own function
compute_sample_extents() have two parts: one that computes the
transformed extents, and one that checks whether the computed extents
fit within the 16.16 coordinate space.
Split the first part into its own function
compute_transformed_extents().
commit 5064f1803136cbc28d1e9f636feb2ff8ccfbdded
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 4 17:17:53 2011 -0400
Remove x and y coordinates from analyze_extents() and compute_sample_extents()
These coordinates were only ever used for subtracting from the extents
box to put it into the coordinate space of the image, so we might as
well do this coordinate translation only once before entering the
functions.
commit dbcb4af60d8c688eaaa027c3c5bce9527a410465
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Aug 16 06:13:59 2011 -0400
Use MAKE_ACCESSORS() to generate accessors for paletted formats
Add support in convert_pixel_from_a8r8g8b8() and
convert_pixel_to_a8r8g8b8() for conversion to/from paletted formats,
then use MAKE_ACCESSORS() to generate accessors for the indexed
formats: c8, g8, g4, c4, g1
commit c82c2c38538f5c3f25cf81ad697040d2332d64de
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 30 12:36:58 2010 -0400
Use MAKE_ACCESSORS() to generate accessors for the a1 format.
Add FETCH_1 and STORE_1 macros and use them to add support for 1bpp
pixels to fetch_and_convert_pixel() and convert_and_store_pixel(),
then use MAKE_ACCESSORS() to generate the accessors for the a1
format. (Not the g1 format as it is indexed).
commit 2114dd8aa1f292541e55b6b84152732b37c1c1eb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Aug 16 14:38:44 2011 -0400
Use MAKE_ACCESSORS() to generate accessors for 24bpp formats
Add FETCH_24 and STORE_24 macros and use them to add support for 24bpp
pixels in fetch_and_convert_pixel() and
convert_and_store_pixel(). Then use MAKE_ACCESSORS() to generate
accessors for the 24 bpp formats:
r8g8b8
b8g8r8
commit f19f5daa1b111368bcf75435dce12483e08756f2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Aug 18 05:09:07 2011 -0400
Use MAKE_ACCESSORS() to generate accessors for 4 bpp RGB formats
Use FETCH_4 and STORE_4 macros to add support for 4bpp pixels to
fetch_and_convert_pixel() and convert_and_store_pixel(), then use
MAKE_ACCESSORS() to generate accessors for 4 bpp formats, except g4 and
c4 which are indexed:
a4
r1g2b1
b1g2r1
a1r1g1b1
a1b1g1r1
commit af78fe24e41c30b5c9b3da4449813c75f760c845
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Aug 18 08:13:58 2011 -0400
Use MAKE_ACCESSORS() to generate accessors for 8bpp RGB formats
Add support for 8 bpp formats to fetch_and_convert_pixel() and
convert_and_store_pixel(), then use MAKE_ACCESSORS() to generate the
accessors for all the 8 bpp formats, except g8 and c8, which are
indexed:
a8
r3g3b2
b2g3r3
a2r2g2b2
a2b2g2r2
x4a4
commit 5e1b9f897532ac0fa220880bf94dd660c837afe9
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Aug 18 08:13:44 2011 -0400
Use MAKE_ACCESSORS() to generate accessors for all the 16bpp formats
Add support for 16bpp pixels to fetch_and_convert_pixel() and
convert_and_store_pixel(), then use MAKE_ACCESSORS() to generate
accessors for all the 16bpp formats:
r5g6b5
b5g6r5
a1r5g5b5
x1r5g5b5
a1b5g5r5
x1b5g5r5
a4r4g4b4
x4r4g4b4
a4b4g4r4
x4b4g4r4
commit a77597bcb8d10afd66980b8db8839049181b3743
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Aug 18 08:13:30 2011 -0400
Use MAKE_ACCESSORS() to generate all the 32 bit accessors
Add support for 32bpp formats in fetch_and_convert_pixel() and
convert_and_store_pixel(), then use MAKE_ACCESSORS() to generate
accessors for all the 32 bpp formats:
a8r8g8b8
x8r8g8b8
a8b8g8r8
x8b8g8r8
x14r6g6b6
b8g8r8a8
b8g8r8x8
r8g8b8x8
r8g8b8a8
commit 814af33df3e9892e4fc790c7ccd2702ce2b8ea97
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 17 17:27:58 2011 -0400
Add initial version of the MAKE_ACCESSORS() macro
This macro will eventually allow the fetchers and storers to be
generated automatically. For now, it's just a skeleton that doesn't
actually do anything.
commit 5cae7a3fe6e148d2bb42b86efb7daf27dbf12ee0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 15 18:42:38 2011 -0400
Add general pixel converter
This function can convert between any <= 32 bpp formats. Nothing uses
it yet.
commit 22f54dde6bbf87251a0b4ad93bacbdaa7cb508d8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 15 10:22:05 2011 -0400
Add a generic unorm_to_unorm() conversion utility
This function can convert between normalized numbers of different
depths. When converting to higher bit depths, it will replicate the
existing bits, when converting to lower bit depths, it will simply
truncate.
This function replaces the expand16() function in pixman-utils.c
commit d842669a467be490bb0a40000d0c0fccea0b1b85
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Sep 19 09:08:33 2011 -0400
A few tweaks to a comment in pixman-combine.c.template
Include a link to
http://marc.info/?l=xfree-render&m=99792000027857&w=2
where Keith explains how the disjoint/conjoint operators work.
commit 3432e1a3444a55f71e294da7d350957a8e1232c3
Author: Jon TURNEY <jon.turney@dronecode.org.uk>
Date: Mon Sep 19 06:17:58 2011 -0400
Fix build on cygwin after commit efdf65c0c4fff551fb3cd9104deda9adb6261e22
libutils depends on pixman and so needs to preceed it in the link order
Found by tinderbox, see [1]
[1] http://tinderbox.freedesktop.org/builds/2011-09-15-0005/logs/pixman/#build
Signed-off-by: Jon TURNEY <jon.turney at dronecode.org.uk>
commit f9faf4df440366ed36b197dc09b1c2b51af3387b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Sep 12 23:17:39 2011 -0400
test: Use smaller boxes in region_contains_test()
The boxes used region_contains_test() sometimes overflow causing
*** BUG ***
In pixman_region32_union_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug
messages to be printed when pixman is compiled with DEBUG. Fix this by
dividing the x, y, w, h coordinates by 4 to prevent overflows.
commit 9623b478f7e872af36ca77af5cc9e85f5ea132cf
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 4 21:33:05 2011 +0200
build-win32: Add 'check' target
On win32 the tests are built but they are not run automatically by the
build system.
A minimal 'check' target (depending on the tests being built) can
simply run them and log to the console their success/failure.
commit 479d0944851fffda7ed860523feb388fec028545
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 4 13:52:53 2011 -0700
test: Do not include config.h unless HAVE_CONFIG_H is defined
The win32 build system does not generate config.h and correctly runs
the compiler without defining HAVE_CONFIG_H. Nevertheless some files
include config.h without checking for its availability, breaking the
build from a clean directory:
test\utils.h(2) : fatal error C1083: Cannot open include file:
'config.h': No such file or directory
...
commit d46a9f3acef21b50639c64f190a0de7eca21747c
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 4 21:56:20 2011 +0200
build-win32: Add root Makefile.win32
Add Makefile.win32 to the pixman root. This makefile can recursively
run the other ones to compile the library or the test suite.
commit a76b78c2daa61900572014070d3e856a460fd554
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 4 18:00:38 2011 +0200
build-win32: Share targets and variables across win32 makefiles
The win32 build system repeatedly defines some basic variables
(notably program names and flags) and C sources compilation rules.
They can be factored out to a common Makefile, to be included in every
other Makefile.win32.
commit efdf65c0c4fff551fb3cd9104deda9adb6261e22
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 4 20:07:42 2011 +0200
build: Reuse test sources
Makefile.am and Makefile.win32 should not duplicate content, as this
leads to breaking the build when they are not kept in sync.
This can be avoided by listing sources, headers and common build
variables/rules in a Makefile.sources file.
In order to further simplify the test makefiles, the utility functions
are now in a static library, which gets linked to all the tests and
benchmarks.
commit a4f95d083b1aa644923d79e7b61df6c2eacca7c2
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 4 09:41:41 2011 -0700
build: Reuse sources and pixman-combine build rules
Makefile.am and Makefile.win32 should not duplicate content, as this
leads to breaking the build when they are not kept in sync.
This can be avoided by listing sources, headers and common build
variables/rules in a Makefile.sources file.
commit 25bd96a3d0e935646d54c938bf065696d3a79e07
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 4 20:07:57 2011 +0200
test: Fix compilation on win32
Adding scaling-helpers-test to the testsuite on win32 makes MSVC
complain about int64_t being used as an expression:
scaling-helpers-test.c(27) : error C2275: 'int64_t' : illegal use of
this type as an expression
commit 9882d832f60419094c0b379b88fa344490ea36eb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 11 19:44:06 2011 -0400
Use pkg-config to determine the flags to use with libpng
Previously we would unconditionally link with -lpng leading to build
failures on systems without libpng.
commit 99a53667da3014a463b8a0e2b6c317efe0ebb220
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 22 05:20:36 2011 -0500
test: New function to save a pixman image to .png
When debugging it is often very useful to be able to save an image as
a png file. This commit adds a function "write_png()" that does that.
If libpng is not available, then the function becomes a noop.
commit 1e1ae0bf6e9dd2189133539b9c34a0f6826b7393
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Sep 9 23:59:20 2011 -0400
Post-release version bump to 0.23.5
commit f901e3b58b5d710cf136af89fc7395942bea9dfb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Sep 9 23:51:11 2011 -0400
Pre-release version bump to 0.23.4
commit f5da52b6774bdefdfa88a28fdc3904797adb7e26
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon Aug 22 15:29:25 2011 +0100
bits: optimise fetching width==1 repeats
Profiling ign.com, 20% of the entire render time was absorbed in this
single operation:
<< /content //COLOR_ALPHA /width 480 /height 800 >> surface context
<< /width 1 /height 677 /format //ARGB32 /source <|!!!@jGb!m5gD']#$jFHGWtZcK&2i)Up=!TuR9`G<8;ZQp[FQk;emL9ibhbEL&NTh-j63LhHo$E=mSG,0p71`cRJHcget4%<S\X+~> >> image pattern
//EXTEND_REPEAT set-extend
set-source
n 0 0 480 677 rectangle
fill+
pop
which is a simple composition of a single pixel wide image. Sadly this
is a workaround for lack of independent repeat-x/y handling in cairo and
pixman. Worse still is that the worst-case behaviour of the general repeat
path is for width 1 images...
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
commit 7ef44cae6ba6d1c2aae94cdc10851fa8d14821f7
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Fri Aug 19 21:20:08 2011 +0900
ARM: NEON better instruction scheduling of over_n_8888
New head, tail, tail/head blocks are added and instructions
are reordered to eliminate pipeline stalls
Performance numbers of before/after
- cortex a8 -
before : L1: 375.39 L2: 391.93 M:114.39 ( 40.99%) HT: 99.37 VT: 98.20 R: 90.24 RT: 32.87 ( 240Kops/s)
after : L1: 481.90 L2: 483.46 M:114.29 ( 40.69%) HT:106.91 VT: 93.38 R: 90.74 RT: 29.51 ( 236Kops/s)
- cortex a9 -
before : L1: 324.50 L2: 332.79 M:155.55 ( 47.51%) HT:111.93 VT: 93.58 R: 71.92 RT: 28.21 ( 233Kops/s)
after : L1: 355.87 L2: 364.49 M:156.90 ( 47.59%) HT:111.52 VT: 91.76 R: 72.16 RT: 28.22 ( 234Kops/s)
commit 6aa82b7a729ae7f0a26ae5a7c08ac74ebd5051cd
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Tue Aug 23 15:00:11 2011 +0900
ARM: NEON better instruction scheduling of over_n_8_8888
tail/head block is expanded and reordered to eliminate stalls
Performance numbers of before/after
- cortex a8 -
before : L1: 201.35 L2: 190.48 M:101.94 ( 54.85%) HT: 78.41 VT: 63.83 R: 58.25 RT: 21.74 ( 191Kops/s)
after : L1: 257.65 L2: 255.49 M:102.04 ( 55.33%) HT: 79.19 VT: 65.46 R: 59.23 RT: 21.12 ( 189Kops/s)
- cortex a9 -
before : L1: 157.35 L2: 159.81 M:133.00 ( 60.94%) HT: 82.44 VT: 63.64 R: 51.66 RT: 19.15 ( 179Kops/s)
after : L1: 216.83 L2: 219.40 M:135.83 ( 61.80%) HT: 85.60 VT: 64.80 R: 52.23 RT: 19.16 ( 179Kops/s)
commit 4ffa077487cb71ab17d12c37d298ca8a17e5bf35
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sat Aug 13 16:18:17 2011 +0200
Workaround bug in llvm-gcc
llvm-gcc (shipped in Apple XCode 4.1.1 as the default compiler or in
the 2.9 release of LLVM) performs an invalid optimization which
unifies the empty_region and the bad_region structures because they
have the same content.
A bugreport has been filed against Apple Developers Tool for this
issue. This commit works around this bug by making one of the two
structures volatile, so that it cannot be merged.
Fixes region-contains-test.
commit a1ebff0dcbb52cd9eba2bf953b3ba251df6dd787
Author: Andrea Canciani <ranma42@gmail.com>
Date: Wed Jun 29 14:14:38 2011 +0200
win32: Build benchmarks
Add the makefile rules needed to compile lowlevel-blt-bench on win32
and fix the compilation errors.
commit 2644d5a947ad82a82e914acf72bbb411097a4bae
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 11 17:09:34 2011 -0500
Move bilinear interpolation to pixman-inlines.h
commit 12ad42dd32240f08708eddb157a6b23904ae39a7
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 11 16:09:21 2011 -0500
Use repeat() function from pixman-inlines.h in pixman-bits-image.c
The repeat() functionality was duplicated between pixman-bits-image.c
and pixman-inlines.h
commit 2f443466bb9b8901f658e30c606ddacc4fed8535
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 11 16:07:24 2011 -0500
Rename pixman-fast-path.h to pixman-inlines.h
It is not really specific to pixman-fast-path.c.
commit e58b208958900803f74d5e20c855bcb14752d976
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Aug 11 06:30:43 2011 -0400
In pixman_image_create_bits() allow images larger than 2GB
There is no reason for pixman_image_create_bits() to check that the
image size fits in int32_t. The correct check is against size_t since
that is what the argument to calloc() is.
This patch fixes this by adding a new _pixman_multiply_overflows_size()
and using it in create_bits(). Also prepend an underscore to the names
of other similar functions since they are internal to pixman.
V2: Use int, not ssize_t for the arguments in create_bits() since
width/height are still limited to 32 bits, as pointed out by Chris
Wilson.
commit bdfb5944ffd460631c082e560c89a6c9830b37de
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 8 10:18:07 2011 -0400
Don't include stdint.h in lowlevel-blt-bench.c
Some systems don't have the file, and the types are already defined in
pixman.h.
https://bugs.freedesktop.org//show_bug.cgi?id=37422
commit e5d85ce6629c84b9dad5a9c76bd9f895157c5a74
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Aug 2 03:03:48 2011 -0400
Use find_box_for_y() in pixman_region_contains_point() too
The same binary search from the previous commit can be used in this
function too.
V2: Remove check from loop that is not needed anymore, pointed out by
Andrea Canciani.
commit 04bd4bdca622f060d7d39caddeaa495d3e6eb0cb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 1 22:32:09 2011 -0400
Speed up pixman_region{,32}_contains_rectangle()
When someone selects some text in Firefox under a non-composited X
server and initiates a drag, a shaped window is created with a complex
shape corresponding to the outline of the text. Then, on every mouse
movement pixman_region_contains_rectangle() is called many times on
that complicated region. And pixman_region_contains_rectangle() is
doing a linear scan through the rectangles in the region, although the
scan does exit when it finds the first box that can't possibly
intersect the passed-in rectangle.
This patch changes the loop so that it uses a binary search to skip
boxes that don't overlap the current y position. The performance
improvement for the text dragging case is easily noticable.
V2: Use the binary search for the "getting up to speed or skippping
remainder of band" as well.
commit 795ec5af2fc86fb0ebeca9ce82913d6002267a12
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Aug 2 01:32:15 2011 -0400
New test of pixman_region_contains_{rectangle,point}
This test generates random regions and checks whether random boxes and
points are contained within them. The results are combined and a CRC32
value is computed and compared to a known-correct one.
commit 842591d9d12a24a9a06308ae03996153c5a99e64
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 3 18:38:20 2011 -0400
Fix lcg_rand_u32() to return 32 random bits.
The lcg_rand() function only returns 15 random bits, so lcg_rand_u32()
would always have 0 in bit 31 and bit 15. Fix that by calling
lcg_rand() three times, to generate 15, 15, and 2 random bits
respectively.
V2: Use the 10/11 most significant bits from the 3 lcg results and mix
them with the low ones from the adjacent one, as suggested by Andrea
Canciani.
commit 12da53f81c4a507a963641796132bbafe0cd6224
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Thu Aug 4 22:21:04 2011 +0900
ARM NEON: Standard fast path out_reverse_8_8888
This fast path is frequently used by cairo to do polygon rendering.
Existing NEON code generation framework is used.
commit b395c3c5a28570ceac7cea55cb66a94096559897
Author: Andrea Canciani <ranma42@gmail.com>
Date: Mon Jul 18 08:15:23 2011 +0200
radial: Fix typos and trailing whitespace
Correct a typo reported by James Cloos and some reported by automatic
spellchecking.
Remove trailing whitespace.
commit b8d6babc91459a9f854695b56f0265298a3c6427
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sat Jul 23 00:27:34 2011 +0300
ARM: workaround binutils bug #12931 (code sections alignment)
More details in binutils bugtracker:
http://sourceware.org/bugzilla/show_bug.cgi?id=12931
The problem was encountered in the wild by Mozilla:
https://bugzilla.mozilla.org/show_bug.cgi?id=672787
commit 5754e5689d4cac8868d6416dffa4a7d0c2d15423
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 15 23:35:21 2011 +0300
C fast path for scaled src_x888_8888 with nearest filter
The necessity is justified by a message in the pixman mailing list:
http://lists.freedesktop.org/archives/pixman/2011-July/001330.html
NONE repeat is not supported, but could be added by tweaking
the interpretation and making use of 'fully_transparent_src'
scanline function argument.
commit c06af104546868ed748c8f771817f5e9ae9a6a2d
Author: Andrea Canciani <ranma42@gmail.com>
Date: Fri Jul 15 22:02:01 2011 +0200
radial: Improve documentation and naming
Add a comment to explain why the tests guarantee that the code always
computes the greatest valid root.
Rename "det" as "discr" to make it match the mathematical name
"discriminant".
Based on a patch by Jeff Muizelaar <jmuizelaar@mozilla.com>.
commit e814b50877bf313619fbf777dcab98d39874f8a4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 4 15:55:52 2011 -0400
Makefile.am: Add pixman@lists.freedesktop.org to RELEASE_ANNOUNCE_LIST
commit ed6d2f1cecb2f6d0cfe92bf493fde1abb4004856
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 4 15:35:17 2011 -0400
Post-release version bump to 0.23.3
commit 6c4001a0e1cc0350147638ba941d23e129d00e0d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 4 08:13:19 2011 -0400
Pre-release version bump to 0.23.2
commit eff7c8efabe2da33edbf0bdc06e101352981286b
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Mon Jun 13 19:53:49 2011 +0900
Bilinear REPEAT_NORMAL source line extension for too short src_width
To avoid function call and other calculation overhead, extend source
scanline into temporary buffer when source width is too small.
Temporary buffer will be repeatedly accessed, so extension cost is
very small due to cache effect.
commit 828794d328e7ad1efc860baee8d6e72450b486b9
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Jun 8 17:17:42 2011 +0900
Enable REPEAT_NORMAL bilinear fast path entries
commit 1161b3f9edb6f5c396438b79f2df3218ea8d194e
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Jun 8 17:14:29 2011 +0900
ARM: Add REPEAT_NORMAL functions to bilinear BIND macros
Now bilinear template support REPEAT_NORMAL, so functions for that
is added to PIXMAN_ARM_BIND_SCALED_BILINEAR_ macros. Fast path
entries are not enabled yet.
commit ebd2f06d96ee91f9f7f13b906ae328862da7dde8
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Jun 8 17:11:24 2011 +0900
sse2: Declare bilinear src_8888_8888 REPEAT_NORMAL composite function
Now bilinear template support REPEAT_NORMAL, so declare composite
functions using it. Function is just declared not used yet.
commit 7e22b2f7824f844076e1bb1fb26a6ec5e5d029cd
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Jun 8 15:58:01 2011 +0900
REPEAT_NORMAL support for bilinear fast path template
The basic idea is to break down normal repeat into a set of
non-repeat scanline compositions and stitching them together.
Bilinear may interpolate last and first pixels of source scanline.
In this case, we can use temporary wrap around buffer.
commit 2f025bad436982a2b1c54d7cb49b426ebf198350
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Jun 8 15:37:31 2011 +0900
Replace boolean arguments with flags for bilinear fast path template
By replacing boolean arguments with flags, the code can be more
readable and flags can be extended to do some more things later.
Currently following flags are defined.
FLAG_NONE
- No flags are turned on.
FLAG_HAVE_SOLID_MASK
- Template will generate solid mask composite functions.
FLAG_HAVE_NON_SOLID_MASK
- Template will generate bits mask composite functions.
FLAG_HAVE_SOLID_MASK and FLAG_NON_SOLID_MASK should be mutually
exclusive.
commit 4d4d1760e8118aaea06783079a3b87f83deb4907
Author: Søren Sandmann <ssp@redhat.com>
Date: Sat Jun 25 10:16:25 2011 -0400
test: Make fuzzer-find-diff.pl executable
commit ece8d13bf77d050662bb9db9716576dabff37554
Author: Søren Sandmann <sandmann@cs.au.dk>
Date: Sun Jun 19 20:29:08 2011 -0400
ARM: Fix two bugs in neon_composite_over_n_8888_0565_ca().
The first bug is that a vmull.u8 instruction would store its result in
the q1 register, clobbering the d2 register used later on. The second
is that a vraddhn instruction would overwrite d25, corrupting the q12
register used later.
Fixing the second bug caused a pipeline bubble where the d18 register
would be unavailable for a clock cycle. This is fixed by swapping the
instruction with its successor.
commit 5715a394c41b2fd259ce7bf07b859d2a4eb2ec09
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jun 19 19:10:45 2011 -0400
blitters-test: Make common formats more likely to be tested.
Move the eight most common formats to the top of the list of image
formats and make create_random_image() much more likely to select one
of those eight formats.
This should help catch more bugs in SIMD optimized operations.
commit d815a1c54ae6ea6ccd16dedb7f83db0d2526d637
Author: Andrea Canciani <ranma42@gmail.com>
Date: Fri Jun 10 08:56:10 2011 +0200
Silence autoconf warnings
Autoconf 2.86 reports:
warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
Every code fragment must be wrapped in [AC_LANG_SOURCE([...])]
commit a89f8cfaf11d0149b73ce40eca6e8a7f262f305a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 25 15:09:17 2011 -0400
Replace argumentxs to composite functions with a pointer to a struct
This allows more information, such as flags or the composite region,
to be passed to the composite functions.
commit 99e7d8fab546257ef729ea6db6e9beede984cec1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 25 14:20:43 2011 -0400
In pixman-general.c rename image_parameters to {src, mask, dest}_image
All the fast paths generally use these names as well.
commit 4d713e3120909d82e37b0405d035e85bbc8a61a9
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 25 14:17:08 2011 -0400
Replace instances of "dst_*" with "dest_*"
The variables in question were dst_x, dst_y, dst_image. The majority
of _x and _y uses were already dest_x and dest_y, while the majority
of _image uses were dst_image.
commit 6aceb767aa6eea38ec3021263ca1d83aa9e0a3df
Author: Søren Sandmann <ssp@redhat.com>
Date: Sat May 28 12:32:35 2011 -0400
demos: Comment out some unused variables
commit 4abe76432a59dec2e7978bfa4a01ad032178da0a
Author: Søren Sandmann <ssp@redhat.com>
Date: Sat May 28 11:56:32 2011 -0400
sse2: Delete some unused variables
commit 5c60e1855b082b1a323319e1d0ba2d6f916fb3d5
Author: Søren Sandmann <ssp@redhat.com>
Date: Sat May 28 11:51:31 2011 -0400
mmx: Delete some unused variables
commit 827e61333865dc94851eb79c8e640b103e3fd629
Author: Andrea Canciani <ranma42@gmail.com>
Date: Mon May 23 12:08:54 2011 +0200
Include noop in win32 builds
commit 65b63728cc8ada802c9798e11e6fa92d21f2fbf8
Author: Nis Martensen <nis.martensen@web.de>
Date: Mon May 2 21:43:58 2011 +0200
Fix a few typos in pixman-combine.c.template
Some equations have too much multiplication with alpha.
commit dd449a2a8ee1381fdc5297257917bc0786bf0ac4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 23 10:26:49 2011 -0400
Move NOP src iterator into noop implementation.
The iterator for sources where neither RGB nor ALPHA is needed, really
belongs in the noop implementation.
commit ba480882aa465d8414dc8a4472d89d94911af60a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 23 10:24:41 2011 -0400
Move NULL iterator into pixman-noop.c
Iterating a NULL image returns NULL for all scanlines. We may as well
do this in the noop iterator.
commit a4e984de19f7f2ca30b1d736cdd2dded91a75907
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 8 23:42:36 2011 -0500
Add a noop src iterator
When the image is a8r8g8b8 and not transformed, and the fetched
rectangle is within the image bounds, scanlines can be fetched by
simply returning a pointer instead of copying the bits.
commit d4fff4a95921f734f26ef51953f4dddfcf423eab
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jan 24 12:16:03 2011 -0500
Move noop dest fetching to noop implementation
It will at some point become useful to have CPU specific destination
iterators. However, a problem with that, is that such iterators should
not be used if we can composite directly in the destination image.
By moving the noop destination iterator to the noop implementation, we
can ensure that it will be chosen before any CPU specific iterator.
commit 13ce88f80095d0fa18330a23e03819368987e277
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jan 24 11:35:27 2011 -0500
Add a noop composite function for the DST operator
The DST operator doesn't actually do anything, so add a noop "fast
path" for it, instead of checking in pixman_image_composite32().
The performance tradeoff here is that we get rid of a test for DST in
the common case where the operator is not DST, in return for an extra
walk over the clip rectangles in the uncommon case where the operator
actually is DST.
commit 8c76235f41b2ac70ce6e652dcd1cab975e1283a4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jan 24 11:31:49 2011 -0500
Add a "noop" implementation.
This new implementation is ahead of all other implementations in the
fallback chain and is supposed to contain operations that are "noops",
ie., they don't require any work. For example, it might contain a
"fast path" for the DST operator that doesn't actually do anything or
an iterator for a8r8g8b8 that just returns a pointer into the image.
commit 0f6a4d45886d64b244d57403609f0377b58cc7fb
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu May 5 10:17:08 2011 +0200
test: Fix compilation on win32
MSVC complains about uint32_t being used as an expression:
composite.c(902) : error C2275: 'uint32_t' : illegal use of this type
as an expression
commit 838c2b593ec5ebbbf82de5b7790f5b68fd86bbc1
Author: Dave Yeo <dave.r.yeo@gmail.com>
Date: Mon May 9 12:38:44 2011 +0200
Check for working mmap()
OS/2 doesn't have a working mmap().
commit c53625a36e28883684c3a6e640aa3656ecca7615
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon May 2 05:11:49 2011 -0400
Post-release version bump to 0.23.1
commit 918a544406df8f428056daff8a634ad6eadf67c9
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon May 2 05:06:33 2011 -0400
Pre-release version bump to 0.22.0
commit 71b2e2745be31e7d18a11f8c2cba8f6031ace17c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Apr 19 00:22:29 2011 -0400
Post-release version bump to 0.21.9
commit 89868e93bd8d66f0fac0f0b42cf7718756992e4e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Apr 19 00:00:37 2011 -0400
Pre-release version bump to 0.21.8
commit 33f1652b953467f3910605b3be723e21b3ebe078
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Apr 13 11:57:35 2011 +0900
ARM: Enable bilinear fast paths using scanline functions in pixman-arm-neon-asm-bilinear.S
Enable fast paths which is supported by scanline functions in
pixman-arm-neon-asm-bilinear.S
commit e8185f1cb43417d9f7b1d2856bb899f1b84fde81
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Apr 13 11:48:40 2011 +0900
ARM: NEON scanline functions for bilinear scaling
General fetch->combine->store based bilinear scanline functions.
Need further optimizations and eventually will be replaced with optimal
functions one by one.
General functions should be located in pixman-arm-neon-asm-bilinear.S and
optimal functions in pixman-arm-neon-asm.S
Following general bilinear scanline functions are implemented
over_8888_8888
add_8888_8888
src_8888_8_8888
src_8888_8_0565
src_0565_8_x888
src_0565_8_0565
over_8888_8_8888
add_8888_8_8888
commit 00939d35628e733fab63606cfb1d7fcb667860d3
Author: Taekyun Kim <tkq.kim@samsung.com>
Date: Wed Apr 13 11:43:44 2011 +0900
ARM: Common macro for scaled bilinear scanline function with A8 mask
Defining PIXMAN_ARM_BIND_SCALED_BILINEAR_SRC_A8_DST macro for declaration of
scaled bilinear scanline functions in common header.
commit b455496890f7f941d561c284aca14783300bedd6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 11 07:52:57 2011 -0500
Offset rendering in pixman_composite_trapezoids() by (x_dst, y_dst)
Previously, this function would do coordinate calculations in such a
way that (x_dst, y_dst) would only affect the alignment of the source
image, but not of the traps, which would always be considered to be in
absolute destination coordinates. This is unlike the
pixman_image_composite() function which also registers the mask to the
destination.
This patch makes it so that traps are also offset by (x_dst, y_dst).
Also add a comment explaining how this function is supposed to
operate, and update tri-test.c and composite-trap-test.c to deal with
the new semantics.
commit e75e6a4ef5c5a8ac8b0e8464f08f83fd2b6e86ed
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 2 23:24:48 2011 -0400
ARM: Add 'neon_composite_over_n_8888_0565_ca' fast path
This improves the performance of the firefox-talos-gfx benchmark with
the image16 backend. Benchmark on an 800 MHz ARM Cortex A8:
Before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image16 firefox-talos-gfx 121.773 122.218 0.15% 6/6
After:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image16 firefox-talos-gfx 85.247 85.563 0.22% 6/6
V2: Slightly better instruction scheduling based on comments from Taekyun Kim.
V3: Eliminate all stalls from the inner loop. Also based on comments from Taekyun Kim.
commit 1670b952143284f480c39ff087b5694a64eb7db3
Author: Gilles Espinasse <g.esp@free.fr>
Date: Tue Apr 12 22:44:56 2011 +0200
Fix OpenMP not supported case
PIXMAN_LINK_WITH_ENV did not fail unless -Wall -Werror is used.
So even when the compiler did not support OpenMP, USE_OPENMP was defined.
Fix that by running the second OpenMP test only when first AC_OPENMP find supported
configure tested in the cases :
gcc without libgomp support, no openmp option, --enable-openmp and --disable-openmp
gcc with libgomp support, no openmp option, --enable-openmp and --disable-openmp
Not tested with autoconf version not knowing openmp (<2.62)
Warn when --enable-openmp is requested but no support is found
Signed-off-by: Gilles Espinasse <g.esp@free.fr>
commit b9e8f7fb7494e4ee4be56d1555632233a494b28e
Author: Gilles Espinasse <g.esp@free.fr>
Date: Tue Apr 12 22:44:25 2011 +0200
Fix missing AC_MSG_RESULT value from Werror test
Use the correct variable name
Signed-off-by: Gilles Espinasse <g.esp@free.fr>
commit caae4e82ffdeebfb9aa98a6c49dd563e065c0959
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Mar 21 20:25:27 2011 +0200
ARM: pipelined NEON implementation of bilinear scaled 'src_8888_0565'
Benchmark on ARM Cortex-A8 r1p3 @600MHz, 32-bit LPDDR @166MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=10020565, speed=33.59 MPix/s
after: op=1, src=20028888, dst=10020565, speed=46.25 MPix/s
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=10020565, speed=63.86 MPix/s
after: op=1, src=20028888, dst=10020565, speed=84.22 MPix/s
commit d080d59b802c351daed84b92bd4eb20c775b81c7
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 16 17:24:49 2011 +0200
ARM: pipelined NEON implementation of bilinear scaled 'src_8888_8888'
Performance of the inner loop when working with the data in L1 cache:
ARM Cortex-A8: 41 cycles per 4 pixels (no stalls and partial dual issue)
ARM Cortex-A9: 48 cycles per 4 pixels (no stalls)
It might be still possible to improve performance even more on ARM Cortex-A8
with a better use of dual issue.
Benchmark on ARM Cortex-A8 r1p3 @600MHz, 32-bit LPDDR @166MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=20028888, speed=40.38 MPix/s
after: op=1, src=20028888, dst=20028888, speed=48.47 MPix/s
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=20028888, speed=79.68 MPix/s
after: op=1, src=20028888, dst=20028888, speed=93.11 MPix/s
commit b496a8b279baebb8b9ab4fbcb2101583be08fe3b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Mar 17 19:42:01 2011 +0200
ARM: support different levels of loop unrolling in bilinear scaler
Now an extra 'flag' parameter is supported in bilinear scaline scaling
function generation macro. It can be used to enable 4 or 8 pixels per
loop iteration unrolling and provide save/restore code for d8-d15
registers.
commit 34ca9cf03fa897cd377cdb19acc22e876b2f4b0e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Mar 21 18:41:53 2011 +0200
ARM: use less ARM instructions in NEON bilinear scaling code
This reduces code size and also puts less pressure on the
instruction decoder.
commit 0f7be9f72ef6bfe2555b7f2cc29297c4f4762740
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 16 16:33:41 2011 +0200
ARM: support for software pipelining in bilinear macros
Now it's possible to override the main loop of bilinear scaling code
with optimized pipelined implementation.
commit 9638af95832563040d6bd861cf4c20ab632058df
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Mar 10 16:12:23 2011 +0200
ARM: use aligned memory writes in NEON bilinear scaling code
commit 8bba3a0e1e54f03ea78fb44314f3bfa57ec8da31
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Mar 10 15:34:10 2011 +0200
ARM: tweaked horizontal weights update in NEON bilinear scaling code
Moving horizontal interpolation weights update instructions from the
beginning of loop to its end allows to hide some pipeline stalls and
improve performance.
commit a2153222677327be43251012f462d19a7e98ce14
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Apr 3 20:32:30 2011 -0400
ARM: Tiny improvement in over_n_8888_8888_ca_process_pixblock_head
Instead of two
mvn d24, d24
mvn d25, d25
use just one
mvn q12, q12
Also move another vmvn instruction into the created pipeline bubble,
as pointed out by Siarhei.
commit 44f99735d9c6a897078db12172d9d2d07b204f37
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 2 14:12:12 2011 -0400
Makefile.am: Put development releases in "snapshots" directory
Up until now, all pixman release, both snapshots and releases were
uploaded to the "releases" directory on www.cairographics.org, but
it's better to development snapshots in the "snapshots" directory.
This patch changes Makefile.am to do that.
commit ad3cbfb073fc325e1b3152898ca71b8255675957
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Mar 22 13:42:05 2011 -0400
test: Fix infinite loop in composite
When run in PIXMAN_RANDOMIZE_TESTS mode, this test would go into an
infinite loop because the loop started at 'seed' but the stop
condition was still N_TESTS.
commit b514e63cfc58af21f7097db5a1b04292a758782a
Author: Alexandros Frantzis <alexandros.frantzis@linaro.org>
Date: Fri Mar 18 14:37:27 2011 +0200
Add support for the r8g8b8a8 and r8g8b8x8 formats to the tests.
commit f05a90e5f8d1d0af60e2c684cbe9f1327c33135a
Author: Alexandros Frantzis <alexandros.frantzis@linaro.org>
Date: Fri Mar 18 14:36:15 2011 +0200
Add simple support for the r8g8b8a8 and r8g8b8x8 formats.
This format is particularly useful on big-endian architectures, where RGBA in
memory/file order corresponds to r8g8b8a8 as an uint32_t. This is important
because RGBA is in some cases the only available choice (for example as a pixel
format in OpenGL ES 2.0).
commit 7eb0abb5e819046537b9f809c7ec332c6679c557
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Mar 14 14:56:22 2011 -0400
test: Randomize some tests if PIXMAN_RANDOMIZE_TESTS is set
This patch makes so that composite and stress-test will start from a
random seed if the PIXMAN_RANDOMIZE_TESTS environment variable is
set. Running the test suite in this mode is useful to get more test
coverage.
Also, in stress-test.c make it so that setting the initial seed causes
threads to be turned off. This makes it much easier to see when
something fails.
commit 6b27768d81c254a4f1d05473157328d5a5d99b9c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Mar 12 19:42:58 2011 -0500
Simplify the prototype for iterator initializers.
All of the information previously passed to the iterator initializers
is now available in the iterator itself, so there is no need to pass
it as arguments anymore.
commit 74d0f44b6d6d613d24541b849835da0464cc6fd0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Mar 12 19:12:35 2011 -0500
Fill out parts of iters in _pixman_implementation_{src,dest}_iter_init()
This makes _pixman_implementation_{src,dest}_iter_init() responsible
for filling parts of the information in the iterators. Specifically,
the information passed as arguments is stored in the iterator.
Also add a height field to pixman_iter_t().
commit be4eaa0e4f79af38b7b89c5b09ca88d3a88d9396
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Mar 12 19:06:02 2011 -0500
In delegate_{src,dest}_iter_init() call delegate directly.
There is no reason to go through
_pixman_implementation_{src,dest}_iter_init(), especially since
_pixman_implementation_src_iter_init() is doing various other checks
that only need to be done once.
Also call delegate->src_iter_init() directly in pixman-sse2.c
commit 70a923882ca24664344ba91a649e7aa12c3063f7
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 9 13:55:48 2011 +0200
ARM: a bit faster NEON bilinear scaling for r5g6b5 source images
Instructions scheduling improved in the code responsible for fetching r5g6b5
pixels and converting them to the intermediate x8r8g8b8 color format used in
the interpolation part of code. Still a lot of NEON stalls are remaining,
which can be resolved later by the use of pipelining.
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=10020565, dst=10020565, speed=32.29 MPix/s
op=1, src=10020565, dst=20020888, speed=36.82 MPix/s
after: op=1, src=10020565, dst=10020565, speed=41.35 MPix/s
op=1, src=10020565, dst=20020888, speed=49.16 MPix/s
commit fe99673719091d4a880d031add1369332a75731b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 9 13:27:41 2011 +0200
ARM: NEON optimization for bilinear scaled 'src_0565_0565'
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=10020565, dst=10020565, speed=3.30 MPix/s
after: op=1, src=10020565, dst=10020565, speed=32.29 MPix/s
commit 29003c3befe2159396d181ef9ac1caaadcabf382
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 9 13:21:53 2011 +0200
ARM: NEON optimization for bilinear scaled 'src_0565_x888'
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=10020565, dst=20020888, speed=3.39 MPix/s
after: op=1, src=10020565, dst=20020888, speed=36.82 MPix/s
commit 2ee27e7d79637da9173ee1bf3423e5a81534ccb4
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 9 11:53:04 2011 +0200
ARM: NEON optimization for bilinear scaled 'src_8888_0565'
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=10020565, speed=6.56 MPix/s
after: op=1, src=20028888, dst=10020565, speed=61.65 MPix/s
commit 11a0c5badbc59ce967707ef836313cc98f8aec4e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 9 11:46:48 2011 +0200
ARM: use common macro template for bilinear scaled 'src_8888_8888'
This is a cleanup for old and now duplicated code. The performance improvement
is mostly coming from the enabled use of software prefetch, but instructions
scheduling is also slightly better.
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=20028888, speed=53.24 MPix/s
after: op=1, src=20028888, dst=20028888, speed=74.36 MPix/s
commit 34098dba6763afd3636a14f9c2a079ab08f23b2d
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 9 11:34:15 2011 +0200
ARM: NEON: common macro template for bilinear scanline scalers
This allows to generate bilinear scanline scaling functions targeting
various source and destination color formats. Right now a8r8g8b8/x8r8g8b8
and r5g6b5 color formats are supported. More formats can be added if needed.
commit 66f4ee1b3bccf4516433d61dbf2035551a712fa2
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Mar 9 10:59:46 2011 +0200
ARM: new bilinear fast path template macro in 'pixman-arm-common.h'
It can be reused in different ARM NEON bilinear scaling fast path functions.
commit 5921c17639fe5fdc595c850e3347281c1c8746ba
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun Mar 6 22:16:32 2011 +0200
ARM: assembly optimized nearest scaled 'src_8888_8888'
Benchmark on ARM Cortex-A8 r1p3 @500MHz, 32-bit LPDDR @166MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=20028888, speed=44.36 MPix/s
after: op=1, src=20028888, dst=20028888, speed=39.79 MPix/s
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=20028888, speed=102.36 MPix/s
after: op=1, src=20028888, dst=20028888, speed=163.12 MPix/s
commit f3e17872f5522e25da8e32de83e62bee8cc198d7
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Mar 7 03:10:43 2011 +0200
ARM: common macro for nearest scaling fast paths
The code of nearest scaled 'src_0565_0565' function was generalized
and moved to a common macro, so that it can be reused for other
fast paths.
commit bb3d1b67fd0f42ae00af811c624ea1c44541034d
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun Mar 6 16:17:12 2011 +0200
ARM: use prefetch in nearest scaled 'src_0565_0565'
Benchmark on ARM Cortex-A8 r1p3 @500MHz, 32-bit LPDDR @166MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=10020565, dst=10020565, speed=75.02 MPix/s
after: op=1, src=10020565, dst=10020565, speed=73.63 MPix/s
Benchmark on ARM Cortex-A8 r2p2 @1GHz, 32-bit LPDDR @200MHz:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=10020565, dst=10020565, speed=176.12 MPix/s
after: op=1, src=10020565, dst=10020565, speed=267.50 MPix/s
commit 84e361c8e357e26f299213fbeefe64c73447b116
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 4 15:51:18 2011 -0500
test: Do endian swapping of the source and destination images.
Otherwise the test fails on big endian. Fix for bug 34767, reported by
Siarhei Siamashka.
commit 84f3c5a71a2de1a96dcf0c7f9ab0a8ee1b1b158f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Mar 7 13:45:54 2011 -0500
test: In image_endian_swap() use pixman_image_get_format() to get the bpp.
There is no reason to pass in the bpp as an argument; it can be gotten
directly from the image.
commit 17feaa9c50bb8521b0366345efe181bd99754957
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Feb 22 18:45:03 2011 +0200
ARM: NEON optimization for bilinear scaled 'src_8888_8888'
Initial NEON optimization for bilinear scaling. Can be probably
improved more.
Benchmark on ARM Cortex-A8:
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=20028888, speed=6.70 MPix/s
after: op=1, src=20028888, dst=20028888, speed=44.27 MPix/s
commit 350029396d911941591149cc82b5e68a78ad6747
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Feb 21 20:18:02 2011 +0200
SSE2 optimization for bilinear scaled 'src_8888_8888'
A primitive naive implementation of bilinear scaling using SSE2 intrinsics,
which only handles one pixel at a time. It is approximately 2x faster than
pixman general compositing path. Single pass processing without intermediate
temporary buffer contributes to ~15% and loop unrolling contributes to ~20%
of this speedup.
Benchmark on Intel Core i7 (x86-64):
Using cairo-perf-trace:
before: image firefox-planet-gnome 12.566 12.610 0.23% 6/6
after: image firefox-planet-gnome 10.961 11.013 0.19% 5/6
Microbenchmark (scaling 2000x2000 image with scale factor close to 1x):
before: op=1, src=20028888, dst=20028888, speed=70.48 MPix/s
after: op=1, src=20028888, dst=20028888, speed=165.38 MPix/s
commit 0df43b8ae5031dd83775d00b57b6bed809db0e89
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Feb 21 02:07:09 2011 +0200
test: check correctness of 'bilinear_pad_repeat_get_scanline_bounds'
Individual correctness check for the new bilinear scaling related
supplementary function. This test program uses a bit wider range
of input arguments, not covered by other tests.
commit d506bf68fd0e9a1c5dd484daee70631699918387
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Feb 21 01:29:02 2011 +0200
Main loop template for fast single pass bilinear scaling
Can be used for implementing SIMD optimized fast path
functions which work with bilinear scaled source images.
Similar to the template for nearest scaling main loop, the
following types of mask are supported:
1. no mask
2. non-scaled a8 mask with SAMPLES_COVER_CLIP flag
3. solid mask
PAD repeat is fully supported. NONE repeat is partially
supported (right now only works if source image has alpha
channel or when alpha channel of the source image does not
have any effect on the compositing operation).
commit 9ebde285fa990bfa1524f166fbfb1368c346b14a
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Feb 24 12:53:39 2011 +0100
test: Silence MSVC warnings
MSVC does not notice non-returning functions (abort() / assert(0))
and warns about paths which end with them in non-void functions:
c:\cygwin\home\ranma42\code\fdo\pixman\test\fetch-test.c(114) :
warning C4715: 'reader' : not all control paths return a value
c:\cygwin\home\ranma42\code\fdo\pixman\test\stress-test.c(133) :
warning C4715: 'real_reader' : not all control paths return a value
c:\cygwin\home\ranma42\code\fdo\pixman\test\composite.c(431) :
warning C4715: 'calc_op' : not all control paths return a value
These warnings can be silenced by adding a return after the
termination call.
commit 8868778ea1fdc8e70da76b3b00ea78106c5840d8
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Feb 22 22:43:48 2011 +0100
Do not include unused headers
pixman-combine32.h is included without being used both in
pixman-image.c and in pixman-general.c.
commit 72f5e5f608506c18c484bc5bc3e58bd83aeb7691
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Feb 22 22:04:49 2011 +0100
test: Add Makefile for Win32
commit 11305b4ecdd36a17592c5c75de9157874853ab20
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Feb 22 21:46:37 2011 +0100
test: Fix tests for compilation on Windows
The Microsoft C compiler cannot handle subobject initialization and
Win32 does not provide snprintf.
Work around these limitations by using normal struct initialization
and using sprintf (a manual check shows that the buffer size is
sufficient).
commit 20ed723a5a42fb8636bc9a5f32974dec1b66a785
Author: Andrea Canciani <ranma42@gmail.com>
Date: Thu Feb 24 10:44:04 2011 +0100
Fix compilation on Win32
Makefile.win32 contained a typo and was missing the dependency from
the built sources.
commit 48e951000c7ff14f40c671f3efb6abb18162c840
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 22 16:13:32 2011 -0500
Post-release version bump to 0.21.7
commit 8b3332166094db657e96c365a524b2cd7513359b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 22 15:43:41 2011 -0500
Pre-release version bump to 0.21.6
commit 2cb67d2a0b6bed4490a41c34a185cc54a445559a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 22 15:40:34 2011 -0500
Minor fix to the RELEASING file
commit 3cdf74257bdb9d054637252f4fa7503abf580db9
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 22 15:28:17 2011 -0500
Delete pixman-x64-mmx-emulation.h from pixman/Makefile.am
commit 65919ad17fd7b4c6f963690fc78155c7cfe1a51a
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Feb 22 19:28:08 2011 +0200
Ensure that tests run as the last step of a build for 'make check'
Previously 'make check' would compile and run tests first, and only
then proceed to compiling demos. Which is not very convenient
because of the need to scroll back console output to see the
tests verdict. Swapping order of SUBDIRS variable entries in
Makefile.am resolves this.
commit 34a7ac047411d6c1f1708cb8dd4469cd1aa40b31
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 07:38:49 2011 -0500
sse2: Minor coding style cleanups.
Also make pixman_fill_sse2() static.
commit 10f69e5ec844e2630f8e5b21fd5392719d34d060
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 07:40:02 2011 -0500
sse2: Remove pixman-x64-mmx-emulation.h
Also stop including mmintrin.h
commit 984be4def2e62a05e9a91e77ac8c703fed30718b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 07:38:03 2011 -0500
sse2: Delete obsolete or redundant comments
commit 33d98902261ad73c1b6b1366968e49a1cb2bf68b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 07:07:45 2011 -0500
sse2: Remove all the core_combine_* functions
Now that _mm_empty() is not used anymore, they are no longer different
from the sse2_combine_* functions, so they can be consolidated.
commit 87cd6b8056bbacb835eeb991f03b9135dcd58334
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 05:15:50 2011 -0500
sse2: Don't compile pixman-sse2.c with -mmmx anymore
It's not necessary now that the file doesn't use MMX instructions.
commit e7fe5e35e9640c6d6bb08c24b96ce882434a7f9f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 05:07:08 2011 -0500
sse2: Delete unused MMX functions and constants and all _mm_empty()s
These are not needed because the SSE2 implementation doesn't use MMX
anymore.
commit f88ae14c15040345a12ff0488c7b23d25639e49b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 03:56:20 2011 -0500
sse2: Convert all uses of MMX registers to use SSE2 registers instead.
By avoiding use of MMX registers we won't need to call emms all over
the place, which avoids various miscompilation issues.
commit 7fb75bb3e6c3e004374d186ea2d6f02d1caccba4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 18 03:57:55 2011 -0500
Coding style: core_combine_in_u_pixelsse2 -> core_combine_in_u_pixel_sse2
commit 510c0d088a975efe75cc2b796547f3aaed1c18e6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 15 09:11:44 2011 -0500
In pixman_image_set_transform() allow NULL for transform
Previously, this would crash unless the existing transform were also
NULL.
commit 7feb710e60cdab5c448a396537a8de16e72091e2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Feb 15 04:55:02 2011 -0500
Avoid marking images dirty when properties are reset
When an image property is set to the same value that it already is,
there is no reason to mark the image dirty and incur a recomputation
of the flags.
commit 3598ec26ecf761488e2ac1536553eaf3bb361e72
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Feb 11 08:57:42 2011 -0500
Add new public function pixman_add_triangles()
This allows some more code to be deleted from the X server. The
implementation consists of converting to trapezoids, and is shared
with pixman_composite_triangles().
commit 964c7e7cd20a6ed414fdf92b71fdc83db91d7578
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jan 14 06:19:08 2011 -0500
Optimize adding opaque trapezoids onto a8 destination.
When the source is opaque and the destination is alpha only, we can
avoid the temporary mask and just add the trapezoids directly.
commit 0bc03482f10d7bfe64a4199e9cd484ff1129d709
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jan 12 03:02:59 2011 -0500
Add a test program, tri-test
This program tests whether the new triangle support works.
commit 79e69aac8cfe7d45707098735376a6e6c2dcfa06
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 11 10:15:21 2011 -0500
Add support for triangles to pixman.
The Render X extension can draw triangles as well as trapezoids, but
the implementation has always converted them to trapezoids. This patch
moves the X server's triangle conversion code into pixman, where we
can reuse the pixman_composite_trapezoid() code.
commit 4e6dd4928d817338ae406a620f5658bbddb66df1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Feb 10 10:37:08 2011 -0500
Add a test program for pixman_composite_trapezoids().
A CRC32 based test program to check that pixman_composite_trapezoids()
actually works.
commit 803272e38c5b9b9abe347390c2ecd2ac4be7b9be
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 11 09:23:43 2011 -0500
Add pixman_composite_trapezoids().
This function is an implementation of the X server request
Trapezoids. That request is what the X backend of cairo is using all
the time; by moving it into pixman we can hopefully make it faster.
commit 1feaf6bea707a97db44643c5bfa6218afea9b6be
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 18 19:40:53 2011 -0500
test/Makefile.am: Move all the TEST_LDADD into a new global LDADD.
This gets rid of a bunch of replicated *_LDADD clauses
commit 1237fd9bc84a27f232ceddf1c7b72645fcc99aec
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 18 19:20:18 2011 -0500
Add @TESTPROGS_EXTRA_LDFLAGS@ to AM_LDFLAGS
Instead of explicitly adding it to each test program.
commit 7dfe845786920d50c6f93165ef6f539e6f4d1b53
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 18 19:16:39 2011 -0500
Move all the GTK+ based test programs to a new subdir, "demos"
This separates the test suite from the random gtk+ using test
programs. "demos" is somewhat misleading because the programs there
are not particularly exciting (with the possible exception of
composite-test which shows off all the compositing operators).
commit 8e4100260bbdb827abc45a2a5e352a53246fe614
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Feb 4 00:47:36 2011 +0200
SSE2 optimization for nearest scaled over_8888_n_8888
This operation shows up a little bit in some of the html5 based
games from http://www.kesiev.com/akihabara/
=== Cairo trace of the game intro animation for 'Legend of Sadness' ===
before:
[ 0] image firefox-legend-of-sadness 46.286 46.298 0.01% 5/6
after:
[ 0] image firefox-legend-of-sadness 45.088 45.102 0.04% 6/6
=== Microbenchmark (scaling ~2000x~2000 -> ~2000x~2000) ===
before:
translucent: op=3, src=8888, mask=s dst=8888, speed=131.30 MPix/s
transparent: op=3, src=8888, mask=s dst=8888, speed=132.38 MPix/s
opaque: op=3, src=8888, mask=s dst=8888, speed=167.90 MPix/s
after:
translucent: op=3, src=8888, mask=s dst=8888, speed=301.93 MPix/s
transparent: op=3, src=8888, mask=s dst=8888, speed=770.70 MPix/s
opaque: op=3, src=8888, mask=s dst=8888, speed=301.80 MPix/s
commit 39b86b032d1b81958d4dfc880ba7f129aecb1de0
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 3 15:22:28 2010 +0200
ARM: NEON optimization for nearest scaled over_0565_8_0565
In some cases may be used for html5 video when hardware acceleration
is not available.
commit 9a90c1c90f1d128de68b3ed855a2ea1c3bed20c3
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 3 15:16:28 2010 +0200
ARM: NEON optimization for nearest scaled over_8888_8_0565
In some cases may be used for html5 video when hardware acceleration
is not available.
commit cd1062ded44978fa97aa3d3295af016c80c6e2eb
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 3 15:15:15 2010 +0200
ARM: new macro template for using scaled fast paths with a8 mask
commit b099957887ef69b795d542f8f2980b5a94fb823f
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Feb 2 18:14:56 2011 +0200
Better support for NONE repeat in nearest scaling main loop template
Scaling function now gets an extra boolean argument, which is set
to TRUE when we are fetching padding pixels for NONE repeat. This
allows to make a decision whether to interpret alpha as 0xFF or 0x00
for such pixels when working with formats which don't have alpha
channel (for example x8r8g8b8 and r5g6b5).
commit 14f82083a12be07f340fdea491759b3bb77b4e66
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Oct 22 17:54:41 2010 +0300
Support for a8 and solid mask in nearest scaling main loop template
In addition to the most common case of not having any mask at all, two
variants of scaling with mask show up in cairo traces:
1. non-scaled a8 mask with SAMPLES_COVER_CLIP flag
2. solid mask
This patch extends the nearest scaling main loop template to also
support these cases.
commit e83cee5aac26522f31a7e81ea3f972ae2248f6b0
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Oct 22 16:29:01 2010 +0300
test: Extend scaling-test to support a8/solid mask and ADD operation
Image width also has been increased because SIMD optimizations typically
do more unrolling in the inner loops, and this needs to be tested.
commit 97447f440fec9889bba6cc21c6d9366183c47e7e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Jan 17 02:29:43 2011 +0200
Use const modifiers for source buffers in nearest scaling fast paths
commit 8d359b00c5bb9960c3c584a7f77a943c0ce61368
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 30 18:37:51 2010 +0300
C fast paths for a simple 90/270 degrees rotation
Depending on CPU architecture, performance is in the range of 1.5 to 4 times
slower than simple nonrotated copy (which would be an ideal case, perfectly
utilizing memory bandwidth), but still is more than 7 times faster if
compared to general path.
This implementation sets a performance baseline for rotation. The use
of SIMD instructions may further improve memory bandwidth utilization.
commit e0c7948c970b816f323a6402241ca70fa855c12c
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Jul 29 17:58:13 2010 +0300
New flags for 90/180/270 rotation
These flags are set when the transform is a simple nonscaled 90/180/270
degrees rotation.
commit 3b68c295fd45297a631569b35608364dbcb6d452
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Oct 26 15:40:01 2010 +0300
test: affine-test updated to stress 90/180/270 degrees rotation more
commit 56f173f0af5a59a12596cf1ed9d6fb7c8ebe6318
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Feb 10 05:21:42 2011 -0500
Add pixman-conical-gradient.c to Makefile.win32.
Pointed out by Kirill Tishin.
commit 7fd4897730412977f730b850e6e697156fb3734b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jan 23 16:53:26 2011 -0500
Add SSE2 fetcher for 0565
Before:
add_0565_0565 = L1: 61.08 L2: 61.03 M: 60.57 ( 10.95%) HT: 46.85 VT: 45.25 R: 39.99 RT: 20.41 ( 233Kops/s)
After:
add_0565_0565 = L1: 77.84 L2: 76.25 M: 75.38 ( 13.71%) HT: 55.99 VT: 54.56 R: 45.41 RT: 21.95 ( 255Kops/s)
commit 8414aa76c20732a6ed29a2d80175936570c5e592
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 31 00:57:46 2010 -0500
Improve performance of sse2_combine_over_u()
Split this function into two, one that has a mask, and one that
doesn't. This is a fairly substantial speed-up in many cases.
New output of lowlevel-blt-bench over_x888_8_0565:
over_x888_8_0565 = L1: 63.76 L2: 62.75 M: 59.37 ( 21.55%) HT: 45.89 VT: 43.55 R: 34.51 RT: 16.80 ( 201Kops/s)
commit 08e855f15cba24aac83145b994069d0bb50be5a1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jan 23 16:17:17 2011 -0500
Add SSE2 fetcher for a8
New output of lowlevel-blt-bench over_x888_8_0565:
over_x888_8_0565 = L1: 57.85 L2: 56.80 M: 54.14 ( 19.50%) HT: 42.64 VT: 40.56 R: 32.67 RT: 16.22 ( 195Kops/s)
Based in part on code by Steve Snyder from
https://bugs.freedesktop.org/show_bug.cgi?id=21173
commit 2b6b0cf3591ce4438f7e0571c7a762972a999cd8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jan 12 06:38:54 2011 -0500
Add SSE2 fetcher for x8r8g8b8
New output of lowlevel-blt-bench over_x888_8_0565:
over_x888_8_0565 = L1: 55.68 L2: 55.11 M: 52.83 ( 19.04%) HT: 39.62 VT: 37.70 R: 30.88 RT: 14.62 ( 174Kops/s)
The fetcher is looked up in a table, so that other fetchers can easily
be added.
See also https://bugs.freedesktop.org/show_bug.cgi?id=20709
commit 13aed37758d1af5b5bc2a80d886b764d4c45827e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 22 17:13:19 2011 -0500
Add a test for over_x888_8_0565 in lowlevel_blt_bench().
The next few commits will speed this up quite a bit.
Current output:
---
reference memcpy speed = 2217.5MB/s (554.4MP/s for 32bpp fills)
---
over_x888_8_0565 = L1: 54.67 L2: 54.01 M: 52.33 ( 18.88%) HT: 37.19 VT: 35.54 R: 29.40 RT: 13.63 ( 162Kops/s)
commit 2de397c272fd60d6ce4311b411ad37a8e39daff6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jan 24 12:24:42 2011 -0500
Move fallback decisions from implementations into pixman-cpu.c.
Instead of having each individual implementation decide which fallback
to use, move it into pixman-cpu.c, where a more global decision can be
made.
This is accomplished by adding a "fallback" argument to all the
pixman_implementation_create_*() implementations, and then in
_pixman_choose_implementation() pass in the desired fallback.
commit ed781df1cc30748c8193be9b9a497def0b768b6b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jan 21 14:47:33 2011 -0500
Print a warning when a development snapshot is being configured.
It seems to be relatively common for people to use development
snapshots of pixman thinking they are ordinary releases. This patch
makes it such that if the current minor version is odd, configure will
print a banner explaining the version number scheme plus information
about where to report bugs.
commit fead9eb82a7fc78a4927fff960d4cacea799bd9b
Author: Rolland Dudemaine <rolland@ghs.com>
Date: Tue Jan 25 15:08:26 2011 +0200
Fix "variable was set but never used" warnings
Removes useless variable declarations. This can only result in more
efficient code, as these variables where sometimes assigned, but
their values were never used.
commit 32e556df33b3cd3b31de8184f144b3065206406b
Author: Rolland Dudemaine <rolland@ghs.com>
Date: Tue Jan 25 14:14:57 2011 +0200
test: Use the right enum types instead of int to fix warnings
Green Hills Software MULTI compiler was producing a number
of warnings due to incorrect uses of int instead of the correct
corresponding pixman_*_t type.
commit b61ec0a6862ba101fff0afa082fb7490a0c44785
Author: Rolland Dudemaine <rolland@ghs.com>
Date: Tue Jan 25 14:52:49 2011 +0200
Correct the initialization of 'max_vx'
http://lists.freedesktop.org/archives/pixman/2011-January/000937.html
commit e8a1b1c4e502ecbb70028bd5a86034bfe1b16997
Author: Rolland Dudemaine <rolland@ghs.com>
Date: Tue Jan 25 13:55:28 2011 +0200
test: Fix for mismatched 'fence_malloc' prototype/implementation
Solves compilation problem when 'mprotect' is not available. For
example, when using Green Hills Software MULTI compiler or mingw:
http://lists.freedesktop.org/archives/pixman/2011-January/000939.html
commit a8e4677ecc2fcbf16a53902e26fc82d0860e9a21
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Jan 10 21:01:16 2011 +0200
The code in 'bitmap_addrect' already assumes non-null 'reg->data'
So the check of 'reg->data' pointer can be safely removed.
commit a6a04c07c354e10d787193af8d2f6a6d27f374ad
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jan 19 07:47:52 2011 -0500
Post-release version bump to 0.21.5
commit 4e56cec5649b7e122ccfc815b4ff45611953afce
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jan 19 07:38:24 2011 -0500
Pre-release version bump to 0.21.4
commit 1d7195dd6c68eab73d063f37de3a9331446111d4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jan 17 14:12:20 2011 -0500
Fix dangling-pointer bug in bits_image_fetch_bilinear_no_repeat_8888().
The mask_bits variable is only declared in a limited scope, so the
pointer to it becomes invalid instantly. Somehow this didn't actually
trigger any bugs, but Brent Fulgham reported that Bounds Checker was
complaining about it.
Fix the bug by moving mask_bits to the function scope.
commit 2ac4ae1ae253f7c2efedab036a677dac2f9c9eed
Author: Andrea Canciani <ranma42@gmail.com>
Date: Wed Jan 12 17:43:40 2011 +0100
Add a test for radial gradients
radial-test is a port of the radial-gradient test from the cairo test
suite. It has been modified so that some pixels have 0 in both the a
and b coefficients of the quadratic equation solved by the rasterizer,
to expose a division by zero in the original implementation.
commit 7f4eabbeec92e55fd8f812c0e5d8568eacbb633d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Dec 12 07:34:42 2010 -0500
Fix destination fetching
When fetching from destinations, we need to ignore transformations,
repeat and filtering. Currently we don't ignore them, which means all
kinds of bad things can happen.
This bug fixes this problem by directly calling the scanline fetchers
for destinations instead of going through the full
get_scanline_32/64().
commit 9489c2e04a5361fe19a89a0da9d7be28436c0a4b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Dec 12 09:19:13 2010 -0500
Turn on testing for destination transformation
commit fffeda703e40ced90ec5ad6d6cd37a44294d3fe4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Dec 11 08:10:04 2010 -0500
Skip fetching pixels when possible
Add two new iterator flags, ITER_IGNORE_ALPHA and ITER_IGNORE_RGB that
are set when the alpha and rgb values are not needed. If both are set,
then we can skip fetching entirely and just use
_pixman_iter_get_scanline_noop.
commit 3e635d6491d883304662aff3c72558dc9065f1f1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 16:55:55 2010 -0500
Add direct-write optimization back
Introduce a new ITER_LOCALIZED_ALPHA flag that indicates that the
alpha value computed is used only for the alpha channel of the output;
it doesn't affect the RGB channels.
Then in pixman-bits-image.c, if a destination is either a8r8g8b8 or
x8r8g8b8 with localized alpha, the iterator will return a pointer
directly into the image.
commit 0f1a5c4a27d34dcf4525dc38fcb48c14f653e828
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 15:18:48 2010 -0500
Get rid of the classify methods
They are not used anymore, and the linear gradient is now doing the
optimization in a different way.
commit b66cabb88488413c4787845c7da67901dc988ee6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 15:14:24 2010 -0500
Linear: Optimize for horizontal gradients
If the gradient is horizontal, we can reuse the same scanline over and
over. Add support for this optimization to
_pixman_linear_gradient_iter_init().
commit cf14189c6993e42ae71977a4a4061417941ffee8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 14:59:20 2010 -0500
Consolidate the various get_scanline_32() into get_scanline_narrow()
The separate get_scanline_32() functions in solid, linear, radial and
conical images are no longer necessary because all access to these
images now go through iterators.
commit 0a6360a7ee0983dd52d368f5352d8c313fb0570b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 14:44:22 2010 -0500
Allow NULL property_changed function
Initialize the field to NULL, and then delete the empty functions from
the solid, linear, radial, and conical images.
commit 34b5633105e5e2838ac8deb32d26e3bbe73a3d1a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 14:39:01 2010 -0500
Move get_scanline_32/64 to the bits part of the image struct
At this point these functions are basically a cache that the bits
image uses for its fetchers, so they can be moved to the bits image.
With the scanline getters only being initialized in the bits image,
the _pixman_image_get_scanline_generic_64 can be moved to
pixman-bits-image.c. That gets rid of the final user of
_pixman_image_get_scanline_32/64, so these can be deleted.
commit d6b13f99b41eac535d961b89d4b53f616c910c1e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 10:53:02 2010 -0500
Use an iterator in pixman_image_get_solid()
This is a step towards getting rid of the
_pixman_image_get_scanline_32/64() functions.
commit 51a5e949f394560b057911d46aab768f8e07bd54
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 13:26:53 2010 -0500
Virtualize iterator initialization
Make src_iter_init() and dest_iter_init() virtual methods in the
implementation struct. This allows individual implementations to plug
in their own CPU specific scanline fetchers.
commit 6503c6edccbc6b08ea8efe398da3265126efa896
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 12:40:26 2010 -0500
Move iterator initialization to the respective image files
Instead of calling _pixman_image_get_scanline_32/64(), move the
iterator initialization into the respecive image implementations and
call the scanline generators directly.
commit 23c6e1d2c007cc661b31e1bcdfd84604d7a9a560
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 12:31:29 2010 -0500
Eliminate the _pixman_image_store_scanline_32/64 functions
They were only called from next_line_write_narrow/wide, so they could
simply be absorbed into those functions.
commit b2c9eaa5020d08cfaac6c2296895e5a65c971ffd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 12:19:50 2010 -0500
Move initialization of iterators for bits images to pixman-bits-image.c
pixman_iter_t is now defined in pixman-private.h, and iterators for
bits images are being initialized in pixman-bits-image.c
commit 15b1645c7b96498788c9376e3bb7d8a5e7b4e584
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Dec 10 11:30:27 2010 -0500
Add iterators in the general implementation
We add a new structure called a pixman_iter_t that encapsulates the
information required to read scanlines from an image. It contains two
functions, get_scanline() and write_back(). The get_scanline()
function will generate pixels for the current scanline. For iterators
for source images, it will also advance to the next scanline. The
write_back() function is only called for destination images. Its
function is to write back the modified pixels to the image and then
advance to the next scanline.
When an iterator is initialized, it is passed this information:
- The image to iterate
- The rectangle to be iterated
- A buffer that the iterator may (but is not required to) use. This
buffer is guaranteed to have space for at least width pixels.
- A flag indicating whether a8r8g8b8 or a16r16g16b16 pixels should
be fetched
There are a number of (eventual) benefits to the iterators:
- The initialization of the iterator can be virtualized such that
implementations can plug in their own CPU specific get_scanline()
and write_back() functions.
- If an image is horizontal, it can simply plug in an appropriate
get_scanline(). This way we can get rid of the annoying
classify() virtual function.
- In general, iterators can remember what they did on the last
scanline, so for example a REPEAT_NONE image might reuse the same
data for all the empty scanlines generated by the zero-extension.
- More detailed information can be passed to iterator, allowing
more specialized fetchers to be used.
- We can fix the bug where destination filters and transformations
are not currently being ignored as they should be.
However, this initial implementation is not optimized at all. We lose
several existing optimizations:
- The ability to composite directly in the destination
- The ability to only fetch one scanline for horizontal images
- The ability to avoid fetching the src and mask for the CLEAR
operator
Later patches will re-introduce these optimizations.
commit 255d624e508e29b452e567c249ac75ae8d8e2abe
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Jan 11 14:36:24 2011 +0200
ARM: do /proc/self/auxv based cpu features detection only in linux
This method is linux specific, but earlier it was tried for any platform
that did not have _MSC_VER macro defined.
commit 2bbd553bd21dcc1b199eb11ec6cb78a5b9769d49
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Sep 13 04:21:33 2010 +0300
A new configure option --enable-static-testprogs
This option can be used for building fully static binaries of the test
programs so that they can be easily run using qemu-user. With binfmt-misc
configured, 'make check' works fine for crosscompiled pixman builds.
commit 55bbccf84e475b2e3c4536606cd08c946c041fd0
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Jan 10 18:29:33 2011 +0200
Make 'fast_composite_scaled_nearest_*' less suspicious
Taking address of a variable and then using it as an array looks suspicious
to static code analyzers. So change it into an array with 1 element to make
them happy. Both old and new variants of this code are correct because 'vx'
and 'unit_x' arguments are set to 0 and it means that the called scanline
function can only access a single element of 'zero' buffer.
commit ae70b38d40a587e29dc5e0dfe6250693598beca7
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Jan 10 18:09:16 2011 +0200
Bugfix for a corner case in 'pixman_transform_is_inverse'
When 'pixman_transform_multiply' fails, the result of multiplication just
could not have been identity matrix (one of the values in the resulting
matrix can't be represented as 16.16 fixed point value). So it is safe
to return FALSE.
commit ab3809f4da0d833944363c5c039c3a2e6a8389c5
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Jan 4 13:42:29 2011 +0200
Workaround for a preprocessor issue in old Sun Studio
Patch from Peter O'Gorman with some modifications
https://bugs.freedesktop.org//show_bug.cgi?id=32764
commit f5c0a60ac8c32ac37aaf58f67048585af58f3141
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Jan 4 08:41:02 2011 +0200
Fix for "syntax error: empty declaration" Solaris Studio warnings
commit c71e24c9fc312cf0b8ec56d2e657efe79d062d2f
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Jan 4 08:18:38 2011 +0200
Revert "Fix "syntax error: empty declaration" warnings."
This reverts commit b924bb1f8191cc7c386d8211d9822aeeaadcab44.
There is a better fix for these Solaris Studio warnings.
commit 29439bd7724031504e965ffe5b366baaeeae07d8
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Nov 23 11:37:54 2010 +0100
Improve handling of tangent circles
When b is 0, avoid the division by zero and just return transparent
black.
When the solution t would have an invalid radius (negative or outside
[0,1] for none-extended gradients), return transparent black.
commit a484a9c49c98dfad0d74af4440039f61bef24d48
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Dec 20 16:11:48 2010 -0500
sse2: Skip src pixels that are zero in sse2_composite_over_8888_n_8888()
This is a big speed-up in the SVG helicopter game:
http://ie.microsoft.com/testdrive/Performance/Helicopter/Default.xhtml
when rendered by Firefox 4 since it is compositing big images
consisting almost entirely of zeros.
commit 2610323545cb5ee3dff0b7d7da505a1cd1e01b73
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Dec 18 06:06:39 2010 -0500
Fix divide-by-zero in set_lum().
When (l - min) or (max - l) are zero, simply set all the channels to
the limit, 0 in the case of (l - min), and a in the case of (max - l).
commit 3479050216a65e3ef6e966a8e801415145261216
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Dec 18 06:05:52 2010 -0500
Add a test compositing with the various PDF operators.
The test has floating point exceptions enabled, and currently fails
with a divide-by-zero.
commit 45a2d010773d05666e87b7a6502e8fcb25add4eb
Author: Cyril Brulebois <kibi@debian.org>
Date: Sun Dec 19 19:37:26 2010 +0100
Fix linking issues when HAVE_FEENABLEEXCEPT is set.
All objects using test/util.c fail to link:
| CCLD region-test
| /usr/bin/ld: utils.o: in function enable_fp_exceptions:utils.c(.text+0x939): error: undefined reference to 'feenableexcept'
There's indeed no explicit dependency on -lm, and if HAVE_FEENABLEEXCEPT
happens to be set, test/util.c uses feenableexcept(), which is nowhere
to be found while linking.
Fix this by adding -lm to TEST_LDADD, although two alternatives could be
thought of:
- Only specifying -lm for objects using util.c.
- Introducing a conditional to add -lm only when configure detects
have_feenableexcept=yes.
Signed-off-by: Cyril Brulebois <kibi@debian.org>
commit 303de045ff21bd5c9cb756d50a41fe4cb8bc97b8
Author: Jon TURNEY <jon.turney@dronecode.org.uk>
Date: Sat Dec 18 18:32:39 2010 +0000
Remove stray #include <fenv.h>
Remove a stray #include <fenv.h> added in commit 2444b2265abeaf6dcf3df1763bc2711684e63bb8
to fix compilation on platforms which don't have fenv.h
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
commit f914cf448630d4ba4af6603b827c621ae6705387
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 23 21:55:02 2010 -0400
Add a stress-test program.
This test program tries to use as many rarely-used features as
possible, including alpha maps, accessor functions, oddly-sized
images, strange transformations, conical gradients, etc.
The hope is to provoke crashes or irregular behavior in pixman.
commit 7d7b03c0911584f687a7fd57a3f5d5eed21080e0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 12 10:56:26 2010 -0400
Make the argument to fence_malloc() an int64_t
That way we can detect if someone attempts to allocate a negative size
and abort instead of just returning NULL and segfaulting later.
commit d41522113ec84e74f7915599fd7624f842be8862
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 29 18:02:02 2010 -0400
test/utils.c: Initialize palette->rgba to 0.
That way it can be used with palettes that are not statically
allocated, without causing valgrind issues.
commit 337f0bff0d8965cb702175e0eedbf418b1e7f0b5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 23 21:02:02 2010 -0400
test: Move palette initialization to utils.[ch]
commit 2444b2265abeaf6dcf3df1763bc2711684e63bb8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 20 13:12:37 2010 -0400
Extend gradient-crash-test
Test the gradients with various transformations, and test cases where
the gradients are specified with two identical points.
commit de2e51dacb1ccd312c0461088b942ef4e93e2731
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 20 13:53:07 2010 -0400
Add enable_fp_exceptions() function in utils.[ch]
This function enables floating point traps if possible.
commit a2afcc9ba4ed5a2843fd133ca23704960846185b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 23 20:56:11 2010 -0400
test: Make composite test use some existing macros instead of defining its own
Also move the ARRAY_LENGTH macro into utils.h so it can be used elsewhere.
commit 4d8d2fa47e457e3c8a5ab956b52cff4785aa45c3
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Dec 17 15:29:58 2010 +0200
COPYING: added Nokia to the list of copyright holders
commit 3d094997b1820719d15cec7dc633ed37e1912bfc
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 30 00:31:06 2010 +0200
Fix for potential unaligned memory accesses
The temporary scanline buffer allocated on stack was declared
as uint8_t array. As a result, the compiler was free to select
any arbitrary alignment for it (even though there is typically
no reason to use really weird alignments here and the stack is
normally at least 4 bytes aligned on most platforms). Having
improper alignment is non-portable and can impact performance
or even make the code misbehave depending on the target platform.
Using uint64_t type for this array should ensure that any possible
memory accesses done by pixman code are going to be handled correctly
(pixman-combine64.c can access this buffer via uint64_t * pointer).
Some alignment related problem was reported in:
http://lists.freedesktop.org/archives/pixman/2010-November/000747.html
commit 985e59a82fa5e644cb6516dc174ab3f79f1448df
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Nov 25 02:28:29 2010 +0200
ARM: added 'neon_src_rpixbuf_8888' fast path
With this optimization added, pixman assisted conversion from
non-premultiplied to premultiplied alpha format is now fully
NEON optimized (both with and without R/B color components
swapping in the process).
commit 733f68912f4a44c24ad3973049a7e1d98f4c6ea8
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 29 09:11:29 2010 +0200
ARM: added 'neon_composite_in_n_8' fast path
commit af7a69d90ea2b43a4e850870727723d719f09a1c
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 29 09:00:46 2010 +0200
ARM: added flags parameter to some asm fast path wrapper macros
Not all types of operations can be skipped when having transparent
solid source or transparent solid mask. Add an extra flags parameter
for providing this information to the wrappers.
commit f6843e3797eea7e4aed7614b1086f5cefc06c0f9
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 29 03:31:32 2010 +0200
ARM: added 'neon_composite_add_8888_n_8888' fast path
commit b066b520dfaf0a9f4d1bc9a73c789091e9ce7cc8
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 29 02:38:52 2010 +0200
ARM: added 'neon_composite_add_n_8_8888' fast path
commit 1fba7790367d7b726d05a33bbbcebe10b9280a31
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 29 02:10:22 2010 +0200
ARM: better NEON instructions scheduling for add_8888_8888_8888
Provides a minor performance improvement by using pipelining and hiding
instructions latencies. Also do not clobber d0-d3 registers (source
image pixels) while doing calculations in order to allow the use of
the same macro for add_n_8_8888 fast path later.
Benchmark from ARM Cortex-A8 @500MHz:
== before ==
add_8888_8888_8888 = L1: 95.94 L2: 42.27 M: 25.60 (121.09%)
HT: 14.54 VT: 13.13 R: 12.77 RT: 4.49 (48Kops/s)
add_8888_8_8888 = L1: 104.51 L2: 57.81 M: 36.06 (106.62%)
HT: 19.24 VT: 16.45 R: 14.71 RT: 4.80 (51Kops/s)
== after ==
add_8888_8888_8888 = L1: 106.66 L2: 47.82 M: 27.32 (129.30%)
HT: 15.44 VT: 13.96 R: 12.86 RT: 4.48 (48Kops/s)
add_8888_8_8888 = L1: 107.72 L2: 61.02 M: 38.26 (113.16%)
HT: 19.48 VT: 16.72 R: 14.82 RT: 4.80 (51Kops/s)
commit c3f48b6aa2f9354af02ffc8c938ec6753fdcbde3
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun Nov 28 22:05:53 2010 +0200
ARM: added 'neon_composite_add_8888_8_8888' fast path
commit 6d2f7f981b52b41f4321071c325babcf792bd666
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sat Nov 27 15:53:54 2010 +0200
ARM: added 'neon_composite_over_0565_n_0565' fast path
commit 3990931bf6197eff1cec06cf24bce53ddf9a539a
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sat Nov 27 04:47:39 2010 +0200
ARM: reuse common NEON code for over_{n_8|8888_n|8888_8}_0565
Renamed suppementary macros from 'over_n_8_0565' to 'over_8888_8_0565',
because they can actually support all variants of this operation:
over_8888_8_0565/over_n_8_0565/over_8888_n_0565.
Also 'over_8888_8_0565' now uses more optimized common code instead of its
own variant, improving performance a bit. Even though this operation is
still memory bandwidth limited, scaled variants of these fast paths may
put more stress on CPU later.
Benchmarked on ARM Cortex-A8 @500MHz:
== before ==
over_8888_8_0565 = L1: 67.10 L2: 53.82 M: 44.70 (105.17%)
HT: 18.73 VT: 16.91 R: 14.25 RT: 4.80 (52Kops/s)
== after ==
over_8888_8_0565 = L1: 77.83 L2: 58.14 M: 44.82 (105.52%)
HT: 20.58 VT: 17.44 R: 15.05 RT: 4.88 (52Kops/s)
commit a7c36681c0c1955ff9110b81f1789e56abb10a95
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sat Nov 27 03:53:12 2010 +0200
ARM: added 'neon_composite_over_8888_n_0565' fast path
commit e6814837a6ccd3e4db329e0131eaf2055d2c864b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Nov 26 17:06:58 2010 +0200
ARM: better NEON instructions scheduling for over_n_8_0565
Code rearranged to get better instructions scheduling for ARM Cortex-A8/A9.
Now it is ~30% faster for the pixel data in L1 cache and makes better use
of memory bandwidth when running at lower clock frequencies (ex. 500MHz).
Also register d24 (pixels from the mask image) is now not clobbered by
supplementary macros, which allows to reuse them for the other variants
of compositing operations later.
Benchmark from ARM Cortex-A8 @500MHz:
== before ==
over_n_8_0565 = L1: 63.90 L2: 63.15 M: 60.97 ( 73.53%)
HT: 28.89 VT: 24.14 R: 21.33 RT: 6.78 ( 67Kops/s)
== after ==
over_n_8_0565 = L1: 82.64 L2: 75.19 M: 71.52 ( 84.14%)
HT: 30.49 VT: 25.56 R: 22.36 RT: 6.89 ( 68Kops/s)
commit 3be86a92ccab240859062a541cdb871d81c9501a
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun Nov 28 21:45:06 2010 +0200
ARM: introduced 'fetch_mask_pixblock' macro to simplify code
This macro hides the implementation details of pixels fetching
for the mask image just like 'fetch_src_pixblock' does for the
source image. This provides more possibilities for reusing the
same code blocks in different compositing functions.
This patch does not introduce any functional changes and the
resulting code in the compiled object file is exactly the same.
commit 98d08b37f17a3379d0ceff8bb7de8f943873fbd8
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Nov 26 08:55:49 2010 +0200
ARM: added 'neon_composite_over_n_8_8' fast path
commit 4b5b5a2a832cd67f2a0ec231f75a2825b45571fa
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 15 18:26:43 2010 +0200
C fast path for a1 fill operation
Can be used as one of the solutions to fix bug
https://bugs.freedesktop.org/show_bug.cgi?id=31604
commit 654961efe405ad1a7e54a77548ca8af322ecc1f8
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Sun Nov 21 11:42:22 2010 -0800
Sun's copyrights belong to Oracle now
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit e7ee43c39d2370716a4d011afa8f5067eced9899
Author: Cyril Brulebois <kibi@debian.org>
Date: Wed Nov 17 16:16:56 2010 +0100
Fix argument quoting for AC_INIT.
One gets rid of this accordingly:
| autoreconf -vfi
| autoreconf: Entering directory `.'
| autoreconf: configure.ac: not using Gettext
| autoreconf: running: aclocal --force
| configure.ac:61: warning: AC_INIT: not a literal: "pixman@lists.freedesktop.org"
| autoreconf: configure.ac: tracing
| configure.ac:61: warning: AC_INIT: not a literal: "pixman@lists.freedesktop.org"
Signed-off-by: Cyril Brulebois <kibi@debian.org>
commit c59db8af66510e8e0a852e5775cff46f7476c71c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Nov 16 17:14:47 2010 -0500
Post-release version bump to 0.21.3
commit 4646c238589986499834b28ed903c366b5ba15ed
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Nov 16 16:43:26 2010 -0500
Pre-release version bump
commit 536cf4dd3bd144ad1c65fc05f4883a31247a0f5d
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Nov 2 23:38:10 2010 -0400
Generate {a,x}8r8g8b8, a8, 565 fetchers for nearest/affine images
There are versions for all combinations of x8r8g8b8/a8r8g8b8 and
pad/repeat/none/normal repeat modes. The bulk of each function is an
inline function that takes a format and a repeat mode as parameters.
commit da0176e8534e5b027818f6b695343d3e04130a93
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Nov 2 17:04:35 2010 +0100
Improve conical gradients opacity check
Conical gradients are completely opaque if all of their stops are
opaque and the repeat mode is not 'none'.
commit 151f2554fc9c098ff86b0fdc0d785aa3ff496328
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Nov 2 17:02:01 2010 +0100
Fix opacity check
Radial gradients are "conical", thus they can have some non-opaque
parts even if all of their stops are completely opaque.
To guarantee that a radial gradient is actually opaque, it needs to
also have one of the two circles containing the other one. In this
case when extrapolating, the whole plane is completely covered (as
explained in the comment in pixman-radial-gradient.c).
commit 19ed415b74521ad5dcc7b6e3ed4bb644711c7bef
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Oct 31 16:59:45 2010 +0100
Remove unused stop_range field
commit d8fe87a6262ee661af8fb0d46bab223e4ab3d88e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Oct 4 01:56:59 2010 +0300
ARM: optimization for scaled src_0565_0565 with nearest filter
The performance improvement is only in the ballpark of 5% when
compared against C code built with a reasonably good compiler
(gcc 4.5.1). But gcc 4.4 produces approximately 30% slower code
here, so assembly optimization makes sense to avoid dependency
on the compiler quality and/or optimization options.
Benchmark from ARM11:
== before ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=34.86 MPix/s
== after ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=36.62 MPix/s
Benchmark from ARM Cortex-A8:
== before ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=89.55 MPix/s
== after ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=94.91 MPix/s
commit b8007d042354fd9bd15711d9921e6f1ebb1c3c22
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 2 16:12:42 2010 +0200
ARM: NEON optimization for scaled src_0565_8888 with nearest filter
Benchmark from ARM Cortex-A8 @720MHz:
== before ==
op=1, src_fmt=10020565, dst_fmt=20028888, speed=8.99 MPix/s
== after ==
op=1, src_fmt=10020565, dst_fmt=20028888, speed=76.98 MPix/s
== unscaled ==
op=1, src_fmt=10020565, dst_fmt=20028888, speed=137.78 MPix/s
commit 2e855a2b4a2bb7b3d2ed1826cb4426d14080ca67
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 2 15:25:51 2010 +0200
ARM: NEON optimization for scaled src_8888_0565 with nearest filter
Benchmark from ARM Cortex-A8 @720MHz:
== before ==
op=1, src_fmt=20028888, dst_fmt=10020565, speed=42.51 MPix/s
== after ==
op=1, src_fmt=20028888, dst_fmt=10020565, speed=55.61 MPix/s
== unscaled ==
op=1, src_fmt=20028888, dst_fmt=10020565, speed=117.99 MPix/s
commit 4a09e472b8fbfae3e67d05a26ecc9c8a17225053
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 2 14:39:02 2010 +0200
ARM: NEON optimization for scaled over_8888_0565 with nearest filter
Benchmark from ARM Cortex-A8 @720MHz:
== before ==
op=3, src_fmt=20028888, dst_fmt=10020565, speed=10.29 MPix/s
== after ==
op=3, src_fmt=20028888, dst_fmt=10020565, speed=36.36 MPix/s
== unscaled ==
op=3, src_fmt=20028888, dst_fmt=10020565, speed=79.40 MPix/s
commit 67a4991f3341d38bc3477c8f99f2ef581cd609e3
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 2 14:29:57 2010 +0200
ARM: NEON optimization for scaled over_8888_8888 with nearest filter
Benchmark from ARM Cortex-A8 @720MHz:
== before ==
op=3, src_fmt=20028888, dst_fmt=20028888, speed=12.73 MPix/s
== after ==
op=3, src_fmt=20028888, dst_fmt=20028888, speed=28.75 MPix/s
== unscaled ==
op=3, src_fmt=20028888, dst_fmt=20028888, speed=53.03 MPix/s
commit 0b56244ac81f2bb2402629f8720c7e22893a24df
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 2 19:16:46 2010 +0200
ARM: performance tuning of NEON nearest scaled pixel fetcher
Interleaving the use of NEON registers helps to avoid some stalls
in NEON pipeline and provides a small performance improvement.
commit 6e76af0d4b60ab74b309994926f28c532c5af155
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 2 14:26:13 2010 +0200
ARM: macro template in C code to simplify using scaled fast paths
This template can be used to instantiate scaled fast path functions
by providing main loop code and calling NEON assembly optimized
scanline processing functions from it. Another macro can be used
to simplify adding entries to fast path tables.
commit 88014a0e6ffaa22b3ac363c2c73b72530cdba0cc
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 1 10:03:59 2010 +0200
ARM: nearest scaling support for NEON scanline compositing functions
Now it is possible to generate scanline processing functions
for the case when the source image is scaled with NEAREST filter.
Only 16bpp and 32bpp pixel formats are supported for now. But the
others can be also added later when needed. All the existing NEON
fast path functions should be quite easy to reuse for implementing
fast paths which can work with scaled source images.
commit 324712e48cf04df3cfcfc463fb221fcdf96e020a
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 1 05:10:34 2010 +0200
ARM: NEON: source image pixel fetcher can be overrided now
Added a special macro 'pixld_src' which is now responsible for fetching
pixels from the source image. Right now it just passes all its arguments
directly to 'pixld' macro, but it can be used in the future to provide
a special pixel fetcher for implementing nearest scaling.
The 'pixld_src' has a lot of arguments which define its behavior. But
for each particular fast path implementation, we already know NEON
registers allocation and how many pixels are processed in a single block.
That's why a higher level macro 'fetch_src_pixblock' is also introduced
(it's easier to use because it has no arguments) and used everywhere
in 'pixman-arm-neon-asm.S' instead of VLD instructions.
This patch does not introduce any functional changes and the resulting code
in the compiled object file is exactly the same.
commit cb3f1830257a56f56abf7d50a8b34e215c616aec
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Nov 2 22:53:55 2010 +0200
ARM: fix 'vld1.8'->'vld1.32' typo in add_8888_8888 NEON fast path
This was mostly harmless and had no effect on little endian systems.
But wrong vector element size is at least inconsistent and also
can theoretically cause problems on big endian ARM systems.
commit fed4a2fde540916fc182917762b85b38052c04de
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Sep 24 16:36:16 2010 +0300
Do CPU features detection from 'constructor' function when compiled with gcc
There is attribute 'constructor' supported since gcc 2.7 which allows
to have a constructor function for library initialization. This eliminates
an extra branch for each composite operation and also helps to avoid
complains from race condition detection tools like helgrind.
The other compilers may or may not support this attribute properly.
Ideally, the compilers should fail to compile the code with unknown
attribute, so the configure check should do the right job. But in
reality the problems are surely possible. Fortunately such problems
should be quite easy to find because NULL pointer dereference should
happen almost immediately if the constructor fails to run.
clang 2.7:
supports __attribute__((constructor)) properly and pretends to be gcc
tcc 0.9.25:
ignores __attribute__((constructor)), but does not pretend to be gcc
commit 99699771cd82e108fbace655bf44013bdccde3bf
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Oct 31 01:40:57 2010 -0400
Delete the source_image_t struct.
It serves no purpose anymore now that the source_class_t field is gone.
commit f405b4079872ecc312f9514fdadc5287e8f20b08
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Oct 30 17:20:22 2010 -0400
[mmx] Mark some of the output variables as early-clobber.
GCC assumes that input variables in inline assembly are fully consumed
before any output variable is written. This means it may allocate the
variables in the same register unless the output variables are marked
as early-clobber.
From Jeremy Huddleston:
I noticed a problem building pixman with clang and reported it to
the clang developers. They responded back with a comment about
the inline asm in pixman-mmx.c and suggested a fix:
"""
Incidentally, Jeremy, in the asm that reads
__asm__ (
"movq %7, %0\n"
"movq %7, %1\n"
"movq %7, %2\n"
"movq %7, %3\n"
"movq %7, %4\n"
"movq %7, %5\n"
"movq %7, %6\n"
: "=y" (v1), "=y" (v2), "=y" (v3),
"=y" (v4), "=y" (v5), "=y" (v6), "=y" (v7)
: "y" (vfill));
all the output operands except the last one should be marked as
earlyclobber ("=&y"). This is working by accident with gcc.
"""
Cc: jeremyhu@apple.com
Reviewed-by: Matt Turner <mattst88@gmail.com>
commit 9c19a85b0037d48fdd180a2c59ef05bdc4f46680
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Oct 28 20:14:03 2010 -0400
Remove workaround for a bug in the 1.6 X server.
There used to be a bug in the X server where it would rely on
out-of-bounds accesses when it was asked to composite with a
window as the source. It would create a pixman image pointing
to some bogus position in memory, but then set a clip region
to the position where the actual bits were.
Due to a bug in old versions of pixman, where it would not clip
against the image bounds when a clip region was set, this would
actually work. So when the pixman bug was fixed, a workaround was
added to allow certain out-of-bound accesses.
However, the 1.6 X server is so old now that we can remove this
workaround. This does mean that if you update pixman to 0.22 or later,
you will need to use a 1.7 X server or later.
commit 56748ea9a698daec8f445d2bebbbaed5515380af
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sat Oct 30 15:51:30 2010 +0300
Fixed broken configure check for __thread support
Somehow the patch from [1] was not applied correctly, fixing that.
1. http://lists.cairographics.org/archives/cairo/2010-September/020826.html
commit ecc3612995d5d699a3dd49016a7e9ed40f0a4564
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Nov 1 17:52:29 2010 -0400
COPYING: Stop saying that a modification is currently under discussion.
Also put the copyright text into a C comment for easier cut and paste.
commit c993cd9614a47657228e3125bdcedc0bd0e34164
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 27 17:21:06 2010 -0400
Version bump 0.21.1.
The previous bump to 0.20.1 was a mistake; it belongs on the 0.20 branch.
commit d890b684f68905ea5e242360f20e2a70251c89fd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 27 16:58:29 2010 -0400
Post-release version bump to 0.20.1
commit c5e048d46c32c43172fb8d1c067e82587f916953
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 27 16:51:40 2010 -0400
Pre-release version bump to 0.20.0
commit 6a6d9758af478e9f5eae48ccf15f1cbea2cf30ed
Author: Scott McCreary <scottmc2@gmail.com>
Date: Wed Oct 27 12:31:27 2010 -0700
Added check to find pthread on Haiku.
commit 00fdb3d8e8d5c04d01c352315b6a8e2e2dfe53ae
Author: Jon TURNEY <jon.turney@dronecode.org.uk>
Date: Sun Oct 24 15:58:39 2010 +0100
Plug another leak in alphamap test
Even after commit e46be417cebac984a858da05e61d924889695c9e alphamap
test is still leaking the alphamap pixmap, leading to mmap() failures
on cygwin
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
commit 1c23142efa056124c594c72022e7f383e839d3b1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 20 16:31:57 2010 -0400
Post-release version bump to 0.19.7
commit d1051340155a099a523e71377b1d889eec8b972e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 20 16:25:55 2010 -0400
Pre-release version bump to 0.19.6
commit a966cd04c16ad0c34b0f17e9021a4f3532575ca4
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Oct 12 15:38:20 2010 +0200
Fix an overflow in the new radial gradient code
huge-radial in the cairo test suite pointed out an undocumented
overflow in the radial gradient code.
By casting to pixman_fixed_48_16_t before doing the operations,
the overflow can be avoided.
commit 70658f0a6bd451a21fbb43df7865a7dac95abe24
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 20 16:09:44 2010 -0400
Remove the class field from source_image_t
The linear gradient was the only image type that relied on the class
being stored in the image struct itself. With the previous changes, it
doesn't need that anymore, so we can delete the field.
commit 741c30d9d9cf445fa2e3a2c43d37c221d49831b4
Author: Andrea Canciani <ranma42@gmail.com>
Date: Wed Oct 20 21:24:32 2010 +0200
Remove unused enum value
The new linear gradient code doesn't use SOURCE_IMAGE_CLASS_VERTICAL
anymore and it was not used anywhere else.
commit 9b72fd1b857494ea928795c89a4f827e56fe26d3
Author: Andrea Canciani <ranma42@gmail.com>
Date: Mon Oct 18 22:21:52 2010 +0200
Make classification consistent with rasterization
Use the same computations to classify the gradient and to
rasterize it.
This improves the correctness of the classification by
avoiding integer division.
commit 1d4f2d71facd5f2bbce74fbe3407ccea6cf4bea1
Author: Andrea Canciani <ranma42@gmail.com>
Date: Wed Aug 11 09:58:05 2010 +0200
Improve precision of linear gradients
Integer division (without keeping the remainder) can discard a lot
of information. Doing the division maths in floating point (and
paying attention to error propagation) allows to greatly improve
the precision of linear gradients.
commit f6ab20ca6604739b82311fc078d6ce850f43adc0
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Oct 12 09:52:53 2010 +0200
Add comments about errors
Explain how errors are introduced in the computation performed for
radial gradients.
commit 1ca715ed1e6914e9bd9f050065e827d7a9e2efc9
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Aug 15 09:07:33 2010 +0200
Draw radial gradients with PDF semantics
Change radial gradient computations and definition to reflect the
radial gradients in PDF specifications (see section 8.7.4.5.4,
Type 3 (Radial) Shadings of the PDF Reference Manual).
Instead of having a valid interpolation parameter value for every
point of the plane, define it only for points withing the area
covered by the family of circles generated by interpolating or
extrapolating the start and end circles.
Points outside this area are now transparent black (rgba 0 0 0 0).
Points within this area have the color assiciated with the maximum
value of the interpolation parameter in that point (if multiple
solutions exist within the range specified by the extend mode).
commit e46be417cebac984a858da05e61d924889695c9e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Oct 8 07:44:20 2010 -0400
Plug leak in the alphamap test.
The images are being created with non-NULL data, so we have to free it
outselves. This is important because the Cygwin tinderbox is running
out of memory and produces this:
mmap failed on 20000 1507328
mmap failed on 40000 1507328
mmap failed on 20000 1507328
mmap failed on 40000 1507328
mmap failed on 40000 1507328
mmap failed on 40000 1507328
http://tinderbox.x.org/builds/2010-10-05-0014/logs/pixman/#check
commit 6ed7164de5f74b752d85834b53e89810f1d0a560
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Oct 6 02:40:39 2010 -0400
Add no-op combiners for DST and the CA versions of the HSL operators.
We already exit early for DST, but for the HSL operators with
component alpha, we crash at the moment. Fix that by adding a dummy
combine_dst() function.
commit 233b27257b63ecd502c6392e5ef3a7f736f14365
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 5 11:05:25 2010 -0400
test: Add some more colors to the color table in composite.c
Specifically, add transparent black and superluminescent white with
alpha = 0.
commit 3f7da59352b604bd6974230d0b149e8e7da77b5c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 5 09:49:45 2010 -0400
test: Parallize composite.c with OpenMP
Each test uses the test number as the random number seed; if it
didn't, all the threads would run the same tests since they would all
start from the same seed.
commit a10ccc9f303ca6b4577afe68cc6b2d8840de5a27
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Mar 7 11:26:16 2010 -0500
test: Change composite so that it tests randomly generated images
Previously this test would try to exhaustively test all combinations
of formats and operators, which meant that it would take hours to run.
Instead, generate images randomly and test compositing those.
Cc: chris@chris-wilson.co.uk
commit 55e4065cbbc5ffe2ce1986b51ef63e8a0b50fccb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Mar 7 11:24:30 2010 -0500
test: Fix eval_diff() so that it provides useful error values.
Previously, this function would evaluate the error under the
assumption that the format was 565 or wider. This patch changes it to
take the actual format into account.
With that fixed, we can turn on testing for the rest of the formats.
Cc: chris@chris-wilson.co.uk
commit fe411cf2ac4d5b26a319b906dee87e0cc69d2ad6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Mar 7 10:31:04 2010 -0500
test: Fix bug in color_correct() in composite.c
This function was using the number of bits in a channel as if it were
a mask, which lead to many spurious errors. With that fixed, we can
turn on testing for all formats where all channels have 5 or more
bits.
Cc: chris@chris-wilson.co.uk
commit 4e89a5b7f3b039fcc86dff7fb8bec79884c913e8
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Oct 5 11:08:42 2010 -0400
Remove broken optimizations in combine_disjoint_over_u()
The first broken optimization is that it checks "a != 0x00" where it
should check "s != 0x00". The other is that it skips the computation
when alpha is 0xff. That is wrong because in the formula:
min (1, (1 - Aa)/Ab)
the render specification states that if Ab is 0, the quotient is
defined to positive infinity. That is the case even if (1 - Aa) is 0.
commit 8d76c1b3391e1165aaf9e0f331749aee1394f62c
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Oct 4 04:49:08 2010 +0300
ARM: restore fallback to ARMv6 implementation from NEON in the delegate chain
After fast path cache introduction, the overhead of having this fallback is
insignificant. On the other hand, some of the ARM assembly optimizations (for
example nearest neighbor scaling) do not need NEON.
commit c748650d700c2f18f1587f06ada3b58d6ddc18d3
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Sep 8 09:30:23 2010 +0300
Use more unrolling for scaled src_0565_0565 with nearest filter
Benchmark from Intel Core i7 860:
== before ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=1335.29 MPix/s
== after ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=1550.96 MPix/s
== performance of nonscaled src_0565_0565 operation as a reference ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=2401.31 MPix/s
Benchmark from ARM Cortex-A8:
== before ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=81.79 MPix/s
== after ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=89.55 MPix/s
== performance of nonscaled src_0565_0565 operation as a reference ==
op=1, src_fmt=10020565, dst_fmt=10020565, speed=197.44 MPix/s
commit a520c15e1134d9e801bc2ab461a3c5ade60544f2
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Sep 23 23:41:50 2010 +0300
ARM: added 'neon_composite_out_reverse_8_0565' fast path
== before ==
outrev_8_0565 = L1: 22.91 L2: 22.40 M: 18.75 ( 10.47%)
HT: 12.62 VT: 12.22 R: 11.32 RT: 5.30 ( 58Kops/s)
== after ==
outrev_8_0565 = L1: 176.27 L2: 151.70 M:108.79 ( 60.81%)
HT: 50.43 VT: 37.16 R: 32.26 RT: 9.62 ( 97Kops/s)
commit d8820360f79d07e03c91ecd201880bc6b1706f19
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Sep 23 22:28:55 2010 +0300
ARM: added 'neon_composite_add_0565_8_0565' fast path
== before ==
add_0565_8_0565 = L1: 14.05 L2: 14.03 M: 11.57 ( 12.94%)
HT: 8.31 VT: 8.10 R: 7.47 RT: 3.64 ( 42Kops/s)
== after ==
add_0565_8_0565 = L1: 123.36 L2: 94.70 M: 74.36 ( 83.15%)
HT: 31.17 VT: 23.97 R: 21.06 RT: 6.42 ( 70Kops/s)
commit 2f6c7b4f9d36261d2efe494a925faf063376ba30
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri May 21 16:31:03 2010 +0300
ARM: NEON: added forgotten cache preload for over_n_8888/over_n_0565
Prefetch provides up to 40-50% better performance when working
with large images and/or when having lots of L2 cache misses
on ARM Cortex-A8 @ 720MHz:
== before ==
over_n_8888 = L1: 225.83 L2: 181.02 M: 55.57 ( 41.41%)
HT: 38.96 VT: 36.92 R: 32.84 RT: 14.15 ( 123Kops/s)
over_n_0565 = L1: 153.91 L2: 149.69 M: 83.17 ( 30.95%)
HT: 50.41 VT: 49.15 R: 40.56 RT: 15.45 ( 131Kops/s)
== after ==
over_n_8888 = L1: 222.39 L2: 170.95 M: 76.86 ( 57.27%)
HT: 58.80 VT: 53.03 R: 45.51 RT: 14.13 ( 124Kops/s)
over_n_0565 = L1: 151.87 L2: 149.54 M:125.63 ( 46.80%)
HT: 67.85 VT: 57.54 R: 50.21 RT: 15.32 ( 130Kops/s)
commit b924bb1f8191cc7c386d8211d9822aeeaadcab44
Author: Mika Yrjola <mika.yrjola@movial.com>
Date: Fri Oct 1 16:17:50 2010 +0300
Fix "syntax error: empty declaration" warnings.
These minor changes should fix a large number of
macro declaration - related "syntax error: empty declaration" warnings
which are seen while compiling the code with the Solaris Studio
compiler.
commit 73c1fefa1b99efa36b74599f455df9426209378e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 28 00:51:07 2010 -0400
Delete simple repeat code
This was supposedly an optimization, but it has pathological cases
where it definitely isn't. For example a 1 x n image will cause it to
have terrible memory access patterns and to generate a ton of modulus
operations.
Since no one has ever measured whether it actually is an improvement,
and since it is doing the repeating at the wrong the stage in the
pipeline, and since with the previous commit it can't be triggered
anymore because we now require SAMPLES_COVER_CLIP for regular fast
paths, just delete it.
commit a4d1c9d3831751008db61a48d6a6cb12ed33f314
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 28 00:42:25 2010 -0400
Fix bug in FAST_PATH_STD_FAST_PATH
The standard fast paths deal with two kinds of images: solids and
bits. These two image types require different flags, but
PIXMAN_STD_FAST_PATH uses the same ones for both.
This patch makes it so that solid images just get the standard flags,
while bits images must be untransformed contain the destination clip
within the sample grid.
This means that the old FAST_PATH_COVERS_CLIP flag is now not used
anymore, so it can be deleted.
commit 10e13135c3538f0909f27eaacc17e9e13f199a7c
Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
Date: Tue Sep 28 14:42:02 2010 +0300
Some clean-ups in fence_malloc() and fence_free()
This patch removes an unnecessary typecast of MAP_FAILED,
replaces an erroneous free() by the correct munmap() in the
error path for a failing mprotect(), and, finally, removes
redundant calls to mprotect() that aren't necessary, because
munmap() doesn't call for any specific memory protection.
commit ba693d2e88b6f4c871d804fb62d7435915c85dfc
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 28 02:52:02 2010 -0400
Fix search-and-replace issue in lowlevel-blt-bench.c
commit 77d3e5f6ff719f53398b5675e5219d0e3b9746c1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Sep 17 09:21:09 2010 -0400
Rename all the fast paths with _8000 in their names to _8
This inconsistent naming somehow survived the refactoring from a while
back.
commit ba69989374fe9cbe5151c5aac7b824da0806f94a
Author: Liu Xinyun <xinyun.liu@intel.com>
Date: Sat Sep 25 14:56:38 2010 +0800
Remove cache prefetch code.
The performance is decreased with cache prefetch, especially for
ATOM. So remove these code. Following is the experiment.
old: 0.19.5-with-cache-prefetch
new: 0.19.5-without-cache-prefetch
CPU: Intel Atom N270@1.6GHz
OS: MeeGo (32 bits)
Speedups
========
image-rgba poppler-0 17125.68 (17279.58 0.92%) -> 14765.36 (15926.49 3.54%): 1.16x speedup
image-rgba ocitysmap-0 9008.25 (9040.41 7.50%) -> 8277.94 (8343.09 5.44%): 1.09x speedup
image-rgba xfce4-terminal-a1-0 18020.76 (18230.68 0.97%) -> 16703.77 (16712.42 1.22%): 1.08x speedup
image-rgba gnome-terminal-vim-0 25081.38 (25133.38 0.24%) -> 23407.47 (23652.98 0.54%): 1.07x speedup
image-rgba firefox-talos-gfx-0 57916.97 (57973.20 0.11%) -> 54556.64 (54624.55 0.39%): 1.06x speedup
image-rgba firefox-planet-gnome-0 102377.47 (103496.63 0.70%) -> 96816.65 (97075.54 0.15%): 1.06x speedup
image-rgba swfdec-giant-steps-0 12376.24 (12616.84 1.02%) -> 11705.30 (11825.20 1.06%): 1.06x speedup
CPU: Intel Core(TM)2 Duo CPU T9600@2.80GHz
OS: Ubuntu 10.04 (64bits)
Speedups
========
image-rgba ocitysmap-0 2671.46 (2691.82 8.55%) -> 2296.20 (2307.26 5.77%): 1.16x speedup
image-rgba swfdec-giant-steps-0 1614.55 (1615.18 1.68%) -> 1532.84 (1538.52 0.72%): 1.05x speedup
Signed-off-by: Liu Xinyun <xinyun.liu@intel.com>
Signed-off-by: Chen Miaobo <miaobo.chen@intel.com>
commit 56777f3f675869806cd30bcd21a5b39d788507cb
Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
Date: Wed Sep 22 12:34:57 2010 +0300
Use <sys/mman.h> macros only when they are available
Not all systems are regular Unices, so let's be careful with the
mmap()-related stuff, which might be unavailable. This patch makes
sure that mmap() and friends is used only when the <sys/mman.h>
header is found.
commit 39524a4687391c68f4177e8671f4b2bd39e05850
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 21 14:20:43 2010 -0400
Revert "add enable-cache-prefetch option"
Revert this accidentally committed patch.
This reverts commit 19ea0e16b958e5abe491365c203293ab372f3586.
commit e97da2104967f4c99aed40e89f3e0141ceed7040
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 21 14:12:00 2010 -0400
If MAP_ANONYMOUS is not defined, define it to MAP_ANON.
This hopefully fixes the build failure on OS X.
commit 19ea0e16b958e5abe491365c203293ab372f3586
Author: Liu Xinyun <xinyun.liu@intel.com>
Date: Wed Sep 22 00:15:10 2010 +0800
add enable-cache-prefetch option
OK. here is the work to clear all cache prefetch. Please review it. 3x
On Tue, Sep 21, 2010 at 11:36:30PM +0800, Soeren Sandmann wrote:
> Liu Xinyun <xinyun.liu@intel.com> writes:
>
> > This patch is to add a new configuration option: enable-cache-prefetch,
> > which is default yes.
> >
> > Here is a link which talks on cache issue.
> > http://lists.freedesktop.org/archives/pixman/2010-June/000218.html
> >
> > When disable it on Atom CPU(configured with --enable-cache-prefetch=no),
> > it will have a little performance gain. Here is the patch.
>
> I think the cache prefetch code should just be deleted outright. No
> benchmarks that I'm aware of show it to be an improvement.
>
>
> Thanks,
> Soren
>From bca2192ef524bcae4eea84d0ffed9e8c4855675f Mon Sep 17 00:00:00 2001
From: Liu Xinyun <xinyun.liu@intel.com>
Date: Wed, 22 Sep 2010 00:11:56 +0800
Subject: [PATCH] remove cache prefetch
commit edd173396604b052fd76971d0efa0c8db40cf1f3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 21 10:18:44 2010 -0400
Post-release version bump to 0.19.5
commit e5b3a6e7105af590d72e2ae986f9985f71cc88f5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 21 10:11:34 2010 -0400
Pre-release version bump to 0.19.4
commit 0742ba41646853a5edf90c2f3102f49b248321ee
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Sep 21 10:05:52 2010 -0400
compute_composite_region32: Zero extents before returning FALSE.
If the extents of the composite region are broken such that x2 <= x1
or y2 <= y1, then we need to zero the extents before returning so that
the region won't be completely broken when calling
pixman_region32_fini().
commit 7cd4f2fa201c4dc846153c022423e3dced2cfb13
Author: Jonathan Morton <jonathan.morton@movial.com>
Date: Fri Sep 17 17:52:23 2010 +0300
Add a lowlevel blitter benchmark
This test is a modified version of Siarhei's compositor throughput
benchmark. It's expanded with explicit reporting of memory bandwidth
consumption for the M-test, and with an additional 8x8-random test
intended to determine peak ops/sec capability. There are also quite a
lot more operations tested for.
commit eab3a77877b0e850c46f95dacffb31994e6a7e41
Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
Date: Fri Sep 17 17:52:22 2010 +0300
Add noinline macro
This patch adds a noinline macro, which expands to compiler-dependent
keywords that tell the compiler to never inline a function.
commit cab3261c0da6e833d803a7f3ccab600adca7abe1
Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
Date: Fri Sep 17 17:52:21 2010 +0300
Add gettime() routine to test utils
Impending benchmark code will need a function to get current time
in seconds, and this patch introduces such routine. We try to use
the POSIX gettimeofday() function when available, and fall back to
clock() when not.
commit fd3c87d460a6d1803880d17af416cce344a086c4
Author: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
Date: Fri Sep 17 17:52:20 2010 +0300
Move aligned_malloc() to utils
The aligned_malloc() routine will be used in more than one test utility.
At least, a low-level blitter benchmark needs it. Therefore, let's make
this function a part of common test utilities code.
commit f474783607e51183d31814972d0f055907876079
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:33:23 2010 -0400
Enable bits_image_fetch_bilinear_affine_normal_r5g6b5
commit 91521d30ab9b033a35fb7797e4566d575ad1c1dc
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:33:10 2010 -0400
Enable bits_image_fetch_bilinear_affine_reflect_r5g6b5
commit 372d7b954aee4f3a2ad94ed8484a2b4084db0c7c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:33:00 2010 -0400
Enable bits_image_fetch_bilinear_affine_none_r5g6b5
commit a826ae0e3a0279557e892856ef1333971b105d01
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:32:44 2010 -0400
Enable bits_image_fetch_bilinear_affine_pad_r5g6b5
commit c5238bd1809433af5b0efc3add23c1ccb4da884c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:32:27 2010 -0400
Enable bits_image_fetch_bilinear_affine_normal_a8
commit d12daefcdb8845e539309df46b08916829a86d9c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:32:12 2010 -0400
Enable bits_image_fetch_bilinear_affine_reflect_a8
commit 9388be32932898ed424c8916a57a6201f995416b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:31:57 2010 -0400
Enable bits_image_fetch_bilinear_affine_none_a8
commit 8e4d4e8d110c379cb85f53752660c6b2fab33d5e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 10:31:45 2010 -0400
Enable bits_image_fetch_bilinear_affine_pad_a8
commit ce1f6c50b4ddf8f7c48a3b272c19d281beca4b34
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:41:20 2010 -0400
Enable bits_image_fetch_bilinear_affine_normal_x8r8g8b8
commit 83f2ee3e958a02fc85a2dc6eddc048b63d74cd5c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:41:08 2010 -0400
Enable bits_image_fetch_bilinear_affine_reflect_x8r8g8b8
commit be37ae331c6e5e9539b0c1eac6e196366532df29
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:40:56 2010 -0400
Enable bits_image_fetch_bilinear_affine_none_x8r8g8b8
commit 5f8a9bebc04deb55de79e7443578779a93b8cfa6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:40:46 2010 -0400
Enable bits_image_fetch_bilinear_affine_pad_x8r8g8b8
commit c59584cb862ef8774a2ef1eabb87fef18506d10f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:40:16 2010 -0400
Enable bits_image_fetch_bilinear_affine_normal_a8r8g8b8
commit 2292cff304fd5aad6dbcc86342a57ea523136de6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:40:03 2010 -0400
Enable bits_image_fetch_bilinear_affine_reflect_a8r8g8b8
commit 8b29162693adc30dbb5c0f60098d2853c3942c36
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:39:51 2010 -0400
Enable bits_image_fetch_bilinear_affine_none_a8r8g8b8
commit e8555874e122f6e113f85e37059932457ee509cb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 28 02:39:37 2010 -0400
Enable bits_image_fetch_bilinear_affine_pad_a8r8g8b8
commit f9778c15e9c01c02e0002edfc4d4a1d517d14d87
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 23 04:44:33 2010 -0400
Use a macro to generate some {a,x}8r8g8b8, a8, and r5g6b5 bilinear fetchers.
There are versions for all combinations of x8r8g8b8/a8r8g8b8 and
pad/repeat/none/normal repeat modes. The bulk of each scaler is an
inline function that takes a format and a repeat mode as parameters.
The new scalers are all commented out, but the next commits will
enable them one at a time to facilitate bisecting.
commit 6d1e10a8b5c456ee501a309f5cf2f801efcf63b0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jul 14 16:27:27 2010 -0400
test: Add affine-test
This test tests compositing with various affine transformations. It is
almost identical to scaling-test, except that it also applies a random
rotation in addition to the random scaling and translation.
commit 4fa33537d7093ac759b7ded1718a628dacd2aff4
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 12 06:07:41 2010 -0400
analyze_extents: Fast path for non-transformed BITS images
Profiling various cairo traces showed that we were spending a lot of
time in analyze_extents and compute_sample_extents(). This was
especially bad for glyphs where all this computation was completely
unnecessary.
This patch adds a fast path for the case of non-transformed BITS
images. The result is approximately a 6% improvement on the
firefox-talos-gfx benchmark:
Before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image firefox-talos-gfx 13.797 13.848 0.20% 6/6
After:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image firefox-talos-gfx 12.946 13.018 0.39% 6/6
commit c97881fe3c3a0af78cf5953d2c135654440b0269
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 16 08:35:05 2010 -0400
Move some of the FAST_PATH_COVERS_CLIP computation to pixman-image.c
When an image is solid or repeating, the FAST_PATH_COVERS_CLIP flag
can be set in compute_image_info().
Also the code that turned this flag off in pixman.c was not correct;
it didn't take transformations into account. With this patch, pixman.c
doesn't set the flag by default, but instead relies on the call to
compute_samples_extents() to set it when possible.
commit 3411f9399c3ab6d642f350ea8e4c355f719d01d9
Author: Tor Lillqvist <tml@iki.fi>
Date: Wed Sep 15 11:53:47 2010 -0400
Support __thread on MINGW 4.5
By the way, it seems that with gcc 4.5.0 from mingw.org, __thread, sse
and mmx work fine.
I added the below to pixman 0.18 and as far as I can see, it works.
make check reports no problems. (Earlier I had to use --disable-mmx
and --disable-sse2.) Also gtk-demo and gimp run fine.
(Also a change to get rid of the warnings about -fvisibility being ignored.)
commit add0fd1bac84a5b6dddf7632b4100d6b3f2ebc18
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 29 22:46:09 2010 -0400
Clip composite region against the destination alpha map extents.
Otherwise we can end up writing outside the alpha map.
commit af2f0080feada1abe569e2031acacf51be7f8f68
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 29 17:07:40 2010 -0400
Remove FAST_PATH_NARROW_FORMAT flag if there is a wide alpha map
If an image has an alpha map that has wide components, then we need to
use 64 bit processing for that image. We detect this situation in
pixman-image.c and remove the FAST_PATH_NARROW_FORMAT flag.
In pixman-general, the wide/narrow decision is now based on the flags
instead of on the formats.
commit 0afc61341526887c59d6dd9e43073f73451a74c6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 29 17:03:01 2010 -0400
Rename FAST_PATH_NO_WIDE_FORMAT to FAST_PATH_NARROW_FORMAT
This avoids a negative in the name. Also, by renaming the "wide"
variable in pixman-general.c to "narrow" and fixing up the logic
correspondingly, the code there reads a lot more straightforwardly.
commit ae77548f0d9ca95a86a466fc4ff099e000716067
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 29 16:59:02 2010 -0400
Update and extend the alphamap test
- Test many more combinations of formats
- Test destination alpha maps
- Test various different alpha origins
Also add a transformation to the destination, but comment it out
because it is actually broken at the moment (and pretty difficult to
fix).
commit dc9fe269ea2a1a0b8334d0936e2541af48b81bc7
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Sep 13 14:34:34 2010 -0400
Add fence_malloc() and fence_free().
These variants of malloc() and free() try to surround the allocated
memory with protected pages so that out-of-bounds accessess will cause
a segmentation fault.
If mprotect() and getpagesize() are not available, these functions are
simply equivalent to malloc() and free().
commit f4dc73bad4f662bdc3c94cb1e224f9a1989beba5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Sep 12 04:35:08 2010 -0400
Do opacity computation with shifts instead of comparing with 0
Also add a COMPILE_TIME_ASSERT() macro and use it to assert that the
shift is correct.
commit 517a77a992255cb6dae7e74bc6f6b9ac21003ac1
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Sep 8 09:16:12 2010 +0300
SSE2 optimization for scaled over_8888_8888 operation with nearest filter
This is the first demo implementation, it should be possible to
generalize it later to cover more operations with less lines of code.
It should be also possible to introduce the use of '__builtin_constant_p'
gcc builtin function for an efficient way of checking if 'unit_x' is known
to be zero at compile time (when processing padding pixels for NONE, or
PAD repeat).
Benchmarks from Intel Core i7 860:
== before (nearest OVER) ==
op=3, src_fmt=20028888, dst_fmt=20028888, speed=142.01 MPix/s
== after (nearest OVER) ==
op=3, src_fmt=20028888, dst_fmt=20028888, speed=314.99 MPix/s
== performance of nonscaled operation as a reference ==
op=3, src_fmt=20028888, dst_fmt=20028888, speed=652.09 MPix/s
commit abc90dad57f03bf9293fc825835c6f0fddc6771b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Sep 16 18:25:40 2010 +0300
NONE repeat support for fast scaling with nearest filter
Implemented very similar to PAD repeat.
And gcc also seems to be able to completely eliminate the
code responsible for left and right padding pixels for OVER
operation with NONE repeat.
commit 45833d5b198507e9e69b918459eaaf6088e5de00
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Sep 16 17:10:40 2010 +0300
PAD repeat support for fast scaling with nearest filter
When processing pixels from the left and right padding, the same
scanline function is used with 'unit_x' set to 0.
Actually appears that gcc can handle this quite efficiently. When
using 'restrict' keyword, it is able to optimize the whole operation
performed on left or right padding pixels to a small unrolled loop
(the code is reduced to a simple fill implementation):
9b30: 89 08 mov %ecx,(%rax)
9b32: 89 48 04 mov %ecx,0x4(%rax)
9b35: 48 83 c0 08 add $0x8,%rax
9b39: 49 39 c0 cmp %rax,%r8
9b3c: 75 f2 jne 9b30
Without 'restrict' keyword, there is one instruction more: reloading
source pixel data from memory in the beginning of each iteration. That
is slower, but also acceptable.
commit 3db0cc5c75a4a764726059511fa6d67082fbeb64
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Sep 17 16:22:25 2010 +0300
Introduce a fake PIXMAN_REPEAT_COVER constant
We need to implement a true PIXMAN_REPEAT_NONE support later (padding
the source with zero pixels). So it's better not to use PIXMAN_REPEAT_NONE
for handling FAST_PATH_SAMPLES_COVER_CLIP special case.
commit e9b0740af76853f58df72cd40cd7cb4e2ac7261b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Sep 16 13:02:18 2010 +0300
Nearest scaling fast path macro split into two parts
Scanline processing is now split into a separate function. This provides
an easy way of overriding it with a platform specific implementation,
which may use SIMD optimizations. Only basic C data types are used as
the arguments for this function, so it may be implemented entirely in
assembly or be generated by some JIT engine.
Also as a result of this split, the complexity of code is reduced a
bit and now it should be easier to introduce support for the currently
missing NONE, PAD and REFLECT repeat types.
commit 066ce191a6d3bb970b5024c070193cac4c130418
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Sep 16 12:31:27 2010 +0300
Nearest scaling fast path macros moved to 'pixman-fast-path.h'
These macros with some modifications can can be reused later by
various platform specific implementations, introducing SIMD
optimizations for nearest scaling fast paths.
commit fb819c0e93b301757f8549cf7738c2b8c356ee7e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 29 16:26:45 2010 -0400
Add FAST_PATH_NO_ALPHA_MAP to the standard destination flags.
We can't in general take a fast path if the destination has an alpha
map.
commit ba6c98fc4b8f0ee02b846fd31c7e93e18e92d0af
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Sep 9 12:02:59 2010 +0300
test: detection of possible floating point registers corruption
Added a pair of macros which can help to detect corruption
of floating point registers after a function call. This may
happen if _mm_empty() call is forgotten in MMX/SSE2 fast
path code, or ARM NEON assembly optimized function
forgets to save/restore d8-d15 registers before use.
commit e470c0dc5bcbf1e153bf035a823a7bdf629e6e25
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Sep 7 01:15:57 2010 +0300
ARM: added 'neon_composite_over_0565_8_0565' fast path
commit a5bf7c3b1a103c6b676c864df009b1f0ad3f8195
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Sep 7 01:10:43 2010 +0300
ARM: helper macros for conversion between 8888/x888/0565 formats
commit 8e299702f315fc1f0f97ab93d905ed5d9c41410e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Sep 7 01:05:44 2010 +0300
ARM: common init/cleanup macro for saving/restoring NEON registers
This is a typical prologue/epilogue for many NEON fast path functions, so
it makes sense to provide common reusable macros for it in the header file.
commit e29d9dfcb5935777333f6239b95c18c3da697ab2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Sep 2 19:43:08 2010 -0400
Silence some warnings about uninitialized variables
Neither were real problems, but GCC was complaining about them.
commit 27f7852b5ac8d137c917e653fb7113f419a4c77a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Aug 31 00:30:54 2010 -0400
When pixman_compute_composite_region32() returns FALSE, don't fini the region.
The rule is that the region passed in must be initialized and that the
region returned will still be valid. Ie., the lifecycle is the
responsibility of the caller, regardless of what the function returns.
Previously, compute_composite_region32() would finalize the region and
then return FALSE, and then the caller would finalize the region
again, leading to memory corruption in some cases.
commit df6dbc90248a41b5b8362010e5b8d34358688786
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 30 00:16:07 2010 -0400
Store a2b2g2r2 pixel through the WRITE macro
Otherwise, accessor functions won't work.
commit f42419a3e493bb325163a711fe50296c4c948edd
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Aug 23 18:24:32 2010 +0300
ARM: added 'neon_composite_over_8888_8_0565' fast path
commit 765bde32e0a2e81fbbe15acc0f491695ba2726e8
Author: Maarten Bosmans <mkbosmans@gmail.com>
Date: Mon Aug 30 08:55:00 2010 +0200
Add *.exe to .gitignore
commit 85964082618fc5350cafcd22b48ba1e02cbc4276
Author: Maarten Bosmans <mkbosmans@gmail.com>
Date: Sun Aug 29 06:28:42 2010 +0200
Use windows.h directly for mingw32 build
This patch adresses the issue discussed in
http://lists.freedesktop.org/archives/pixman/2010-April/000163.html
There were only two clashing identifiers. The first one is IN, which
obviously causes problems in Pixman for lines like
PIXMAN_STD_FAST_PATH (IN, solid, a8, a8, fast_composite_in_n_8_8),
Fortunately the mingw headers provide a solution: by defining
_NO_W32_PSEUDO_MODIFIERS, these stupid symbols are skipped.
The other name is UINT64, used in pixman-mmx.c. I renamed that
function to to_uint64, but may be another name is more appropriate.
commit 5b99710042e812d294f571ad6d86fb003a8071e3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 23 09:27:38 2010 -0400
Be more paranoid about checking for GTK+
From time to time people run into issues where the configure script
detects GTK+ when it is either not installed, or not functional due to
a missing pixman. Most recently:
https://bugs.freedesktop.org/show_bug.cgi?id=29736
This patch makes the configure script more paranoid by
- always using PKG_CHECK_MODULES and not PKG_CHECK_EXISTS, since it
seems PKG_CHECK_EXISTS will sometimes return true even if a dependency
of GTK+, such as pixman-1, is missing.
- explicitly checking that pixman-1 is installed before enabling GTK+.
Cc: my.somewhat.lengthy.loginname@gmail.com
commit 5530bcab26508f38a25d2afffa7fef20f35a68e1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Aug 22 11:09:45 2010 -0400
Merge pixman_image_composite32() and do_composite().
There is not much point having a separate function that just validates
the images. Also add a boolean return to lookup_composite_function()
so that we can return if no composite function is found.
commit a8ea889e5e3029c2aad0e54e849783242daca274
Author: Benjamin Otte <otte@redhat.com>
Date: Mon Aug 23 18:20:09 2010 +0200
region: Fix pixman_region_translate() clipping bug
Fixes the region-translate test case by clipping region translations to
the newly defined PIXMAN_REGION_MIN/MAX and using the newly introduced
type overflow_int_t to check for the overflow.
Also uses INT16_MAX or INT32_MAX for these values instead of relying on
the size of short and int types.
commit 4d8fb1bc01654ba0d331e6aea8127920e8cdf0b8
Author: Benjamin Otte <otte@redhat.com>
Date: Tue Aug 24 12:17:18 2010 +0200
region: Add a new test region-translate
This test exercises a bug in pixman_region32_translate(). The function
clips the region to int16 coordinates SHRT_MIN/SHRT_MAX.
commit 5ff359b8a0a4573722b1cba141b8f00cf24b6f09
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 21 06:39:44 2010 -0400
Post-release version bump to 0.19.3
commit 39308ed3b07afb92140770007124b7e544b83090
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Aug 21 06:33:19 2010 -0400
Pre-release version bump to 0.19.2
commit 393ccab74e9aa466e2fdd91319012e2c18f4ef84
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 16 07:24:48 2010 -0400
Only try to compute the FAST_SAMPLES_COVER_CLIP for bits images
It doesn't make sense in other cases, and the computation would make
use of image->bits.{width,height} which lead to uninitialized memory
accesses when the image wasn't of type BITS.
commit da6f33a798bf2ea10df610ccf1d9506d63d1a28c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Aug 9 20:54:49 2010 -0400
Introduce new FAST_PATH_SAMPLES_OPAQUE flag
This flag is set whenever the pixels of a bits image don't have an
alpha channel. Together with FAST_PATH_SAMPLES_COVER_CLIP it implies
that the image effectively is opaque, so we can do operator reductions
such as OVER->SRC.
commit 4e5d6f00bf409259ff6f5d5c3ef4b016146bcbb3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 4 17:51:49 2010 -0400
pixman_image_set_alpha_map(): Disallow alpha map cycles
If someone tries to set an alpha map that itself has an alpha map,
simply return. Also, if someone tries to add an alpha map to an image
that is being _used_ as an alpha map, simply return.
This ensures that an alpha map can never have an alpha map.
commit 9fe7d32c4b704a10e780444530eaea28b4351110
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 4 17:55:14 2010 -0400
Add alpha-loop test program
This tests what happens if you attempt to make an image with an alpha
map that has the image as its alpha map. This results in an infinite
loop in _pixman_image_validate(), so the test sets up a SIGALRM to
exit if it runs for more than five seconds.
commit 8a5d1be1dab799ed23239f3471b4a351d8356368
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon May 31 19:24:43 2010 +0300
ARM: 'neon_combine_out_reverse_u' combiner
This operation was seen in mozilla browser profiling logs.
Implemented so that 'over' and 'out_reverse' operations
now reuse common parts of code.
commit 731e9feaa6988f99e1e38e1b92ed1f15ba706da5
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Mar 19 12:21:32 2010 +0200
Code simplification (no need advancing 'vx' at the end of scanline)
commit 41584f8fe140b7374a5ef5d437b070c1f32763bb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jul 2 14:14:21 2010 -0400
Store the various bits image fetchers in a table with formats and flags.
Similarly to how the fast paths are done, put the various bits_image
fetchers in a table, so that we can quickly find the best one based on
the image's flags and format.
commit 8e33643f44c397a37b822a95e071880d9a8e792a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jul 2 12:53:56 2010 -0400
Add some new FAST_PATH flags
The flags are:
* AFFINE_TRANSFORM, for affine transforms
* Y_UNIT_ZERO, for when the 10 entry in the transformation is zero
* FILTER_BILINEAR, for when the image has a bilinear filter
* NO_NORMAL_REPEAT, for when the repeat mode is not NORMAL
* HAS_TRANSFORM, for when the transform is not NULL
Also add some new FAST_PATH_REPEAT_* macros. These are just shorthands
for the image not having any of the other repeat modes. For example
REPEAT_NORMAL is (NO_NONE | NO_PAD | NO_REFLECT).
commit 6f62231d1580f5b67f36ec81b6c59a7e2f4978cb
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jul 2 12:45:44 2010 -0400
Remove "_raw_" from all the accessors.
There are no non-raw accessors anymore.
commit 807fd3c08491c8baffaad993d8b867141fa55319
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jul 2 12:34:42 2010 -0400
Eliminate the store_scanline_{32,64} function pointers.
Now that we can't recurse on alpha maps, they are not needed anymore.
commit e213d5fd6207873638a86d908d06d7597cb88422
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jul 2 12:31:50 2010 -0400
Split bits_image_fetch_transformed() into two functions.
One function deals with the common affine, no-alpha-map case. The
other deals with perspective transformations and alpha maps.
commit cbb2a0d7929ec27e0a135d7fa11e1acf3942bce2
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jul 2 12:11:44 2010 -0400
Eliminate get_pixel_32() and get_pixel_64() from bits_image.
These functions can simply be passed as arguments to the various pixel
fetchers. We don't need to store them. Since they are known at compile
time and the pixel fetchers are force_inline, this is not a
performance issue.
Also temporarily make all pixel access go through the alpha path.
commit 6480c92312e1fb6662ad0d10940660a9439667ea
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Jul 2 11:58:23 2010 -0400
Eliminate recursion from alpha map code
Alpha maps with alpha maps are no longer supported. It's not a useful
feature and it could could lead to infinite recursion.
commit 1cc750ed92a936d84b47cac696aaffd226e1c02e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jul 22 04:27:45 2010 -0400
Replace compute_src_extent_flags() with analyze_extents()
This commit fixes two separate problems: 1. Incorrect computation of
the FAST_PATH_SAMPLES_COVER_CLIP flag, and 2. FAST_PATH_16BIT_SAFE is
a nonsensical thing to compute.
== 1. Incorrect computation of SAMPLES_COVER_CLIP:
Previously we were using pixman_transform_bounds() to compute which
source samples would be used for a composite operation. This is
incorrect for several reasons:
(a) pixman_transform_bounds() is transforming the integer bounding box
of the destination samples, where it should be transforming the
bounding box of the samples themselves. In other words, it is too
pessimistic in some cases.
(b) pixman_transform_bounds() is not rounding the same way as we do
during sampling. For example, for a NEAREST filter we subtract
pixman_fixed_e before rounding off to the nearest sample so that a
transformed value of 1 will round to the sample at 0.5 and not to the
one at 1.5. However, pixman_transform_bounds() would simply truncate
to 1 which would imply that the first sample to be used was the one at
1.5. In other words, it is too optimistic in some cases.
(c) The result of pixman_transform_bounds() does not account for the
interpolation filter applied to the source.
== 2. FAST_PATH_16BIT_SAFE is nonsensical
The FAST_PATH_16BIT_SAFE is a flag that indicates that various
computations can be safely done within a 16.16 fixed-point
variable. It was used by certain fast paths who relied on those
computations succeeding. The problem is that many other compositing
functions were making similar assumptions but not actually requiring
the flag to be set. Notably, all the general compositing functions
simply walk the source region using 16.16 variables. If the
transformation happens to overflow, strange things will happen.
So instead of computing this flag in certain cases, it is better to
simply detect that overflows will happen and not try to composite at
all in that case. This has the advantage that most compositing
functions can be written naturally way.
It does have the disadvantage that we are giving up on some cases that
previously worked, but those are all corner cases where the areas
involved were very close to the limits of the coordinate
system. Relying on these working reliably was always a somewhat
dubious proposition. The most important case that might have worked
previously was untransformed compositing involving images larger than
32 bits. But even in those cases, if you had REPEAT_PAD or
REPEAT_REFLECT turned on, you would hit bits_image_fetch_transformed()
which has the 16 bit limitations.
== Fixes
This patch fixes both problems by introducing a new function called
analyze_extents() that has the responsibility to reject corner cases,
and to compute flags based on the extents.
It does this through a new compute_sample_extents() function that will
compute a conservative (but tight) approximation to the bounding box
of the samples that will actually be needed. By basing the computation
on the positions of the _sample_ locations in the destination, and by
taking the interpolation filter into account, it fixes problem one.
The same function is also used with a one-pixel expanded version of
the destination extents. By checking if the transformed bounding box
will overflow 16.16 fixed point, it fixes problem two.
commit 5b289d39cfd5e5cd8b1e0a7b654574ed3e7e90ac
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jul 28 02:11:08 2010 -0400
Extend scaling-crash-test in various ways
This extends scaling-crash-test to test some more things:
- All combinations of NEAREST/BILINEAR/CONVOLUTION filters and
NORMAL/PAD/REFLECT repeat modes.
- Tests various scale factors very close to 1/7th such that the source
area is very close to edge of the source image.
- The same things, only with scale factors very close to 1/32767th.
- Enables the commented-out tests for accessing memory outside the
source buffer.
Also there is now a border around the source buffer which has a
different color than the source buffer itself so that if we sample
outside, it will show up.
Finally, the test now allows the destination buffer to not be changed
at all. This allows pixman to simply bail out in cases where the
transformation too strange.
commit 71ff55a3e567ace21e9120f826270253e7ec5edd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Aug 5 19:00:56 2010 -0400
Fix Altivec/OpenBSD patch
As Brad pointed out, I pushed the wrong version of this patch.
commit cb50e9cc95a780a5e60d557f2aa23d82d2280b73
Author: Brad Smith <brad@comstyle.com>
Date: Sat Jul 31 05:07:02 2010 -0400
Add support for AltiVec detection for OpenBSD/PowerPC.
Bug 29331.
commit 664132128ec430e28dad9f8088a3f6f2a1903f8e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 4 09:50:30 2010 -0400
CODING_STYLE: Delete the stuff about trailing spaces
Also fix various other minor issues.
commit cc9221ce96c23f6d6f1a17d98e5221e3aeff6567
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jul 28 03:17:35 2010 -0400
If we bail out of do_composite, make sure to undo any workarounds.
The workaround for an old X bug has to be undone if we bail from
do_composite, so we can't just return.
commit b243a66041456dba278b04f813deac4f99bbe621
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Aug 4 08:58:51 2010 -0400
Add x14r6g6b6 format to blitters-test
commit d6a7b1542448e7ee41f2c2a129bd0af2668185bb
Author: Marek Vasut <marek.vasut@gmail.com>
Date: Sun Aug 1 02:18:52 2010 +0200
Add support for 32bpp X14R6G6B6 format.
This format is used on PXA framebuffer with some boards. It uses only 18 bits
from the 32 bit framebuffer to interpret color.
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
commit 226a6df4f947f718d82e85ca53561a968ec0c0a1
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Jul 14 16:43:16 2010 +0300
test: 'scaling-test' updated to provide better coverage
Negative scale factors are now also tested. A small additional
translate transform helps to stress the use of fractional
coordinates better.
Also the number of iterations to run by default increased in order
to compensate increased variety of operations to be tested.
commit af3eeaeb1352148ca671a45768d11160fcfd8567
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Jul 19 20:25:05 2010 +0300
test: 'scaling-crash-test' added
This test tries to exploit some corner cases and previously known
bugs in nearest neighbor scaling fast path code, attempting to
crash pixman or cause some other nasty effect.
commit 90483fcabbd19b35ded094a6a592ee224029fd07
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jul 15 23:40:28 2010 -0400
bits: Fix potential divide-by-zero in projective code
If the homogeneous coordinate is 0, just set the coordinates to 0.
commit bf125fbbb701788d5d9ed9ff368bb4fe9d9c895e
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Apr 25 20:25:50 2010 -0400
[sse2] Add sse2_composite_add_n_8()
This shows up when epiphany displays the "ImageTest" on
glimr.rubyforge.org/cake/canvas.html
commit 16ae3285e6601ea177637dddd20d2857d13decac
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Apr 25 19:54:28 2010 -0400
[sse2] Add sse2_composite_in_n_8()
This shows up when epiphany displays the "ImageTest" on
glimr.rubyforge.org/cake/canvas.html
commit e0b430a13ee4619bd6d82c4ebff8a401a254e9bc
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jul 13 00:31:35 2010 -0400
[sse2] Add sse2_composite_src_x888_8888()
This operation shows up when Firefox displays
http://dougx.net/plunder/plunder.html
commit 16bae8347529c1c976e6d7af90e0fb5811605af1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jul 13 00:08:10 2010 -0400
[fast] Add fast_composite_src_x888_8888()
This shows up on when Firefox displays http://dougx.net/plunder/plunder.html
commit 9399b1a5af69cc9890aa7918cd09318ddeefc05d
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Wed Jul 14 09:51:27 2010 +0300
Fix thinko in configure.ac's macro to test linking.
Copy-paste carnage. Renames save_{cflags,libs,ldflags} to
save_{CFLAGS,LIBS,LDFLAGS}.
commit 5537e51cd0ffda53cc392a4bafe05070954fc36d
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Sun Jul 11 19:59:01 2010 +0300
Avoid trailing slashes on automake install dirs.
The install-sh on a Solaris box couldn't copy with
trailing slashes.
commit 1d9c6fa62385c42d67926982704c398d8b495d47
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Sat Jul 10 15:36:41 2010 +0300
Check for specific flags by actually trying to compile and link.
Instead of relying on preprocessor version checks to see if a
some compiler flags are supported, actually try to compile and
link a test program with the flags.
commit d95ae7060442712315d29c8b307df131ba9ffce6
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Sat Jul 10 02:41:01 2010 +0100
Check that the OpenMP pragmas don't cause link errors.
This patch adds extra guards around our use of
OpenMP pragmas and checks that the pragmas won't
cause link errors. This fixes the build on
Tru64 and Solaris with the native compilers and clang.
commit eb247ac377623d2a722aab1e6eae7adab5f7ebea
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Fri Jul 9 12:09:07 2010 +0300
Don't trust OpenBSD's gcc to produce working code for __thread.
The gcc on OpenBSD 4.5 to 4.7 at least produces bad code for __thread,
without as much as a warning.
See PR #6410 "Using __thread TLS variables compiles ok but segfault at runtime."
http://cvs.openbsd.org/cgi-bin/query-pr-wrapper?full=yes&numbers=6410
commit dbf35f1f276a673bc4a1eb932dd5cf9266f948da
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Fri Jul 9 12:07:35 2010 +0300
Try harder to find suitable flags for pthreads.
The flags -D_REENTRANT -lpthread work on more systems than
does -pthread unfortunately, so give that a go too.
commit 9897bb4eeed165b76001dfefd3a89bcb96d38a72
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jul 12 15:13:49 2010 -0400
Check for read accessors before taking the bilinear fast path
The bilinear fast path accesses pixels directly, so if the image has a
read accessor, then it can't be used.
commit ce3d9fca73bb8abe4d5b1023cfdb06ca53b6161c
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jul 11 19:58:49 2010 -0400
fast-path: Some formatting fixes
Add spaces before parentheses; fix indentation in the macro.
commit 839326e471a8a6c96dea1693501550d79043bb81
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jul 11 19:57:29 2010 -0400
In the FAST_NEAREST macro call the function 8888_8888 and not x888_x888
The x888 suggests that they have something to do with the x8r8g8b8
formats, but that's not the case; they are assuming a8r8g8b8
formats. (Although in some cases they also work for x8r8g8b8 type
formats).
commit e13d9f9684a47a6e0be4f8ae1a39cce8b1334238
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jul 11 19:45:22 2010 -0400
Make the repeat mode explicit in the FAST_NEAREST macro.
Before, it was 0 or 1 meaning 'no repeat' and 'normal repeat'
respectively. Now we explicitly pass in either NONE or NORMAL.
commit 2e7fb6655334789f8a5e290245d47c8d6b221c24
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jul 10 20:47:01 2010 -0400
When converting indexed formats to 64 bits, don't correct for channel widths
Indexed formats are mapped to a8r8g8b8 with full precision, so when
expanding we shouldn't correct for the width of the channels
commit 2df6dac0be678e1683223faeddadb35b1d2dbe36
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jul 10 18:40:06 2010 -0400
test: Make sure the palettes for indexed format roundtrip properly
The palettes for indexed formats must satisfy the condition that if
some index maps to a color C, then the 15 bit version of that color
must map back to the index. This ensures that the destination operator
is always a no-op, which seems like a reasonable assumption to make.
commit 5dd59c8b7cf1543605713a2ac30f31d8726f5444
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jul 10 16:49:51 2010 -0400
Split the fast path caching into its own force_inline function
The do_composite() function is a lot more readable this way.
commit 98d19d9abd9d62b8d2871871b0be74e022f1f89f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jul 10 16:08:51 2010 -0400
Cache the implementation along with the fast paths.
When calling a fast path, we need to pass the corresponding
implementation since it might contain information necessary to run the
fast path.
commit f18bcf1f6e984c33dca30ad1ce03c58628fe39df
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jul 10 15:47:12 2010 -0400
Hide the global implementation variable behind a force_inline function.
Previously the global variable was called 'imp' which was confusing
with the argument to various other functions also being called imp.
commit 5c935473d8a193b3510f8605a6658ea6ac998fd1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jun 30 02:31:10 2010 -0400
Fix memory leak in the pthreads thread local storage code
When a thread exits, we leak whatever is stored in thread local
variables, so install a destructor to free it.
commit 7114b2d63bd5702c94cb8aa9401c023e550c77bc
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jul 1 16:54:30 2010 -0400
Make the combiner macros less likely to cause name collisions.
Protect the arguments to the combiner macros with parentheses, and
postfix their temporary variables with underscores to avoid name space
collisions with the surrounding code.
Alexander Shulgin pointed out that underscore-prefixed identifiers are
reserved for the C implementation, so we use postfix underscores
instead.
commit a92e4a6a9475e07435efb60aa2fde5fa04592d89
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Jun 21 15:30:46 2010 -0400
Minor tweaks to README
commit ca846806cbc4e11cd134e464c7740c1cde19422b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Jun 20 13:12:27 2010 -0400
Store the conical angle in floating point radians, not fixed point degrees
This is a slight simplification.
commit 3074d57b560d5ec9be2a0e1a6846012698f51208
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jun 19 18:57:45 2010 -0400
Fix conical gradients to match QConicalGradient from Qt
Under the assumption that pixman gradients are supposed to match
QConicalgradient, described here:
http://doc.trolltech.com/4.4/qconicalgradient.html
this patch fixes two separate bugs in pixman-conical-gradient.c.
The first bug is that the output of atan2() is in the range of [-pi,
pi], which means the parameter into the gradient can be negative. This
is wrong since a QConicalGradient always interpolates around the
center from 0 to 1. The fix for that is to (a) make sure the given
angle is between 0 and 360, and (b) add or subtract 2 * M_PI if the
computed angle ends up outside [0, 2 * pi].
The other bug is that we were interpolating clockwise, whereas
QConicalGradient calls for a counter-clockwise interpolation. This is
easily fixed by subtracting the parameter from 1.
Finally, this patch encapsulates the computation in a new force-inline
function so that it can be reused in both the affine and non-affine
case.
commit 66365b5ef1bb85863669227ae6e31134d8d57013
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 30 18:26:28 2010 -0400
Make separate gray scanline storers.
For gray formats the palettes are indexed by luminance, not RGB, so we
can't use the color storers for gray too.
commit 4e1d4847c9199f96b73376bef061c6728742e621
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 30 16:52:09 2010 -0400
When storing a g1 pixel, store the lowest bit, rather than comparing with 0.
commit 445eb6385f60d09058826b44894e17165c91381c
Author: Andrea Canciani <ranma42@gmail.com>
Date: Wed Jun 9 16:35:37 2010 +0200
test: verify that gradients do not crash pixman
Test gradients under particular conditions (no stops, all the stops
at the same offset) to check that pixman does not misbehave.
commit de0320258167c24fc652d28f4aeca8713243323e
Author: Andrea Canciani <ranma42@gmail.com>
Date: Tue Jun 8 20:36:15 2010 +0200
support single-stop gradients
Just like conical gradients, linear and radial gradients can now
have a single stop.
commit 32bd31d677ab018849af5e0165d1dfacb1e01ed0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue May 18 22:27:46 2010 -0400
Eliminate mask_bits from all the scanline fetchers.
Back in the day, the mask_bits argument was used to distinguish
between masks used for component alpha (where it was 0xffffffff) and
masks for unified alpha (where it was 0xff000000). In this way, the
fetchers could check if just the alpha channel was 0 and in that case
avoid fetching the source.
However, we haven't actually used it like that for a long time; it is
currently always either 0xffffffff or 0 (if the mask is NULL). It also
doesn't seem worthwhile resurrecting it because for premultiplied
buffers, if alpha is 0, then so are the color channels
normally.
This patch eliminates the mask_bits and changes the fetchers to just
assume it is 0xffffffff if mask is non-NULL.
commit 78778e5963c948de5ce5f7c5a2a3bb9f279a8eda
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Mon Mar 15 14:56:38 2010 +0200
create getter for component alpha
This patch comes from the mozilla central tree. See
http://hg.mozilla.org/mozilla-central/rev/89338a224278 for the
original changeset.
Signed-off-by: Jeff Muizelaar <jmuizelaar@mozilla.com>
Signed-off-by: Egor Starkov <egor.starkov@nokia.com>
Signed-off-by: Rami Ylimaki <ext-rami.ylimaki@nokia.com>
Signed-off-by: Siarhei Siamashka <siarhei.siamashka@nokia.com>
commit cfc4e38852dc244198a9bfcab07d9014bba21d53
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed May 12 01:34:57 2010 +0300
test: added OpenMP support for better utilization of multiple CPU cores
Some of the tests are quite heavy CPU users and may benefit from
using multiple CPU cores, so the programs from 'test' directory
are now built with OpenMP support. OpenMP is easy to use, portable
and also takes care of making a decision about how many threads
to spawn.
commit f905ebb03d8ed8a3ceb76c84a10735aa209168d3
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed May 12 00:10:04 2010 +0300
test: scaling-test updated to use new fuzzer_test_main() function
commit be387701a5b44e68110d5c9df07924d1029e87ac
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue May 11 23:21:05 2010 +0300
test: blitters-test updated to use new fuzzer_test_main() function
commit 9ed9abd1541a0353ba4234dc77dd46d6b8771d88
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue May 11 22:57:48 2010 +0300
test: blitters-test-bisect.rb converted to perl
This new script can be used to run continuously to compare two test
programs based on fuzzer_test_main() function from 'util.c' and
narrow down to a single problematic test from the batch which results
in different behavior.
commit 30c3e91c3f97cf3d5932ba639d8ac126b83efb70
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue May 11 22:46:47 2010 +0300
test: main loop from blitters-test added as a new function to utils.c
This new generalized function can be reused in both blitters-test
and scaling-test. Final checksum calculation changed in order to make
it parallelizable (it is a sum of individual 32-bit values returned
by a callback function, which is now responsible for running test-specific
code). Return values may be crc32, some other hash or even just zero on
success and non-zero on error (in this case, the expected result of the
whole test run should be 0).
commit 164fe215f2c904cf74537caf9d76b7f9ce2667ec
Merge: e1594f2 5158d67
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun May 9 14:24:24 2010 -0400
Merge branch 'for-master'
commit e1594f204d3a3c2d2083793c8830f0ebf390ed66
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu May 6 01:05:40 2010 +0300
test/gtk-utils: Set the size of the window to the size of the image
commit 2f4f2fb4859931bf6dc5632d8c919e7296736427
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue May 4 11:55:30 2010 -0400
Add support for compiling pixman without thread/tls support
commit 5158d6740c8e2643611a623a0caa649f4b0bc5bd
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 24 18:43:38 2010 -0400
Add macros for thread local storage on MinGW 32
These macros are identical to the ones that Tor Lillqvist posted here:
http://lists.freedesktop.org/archives/pixman/2010-April/000160.html
with one exception: the variable is allocated with calloc() and not
malloc().
Cc: tml@iki.fi
commit 582fa58bba7008c2b852ba56557612866f7522d5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Apr 23 12:34:19 2010 -0400
Don't use __thread on MinGW.
It is apparently broken. See this:
http://mingw-users.1079350.n2.nabble.com/gcc-4-4-multi-threaded-exception-handling-thread-specifier-not-working-td3440749.html
We'll need to support thread local storage on MinGW32 some other way.
Cc: tml@iki.fi
commit 95d4026866b4655c88de75c9756e9f18881b7c29
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Mar 28 23:02:43 2010 -0400
Add support for 8bpp to pixman_fill_sse2()
commit d539e0c661e2ec8e8405c0110469e117c5c70526
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 24 13:11:50 2010 -0400
sse2: Add sse2_composite_over_reverse_n_8888
This is a small speed-up for the poppler benchmark:
Before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image poppler 4.443 4.474 0.31% 6/6
After:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image poppler 4.224 4.248 0.42% 6/6
commit 2d65fb033b57c701e2c16747470f86bda1d861e0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Apr 24 15:15:05 2010 -0400
Don't consider indexed formats opaque.
The indexed formats have 0 bits of alpha, but can't be considered
opaque because there may be non-opaque colors in the palette.
commit 19459672ce68b6ad6a4d376cb2d7c9a6d889ae01
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Feb 24 19:21:50 2010 -0500
Add an over_8888_8888_8888 sse2 fast path.
commit a3d29157b4a33162cabbda616c34c00d9a13f7a8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Feb 17 23:03:25 2009 -0500
Add pixman_region{,32}_intersect_rect()
commit c0d0d20bd282c1d049b5bce4d23e10ab5b28751e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 20:52:26 2009 -0400
Rename fast_composite_src_8888_x888 to fast_composite_src_memcpy()
Then generalize it and use it for SRC copying between various
identical formats.
commit 1f0cba3bdcc5d9a48c9189e8110c90d79260888a
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 27 15:23:20 2010 -0400
Add missing HAVE_CONFIG_H guards for config.h inclusion
commit 526132fa652a42d94826760aa9c72537e3ecaf35
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Apr 22 12:14:23 2010 -0400
Remove alphamap from the GTK+ part of tests/Makefile.am
It doesn't use GTK+ and it was already listed in the non-GTK+ part.
commit 8f7cc5e4388e83eb1b77aea978f3c58338232320
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Apr 21 09:59:29 2010 -0400
Add pixman_image_get_format() accessor
commit 2b1cae1ef62289288ef00ea7cc1dfef8e01750e6
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Apr 21 09:55:35 2010 -0400
Some minor updates to README
commit 15f5868f6301a51d46cdb0833bc538f2fc68e3df
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Apr 18 16:24:39 2010 -0400
Update README to mention the pixman mailing list
commit a652d5c15476cb60e1ca96ac115df625f8a1b76f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Apr 7 19:34:41 2010 -0400
[mmx] Fix mask creation bugs
This line:
mask = mask | mask >> 8 | mask >> 16 | mask >> 24;
only works when mask has 0s in the lower 24 bits, so add
mask &= 0xff000000;
before.
Reported by Todd Rinaldo on the #cairo IRC channel.
commit 714559dccda3165a72f0a9935c1edc3aef535f30
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Apr 7 01:44:12 2010 -0400
Fixes for pthread thread local storage.
The tls_name_key variable is passed to tls_name_get(), and the first
time this happens it isn't initialized. tls_name_get() then passes it
on to tls_name_alloc() which passes it on to pthread_setspecific()
leading to undefined behavior.
None of this is actually necessary at all because there is only one
such variable per thread local variable, so it doesn't need to passed
as a parameter at all.
All of this was pointed out by Tor Lillqvist on the cairo mailing
list.
commit 634ba33b5b1fcfd5a0e7910f9991b4ed4f674549
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Apr 7 01:39:14 2010 -0400
Fix uninitialized cache when pthreads are used
The thread local cache is allocated with malloc(), but we rely on it
being initialized to zero, so allocate it with calloc() instead.
commit bc11545a1b5c22fe74fc954e26e8a8e9d7cfa39e
Author: Siddharth Agarwal <sid.bugzilla@gmail.com>
Date: Tue Apr 13 10:15:29 2010 -0400
Visual Studio 2010 includes stdint.h
Use the builtin version instead of defining the types ourselves.
commit 0345c343e55ec19ae3c8c8ed598eab7e1c1e12f3
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Apr 1 06:21:21 2010 -0400
Post-release version bump to 0.19.1
commit e9dc568d6f585a153c47e970168a9c71d3e45fde
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Apr 1 05:23:31 2010 -0400
Pre-release version bump to 0.18.0
commit efd41c62875d97c5127233cb6a4c353b4d495531
Author: Matthias Hopf <mhopf@suse.de>
Date: Wed Mar 24 18:54:29 2010 +0100
Revert "Improve PIXREGION_NIL to return true on degenerated regions."
This reverts commit ebba1493136a5a0dd7667073165b2115de203eda.
Scheduled for re-discussion after stable 0.18 has been released.
commit ebba1493136a5a0dd7667073165b2115de203eda
Author: Matthias Hopf <mhopf@suse.de>
Date: Wed Mar 24 12:00:21 2010 +0100
Improve PIXREGION_NIL to return true on degenerated regions.
Fixes Novell bug 568811.
commit c0f8d417b512b7d526fb6127954a50d14214f420
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Mar 23 17:25:54 2010 -0400
Post-release version bump to 0.17.15
commit b35f0b0158cd7aac388ba4c72c6c8aada77d2e22
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Mar 23 16:52:02 2010 -0400
Pre-release version bump to 0.17.14
commit 27a9f0468bdfa257e70270bf9addd5ad064f918b
Merge: 69f1ec9 3ef2033
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Mar 23 11:00:04 2010 -0400
Merge remote branch 'ssvb/arm-fixes'
commit 3ef203331f124bf137c6e0c8d5516b1209c92dd9
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Mar 22 21:56:17 2010 +0200
ARM: SIMD optimizations moved to a separate .S file
This should be the last step in providing full armv4t compatibility
with CPU features runtime autodetection in pixman.
commit 0a0591c2f7abde8880f4aebd510c27517a414450
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Mar 22 19:51:00 2010 +0200
ARM: SIMD optimizations updated to use common assembly calling conventions
commit c1e8d4533aea3aa10c49465cf5e9a44d946f70bb
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Mar 22 18:51:54 2010 +0200
ARM: Helper ARM NEON assembly binding macros moved into a separate header
This is needed for future reuse of the same macros for the other
ARM assembly optimizations (armv4t, armv6)
commit 5791026e45f79d8f5168e302a498455870363ac6
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun Dec 27 00:27:53 2009 +0200
ARM: Workaround for a NEON bug in assembler from binutils 2.18
The problem was reported as bug 25534 against pixman in
freedesktop.org bugzila. Link to a patch for binutils:
http://sourceware.org/ml/binutils/2008-03/msg00260.html
For pixman the impact is a build failure when using
binutils 2.18. Versions 2.19 and higer are fine. Still
some distros may be using older versions of binutils and
this is causing problems.
This patch workarounds the problem by replacing a problematic
"vmov a, b" instruction with equivalent "vorr a, b, b". Actually
they even map to the same instruction opcode in the generated
code, so the resulting binary is identical with and without patch.
commit 68d8d83223b5a35e25d379c2ee9e2e3a1d242323
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Mar 22 11:54:51 2010 +0200
ARM: Use '.object_arch' directive in NEON assembly file
This can be used to override the architecture recorded in the EABI object
attribute section. We set a minimum arch to 'armv4'. Binutils documentation
recommends to use this directive with the code performing runtime detection
of CPU features.
Additionally NEON/VFP EABI attributes are suppressed. And the instruction
set to use is explicitly set to '.arm'.
Configure test for NEON support is also updated to include a bunch of
these new directives (if any of these is unsupported by the assembler,
it is better to fail configure test than to fail library build).
All these changes are required to fix SIGILL problem on armv4t, reported in
http://lists.freedesktop.org/archives/pixman/2010-March/000123.html
commit 69f1ec9a7827aeb522fcae99846237ef0f896e7b
Author: Jon TURNEY <jon.turney@dronecode.org.uk>
Date: Wed Mar 17 21:07:06 2010 +0000
Avoid a potential division-by-zero exeception in window-test
Avoid a division-by-zero exception if the first number returned by
rand() is a multiple of 500, causing us to create a zero width pixmap,
and then attempt to use get_rand(0) when generating a random stride...
Fixes https://bugs.freedesktop.org/attachment.cgi?id=34162
commit 50713d9d0d9241597724551315f05d958ce7a283
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Mar 17 15:12:06 2010 -0400
Post-release version bump to 0.17.13
commit fb68d6c14dd76121af009213df46e37ee17e38d7
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Mar 17 13:46:44 2010 -0400
Pre-release version bump to 0.17.12
commit 265ea1fb4d05a920323f23a02f9dc379312bbdae
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Mar 17 10:50:42 2010 -0400
Specialize the fast_composite_scaled_nearest_* scalers to positive x units
This avoids a test in the inner loop, which improves performance
especially for tiled sources.
On x86-32, I get these results:
Before:
op=1, src_fmt=20028888, dst_fmt=20028888, speed=306.96 MPix/s (73.18 FPS)
op=1, src_fmt=20028888, dst_fmt=10020565, speed=102.67 MPix/s (24.48 FPS)
op=1, src_fmt=10020565, dst_fmt=10020565, speed=324.85 MPix/s (77.45 FPS)
After:
op=1, src_fmt=20028888, dst_fmt=20028888, speed=332.19 MPix/s (79.20 FPS)
op=1, src_fmt=20028888, dst_fmt=10020565, speed=110.41 MPix/s (26.32 FPS)
op=1, src_fmt=10020565, dst_fmt=10020565, speed=363.28 MPix/s (86.61 FPS)
commit 9cd1051523493e0926b146f05cdde34158391602
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Mar 17 10:35:34 2010 -0400
Add a FAST_PATH_X_UNIT_POSITIVE flag
This is the common case for a lot of transformed images. If the unit
were negative, the transformation would be a reflection which is
fairly rare.
commit a5b51bb03c5c1258d7558efa13eca6c570e34ce6
Author: Alexander Larsson <alexl@redhat.com>
Date: Wed Mar 17 11:58:05 2010 +0100
Use the right format for the OVER_8888_565 fast path
commit 3b92b711d031a7752e06d0a5f688f4c54f50a1e6
Author: Alexander Larsson <alexl@redhat.com>
Date: Fri Mar 12 15:45:04 2010 +0100
Add specialized fast nearest scalers
This is a macroized version of SRC/OVER repeat normal/unneeded nearest
neighbour scaling instantiated for some common 8888 and 565 formats.
Based on work by Siarhei Siamashka
commit 5750408e48259f42373a5233231104d9bd3eb35a
Author: Alexander Larsson <alexl@redhat.com>
Date: Fri Mar 12 15:41:01 2010 +0100
Add FAST_PATH_SAMPLES_COVER_CLIP and FAST_PATH_16BIT_SAFE
FAST_PATH_SAMPLES_COVER_CLIP:
This is set of the source sample grid, unrepeated but transformed
completely completely covers the clip destination. If this is set
you can use a simple scaled that doesn't have to care about the repeat
mode.
FAST_PATH_16BIT_SAFE:
This signifies two things:
1) The size of the src/mask fits in a 16.16 fixed point, so something like:
max_vx = src_image->bits.width << 16;
Is allowed and is guaranteed to not overflow max_vx
2) When stepping the source space we're guaranteed to never overflow
a 16.16 bit fix point variable, even if we step one extra step
in the destination space. This means that a loop doing:
x = vx >> 16;
vx += unit_x; d = src_row[x];
will never overflow vx causing x to be negative.
And additionally, if you track vx like above and apply NORMAL repeat
after the vx addition with something like:
while (vx >= max_vx) vx -= max_vx;
This will never overflow the vx even on the final increment that
takes vx one past the end of where we will read, which makes the
repeat loop safe.
commit cba6fbbddce5edfd8e28ef570c493b044761f870
Author: Alexander Larsson <alexl@redhat.com>
Date: Fri Mar 12 15:40:07 2010 +0100
Add FAST_PATH_NO_NONE_REPEAT flag
commit 7ec023ede155b9dacf574c4323740ef981802aa9
Author: Alexander Larsson <alexl@redhat.com>
Date: Tue Mar 16 14:18:29 2010 +0100
Add CONVERT_8888_TO_8888 and CONVERT_0565_TO_0565 macros
These are useful for macroization
commit c903d03052e1c34478556964338959b34928a388
Author: Alexander Larsson <alexl@redhat.com>
Date: Fri Mar 12 16:23:42 2010 +0100
Add CONVERT_0565_TO_8888 macro
This lets us simplify some fast paths since we get a consistent
naming that always has 8888 and gets some value for alpha.
commit de27f45ddd46fc48ec9598f2f177155328d55580
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Mar 15 11:51:09 2010 -0400
Ensure that only the low 4 bit of 4 bit pixels are stored.
In some cases we end up trying to use the STORE_4 macro with an 8 bit
values, which resulted in other pixels getting overwritten. Fix this
by always masking off the low 4 bits.
This fixes blitters-test on big-endian machines.
commit 6532f8488abffb89501cb76de7d80b8ab2d49aed
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Mar 16 08:17:10 2010 -0400
Fix contact address in configure.ac
commit 7c9f121efe7ee6afafad8b294974f5498054559b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Mar 16 12:23:50 2010 -0400
Add PIXMAN_DEFINE_THREAD_LOCAL() and PIXMAN_GET_THREAD_LOCAL() macros
These macros hide the various types of thread local support. On Linux
and Unix, they expand to just __thread. On Microsoft Visual C++, they
expand to __declspec(thread).
On OS X and other systems that don't have __thread, they expand to a
complicated concoction that uses pthread_once() and
pthread_get/set_specific() to get thread local variables.
commit 6b9c54820015f69e667ed54441e83042c9a84cc1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Mar 16 11:01:08 2010 -0400
Add checks for various types of thread local storage.
OS X does not support __thread, so we have to check for it before
using it. It does however support pthread_get/setspecific(), so if we
don't have __thread, check if those are available.
commit 313353f1fb9d40d0c3aaf7cfb99ca978b29003a4
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Mon Mar 15 15:20:05 2010 -0700
Add Sun cc to thread-local support checks in pixman-compiler.h
Clears '#warning: "unknown compiler"' messages when building
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit b67f784a5dc51f41e40bb1a165411f5259ea0ee4
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Mon Mar 15 10:52:17 2010 -0700
Make .s target asm flag selection more portable
The previous code worked in GNU make, but caused a syntax error in Solaris
make ( https://bugs.freedesktop.org/show_bug.cgi?id=27062 ) - this seems to
work in both, and should hopefully not cause syntax errors in any versions
of make not supporting the macro-substitution-in-macro-name feature, just
cause the macro to expand to nothing.
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit 7a5dc747852d46fa382ef885bb6299723ef6ed00
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Mar 15 07:40:46 2010 -0400
Fix typo: WORDS_BIG_ENDIAN => WORDS_BIGENDIAN in pixman-edge.c
Pointed out by Andreas Falkenhahn on the cairo mailing list.
commit ff30a5cbb941a9559082c6a6052ef761c7de949c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Mar 3 13:24:13 2010 -0500
test: Add support for indexed formats to blitters-test
These formats work fine, they just need to have a palette set.
commit 2b5f7be6c05ce3643b7d29e7237f91bfaedd80e5
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Mar 1 10:32:39 2010 -0500
pixman.h: Only define stdint types when PIXMAN_DONT_DEFINE_STDINT is undefined
In SPICE, with Microsoft Visual C++, pixman.h is included after
another file that defines these types, which causes warnings and
errors.
This patch allows such code to just define PIXMAN_DONT_DEFINE_STDINT
to use its own version of those types.
commit f4da05c9f988133079cac2b8d54589386f46398f
Merge: a12d868 f534509
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Mar 14 12:12:05 2010 -0400
Merge branch 'operator-table'
commit a12d868df8b673df2b563f309563954e2b3f977d
Merge: 18f0de4 54e39e0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Mar 14 12:12:00 2010 -0400
Merge branch 'fast-path-cache'
commit f534509d007de40592dedc574e7eb78445453ec0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sat Jan 30 11:37:25 2010 -0500
Change operator table to be an array of arrays of four bytes.
This makes gcc generate slightly better code for optimize_operator.
commit 94d75ebd2167b44c142a6202b2d7bbe238dfd830
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 19 02:40:56 2009 -0400
Strength reduce certain conjoint/disjoint to their normal counterparts.
This allows us to not test for them later on.
commit 58be9c71d2b1d0ed9d8feed1db0581b250d0a7d2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 19 02:32:28 2009 -0400
Store the operator table more compactly.
The four cases for each operator:
none-are-opaque, src-is-opaque, dest-is-opaque, both-are-opaque
are packed into one uint32_t per operator. The relevant strength
reduced operator can then be found by packing the source-is-opaque and
dest-is-opaque into two bits and shifting that number of bytes.
Chris Wilson pointed out a bug in the original version of this commit:
dest_is_opaque and source_is_opaque were used as booleans, but their
actual values were the results of a logical AND with the
FAST_PATH_OPAQUE flag, so the shift value was wildly wrong.
The only reason it actually passed the test suite (on x86) was that
the compiler computed the shift amount in the cl register, and the low
byte of FAST_PATH_OPAQUE happens to be 0, so no shifting actually took
place, and the original operator was returned.
commit 7fe35f0e6b660f5667ff653f3b753bc3e5d07901
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 14:10:31 2009 -0400
Make the operator strength reduction constant time.
By extending the operator information table to cover all operators we
can replace the loop with a table look-up. At the same time, base the
operator optimization on the computed flags rather than the ones in
the image struct.
Finally, as an extra optimization, we no longer ignore the case where
there is a mask. Instead we consider the source opaque if both source
and mask are opaque, or if the source is opaque and the mask is
missing.
commit 18f0de452dc7e12e4cb544d761a626d5c6031663
Author: Loïc Minier <loic.minier@ubuntu.com>
Date: Tue Mar 9 20:57:34 2010 +0100
ARM: SIMD: Try without any CFLAGS before forcing -mcpu=
http://bugs.launchpad.net/bugs/535183
commit 933540861383da27402680593edefe8d61e6fb02
Author: Egor Starkov <starkov.egor@gmail.com>
Date: Fri Mar 12 09:47:59 2010 -0500
Eliminate trailing comma in enum
https://bugs.freedesktop.org/show_bug.cgi?id=27050
Pixman is not compiling with c++ compiler. During compilation it gives
the following error:
/usr/include/pixman-1/pixman.h:335: error: comma at end of enumerator list
Signed-off-by: Søren Sandmann Pedersen <ssp@redhat.com>
commit 54e39e00386fd2fd0eb76ead6396ddb93f1cf6c2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 17 03:16:27 2009 -0400
Add a fast path cache
This patch adds a cache in front of the fast path tables to reduce the
overhead of pixman_composite(). It is fixed size with move-to-front to
make sure the most popular fast paths are at the beginning of the cache.
The cache is thread local to avoid locking.
commit 84b009ae9f128c838d0e046e07947f8f9b2ce879
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 5 20:40:41 2010 -0500
Post-release version bump to 0.17.11
commit 14fd287efb63c1f31d37053ebbbf500d0841c053
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Fri Mar 5 20:06:08 2010 -0500
Pre-release version bump to 0.17.10
commit bd9934551f72f4993016cab1d7be3b1e545629b1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Feb 26 14:15:22 2010 -0500
Move __force_align_arg_pointer workaround before composite32()
Since otherwise the workaround won't take effect when you call
pixman_image_composite32() directly.
commit 14bb054d9695abb284e22a1de31337e0e41bb4e3
Merge: 9a8e404 3db76b9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Mar 4 02:30:22 2010 -0500
Merge branch 'more-flags'
commit 9a8e404d44b6ed9817d088966cec324a38e60897
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 27 00:37:19 2010 -0500
test: Remove obsolete comment
commit 182e4c2635fdb90c50b2e86253738b7e9c8ea282
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Feb 24 04:14:45 2010 +0200
ARM: added 'neon_composite_over_reverse_n_8888' fast path
This fast path function improves performance of 'poppler' cairo-perf trace.
Benchmark from ARM Cortex-A8 @720MHz
before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image poppler 38.986 39.158 0.23% 6/6
after:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image poppler 24.981 25.136 0.28% 6/6
commit 072a7d31a8c872666787b69a6bd1b537565c5b96
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Feb 24 02:26:57 2010 +0200
ARM: added 'neon_composite_src_x888_8888' fast path
This fast path function improves performance of 'gnome-system-monitor'
cairo-perf trace.
Benchmark from ARM Cortex-A8 @720MHz
before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image gnome-system-monitor 68.838 68.899 0.05% 5/6
after:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image gnome-system-monitor 53.336 53.384 0.09% 6/6
commit 2ed7c13922f83404bd9976c00d00738d0314693f
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Feb 24 01:44:00 2010 +0200
ARM: added 'neon_composite_over_n_8888_8888_ca' fast path
This fast path function improves performance of 'firefox-talos-gfx'
cairo-perf trace.
Benchmark from ARM Cortex-A8 @720MHz
before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image firefox-talos-gfx 139.969 141.176 0.35% 6/6
after:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image firefox-talos-gfx 111.810 112.196 0.23% 6/6
commit 3db76b90049f23723a0519d572b9cda7c672f7d5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Feb 14 19:18:35 2010 -0500
Restructure the flags computation in compute_image_info().
Restructure the code to use switches instead of ifs. This saves a few
comparisons and make the code slightly easier to follow. Also add some
comments.
commit ac44db334066f68a837914a52d8d1368c85161ad
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Feb 14 19:14:44 2010 -0500
Move workaround code to pixman-image.c
It is more natural to put it where all the other flags are computed.
commit 35af45d5e3d3f893ccaa4ab2f947100eb9d840ac
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Feb 22 06:06:22 2010 -0500
Turn need_workaround into another flag.
Instead of storing it as a boolean in the image struct, just use
another flag for it.
commit f27f17ce22b6d0ac587600930c3657180066aac8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 11:54:21 2009 -0400
Eliminate _pixman_image_is_opaque() in favor of a new FAST_PATH_IS_OPAQUE flag
The new FAST_PATH_IS_OPAQUE flag is computed along with the others in
_pixman_image_validate().
commit 2a6ba862abd8859014d11a742247fa1f1225729b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 04:17:57 2009 -0400
Eliminate _pixman_image_is_solid()
Instead of calling this function in compute_image_info(), just do the
relevant checks when the extended format is computed.
Move computation of solidness to validate
commit 45006e5e648b85df65b922f893c9802c9ecce38e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 04:06:30 2009 -0400
Move computation of extended format code to validate.
Instead of computing the extended format on every composite, just
compute it once and store it in the image.
commit fb0096a282c5b6e7ca9eb59a05d9ff738dccfd4b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Mon Feb 22 05:16:27 2010 -0500
Add new FAST_PATH_SIMPLE_REPEAT flag
This flags indicates that the image is untransformed an
repeating. Such images can be composited quickly by simply repeating
the composite operation.
commit a7ad9c7c9dcb78e0c5ad00145b119dfe929eb307
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 03:54:36 2009 -0400
Compute the image flags at validation time instead of composite time
Instead of computing all the image flags at composite time, we compute
them once in _pixman_image_validate() and cache them in the image.
commit 7bc4cd42c3549f3f2354f50a7cf21ce9ccc8de7b
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Feb 24 22:09:41 2010 -0500
RELEASING: Update the release instructions.
commit 7392a350f2808146842be0924ca289c5df6c8922
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Feb 24 22:02:13 2010 -0500
Post-release version bump
commit 4d1c216af3d6fc58829c2f5ea434e97ff8012493
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Feb 24 21:52:30 2010 -0500
Pre-release version bump
commit e0f1d8410715083498a35284ea7e5bb71fabe090
Merge: 16ef3ab 282f5cf
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Feb 24 21:01:29 2010 -0500
Merge branch 'trap-fixes'
commit 16ef3ab230047221f813905d390bf762a3d8508a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Feb 24 20:51:25 2010 -0500
Add a1-trap-test
When a trapezoid sample point is exactly on a polygon edge, the rule
is that it is considered inside the trapezoid if the edge is a top or
left edge, but outside for bottom and right edges.
This program tests that for a1 trapezoids.
commit ad5cbba4c05f8521004c6aa1afd5aa74040afad0
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Sun Feb 21 02:01:16 2010 -0500
Hide the C++ extern "C" declarations behind macros.
That way they don't confuse the indenting algorithm in editors such as
Emacs.
commit 14f201dc47ba76fcf677936f4f809249054fd6ad
Merge: 94f5859 6b2da68
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 20 13:09:01 2010 -0500
Merge branch 'eliminate-composite'
Conflicts:
pixman/pixman-sse2.c
commit 94f585916a2385146ee5c803f7850b21149d728b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 13 20:08:13 2010 -0500
Move all code to do debugging spew into pixman-private.
Rather than the region code having its own little debug system, move
all of it into pixman-private where there is already return_if_fail()
macros etc. These macros are now enabled in development snapshots and
nowhere else. Previously they were never enabled unless you modified
the code.
At the same time, remove all the asserts from the region code since we
can never turn them on anyway, and replace them with
critical_if_fail() macros that will print spew to standard error when
DEBUG is defined.
Finally, also change the debugging spew in pixman-bits-image.c to use
return_val_if_fail() instead of its own fprintf().
commit f32d585069e77f09f84de42eda8ed8f6849aab57
Author: Alexander Larsson <alexl@redhat.com>
Date: Fri Feb 19 11:22:52 2010 +0100
Test pixman_region32_init_from_image in region-test
commit 48ef4befd88e06e83a583a70f0172f1a08a65cda
Author: Alexander Larsson <alexl@redhat.com>
Date: Mon Feb 15 09:40:50 2010 +0100
Add pixman_region{32}_init_from_image
This creates a region from an image in PIXMAN_a1 format.
commit 5dee05fcab16dbd3e2c5e4d85b9edf26cf523e3f
Author: Alexander Larsson <alexl@redhat.com>
Date: Mon Feb 15 09:39:59 2010 +0100
Move SCREEN_SHIFT_LEFT/RIGHT to pixman-private.h
This is needed for later use in other code.
commit 61f4ed9c7a3ff6afbbb42d3f3b8dc3b9331bdcbd
Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
Date: Thu Feb 18 14:30:01 2010 +0900
Compile by USE_SSE2 only without USE_MMX
Although we added MMX emulation for Microsoft Visual C++ compiler for x64,
USE_SSE2 still requires USE_MMX. So we remove dependency of USE_MMX
for Windows x64.
Signed-off-by: Makoto Kato <m_kato@ga2.so-net.ne.jp>
commit 6b2da683debd1b3fc1862752cb26e6799b644e05
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Sep 16 07:29:08 2009 -0400
Move NULL check out of get_image_info()
The NULL check is only necessary for masks, so there is no reason to
do it for destinations and sources.
commit 1dd8744f40f4b754fb3aa26a3c7f4fbe54c27155
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Sep 16 06:54:43 2009 -0400
Add a fast path for non-repeating sources in walk_region_internal().
In the common case where there is no repeating, the loop in
walk_region_internal() reduces to just walking of the boxes involved
and calling the composite function.
commit 362a9f564a9a58c48ab0129ca3ac997d0cb84bab
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 01:34:33 2009 -0400
Move more things out of the inner loop in do_composite().
Specifically,
- the src_ and mask_repeat computations
- the check for whether the involved images cover the composite
region.
commit 129d9c187146a060863598d154e6770394547afd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 01:16:40 2009 -0400
Move region computation out of the loop in do_composite()
We only need to compute the composite region once, not on every
iteration.
commit 4c185503d26374915942d1f64c02134e4a2c5a99
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 01:14:41 2009 -0400
Move get_image_info() out of the loop in do_composite
The computation of image formats and flags is invariant to the loop,
so it can all be moved out.
commit 81b7d7b18050c770f272fd10aa7f5cf85ddc25cc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 01:13:36 2009 -0400
Manually inline _pixman_run_fast_path()
Move all of the code into do_composite().
commit e914cccb24c1391aa25eca8df87a08bd935cd870
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 01:11:04 2009 -0400
Move compositing functionality from pixman-utils.c into pixman.c
_pixman_run_fast_path() and pixman_compute_composite_region() are both
moved to pixman-image, since at this point that's the only place they
are being called from.
commit 0eeb197599cca78a645f8a5498b0124ef170c523
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Nov 7 15:13:03 2009 -0500
Move compositing to its own function, do_composite()
commit f831552bce70f2619ea8db00983d80dd1abd0003
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 00:58:51 2009 -0400
Optimize for the common case wrt. the workaround.
In the common case no images need the workaround, so we check for that
first, and only if an image does need a workaround do we check which
one of the images actually need it.
commit fa4df6225d4fa0b740c0ce69361e2f7cee1686f9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 00:48:12 2009 -0400
Eliminate all the composite methods.
They are no longer necessary because we will just walk the fast path
tables, and the general composite path is treated as another fast
path.
This unfortunately means that sse2_composite() can no longer be
responsible for realigning the stack to 16 bytes, so we have to move
that to pixman_image_composite().
commit c3d7b5125585a7d974ccd904100777a0e18d425f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 00:23:11 2009 -0400
Delete unused _pixman_walk_composite_region() function
commit 488480301c7ca9cb4e41c8d0f489fb56e5d9efdd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Nov 7 15:28:57 2009 -0500
Don't call _pixman_implementation_composite() anymore.
Instead just call _pixman_run_fast_path(). Since we view
general_composite() as a fast path now, we know that it will find
*some* compositing routine.
commit 06ae5ed5971fe616b96bb97a63abf6cc27c5b669
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Sep 14 23:58:40 2009 -0400
Delete unused sources_cover() function
commit 543a04a3bbd2c622842739ab923ff8761c05ed83
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Sep 14 23:47:39 2009 -0400
Store a pointer to the array of fast paths in the implementation struct.
Also add an empty fast path table to the vmx implementation, so that
we can assume sure the pointer is never NULL.
commit 376f2a3f853f829c78983a51bffc1bacb9bec9a3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 00:20:22 2009 -0400
Make fast_composite_scaled_nearest() another fast path.
This requires another couple of flags
FAST_PATH_SCALE_TRANSFORM
FAST_PATH_NEAREST_FILTER
commit 87430cfc35c6e51bb1a947795e0ddb198c460253
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Sep 13 05:29:48 2009 -0400
Make general_composite_rect() just another fast path.
We introduce a new PIXMAN_OP_any fake operator and a PIXMAN_any fake
format that match anything. Then general_composite_rect() can be used
as another fast path.
Because general_composite_rect() does not require the sources to cover
the clip region, we add a new flag FAST_PATH_COVERS_CLIP which is part
of the set of standard flags for fast paths.
Because this flag cannot be computed until after the clip region is
available, we have to call pixman_compute_composite_region32() before
checking for fast paths. This will resolve itself when we get to the
point where _pixman_run_fast_path() is only called once per composite
operation.
commit d7e281e0a1f7b1aecd245070736e03d2953b0911
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 13 18:23:34 2010 -0500
Post-release version bump
commit 9bcadc340866c49dab1cb40ff79c683972e8a37d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 13 18:12:32 2010 -0500
Pre-release version bump
commit 97a12457394b36b5b052927af65ac3944ceccf09
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 31 15:06:33 2009 -0400
Once unrolled version of fast_path_composite_nearest_scaled()
Separate out the fetching and combining code in two inline
functions. Then do two pixels per iteration.
commit e5972110750b32929a474c35362f4639dbbd1222
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 30 02:50:38 2009 -0400
Generalize and optimize fast_composite_src_scaled_nearest()
- Make it work for PIXMAN_OP_OVER
- Split repeat computation for x and y, and only the x part in the
inner loop.
- Move stride multiplication outside of inner loop
commit 337e916473069a76a44757b3664f8d49da350773
Merge: bdc4a6a 8e85059
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 13 12:26:09 2010 -0500
Merge branch 'bitmasks'
commit bdc4a6afe0bcea6dfb0df221006f4fe188324678
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 13 11:18:13 2010 -0500
Makefile.am: Remove 'check' from release-check
It's already included in distcheck.
commit edee4be052cf0d466922759efd2613e5a2be9e2b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Feb 13 09:40:33 2010 -0500
Turn off asserts in development snapshots (bug 26314).
There is not much real benefit in having asserts turned on in
snapshots because it doesn't lead to any new bug reports, just to
people not installing development snapshots since they case X server
crashes. So just turn them off.
While we are at it, limit the number of messages to stderr to 5
instead of 50.
commit cf1f034fef34478c528bedf1e59be443fa72429c
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sun Feb 7 07:33:52 2010 +0200
ARM: Remove any use of environment variables for cpu features detection
Old code assumed that all ARMv7 processors support NEON instructions
unless overrided by environment variable ARM_TRUST_HWCAP. This causes
X server to die with SIGILL if NEON support is disabled in the kernel
configuration. Additionally, ARMv7 processors lacking NEON unit are
going to become available eventually.
The problem was reported by user bearsh at irc.freenode.net #gentoo-embedded
commit 865c37d57421f6888151486ae1a2ec986a7cd9d2
Author: Alexander Larsson <alexl@redhat.com>
Date: Tue Feb 9 15:57:18 2010 +0100
Add pixman_image_get_destroy_data()
This way you can get back user data that was set using
pixman_image_set_destroy_function().
commit cca1cef3f29d244f0a57bd3ed8b09e2892f8934a
Author: Alexander Larsson <alexl@redhat.com>
Date: Tue Feb 9 13:22:38 2010 +0100
Add extern "C" guards for c++
commit 8e8505943651ac46e0ad5a2dd0b9e85704095cc1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Sep 13 04:28:20 2009 -0400
Move checks for src/mask repeat right before walking the region.
Also add a couple of additional checks to the src/mask repeat check.
commit eea58eab93aefd4430544754f8a0f5460b4a30aa
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Sep 13 03:43:16 2009 -0400
Compute src, mask, dest flags and base fast path decisions on them.
This makes sets the stage for caching the information by image instead
of computing it on each composite invocation.
This patch also computes format codes for images such as PIXMAN_solid,
so that we can no longer end up in the situation that a fast path is
selected for a 1x1 solid image, when that fast path doesn't actually
understand repeating.
commit 6197db91a32da7ea281fd87b59f5bb74b989361b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Sep 13 02:34:32 2009 -0400
Add src_, mask_, and dest_flags fields to fast path arrays
Update all the fast path tables to match using a new
PIXMAN_STD_FAST_PATH macro.
For now, use 0 for the flags fields.
commit ff6eaac50eaa8778ba15fd0f796e94cc751dea0a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 05:26:50 2009 -0400
Move calls to source_is_fastpathable() into get_source_format()
commit 171dc4875644f72d65ff2e31533edacc781069ec
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 05:09:53 2009 -0400
Fold get_fast_path() into _pixman_run_fast_path()
Also factor out the source format code computation to its own
function.
commit 459c7a52f67c9628e94107599e3abbc6463cbd0f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 04:30:22 2009 -0400
Consolidate the source and mask sanity checks in a function
commit 27a4fb4747426ee935d2149cca2197a369c4556d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 04:10:30 2009 -0400
Move pixbuf checks after src_format and mask_format have been computed.
commit 2def1a8867a1ab0ccab720d1cc3f3c7b61c74619
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 04:03:25 2009 -0400
Move the sanity checks for src, mask and destination into get_fast_path()
commit d76aab4d03d9e700c3c431b077a4b506a5e53df1
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Wed Jan 27 07:11:11 2010 -0500
Turn some uint16_t variables to int32_t in the fast paths.
This is necessary now that we have a 32 bit version of
pixman_image_composite().
commit 15d07d6c2ac4ed5d41dc80b476e09e8d7dd6a84a
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Thu Jan 21 13:43:53 2010 -0500
Implement get_scanline_64() correctly for solid fill images.
Previously they would be evaluated at 8 bits and then expanded.
commit 0e8550798f69ef69dbde59eda6341ab4e0801069
Author: Benjamin Otte <otte@redhat.com>
Date: Tue Jan 26 19:37:34 2010 +0100
Make pixman_image_fill_rectangles() call pixman_image_fill_boxes()
Avoids duplication of code
commit d0d284da0a8810e7435b8e932ac5de352793a39a
Author: Benjamin Otte <otte@redhat.com>
Date: Tue Jan 26 19:03:38 2010 +0100
Add pixman_image_fill_boxes() API
It's basically the 32bit version of pixman_image_fill_rectangles(), just
with a saner data type.
commit e841c556d59ca0aa6d86eaf6dbf061ae0f4287de
Author: Benjamin Otte <otte@redhat.com>
Date: Tue Jan 26 18:52:27 2010 +0100
Add pixman_image_composite32()
This is equal to pixman_image_composite(), just with 32bit parameters.
pixman_image_composite() now just calls pixman_image_composite32()
commit 78b6c470789eb226708a5d98bb06a962d2ae0b0d
Author: Benjamin Otte <otte@redhat.com>
Date: Tue Jan 26 19:09:56 2010 +0100
Make region argument to pixman_region(32)_init_rects() const
No indenting of the header to keep git blame working
commit b194bb78c8a32b7252cccaebdc085cd8e759427d
Author: Benjamin Otte <otte@redhat.com>
Date: Tue Jan 26 19:08:29 2010 +0100
Fix typo
commit c066c347aeaa779b7a3c9e3cde45413277370f0f
Author: Søren Sandmann Pedersen <ssp@redhat.com>
Date: Tue Jan 19 14:23:57 2010 -0500
Fix some warnings
commit 8fce7b18f3033aa1423b96b9847f6ae3133fad7a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jan 17 19:34:27 2010 -0500
Post-release version bump
commit 23e1ba3c062711fe256612ca7f39478e048a6708
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jan 17 18:56:11 2010 -0500
Pre-release version bump
commit 8dabd1fdd8f0030086cfe70f0baba7c502a0e1b8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jan 17 16:45:23 2010 -0500
bits: Print an error if someone tries to create an image with bpp < depth
Something in the X server apparently does this.
commit 2c3cbc83c4018173d9deae3f24c457b3ca16dbcd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jan 16 10:31:22 2010 -0500
When fetching from an alpha map, replace the alpha channel of the image
Previously it would be multiplied onto the image pixel, but the Render
specification is pretty clear that the alpha map should be used
*instead* of any alpha channel within the image.
This makes the assumption that the pixels in the image are already
premultiplied with the alpha channel from the alpha map. If we don't
make this assumption and the image has an alpha channel of its own, we
would have to first unpremultiply that pixel, and then premultiply the
alpha value onto the color channels, and then replace the alpha
channel.
commit 0df6098f3d941608f945d02e2af65b70ac499e0a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jan 16 10:09:25 2010 -0500
pixman_image_validate() needs to also validate the alpha map.
This is the other half of bug 25950.
commit 7f00dc62e4aa4b2b417ca1c86813a6b4c7f78673
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jan 16 10:07:48 2010 -0500
When fetching from an alpha map, use the alpha map's fetch function.
Don't use the one from the image. This is the first half of bug 25950.
commit 042f978b04aefe56ec912c88ec879e668153a287
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jan 16 09:48:45 2010 -0500
test: Add new alphamap test program.
This program demonstrates three bugs relating to alpha maps:
- When fetching from an alpha map into 32 bit intermediates, we use
the fetcher from the image, and not the one from the alpha map.
- For 64 bit intermediates we call fetch_pixel_generic_lossy_32()
which then calls fetch_pixel_raw_64, which is NULL because alpha
images are never validated.
- The alpha map should be used *in place* of any existing alpha
channel, but we are actually multiplying it onto the image.
commit 05c38141b4861348bf61235341d634019e39e8a9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jan 16 07:40:07 2010 -0500
fetch-test: Fix spelling error (pallete -> palette)
commit c46a87e45afc6eb53ae93f9ca3c1545bd26d18f5
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Thu Jan 14 09:42:34 2010 -0800
Update Sun license notices to current X.Org standard form
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit 3df6cb34315ebaeb2ce3f341160355650d856518
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jan 10 09:15:24 2010 -0500
fetch-test: Various formatting fixes
commit 7862f9b96e8e8456cc60852790c7f244a5e3425e
Author: Pierre-Loup A. Griffais <pgriffais@nvidia.com>
Date: Wed Jan 6 01:26:07 2010 +0200
Interpret the angle of a conical gradient in degrees.
The conical gradient angle's fixed point degrees to
radians conversion code is missing a factor of pi.
commit 54f51c4a7595d685397838006ba67473eee47e7d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Dec 11 11:14:19 2009 -0500
region: Enable or disable fatal errors and selfchecks based on version number
There is a couple of bugs in bugzilla where bugs in the X server
triggered asserts in the pixman region code. It is probably better to
let the X server survive this. (In fact, I thought I had disabled them
for 0.16.0, but apparently not).
The patch below uses these rules:
- In _stable_ pixman releases, assertions and selfchecks are turned
off. Assertions, so that the X server doesn't die. Selfchecks,
for performance reasons.
- In _unstable_ pixman releases, both assertions and selfcheck are
turned on. These releases are what get added to development
distributions such as rawhide, so we want as much self-checking
as possible.
- In _random git checkouts_, assertions are enabled, so that bugs
are caught, but selfchecks are disabled so that you can use them
for performance work without having to fiddle with turning
selfchecks off.
commit 91ec7fecc9b16ec1d18c46d08698e6128baaba1d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 03:27:44 2009 -0400
Some minor formatting fixes.
commit 97cf4d494cb6fc0a75eec7d6f06f81ba7644d820
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Dec 16 17:54:41 2009 -0500
arm-simd: Whitespace fixes
commit 28778c997e60af35d26df61fd82860748deb6fab
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Dec 16 17:49:44 2009 -0500
mmx: Eliminate trailing whitespace.
commit c6c43c65f76aa84c57a94155117487199bc0323e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Dec 16 15:23:50 2009 -0500
Add 'check' to release-check make target
commit b3afacf9c970fa7de5ffdebebbd8526a55d3e7d8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Dec 16 15:15:17 2009 -0500
Reorder tests so that they fastest ones run first.
commit bbc5108bf8cfcb1f2334e51a8e904b5be48376e1
Author: Marvin Schmidt <marv@exherbo.org>
Date: Sun Nov 15 16:04:09 2009 +0100
Build tests and run non-GTK+ ones on `make check`
Setting TESTS will run the tests on `make check`
Bug 25131
commit 44768320709183a341d219f97c03c5b592a69355
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Dec 10 00:25:58 2009 +0200
ARM: added 'neon_combine_add_u' function
commit f2c7a04c41440b15a5ce1db7ab87dd5bd8c088da
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Dec 10 00:22:12 2009 +0200
ARM: added 'neon_combine_over_u' function
commit 24cd286af6f4507eb9937ced6d9998d296c77a0a
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Dec 9 23:49:04 2009 +0200
ARM: macro template for single scanline compositing functions
Existing template already supports 2D images processing,
but pixman also needs some NEON optimized functions for
improving performance when compositing is decoupled
into "fetch -> process -> store" stages and done via
temporary scanline buffer. That's why a new simplified
template which deals only with the generation of single
scanline processing functions is handy.
commit ae8d9df6248445170702c244cd60f894aa761267
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Dec 14 19:14:36 2009 +0200
Use canonical pixman license notice for recently added ARM NEON assembly files
commit ce78288d7783a27700223c39e23880f4f425f70b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Nov 6 02:25:47 2009 +0200
ARM: added 'neon_composite_src_pixbuf_8888' fast path
This is ARM NEON optimized conversion of native RGBA format used by
GTK/GDK into native 32bpp RGBA format used by cairo/pixman.
commit a732d3baeb0697b91a713fd6b51b68ee7ca68e03
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Nov 5 20:27:38 2009 +0200
ARM: added 'neon_composite_src_0888_0565_rev' fast path
This is ARM NEON optimized conversion of native RGB format used by
GTK/GDK into r5g6b5 format.
commit a1386a1ceb0c50d2e23cf30be30ea165d2d2ea7c
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Nov 5 19:43:09 2009 +0200
ARM: added 'neon_src_0888_8888_rev' fast path
This is ARM NEON optimized conversion of native RGB format used by
GTK/GDK into native 32bpp RGB format used by cairo/pixman.
commit 78a60047ac0f85423e0474ef54930e1f537f646b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Dec 9 11:29:13 2009 +0200
ARM: added 'neon_composite_over_n_8888' fast path
commit 96fd17488f0966d2df53623195810dc640bf5ca6
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Dec 9 11:02:04 2009 +0200
ARM: added 'neon_composite_over_n_0565' fast path
commit 2d332c7a569803107e11b41c7b2c020b4050e26e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Dec 9 10:33:01 2009 +0200
ARM: added 'neon_composite_src_0565_8888' fast path
commit 062da411d81c7d970a302dd2c283ef5327b867da
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Dec 8 15:04:41 2009 +0200
ARM: added 'neon_composite_add_8888_8888_8888' fast path
commit 3d0eedb5d9af97fed68e2da03d6aee40197e2a76
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Dec 8 14:39:41 2009 +0200
ARM: added 'neon_composite_add_8888_8888' fast path
commit 86b54c6701666d087f0234047128fbf0fd6468b6
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Dec 7 22:53:30 2009 +0200
ARM: added 'neon_composite_over_8888_8_8888' fast path
commit aec1524e773758369ab627553dc5c23d18619a85
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Dec 7 22:42:17 2009 +0200
ARM: added 'neon_composite_over_8888_8888_8888' fast path
commit ba59d53d0b61effc422c4004a9f0e6cf848598d8
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Dec 8 14:13:12 2009 +0200
ARM: minor source formatting changes
Now it's a bit harder to exceed 80 characters line limit
when binding assembly functions.
commit a47b5167c4c1b55b2f51e29ab0782c2659bec312
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Dec 8 08:52:34 2009 +0200
ARM: added '.arch armv7a' directive to NEON assembly file
This fix prevents build failure due to not accepting PLD instruction when
compiling for armv4 cpu with the relevant -mcpu/-march options set in CFLAGS.
commit 3fba7dc6fa52bbf01cfc5c4aab1ab06d49a117b2
Author: Benjamin Otte <otte@gnome.org>
Date: Sat Nov 28 11:38:43 2009 +0100
Make test program not throw warnings about undefined variables
commit 10ab592d57bbeefb3e3297c4a905e5cec233a006
Author: Benjamin Otte <otte@gnome.org>
Date: Fri Nov 27 22:02:54 2009 +0100
Fix bug that prevented pixman_fill MMX and SSE paths for 16 and 8bpp
commit 7c7b6f5de75a998deaab5d00baf69a895ceba795
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 18 04:26:18 2009 +0200
ARM: NEON optimized pixman_blt
NEON unit has fast access to L1/L2 caches and even simple
copy of memory buffers using NEON provides more than 1.5x
performance improvement on ARM Cortex-A8.
commit dce6e1bd6840ce0646d8738aaa0927c003dbb361
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Thu Nov 5 23:15:27 2009 +0200
test: support for testing pixbuf fast path functions in blitters-test
commit 0901ef41fbca2b8fb504c64a2b694bd764770292
Author: Benjamin Otte <otte@gnome.org>
Date: Sun Nov 22 04:34:01 2009 +0100
Remove nonexistant function from header
commit c97b1e803fc214e9880eaeff98410c8fa37f9ddc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Nov 20 12:02:50 2009 +0100
Post-release version bump
commit 5a7597f81862ecf7b098ed254fb8e4197ccae3a8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Nov 20 11:55:40 2009 +0100
Pre-release version bump
commit 95a08dece37080e199e436fa6f2dc02e60d346dd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Nov 20 09:35:48 2009 +0100
Remove stray semicolon from blitters-test.c
Pointed out by scottmc2@gmail.com in bug 25137.
commit 6e2c7d54c6786b52ae7dc683d2dbb4c7c033bb09
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Nov 9 14:10:00 2009 +0200
C fast path function for 'over_n_1_0565'
This function is needed to improve performance of xfce4 terminal when
using bitmap fonts and running with 16bpp desktop. Some other applications
may potentially benefit too.
After applying this patch, top functions from Xorg process in
oprofile log change from
samples % image name symbol name
13296 29.1528 libpixman-1.so.0.17.1 combine_over_u
6452 14.1466 libpixman-1.so.0.17.1 fetch_scanline_r5g6b5
5516 12.0944 libpixman-1.so.0.17.1 fetch_scanline_a1
2273 4.9838 libpixman-1.so.0.17.1 store_scanline_r5g6b5
1741 3.8173 libpixman-1.so.0.17.1 fast_composite_add_1000_1000
1718 3.7669 libc-2.9.so memcpy
to
samples % image name symbol name
5594 14.7033 libpixman-1.so.0.17.1 fast_composite_over_n_1_0565
4323 11.3626 libc-2.9.so memcpy
3695 9.7119 libpixman-1.so.0.17.1 fast_composite_add_1000_1000
when scrolling text in terminal (reading man page).
commit 282f5cf8b821a34bab1e32957913ef8d9f9ee43c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Nov 12 17:54:40 2009 -0500
Round horizontal sampling points towards northwest.
This is a similar change as the top/bottom one, but in this case the
rounding is simpler because it's just always rounding down.
Based on a patch by M Joonas Pihlaja.
commit f44431986f667eb49571e9365960524361f833c5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Nov 12 17:20:32 2009 -0500
Fix rounding of top and bottom coordinates.
The rules for trap rasterization is that coordinates are rounded
towards north-west.
The pixman_sample_ceil() function is used to compute the first
(top-most) sample row included in the trap, so when the input
coordinate is already exactly on a sample row, no rounding should take
place.
On the other hand, pixman_sample_floor() is used to compute the final
(bottom-most) sample row, so if the input is precisely on a sample
row, it needs to be rounded down to the previous row.
This commit fixes the rounding computation. The idea of the
computation is like this:
Floor operation that rounds exact matches down: First subtract
pixman_fixed_e to make sure input already on a sample row gets rounded
down. Then find out how many small steps are between the input and the
first fraction. Then add those small steps to the first fraction.
The ceil operation first adds (small_step + pixman_e), then runs a
floor. This ensures that exact matches are not rounded off.
Based on a patch by M Joonas Pihlaja.
commit 3bea18e3ea587c84423e9f7bafff21150c37d287
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Nov 12 17:03:53 2009 -0500
Fix slightly skewed sampling grid for antialiased traps
The sampling grid is slightly skewed in the antialiased case. Consider
the case where we have n = 8 bits of alpha.
The small step is
small_step = fixed_1 / 15 = 65536 / 15 = 4369
The first fraction is then
frac_first = (small_step / 2) = (65536 - 15) / 2 = 2184
and the last fraction becomes
frac_last
= frac_first + (15 - 1) * small_step = 2184 + 14 * 4369 = 63350
which means the size of the last bit of the pixel is
65536 - 63350 = 2186
which is 2 bigger than the first fraction. This is not the end of the
world, but it would be more correct to have 2185 and 2185, and we can
accomplish that simply by making the first fraction half the *big*
step instead of half the small step.
If we ever move to coordinates with 8 fractional bits, the
corresponding values become 8 and 10 out of 256, where 9 and 9 would
be better.
Similarly in the X direction.
commit 98bb0a509f401563b8e6e15f4ee26947e9c3d419
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 04:24:04 2009 -0400
Delete the flags field from fast_path_info_t
commit b7fb7e6c700891a12300aaf5c8a4c4b2584a194f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 02:47:39 2009 -0400
Eliminate NEED_PIXBUF flag.
Instead introduce two new fake formats
PIXMAN_pixbuf
PIXMAN_rpixbuf
and compute whether the source and mask have them in
find_fast_path(). This lead to some duplicate entries in the fast path
tables that could then be removed.
commit 542b79c30d88788028d391285aa8cd038e96f2b3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 02:11:12 2009 -0400
Compute src_format outside the fast path loop.
Inside the loop all we have to do is check that the formats match.
commit 12108ecbe488d1b65e6787585e1caa57af17a008
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 01:53:54 2009 -0400
Eliminate the NEED_COMPONENT_ALPHA flag.
Instead introduce two new fake formats
PIXMAN_a8r8g8b8_ca
PIXMAN_a8b8g8r8_ca
that are used in the fast path tables for this case.
commit 4686d1f53b09b5dd12df6f10f8c0403b2a1e2427
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 12 01:35:56 2009 -0400
Eliminate the NEED_SOLID_MASK flag
This flag was used to indicate that the mask was solid while still
allowing a specific format to be required. However, there is not
actually any need for this because the fast paths all used
_pixman_image_get_solid() which already allowed arbitrary formats.
The one thing that had to be dealt with was component alpha. In
addition to interpreting the presence of the NEED_COMPONENT_ALPHA
flag, we now also interprete the *absence* of this flag as a
requirement that the mask does *not* have component alpha.
Siarhei Siamashka pointed out that the first version of this commit
had a bug, in which a NEED_SOLID_MASK was accidentally not turned into
a PIXMAN_solid in the ARM NEON implementation.
commit 2ef8b394d72d6c13f96347626b09613f805d9f8c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 19 06:14:38 2009 -0400
Use the destination buffer directly in more cases instead of fetching.
When the destination buffer is either a8r8g8b8 or x8r8g8b8, we can use
it directly instead of fetching into a temporary buffer. When the
format is x8r8g8b8, we require the operator to not make use of
destination alpha, but when it is a8r8g8b8, there are no restrictions.
This is approximately a 5% speedup on the poppler cairo benchmark:
[ # ] backend test min(s) median(s) stddev. count
Before:
[ 0] image poppler 6.661 6.709 0.59% 6/6
After:
[ 0] image poppler 6.307 6.320 0.12% 5/6
commit 13f4e02b1429d62b08487beebd8697887a5a9608
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Nov 10 15:48:36 2009 -0500
test: Move image_endian_swap() from blitters-test.c to utils.[ch]
commit 24e203a8a8394edb3a89f3d6be1bdcab41fbe7f9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Nov 10 15:45:17 2009 -0500
test: Move random number generator from blitters/scaling-test to utils.[ch]
commit cc34554652bf9a402127fa06a03105b49a425895
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Nov 10 15:32:12 2009 -0500
test: In scaling-test use the crc32 from utils.c
commit b465b8b79dc008f4f4dcddf45754fef260e51619
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Nov 10 15:29:20 2009 -0500
test: Move CRC32 code from blitters-test to new files utils.[ch]
commit 56bd91340102e915a239d2afa1db223109cf6639
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Nov 10 14:58:19 2009 -0500
test: Rename utils.[ch] to gtk-utils.[ch]
commit 7be529f3bd6455259e24163a27a0a5a761ee0cc3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Sep 20 17:37:36 2009 -0400
sse2: Add a fast path for OVER 8888 x 8 x 8888
This is a small speedup on the swfdec-youtube benchmark:
Before:
[ 0] image swfdec-youtube 5.789 5.806 0.20% 6/6
After:
[ 0] image swfdec-youtube 5.489 5.524 0.27% 6/6
Ie., approximately 5% faster.
commit abefe68ae2a422fecf315f17430c0cda5561be66
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:14:14 2009 +0200
ARM: enabled 'neon_composite_add_8000_8000' fast path
commit 635f389ff477a0afe82c6038a835e262d5034d99
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:13:31 2009 +0200
ARM: enabled 'neon_composite_add_8_8_8' fast path
commit 7e1bfed6767774a43c288ab780f62a20eccff805
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:12:56 2009 +0200
ARM: enabled 'neon_composite_add_n_8_8' fast path
commit deeb67b13a0f9267b59d9755e7a0102da29a6747
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:12:14 2009 +0200
ARM: enabled 'neon_composite_over_8888_8888' fast path
commit f449364849b2cc75a48cc3b35d2a373d38b71c09
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:11:32 2009 +0200
ARM: enabled 'neon_composite_over_8888_0565' fast path
commit 2dfbf6c4a520da4647bb480a124dfe5cbece225b
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:10:55 2009 +0200
ARM: enabled 'neon_composite_over_8888_n_8888' fast path
commit 43824f98f1fc41d923dd8ddd97e74942c01aadf8
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:10:09 2009 +0200
ARM: enabled 'neon_composite_over_n_8_8888' fast path
commit 189d0d783cc62aa3b739218689042c9235c04fa1
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:09:31 2009 +0200
ARM: enabled 'neon_composite_over_n_8_0565' fast path
commit cccfc87f4f597f99b74691af172126a2346f9239
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:08:48 2009 +0200
ARM: enabled 'neon_composite_src_0888_0888' fast path
commit e89b4f8105beaa27b6098a5dc7dfec62879ebd1d
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:08:09 2009 +0200
ARM: enabled 'neon_composite_src_8888_0565' fast path
commit 2d54ed46fb7428aa1d9f114450554fc33acff2c4
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:07:36 2009 +0200
ARM: enabled 'neon_composite_src_0565_0565' fast path
commit 5d695cb86eaad151c9402ead5dfb7e867ff58d29
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 17:05:46 2009 +0200
ARM: added 'bindings' for NEON assembly optimized functions
These functions serve as 'adaptors', converting standard internal
pixman fast path function arguments into arguments expected
by assembly functions.
commit dcfade3df96559ce942df5d16b7915c94f7d9e57
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 15:29:27 2009 +0200
ARM: enabled new implementation for pixman_fill_neon
commit bcb4bc79321659635d706bade25851cddf563856
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 15:18:38 2009 +0200
ARM: introduction of the new framework for NEON fast path optimizations
GNU assembler and its macro preprocessor is now used to generate
NEON optimized functions from a common template. This automatically
takes care of nuisances like ensuring optimal alignment, dealing with
leading/trailing pixels, doing prefetch, etc.
Implementations for a lot of compositing functions are also added,
but not enabled.
commit 1eff0ab487efe4720451b8bd92c8423b9772a69a
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Nov 4 14:25:27 2009 +0200
ARM: removed old ARM NEON optimizations
commit b8898d77d0e7cc1c50321fcb216af3ba6c634959
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Nov 7 14:47:22 2009 -0500
Define PIXMAN_USE_INTERNAL_API in pixman-private.h
Instead of mucking around with CFLAGS in configure.ac, preventing
users from setting their own CFLAGS, just define the
PIXMAN_USE_INTERNAL_API and PIXMAN_DISABLE_DEPRECATED in
pixman-private.h
commit 67bf739187cd43b5fff754b25693f76bb788d1fa
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Oct 27 09:11:28 2009 -0400
Include <inttypes.h> when compiled with HP's C compiler.
Fixes bug 23169.
commit 384fb88b905823e62c1f1733a20073bfea15d411
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Oct 27 12:25:13 2009 +0200
C fast path function for 'over_n_1_8888'
This function is needed to improve performance of xfce4 terminal.
Some other applications may potentially benefit too.
commit a2985da94704af050b4422dca70fd2dd770faba4
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Oct 27 12:11:05 2009 +0200
C fast path function for 'add_1000_1000'
This function is needed to improve performance of xfce4 terminal.
Some other applications may potentially benefit too.
commit 5f429e45106d79c48ee102987ef84be54fd421d8
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Oct 23 20:56:30 2009 +0300
blitters-test updated to also randomly generate mask_x/mask_y
commit 0d5562747ce25ecac06f4c44e935662eb6ee328a
Author: André Tupinambá <andrelrt@gmail.com>
Date: Sat Sep 19 23:01:50 2009 -0400
Add fast path scaled, bilinear fetcher.
This adds a bilinear fetcher for the case where the image has a scaled
transformation, does not repeat, and the format {ax}8r8g8b8.
Results for the swfdec-youtube benchmark
Before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image swfdec-youtube 7.841 7.915 0.72% 6/6
After:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image swfdec-youtube 6.677 6.780 0.94% 6/6
These results were measured on a faster machine than the ones in the
previous commit, so the numbers are not comparable.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit 88323c5abe68906472049537b54b0e7eea343f43
Author: André Tupinambá <andrelrt@gmail.com>
Date: Sat Sep 19 09:32:37 2009 -0400
Speed up bilinear interpolation.
Speed up bilinear interpolation by processing more than one component
at a time on 64 bit architectures, and by precomputing the dist{ixiy}
products on 32 bit architectures.
Previously bilinear interpolation for one pixel would take 24
multiplications. With this improvement it takes 12 on 64 bit, and 20
on 32 bit.
This is a small but consistent speedup on the swfdec-youtube
benchmark:
[ # ] backend test min(s) median(s) stddev. count
Before:
[ 0] image swfdec-youtube 18.010 18.020 0.09% 4/5
After:
[ 0] image swfdec-youtube 17.488 17.584 0.22% 5/6
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit f0c157f888185279681bad305973f246dca2e535
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Sep 27 09:41:25 2009 -0400
Extend scaling-test to also test bilinear filtering.
commit eab882ef38509bfc9719fcee6020d882ee030694
Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
Date: Wed Oct 21 12:47:27 2009 -0700
This is not a GNU project, so declare it foreign.
On Wed, 2009-10-21 at 13:36 +1000, Peter Hutterer wrote:
> On Tue, Oct 20, 2009 at 08:23:55PM -0700, Jeremy Huddleston wrote:
> > I noticed an INSTALL file in xlsclients and libXvMC today, and it
> > was quite annoying to work around since 'autoreconf -fvi' replaces
> > it and git wants to commit it. Should these files even be in git?
> > Can I nuke them for the betterment of humanity and since they get
> > created by autoreconf anyways?
>
> See https://bugs.freedesktop.org/show_bug.cgi?id=24206
As an interim measure, replace AM_INIT_AUTOMAKE([dist-bzip2]) with
AM_INIT_AUTOMAKE([foreign dist-bzip2]). This will prevent the generation
of the INSTALL file. It is also part of the 24206 solution.
Signed-off-by: Jeremy Huddleston <jeremyhu@freedesktop.org>
commit dc46ad274a47d351bacf3c2167c359d23dbaf8b3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Oct 19 20:32:37 2009 -0400
Make walk_region_internal() use 32 bit dimensions
commit bb3698d47925db77925810c3128be1641f455c60
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Oct 19 20:31:54 2009 -0400
Make pixman_compute_composite_region32() use 32 bit dimensions
commit 895c281c4094844f9f955621e4ac1e4394d865f0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Oct 19 20:30:22 2009 -0400
Change prototype of _pixman_walk_composite_region from int16_t to int32_t
commit 9cd470665b1bb7e0cb810f2457d3788f7c981072
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Oct 19 20:27:36 2009 -0400
Remove unused color_table and color_table_size fields
commit 8186937637f25088e61c22a3ce1740a56f5d6e13
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Oct 18 03:02:28 2009 -0400
Remove BOUNDS() macro.
It was bounding the clip region to INT16_MIN, INT16_MAX, but this was
a relic from the X server. We don't need it since we are already
restricting the clip region to the geometry of the destination.
commit 9bcfc0ac547277d3a3f4e5ff0922450566ad8be8
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Sep 30 08:02:39 2009 +0200
--enable-maintainer-mode is gone from configure, so remove it
commit fa49ef81f7b39d32b626ed235958448835e2d2c2
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Sep 17 13:19:04 2009 +0200
Add default cases for all switch statements
Fixes compilation with -Wswitch-default. Compilation with -Wswitch-enums
works fine as is.
commit 5c3ef4e9798f3395c55fe7b57df32f77c0de2c71
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Sep 17 13:18:22 2009 +0200
Fix compile warnings
commit ad484078854572cf640d7ffbb66f1e99328e79b8
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Jul 27 01:21:26 2009 +0300
ARM: Removal of unused/broken NEON code
commit 358f96d20219b4460bfd8ecf88e69ff10044b577
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Oct 8 13:01:27 2009 -0400
Fix double semicolon; pointed out by Travis Griggs
commit 93acc10617c88fbf933120c6980ae8ef80cf94f0
Author: Gerdus van Zyl <gerdusvanzyl@gmail.com>
Date: Tue Sep 29 12:28:03 2009 +0200
Fix build with Visual Studio 2008
moved __m64 ms declaration in sse2_composite_over_x888_8_8888 to top
of function so it compiles with visual studio 2008
commit f135f74ff3a4f55262b611b452566daff5e936ce
Author: Andrea Canciani <ranma42@gmail.com>
Date: Sun Sep 27 11:40:52 2009 +0200
Fix composite on big-endian systems.
Data narrower than 32bpp is padded to an unsigned long and on
big-endian systems this shifts the value by the padding bits.
commit 15c14691a71daa29c86cce40ac0b4a14acf8f2fc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Sep 26 13:12:14 2009 -0400
Fix fetch-test for big-endian systems.
Data narrower than 32bpp should be stored in the correct
endian. Reported by Andrea Canciani.
commit 02d70998885065bcea55cb2a8bfa75473083bc17
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 24 08:57:26 2009 -0400
Add missing break in composite.c
commit 8ce004af3670a183c78fc7c61fbfcfd8c7f17e54
Author: Guillem Jover <guillem@hadrons.org>
Date: Tue Sep 22 19:51:13 2009 +0200
pixman: Update .gitignore
Generalize to catch all .pc files. Add more tests.
Signed-off-by: Guillem Jover <guillem@hadrons.org>
commit 59e877cffe6497d865031d79e9a742414407d544
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 24 08:10:00 2009 -0400
In the compositing test, Don't try to use component alpha with solid fills.
It's not supported yet.
commit 16adb09c8a003936a1ef17042776a725c9aa6813
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 11:33:18 2009 -0400
Update CRC value in blitters-test for the new bug fixes
commit e156964d3e005be3dbc9ff80580d98c6dd617afd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 08:16:56 2009 -0400
Fix bug in blitters-test with BGRA formats.
When masking out the x bits, blitter-test would make the incorrect
assumption that the they were always in the topmost position. This is
not correct for formats of type PIXMAN_TYPE_BGRA.
commit eb72bfb97d10283964c070f0a0e26f0520a22ff3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 09:43:14 2009 -0400
Fix bugs in fetch_*_b2g3r3().
The red channel should only be shifted five positions, not six.
commit b4f6113cb975110c33f607aa39d19290f58be398
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 24 07:48:46 2009 -0400
Fix bugs in a1b2g1r1.
The first bug is that it is treating the input as if it were a1r1g1b1;
the second one is that the red channel should only be shifted two
bits, not three.
commit efdf15e677d506c2049a34e92eb2172712101afa
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 08:48:04 2009 -0400
Fix shift bug in fetch_scanline/pixel_a2b2g2r2()
0x30 * 0x55 is 0xff0, so the red channel should be shifted four bits,
not six.
commit 679c2dabda094491599ce770ddba11611d08efc8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 08:13:46 2009 -0400
Fix four bit formats.
The original Render code used to index pixels with their position in
bits in the image. When the scanline code was introduced pixels were
indexed in bytes, but the FETCH/STORE_4/8 macros still assumed bits.
This commit fixes that by making the FETCH/STORE_4 macros first
convert the index to bit position.
commit 3d1714cd1f8ae7d47ad5f01a1140133ae71a00e2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Sep 20 16:50:37 2009 -0400
Hide PIXMAN_OP_NONE and PIXMAN_N_OPERATORS behind PIXMAN_INTERNAL_API.
These cannot sanely be used by applications since they may change in
new versions.
commit 0683f34c418bc5fb2fa5e2a41bdc102195edbe67
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 08:06:32 2009 -0400
Add a few notes about testing to TODO
commit 48ba7d946146ea7b0e33e963942bedde22a3b806
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Sep 18 09:11:04 2009 -0400
Fix alpha handling for 10 bpc formats.
These generally extracted the 2 bits of alpha, then shifted them 62
bits and replicated across 16 bits. Then they were shifted another 48
bits, making the resulting alpha channel 0.
commit c673c83e070ed2392c00716fe20a80a798588b39
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 24 05:22:33 2009 -0400
Return result from pixman_image_set_transform().
Previously it would always return TRUE, even when malloc() had failed.
commit eb16d171882d200a390345ec8a3db1b931e9676a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Sep 15 07:43:23 2009 -0400
Revert "Enable component alpha on solid masks."
For consistency we will probably want to allow component alpha to be
set on all masks at some point, but this commit only enabled it for
solid images.
This reverts commit 29e22cf38e8abc54b9dddbdeb3909d02866a82a0.
commit b96e37f8d0f5c94f5d117e1622d7cae7246d6345
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Sep 15 13:16:17 2009 +0100
[Makefile] Set the SIMD specific CFLAGS for inspecting asm.
commit 273e89750b3ce901fa6769a835fa441ee986d508
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Sep 14 18:48:32 2009 -0400
Remove optimization for 0xffffffff and 0xff the add_n_8888_8888_ca fast path
This is an ADD operation, not an OVER. Fixes bug 23934, reported by
Siarhei Siamashka.
commit ec7c1affcc66c12af1fc29fd000f9885a5d48320
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Sep 14 22:52:29 2009 +0300
Don't prefetch from NULL in the SSE2 fast paths.
On an Athlon64 box prefetch from NULL slows down
the rgba OVER rgba fast for predominantly solid sources
by up to 3.5x in the one-rounded-rectangle test case
when run using a tiling polygon renderer. This patch
conditionalises the prefetches of the mask everywhere
where the mask pointer may be NULL in a fast path.
commit 1b5269a585d8dcdb8f5ff9f71113bcf2d5efab26
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Sep 14 06:58:03 2009 -0400
Reformat test/composite.c to follow the standard coding style.
commit 0431a0af6c566c8990c88dc22fd0dc76fdd72cf2
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 18:02:10 2009 +0100
[test] Exercise repeating patterns for composite.
commit c28e39f17a87cdaa7ce43ec99f2f764cc935f484
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 15:04:30 2009 +0100
[build] Add rule to generate asm for inspection.
commit 823bb1a9430bc0c4735ffefbbe19efe45887e32c
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 15:04:54 2009 +0100
[sse2] Don't emit prefetch 0 for an absent mask
commit 8f2daa7ca25de754522abfb9ed1158d090f00780
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 15:07:08 2009 +0100
[test] Add composite test from rendercheck
Iterate over all destination formats for dst, src and composite and
compare the result of all oprators with a selection of colours.
commit cda0ee5165812b86a052ceb01830a1d42d02a03b
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu Aug 27 09:19:14 2009 +0100
build: Suppress verbose compile lines
Compile warnings are being lost in the sea of noise. Automake-1.11 finally
introduced AM_SILENT_RULES to suppress the echoing of the compile line for
every object. Enable this to bring sanity to the pixman build.
commit 56cc06f89b7db733e5036a00df7aea27cf8d0951
Merge: 8aff99e 8035df8
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 16:32:27 2009 +0100
Merge branch '0.16'
Conflicts:
configure.ac
pixman/pixman-sse2.c
commit 8035df8bcb01c2df42b8adf8b96c7ac796f384cc
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Aug 16 12:16:46 2009 +0100
Remove duplicated declaration
The pixman_tranform_pixman_f_transform() declaration is repeated 4 lines
down.
commit 29e22cf38e8abc54b9dddbdeb3909d02866a82a0
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 16:26:29 2009 +0100
Enable component alpha on solid masks.
commit 9fe2628702785e8db45593709c0aec54043a50e7
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sun Sep 13 16:26:52 2009 +0100
[sse2] Bit-reversing typo: src != dst
commit 8aff99e231dcb83fa6c08e760711b0a1e979d012
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Sep 10 21:33:24 2009 -0400
Fix off-by-one error in source_image_needs_out_of_bounds_workaround()
If extents->x2/y2 are equal to image->width/height, then the clip is
still inside the drawable, so no workaround is necessary.
commit fefe2a5d24591846281bb9bf0e85d42822e1716e
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Tue Sep 8 20:06:19 2009 -0400
Remove unused generated libcomp.pc #23801
commit 2186bc89486f9f11161b0db280a869c6849c867e
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Sep 4 14:14:00 2009 +0300
Change CFLAGS order for PPC and ARM configure tests
CFLAGS are always appended to the end of gcc options when compiling
sources in autotools based projects. Configure tests should do the
same. Otherwise build fails on PPC when using CFLAGS="-O2 -mno-altivec"
for example. Similar problem affects ARM.
commit 15304e3cddd6568ba6d5d1d3030568c3db7b05cc
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Sep 2 19:46:47 2009 +0300
ARM: Remove fallback to ARMv6 implementation from NEON delegate chain
This can help to fix build problems with '-mthumb' gcc option in CFLAGS.
ARMv6 optimized code can't be compiled for thumb (because of its inline
assembly) and gets automatically disabled in configure. Reference
to it from NEON optimized code resulted in linking problems.
Every ARMv6 optimized fast path function also has a better NEON
counterpart, so there is no need to fallback to ARMv6. Shorter
delegate chain should additionally result in a bit better performance.
commit 2679d93e22b4f3922a39bc53680f1aab6ea7c73c
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Sep 4 14:14:00 2009 +0300
Change CFLAGS order for PPC and ARM configure tests
CFLAGS are always appended to the end of gcc options when compiling
sources in autotools based projects. Configure tests should do the
same. Otherwise build fails on PPC when using CFLAGS="-O2 -mno-altivec"
for example. Similar problem affects ARM.
commit 91232ee40d8499cb91ad27717f751f15c805b4a6
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Sep 2 19:46:47 2009 +0300
ARM: Remove fallback to ARMv6 implementation from NEON delegate chain
This can help to fix build problems with '-mthumb' gcc option in CFLAGS.
ARMv6 optimized code can't be compiled for thumb (because of its inline
assembly) and gets automatically disabled in configure. Reference
to it from NEON optimized code resulted in linking problems.
Every ARMv6 optimized fast path function also has a better NEON
counterpart, so there is no need to fallback to ARMv6. Shorter
delegate chain should additionally result in a bit better performance.
commit 61b616067c3e8b2ff84fbf57f479a90cc9fa5344
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 23:02:53 2009 +0100
Default to optimised builds when using a Sun Studio compiler.
Autoconf's AC_PROG_CC sets the default CFLAGS to -O2 -g for
gcc and -g for every other compiler. This patch defaults
CFLAGS to the equivalent -O -g when we're using Sun Studio's cc
if the user or site admin hasn't already set CFLAGS.
commit 20acda6fde8441e18aab33980a33b099a16063eb
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 20:27:32 2009 +0100
Work around a Sun Studio 12 code generation bug involving _mm_set_epi32().
Calling a static function wrapper around _mm_set_epi32() when not
using optimisation causes Sun Studio 12's cc to emit a spurious
floating point load which confuses the assembler. Using a macro wrapper
rather than a function steps around the problem.
commit e30c0037d44bf76a26182080be24c7037d7be5b5
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 20:24:04 2009 +0100
Work around differing _mm_prefetch() prototypes on Solaris.
Sun Studio 12 expects the address to prefetch to be
a const char pointer rather than a __m128i pointer or
void pointer.
commit 29e7d6063f7b93dd4fde3d42a2931ec0f55158c3
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 23:02:53 2009 +0100
Default to optimised builds when using a Sun Studio compiler.
Autoconf's AC_PROG_CC sets the default CFLAGS to -O2 -g for
gcc and -g for every other compiler. This patch defaults
CFLAGS to the equivalent -O -g when we're using Sun Studio's cc
if the user or site admin hasn't already set CFLAGS.
commit e7018685f0618640221ebc61446ee98ea3056bbb
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 20:27:32 2009 +0100
Work around a Sun Studio 12 code generation bug involving _mm_set_epi32().
Calling a static function wrapper around _mm_set_epi32() when not
using optimisation causes Sun Studio 12's cc to emit a spurious
floating point load which confuses the assembler. Using a macro wrapper
rather than a function steps around the problem.
commit 04ade7b68c620a62daff6212eee4d1b96bfbc3c9
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Mon Aug 31 20:24:04 2009 +0100
Work around differing _mm_prefetch() prototypes on Solaris.
Sun Studio 12 expects the address to prefetch to be
a const char pointer rather than a __m128i pointer or
void pointer.
commit 698b686d58c510e1b8a9183750d00cbd9ed504b2
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Aug 28 22:34:21 2009 +0300
ARM: workaround for gcc bug in vshll_n_u8 intrinsic
Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject
shift operand having value >= 8, claiming that it is out of
range. So inline assembly is used as a workaround.
commit 3e228377f9e7159a52a3716d8e4930c5a9dbb1af
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Aug 28 22:34:21 2009 +0300
ARM: workaround for gcc bug in vshll_n_u8 intrinsic
Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject
shift operand having value >= 8, claiming that it is out of
range. So inline assembly is used as a workaround.
commit 632125d4108f9a53d625a6b997832fa45a295807
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 08:27:33 2009 -0400
Enable the x888_8_8888 sse2 fast path.
commit b02b644d7017f794be2296c6354e44fd119d2477
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Sep 2 16:09:32 2009 -0400
Set version number to 0.16.1
commit d465f854b3d5f2ffcc122aebfbead2d64cca7169
Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
Date: Tue Sep 1 10:59:05 2009 +0900
Add CPU detection for VC++ x64
VC++ x64 has no inline assembler and x64 mode supports SSE2.
So, it is unnecessary to call cpuid.
commit 097342a65d81fb957dfc17486f615f887540e146
Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
Date: Tue Sep 1 10:59:05 2009 +0900
Add CPU detection for VC++ x64
VC++ x64 has no inline assembler and x64 mode supports SSE2.
So, it is unnecessary to call cpuid.
commit 64085c91b6a1deca4007b18d63b707b896653ee9
Author: Søren Sandmann Pedersen <ssp@dhcp-100-3-19.bos.redhat.com>
Date: Tue Sep 1 08:23:23 2009 -0400
Change names of add_8888_8_8 fast paths to add_n_8_8
The source is solid in those.
commit 7af985a69a9147e54dd5946a8062dbc2e534b735
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 28 08:14:04 2009 -0400
Post-release version bump
commit 57812465bf975e943e78d59dabbd5e6bb2ad87ef
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 28 07:55:30 2009 -0400
Pre-release version bump
commit 9e1a34a0d177e8c2381f419b0a04310da8cdde2b
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Aug 28 06:31:06 2009 -0400
_pixman_run_fast_path: typo
This is one example of a compiler warning that was lost amit the build
noise.
The error here is that in a list of required conditions we used ';'
instead of '&&' with the result of continuing to use the fast-path
even if we had a wide mask.
Another error is that it was testing src, not mask as it should.
commit 83d607cbf1d3852f91b52a427bee30fffc3029e7
Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
Date: Fri Aug 28 04:09:15 2009 -0400
Remove spurious spaces in pixman-x64-mmx-emulation.h
commit ce966f4d8e8aa9a4465e2ab28666bae891194a72
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 12 14:08:58 2009 -0400
Check if we have posix_memalign() in configure.ac. [23260, 23261]
Fall back to malloc() in blitters-test.c if we don't.
commit 29c2ae4a0cf924cb011467687a4c43237fb2316c
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Aug 12 20:22:24 2009 +0300
ARM: a fix to pass blitters-test for 'neon_composite_over_n_8_0565'
Inline assembly for handling <8 pixels width did not pass blitters-test.
Fortunately gcc has no problems compiling alternative implementation
which is using RVCT style intrinsics, so it can be used instead.
commit ed4598f08a359346d14fe5b2bbb7b74c40332b18
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Aug 11 14:03:24 2009 -0400
Post-release version bump
commit bfdae053eaff528aa869bc05a0520ab22d540a08
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Aug 11 13:56:16 2009 -0400
Pre-release version-bump
commit d6016d406a649f7a95bec2a477dfd89ba280188d
Merge: 93923c6 e084351
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Aug 11 02:04:40 2009 -0400
Merge branch 'blitter-test'
commit 93923c626f2df18e29e215410e6d4bb2f5c1616f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Aug 10 20:47:36 2009 -0400
Fix x/y mixup in bits_image_fetch_pixel_convolution()
Bug 23224, reported by Michel Dänzer.
commit e084351b13faad6a3ba67808b5721957b51d16f0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 00:45:53 2009 -0400
Update CRC value in blitters-test.
At this point, the SIMD, SSE2, MMX and general implementations all
agree.
commit ba5c5325e77b36374d3be22bd92816c332a321bb
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 00:25:56 2009 -0400
Various formatting fixes
commit cc5c59b3f25dc595ce17a876e89ca549bb477e46
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 16:28:10 2009 -0400
Add the ability to print intermediate CRC values
commit 0bc4adae3eb758a2cd9026397c284bd6cc7bcd65
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 15:53:33 2009 -0400
Reenable commented-out tests in blitter-test.
The crashes and valgrind issues are all fixed at this point.
commit 9ee18806a944ddde36dc1b045f89f02d025cbe48
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Aug 3 00:01:01 2009 +0300
One more update to blitters-test - use aligned memory
allocations in order in order to make reproducibility
of alignment sensitive bugs more deterministic
Also testing of masks is reenabled
commit 4fc0f9dd456bb4ad1f47e1733b02a3b491f425ed
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sat Aug 1 02:20:12 2009 +0300
HACK: updated test to better cover new neon optimizations
commit 67769ad5bf15450d0fd0d83643e3533a9f563916
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Jul 22 01:29:51 2009 +0300
Test program for stressing the use of different formats and operators
The code and overall method is mostly based on scaling-test. This one
focuses on trying to stress as many different color formats and types
of composition operations as possible.
This is an initial implementation which may need more tuning. Also
not all color format and operator combinations are actually used.
When cpu specific optimizations are disabled, this test provides
identical deterministic results on x86, PPC and ARM.
Script blitters-test-bisect.rb now works in non-stop mode, until
it finds any problem. This allows to run it for example overnight
in order to test a lot more variants of pixman calls and increase
chances of detecting problems in pixman. Just like with scaling-test,
running blitters-test binary alone with no command line arguments
runs a small predefined number of tests and compares checksum
with a reference value for quick verification.
commit 51f597ad3258dd85b4620ac2bf0df8ca2e0ed182
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 12:00:07 2009 -0400
Delete commented out code in pixman-vmx.c
commit a590eabead0a0c405a7293d8689b9992de5a689b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:53:50 2009 -0400
Misc formatting fixes for pixman-vmx.c
commit 0ebb587e2460024fb306597799ae4974441511ec
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:48:22 2009 -0400
In vmx_combine_atop_reverse_ca() extract alpha after inversing
commit 3d2f00783f2972ba5311937057ea8d452f942a36
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:46:09 2009 -0400
Really fix vmx_combine_over_reverse_ca()
The inverse destination alpha is just one component, not four.
commit 2f62a4f46c1e99ddb1b7ca6d5db9410d12f32e63
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:40:42 2009 -0400
Fix vmx_combine_out_reverse_ca()
The source alpha is just one component, not four.
commit 7e58323385e442fb2cea207780db5e30be88be96
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:38:03 2009 -0400
Fix vmx_over_reverse_ca()
Destination alpha must be extracted after inversing, otherwise we end
up with 0xFFs in the rgb channels.
commit 2382bd9e2724944a05ce8a581e9ddc31e299a0c6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:35:20 2009 -0400
Multiply with the alpha of dest, not inverse alpha
commit 498df0f0bf2437130ed305fb757ae0fae90bebb7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:32:31 2009 -0400
Fix vmx_combine_vmx_atop_ca()
It didn't compute the mask correct before.
commit 9650cd7432ef03c05895df04940e2ab6245f2618
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:26:23 2009 -0400
Fix vmx_combine_over_ca().
In the non-vector code, the mask needs to be multiplied with source
alpha.
commit 38b9589fe6b14c822a2a4000df364d132e390f7a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:21:43 2009 -0400
In vmx_combine_out_ca() multiply with the alpha of the negated vdest.
commit de180baba3a3e7eedeb09ff7d5f4d3eff3ffc6f4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:16:31 2009 -0400
Fix vmx_combine_out_ca()
It should multiply with just the destination alpha channel, not all
four channels.
commit 5191421d1f143cca76afa1f4fbffa68f89a5d393
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 11:07:16 2009 -0400
Do the full four-component IN computation in vmx_combine_in_ca().
commit 27fb8378fdae930475cf4528c539a78bfbd751c5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 10:54:16 2009 -0400
Fix bug in vmx_combine_xor_ca()
The destination needs to be inverted before the alpha channel is
extracted; otherwise, the RGB channels of da will be 0xff.
commit c750667d7ac542dfa922a7970961b7095b44b8d3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 01:07:01 2009 -0400
Make pix_multiply bit-exact
commit 6243a0a015043f39531b98b9e8c4167f8bd47d82
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Aug 6 23:50:32 2009 -0400
Change the SSE2 versions of pix_add_multiply() to produce bit-exact results.
commit 404f4a6f3e71de5e411cb3bb1107d8ffb7c52e62
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Aug 6 23:52:11 2009 -0400
Fix a couple of alpha==0 vs src==0 issues in pixman-sse2.c
commit d9f80370a4d2ab54688e75256b3ea4267d8cc602
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Aug 6 23:05:36 2009 -0400
Rename mmx_composite_add_8888_8_8() to mmx_composite_add_n_8_8().
commit 04619c3636697684fdd9ada9842845f6c8dd3914
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Aug 6 22:46:50 2009 -0400
Fix a couple more alpha==0 vs src==0 bugs in pixman-mmx.c
commit a075a870fd7e1fa70ae176d5089c695011667388
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Aug 6 22:42:25 2009 -0400
Make pix_add_mul() in pixman-mmx.c produce exact results.
Previously this routine would compute (x * a + y * b) / 255. Now it
computes (x * a) / 255 + (y * b) / 255, so that the results are
bitwise equivalent to the non-mmx versions.
commit f7463ffafb8876c1f47ed9c527df33d45255e16c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Aug 6 20:29:44 2009 -0400
Rewrite the two-component arithmetic macros.
Previously they were not bit-for-bit equivalent to the one-component
versions. The new code is also simpler and easier to read because it
factors out some common sub-macros.
The x * a + y * b macro now only uses four multiplications - the
previous version used eight.
commit 04ae08992f6381a8ffb50d8cba37753fdb58e3bf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Aug 6 20:41:04 2009 -0400
Fix a bunch of srca == 0 checks that should be src == 0 in pixman-mmx.c
commit 8bb58a3ce83d6b9c1f6796ce8e62450bdaa52cf0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 21:24:50 2009 -0400
Don't run fast paths if the format requires wide compositing.
This could happen because the wide formats would still be considered
solid if the image was 1x1 and repeating.
commit d937b622389797a8c605b2cc50c24ca759dc57d2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 21:16:14 2009 -0400
Fix bug in combine_mask_alpha_ca()
If the mask was 0xffffffff, the source would end up being shifted
twice by A_SHIFT.
commit 0d576b965c34a6d89b00f7b93dba6a7b8737c731
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 20:40:36 2009 -0400
Fix another case of changing the solid source.
This time in fast_path_composite_n_8888_8888().
commit 8b82cbb69197f9c367069a77ba992f3163d40230
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 20:31:41 2009 -0400
Fix incorrect optimization in combine_over_ca().
Previously the code assumed that an alpha of 0 meant that no change
would take place. This is incorrect because an alpha of 0 can happen
as the result of the source having alpha=0, but rgb != 0.
commit ec8b36f01030fd2fa67595f2aef4ca568b060899
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 18:18:37 2009 -0400
Don't change the constant source in fast_composite_over_n_8888_0565.
commit de8fff746bfa80278f85859bef2dc0ab166f7a69
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Aug 5 16:17:52 2009 -0400
Fix bugs in combine_over_reverse_ca().
The computation cannot be optimized away when alpha is 0 because that
can happen when the source has alpha zero and rgb non-zero.
commit 7b1df41b6110424b8dca9fa655dbc8dd95a76882
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 31 17:27:38 2009 -0400
Add a dirty bit to the image struct, and validate before using the image.
This cuts down the number of property_changed calls significantly.
commit 942c4ac28209381668208a39ccc9aec4f11bf63f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 31 10:39:41 2009 -0400
Add sse2 version of add_n_8888_8888()
commit 23d38201165876c031d314f73e09a75afcac4f00
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 31 10:26:10 2009 -0400
Add a fast path for the add_n_8888_8888() operation.
It shows up on gnome-terminal traces.
commit c606a05213d1fe5d73b39454407414a2a245da39
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 31 07:29:31 2009 -0400
Move bounds checks for REPEAT_NONE to get_pixel()
On a P4, this is a large speedup for the swfdec-fill-rate-2xaa trace:
After:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image swfdec-fill-rate-2xaa 33.061 33.061 0.00% 1/1
Before:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image swfdec-fill-rate-2xaa 40.342 40.342 0.00% 1/1
Pixman 0.14.0 produces this:
[ # ] backend test min(s) median(s) stddev. count
[ 0] image swfdec-fill-rate-2xaa 36.896 36.896 0.00% 1/1
commit 1bec3e8395a307812b25fb195823ac7cf2915340
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 30 10:51:38 2009 -0400
Remove leftover 0xffffffff in repeat()
commit 1b98166b016af5fa374ad534d53b772c7fd2c4a5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 30 10:45:18 2009 -0400
Remove unused function
commit 06836d35d26941e826e99fe35e06da50756da641
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 30 10:03:44 2009 -0400
Misc formatting
commit 7c8959ea3b2ff3d3abf995b3feccc677e15b4e27
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 30 09:58:12 2009 -0400
Change all the fetch_pixels() functions to only fetch one pixel.
commit 31096446b6866de0a85ca6eb4fb68a45b21c4b49
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 09:43:12 2009 -0400
Add fetch_pixel_raw_32 and fetch_pixel_32 virtual functions.
By default both are intialized to bits_image_fetch_pixel_raw(), but if
there is an alpha map, then fetch_pixel_32() is set to
bits_image_fetch_pixel_alpha().
commit a233b332cd9408d35e57a400874cca6188347cc2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 09:12:51 2009 -0400
Various renamings and clean-ups
commit 073399b09f073c44dd10b027788c09eddfcdf2e0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 08:58:41 2009 -0400
Change bits_image_fetch_alpha_pixels() to fetch just one pixel.
commit 6d1dfc3945917b507d40f1f3c1b1cf07858d18dd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 08:44:40 2009 -0400
Change bits_image_fetch_pixels_convolution() to fetch just one pixel.
commit b3f849f74f848c407afda1be15b966e1d6eda745
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 08:33:28 2009 -0400
Change bits_image_fetch_bilinear_pixels() to fetch one pixel at a time.
commit a37383a2c646ee10ebe36d03df6bd1c0f8a75052
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 08:03:44 2009 -0400
Make the repeat routine work on only one coordinate at a time.
commit a4f3fd3b2592b1b4791075187016ad444c2d60d4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 07:55:27 2009 -0400
Make bits_image_fetch_nearest() return one pixel.
Previously it would work on a buffer of coordinates.
commit f382865ebe5e1e8d4b5299b908dab9b719fcb8ec
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 07:42:34 2009 -0400
Change bits_image_fetch_transformed() to work one pixel at a time.
Previously, it would generate a buffer of coordinates, then pass that
off to a pixel fetcher, but this caused a large performance regression
with the swfdec-fill-rate-2xfsaa cairo trace.
This is the first step towards fixing that.
commit 4ef2807c3a6697731ada43ddad2fa915ed7cfe11
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 7 00:11:20 2009 -0400
Only define PIXMAN_TIMERS if timers are actually enabled [bug 23169]
commit 9dec2e352b24bdccaac4f570b8cf12e61a9194ee
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 09:58:52 2009 -0400
Various updates to the CODING_STYLE document
commit 2abd56e9e3d012fcb0b7c6d459ed4831464c0f2f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 28 04:05:26 2009 -0400
Add a CODING_STYLE document based on the one from cairo.
commit fdd01bcbd473f7a46c66ce8538657e32400974ed
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 22 04:51:08 2009 -0400
Remove a couple of unused variables
commit 845910c200db3f279229da67fbd330d903776777
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 22 04:32:07 2009 -0400
Rename source_pict_class_t to source_image_class_t
commit edd476d5be8f248ea21d9d80cf1986d0ccdecc3b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 22 04:28:08 2009 -0400
Replace a bunch of 'pict's with 'image'
commit 11d888a2837b3fe309348126b4f7c56df559df4e
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Jul 24 09:36:08 2009 +0100
Explain how we can simplify the radial gradient computation
Soeren rightfully complained that I had removed all the comments from
André's patch, most importantly that explain why the transformation is
valid. So add a few details to show that B varies linearly across the
scanline and how we can therefore reduce the per-pixel cost of evaluating
B.
commit 20d2df03059d6a5941464d80e81e8116ebf4dbfe
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu Jul 23 19:08:40 2009 +0100
Fix inversion of radial gradients when r2 > r1
Fixes: Bug 22908 -- Invalid output of radial gradient
http://bugs.freedesktop.org/show_bug.cgi?id=22908
We also include a modified patch by André Tupinambá <andrelrt@gmail.com>,
to pull constant expressions out of the inner radial gradient walker.
commit 84b7df09394ac7237fb42fe25c0fbde77e065a16
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Jul 23 09:54:49 2009 +0200
Don't warn for empty rectangles, only degenerate ones
commit 1435c8aa3db3b6bde26216e260cc94baba225664
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Jul 21 15:00:52 2009 +0200
Log errors for invalid rectangles passed to region code
commit 1796e6bf17a5d20039e098c4e352cd2765ed444e
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Jul 21 14:57:59 2009 +0200
Simplify code that logs errors
commit 85d56f3f7cb9c90c5af52b28fb6f7c1b14f09f07
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Jul 21 14:50:30 2009 +0200
Make the text when reporting a broken region more useful
commit a77d4ffeb661d4d75109fc368bded26843662259
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 07:24:40 2009 -0400
Post-release version bump
commit f3ac1368775542e09f3741d2ad7b72af20bd9663
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 07:20:57 2009 -0400
Pre-release version bump
commit 7c56911e3b5b97b26dceff9b68d9fed32693d57b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 07:01:10 2009 -0400
Don't assert when malformed regions are detected.
Instead print a message to stderr so that it will end up in the X log
file.
commit f9660ce29ed072c6cbaec711c5d18b9f0ba113ae
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 04:23:56 2009 -0400
Fix another search and replace issue
commit b3196b63274134a594fc091ec2f8be3b44734411
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 04:18:35 2009 -0400
Fix search-and-replace issue pointed out by Koen Kooi.
commit 0ff5733c16804d5b10782556eeeade7061924846
Author: George Yohng <georgefd@oss3d.com>
Date: Tue Jul 21 03:43:42 2009 -0400
Add implementation of MMX __m64 functions for MSVC x64.
Microsoft C++ does not define __m64 and all related MMX functions in
x64. However, it succeeds in generating object files for SSE2 code
inside pixman.
The real problem happens during linking, when it cannot find MMX functions
(which are not defined as intrinsics for AMD64 platform).
I have implemented those missing functions using general programming.
MMX __m64 is used relatively scarcely within SSE2 implementation, and the
performance impact probably is negligible.
Bug 22390.
commit 0b95afd259bb839a026955e7fda15b44fa22a805
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon Jul 20 14:07:18 2009 +0100
Fix read of BITS members from a solid image.
During the fast-path query, the read_func and write_func from the bits
structure are queried for the solid image.
==32723== Conditional jump or move depends on uninitialised value(s)
==32723== at 0x412AF20: _pixman_run_fast_path (pixman-utils.c:681)
==32723== by 0x4136319: sse2_composite (pixman-sse2.c:5554)
==32723== by 0x4100CD2: _pixman_implementation_composite
(pixman-implementation.c:227)
==32723== by 0x412396E: pixman_image_composite (pixman.c:140)
==32723== by 0x4123D64: pixman_image_fill_rectangles (pixman.c:322)
==32723== by 0x40482B7: _cairo_image_surface_fill_rectangles
(cairo-image-surface.c:1180)
==32723== by 0x4063BE7: _cairo_surface_fill_rectangles
(cairo-surface.c:1883)
==32723== by 0x4063E38: _cairo_surface_fill_region
(cairo-surface.c:1840)
==32723== by 0x4067FDC: _clip_and_composite_trapezoids
(cairo-surface-fallback.c:625)
==32723== by 0x40689C5: _cairo_surface_fallback_paint
(cairo-surface-fallback.c:835)
==32723== by 0x4065731: _cairo_surface_paint (cairo-surface.c:1923)
==32723== by 0x4044098: _cairo_gstate_paint (cairo-gstate.c:900)
==32723== Uninitialised value was created by a heap allocation
==32723== at 0x402732D: malloc (vg_replace_malloc.c:180)
==32723== by 0x410099F: _pixman_image_allocate (pixman-image.c:100)
==32723== by 0x41265B8: pixman_image_create_solid_fill
(pixman-solid-fill.c:75)
==32723== by 0x4123CE1: pixman_image_fill_rectangles (pixman.c:314)
==32723== by 0x40482B7: _cairo_image_surface_fill_rectangles
(cairo-image-surface.c:1180)
==32723== by 0x4063BE7: _cairo_surface_fill_rectangles
(cairo-surface.c:1883)
==32723== by 0x4063E38: _cairo_surface_fill_region
(cairo-surface.c:1840)
==32723== by 0x4067FDC: _clip_and_composite_trapezoids
(cairo-surface-fallback.c:625)
==32723== by 0x40689C5: _cairo_surface_fallback_paint
(cairo-surface-fallback.c:835)
==32723== by 0x4065731: _cairo_surface_paint (cairo-surface.c:1923)
==32723== by 0x4044098: _cairo_gstate_paint (cairo-gstate.c:900)
==32723== by 0x403C10B: cairo_paint (cairo.c:2052)
commit c7b84f8b043018368fade4ad13730cfcaaf5c8cc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 00:17:15 2009 -0400
Only apply the workaround if the clip region extends beyond the drawable.
This works because the X server always attempts to set a clip region
within the bounds of the drawable, and it only fails at it when it is
computing the wrong translation and therefore needs the workaround.
commit 6bd17f1e9861693262fa88bfeff5d3279b3f6e7d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 20 23:46:06 2009 -0400
Rework the workaround for bogus X server images.
Bug 22844 demonstrates that it is not sufficient to play tricks with
the clip regions to work around the bogus images from the X
server. The problem there is that if the operation hits the general
path and the destination has a different format than a8r8g8b8, the
destination pixels will be fetched into a temporary array. But because
those pixels would be outside the clip region, they would be fetched
as black. The previous workaround was relying on fast paths fetching
those pixels without checking the clip region.
In the new scheme we work around the problem at the
pixman_image_composite() level. If an image is determined to need a
work around, we translate both the bits pointer, the coordinates, and
the clip region, thus effectively undoing the X server's broken
computation.
commit dfdb8509e2160a0db7d72e775dd348090e6fb968
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 20 22:45:47 2009 -0400
Add test case for bug 22844.
commit 96340123eba05bff85433bb2db3a7ad80c8e57ba
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 21 01:24:43 2009 -0400
Fix typo in sse2_combine_over_pixbuf_0565()
commit 767542cfb955ba22dad1259eff8a2fe16e7b8ba4
Author: Adrian Bunk <adrian.bunk@movial.com>
Date: Mon Jul 20 20:16:32 2009 -0400
Fix NEON build for older ARM CPUs
The pld instruction used in the NEON assembler code is only available
for ARMv5e and >= ARMv6.
Set -mcpu=cortex-a8 when compiling the source file (similar to what is
already done for the SIMD build).
commit 184cd80aa46dd9d8bd023d3b70a345330b72d7e7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 20 19:56:46 2009 -0400
Some formatting changes to pixman-arm-neon.c
commit 5d2c527a2234d34b6269c561b08ebcaabf0b3ea3
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 17 13:03:21 2009 +0300
ARM: Fixes for the inline assembly constraints in pixman_fill_neon
Some of the variables in the inline assembly arguments list are
actually modified by the assembly code, they are now marked
appropriately.
commit c27a60f94cea7deb0afb21e734c892d475bfa06d
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 17 12:54:44 2009 +0300
ARM: Workaround cs2007q3 compiler bug for NEON registers clobber list
128-bit registers "qX" are incorrectly handled in inline assembly
clobber list for codesourcery cs2007q3 gcc toolchain. Only the
first 64-bit half is saved and restored by gcc. Changing clobber
list to use only 64-bit register aliases can solve this problem.
For example, 128-bit register q0 is mapped to two 64-bit
registers d0 and d1, q1 is mapped to d2 and d3, etc.
commit cb4a5fd18f20f49ed2721f04a886c2ffd1645d09
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 17 00:11:14 2009 +0300
ARM: Commented out the rest of buggy NEON optimizations
These functions have problems with invalid memory accesses and often
crash X server
commit 1aee6813ac45e6b206522623f58f1110a54186b1
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 17 00:08:42 2009 +0300
ARM: Use Ian's variant of 'neon_composite_over_n_8_0565' function again
This patch effectively reverts the changes done by commit
8eeeca993252edc39da9c5c57545b81215fafc81 which was causing
severe stability issues, and restores old variant of
'neon_composite_over_n_8_0565' function, which used to work
correctly.
commit 2356ba38fd0c0002be4484adb8ca51de32b2ff81
Author: Miha Vrhovnik <miha.vrhovnik@cordia.si>
Date: Mon Jul 20 19:30:59 2009 -0400
Update Makefile.win32 to make it work again.
commit d4b22bd9935662912641abe5fd010d906c839405
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Jul 21 00:49:40 2009 +0200
Add a lot more sanity checks to region code
- Introduce a GOOD_RECT() macro that checks that a pixman_box_t is not
empty or degenerate an use it.
- Use GOOD_RECT() instead of magic if statements for funtions that take
x, y, width, height arguments
- Use GOOD_RECT() in _reset(). The checks in the previous code seemed to
allow an empty box, but then created a broken region from it.
- Add GOOD(region) check at the end of _translate()
commit a3ad8bb5412f47776285bfc954d2275f075c8796
Author: Benjamin Otte <otte@gnome.org>
Date: Mon Jul 20 23:38:36 2009 +0200
Handle degenerate case in pixman_init_extents()
Create an empty region instead
commit 854ec2ea4d0fc940e91c4ec1c419fb4e5635dc95
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 19 12:29:42 2009 -0400
Replace // comments with /* */ comments in various places
commit 54cad29dc55fc0a670bf87abacd5f45e1289db54
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jul 18 17:59:43 2009 -0400
Align the stack in _pixman_implementation_create_sse2()
When compiled without optimization, GCC will place various temporaries
on the stack. Since Firefox sometimes causes the stack to be aligned
to four bytes, this causes movdqa to generate faults.
commit 6aa26296f5831bddc9b3f3e3e2ea018fc0cefb75
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Sun Jul 19 18:20:53 2009 +0300
Check whether the linker understands the hwcap file before using it.
If we're trying to use the GNU linker on Solaris we shouldn't use
our solaris-hwcap.mapfile since it doesn't grok the mapfile format.
commit 934f4f4604ccf06db5d5aec07e58f0a0fbe7d283
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 17 22:40:41 2009 -0400
Move read and write functions to the bits_image_t struct.
Those fields were duplicated between image_common and bits_image_t
before.
commit 737d00063e8b8aaeaab9aecd0fbe731e8ab3f6b3
Author: Benjamin Otte <otte@gnome.org>
Date: Fri Jul 17 16:01:59 2009 +0200
Handle degenerate case in pixman_init_rect()
Create an empty region in that case.
commit e3a6df08a4bedfe82a8d3a7c1143e4db00a18d27
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 17 06:43:35 2009 -0400
Add back check for need_workaround that got removed during reindenting
commit ecc54a7f02dbb6f57043e51173584f96c42fd2cc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 16 10:38:22 2009 -0400
Fix combine_src_ca() to fill out all of the destination line.
commit 4df925bb28196974617804d680380522c048dedd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 16 09:34:22 2009 -0400
Change composite test to use a rainbow gradient as source.
Also make the destination a yellow patch. This makes the output a bit
more comparable to the image in the PDF specification.
commit 4f369faffa7670e0e57c83c298359992223a998b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 16 06:23:25 2009 -0400
Various minor formatting changes
commit 3d3baa3c5e76a4f851614a7794d92d15a56ac04e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 16 06:06:17 2009 -0400
Change name of macro from RGB16_TO_ENTRY to RGB15_TO_ENTRY
commit 12e829a8de1e45708b5dfeaa8137af6eeaf0f662
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Jul 16 15:33:43 2009 +0200
Clarify color burn code - no semantical changes
- Improve documentation to be equal to Proposed ISO32000 Extension
- Simplify code in default case
commit acf5738a82afb51a2284f5e61d9fac8dae7a47d5
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Jul 16 15:28:05 2009 +0200
Clarify color dodge code - no semantical changes
- Improve documentation to be equal to Proposed ISO32000 Extension
- Simplify code in default case
commit 3dafe926b2405ba3404a41bb5b2842413308c8fa
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Jul 16 15:02:51 2009 +0200
Fix terms in comments describing the blend modes
commit 90ac94b9cb3defa8bf174af8c7c9fc6c42e8762b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 14 18:49:43 2009 -0400
Add -fno-strict-aliasing
commit 268561a3c674c5a4da945124b7b8f075b792a170
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 22:22:20 2009 -0400
Post-release version bump
commit 466cf2b4452ec9bf4fa17cbf2186f5c472b66c26
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 22:00:52 2009 -0400
Pre-release version bump
commit 83f6e2eacff826ef9dbdefb95fcb76fa1247ac4e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 19:58:04 2009 -0400
Reindent and rename identifiers in scaling-test.c
commit 9a6ad34810421a30250ef331fb75b2a48ce9e564
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 02:37:19 2009 -0400
Reformat pixman.h
commit 22f322fe246155d40465d4e14d65051a204f27f6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 01:35:15 2009 -0400
Reindent and reformat pixman-private.h
commit b4d196009881a4121b49996bdc87f7770bfa5c1b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 01:17:53 2009 -0400
Reindent and reformat pixman-combine.h.template
commit f54c776e75a44a095304dd7374384a2a0c96d479
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 01:13:47 2009 -0400
Reindent and reformat pixman-combine.c.template
commit d57b55bb2662837feafb4f9f88d10549164ee142
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 22:05:32 2009 -0400
Reindent and reformat pixman-vmx.c
commit 01b604c606cd0842c8f4eccc41511a472e4450e9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 21:57:08 2009 -0400
Reformat and reindent pixman-utils.c
commit 1d52ecbbe04c810d3f30e7915663b2cd21befcba
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 21:40:41 2009 -0400
Reformat and reindent pixman-trap.c
commit c1178e49417bbea7f91b23f71c9ba957500da0ff
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 21:37:16 2009 -0400
Reformat pixman-timer.c
commit 74774bad001504b4b2283689b6b55e21fa943dd8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 21:36:32 2009 -0400
Reformat and reindent pixman-sse2.c
commit 7dc3593d8172e292b39a7d6cc7772fcf9a04bb1f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 20:31:26 2009 -0400
Reformat and reindent pixman-solid-fill.c
commit 3db9f5ff6e32c353cff640d3504eb54bd2a69ed3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 20:30:44 2009 -0400
Reformat and reindent pixman-region.c
commit 317df68e94498b6a287eb736a6e5991e8b7d2d78
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:59:17 2009 -0400
Reindent and reformat pixman-radial-gradient.c
commit 8820c81b50299f13791594fe6ddd01d536745231
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:37:45 2009 -0400
Reindent and reformat pixman-mmx.c
commit c68283360d2e5917f15bddc0a14aa7a1c1b3852e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:24:31 2009 -0400
Reindent and reformat pixman-matrix.c
commit 19397bc732b30a861416220974edca6404d2890b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:19:13 2009 -0400
Reindent and reformat pixman-linear-gradient.c
commit e8e08b35e7a8d221378e3a411efdfad74b1614e3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:15:17 2009 -0400
Reindent and reformat pixman-implementation.c
commit 2c74165179b07f31b82402d74dc9fbaf8bf52191
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:13:17 2009 -0400
Reindent and reformat pixman-image.c
commit 5aadc28e19328054b15c7ee88996c407a9a7d9b3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:10:53 2009 -0400
Reindent and reformat pixman-gradient-walker.c
commit ac043ac2da643d872f519971a316f8bc6bdca0f8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:09:24 2009 -0400
Reindent and reformat pixman-general.c
commit 7b3f5fdc571e8d6b4d64f950f2578d47b1056c86
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:06:30 2009 -0400
Reindent and reformat pixman-fastpath.c
commit c332e229bb274447b8b46c8f8ba7bce8cfaa21b2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 19:02:29 2009 -0400
Reindent and reformat pixman-edge.c
commit 4ba9a44e8f4098fc61bfb62650c521b2e37cf9cb
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 18:59:10 2009 -0400
Reindent and reformat pixman-cpu.c
commit e01fc6bba7f90c80e86b206f28efa3f1f94a083b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 18:55:45 2009 -0400
Reindent and reformat pixman-conical-gradient.c
commit 2871add52ece8bc4a02c0f4fae98912a0f4a830c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 18:54:31 2009 -0400
Reindent and reformat pixman.c
commit 0e6e08d380a16f8804706270e74f66960a681167
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 18:52:33 2009 -0400
Reindent and reformat pixman-bits-image.c
commit 89eda86549e8cf938556b1a238960f2fbb7b911c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 18:45:56 2009 -0400
Reindent and reformat pixman-arm-simd.c
commit 9a26a60a233955aadab65fde5bf31fc0199663ea
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 18:42:31 2009 -0400
Reindent and reformat pixman-arm-neon.c
commit 0af8ef742c6e1aa150b591bc7cdacb8d2293f7af
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 18:04:21 2009 -0400
Reindent and reformat pixman-access.c.
commit be3a1b04ae9ef52f60fa1c6423d743b628aa57ca
Author: Benjamin Otte <otte@gnome.org>
Date: Mon Jul 13 18:02:09 2009 -0400
Fix burn and dodge operators to match acroread output
commit 7dc2c48bcab7404ace9b41959e2233d0025801b3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 05:58:43 2009 -0400
Return immediately if the operator is CONJOINT_DST or DISJOINT_DST
These are noops just like plain DST is.
commit bb383def00b3d30d991295274b58a841a7162620
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 05:39:40 2009 -0400
Fix bits_image_fetch_{un}transformed() for 64 bit buffers.
The buffer pointer has to advance twice as far as in the 32 bit case.
commit c88b75d24c6fc618d638373dce5e5f0281de1f40
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 04:43:37 2009 -0400
Make sure we get all 64 bits in bits_image_fetch_solid_64()
Previously we would only store the first 32 bits.
commit f73ecb3f0ff516e4411de9a2738b8851e679a163
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 13 04:04:59 2009 -0400
Fix typo in bits_image_fetch_solid_64().
Found by blitters-test.
commit 03c6b294a4517f5dfbc87504fceb3a88efef6a17
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 12 03:55:23 2009 -0400
Only destroy the regions when pixman_compute_composite_region() returns TRUE
commit 2af5f64e938f0d3b81f3f014441cdff650fe5457
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jul 11 03:25:25 2009 -0400
Move workaround logic to pixman-bits-image.c.
Instead of computing whether a workaround is needed on every call to
_pixman_run_fast_path(), just cache this information in the image.
Also, when workarounds are needed, clip against the source geometry to
prevent out of bound reads.
commit 5088ca8d97c9c918746c3e261a31b6edab6c964b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 10 18:18:00 2009 -0400
Only apply the workaround to source images when out_of_bounds_workaround is set.
Pointed out by Siarhei Siamashka.
commit 51418786e4cba2e8fbb44052fbed2f107244b733
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 10 13:50:15 2009 -0400
Return nonzero code from scaling-test program in case of failure.
This can potentially help in tests automation.
commit 71862fe84e5eeb0b178ed3a7dec8430d506b8515
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Fri Jul 10 11:49:53 2009 +0300
Fix scaling-test to work on big endian systems
commit 0f8c5d2fd447d2d9a0350c33715f140ab0dac452
Author: Michel Dänzer <daenzer@vmware.com>
Date: Fri Jul 10 11:28:11 2009 +0200
Convert some leftover instances of Alpha() in pixman-vmx.c.
They were probably missed due to the space before the parens.
commit 0fce356762864572ae126733f657600fbb9116ce
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 9 01:35:11 2009 -0400
Add workarounds for X servers doing out-of-bounds accesses.
Old X servers rely on out-of-bounds accesses when they are asked
to composite with a window as the source. They create a pixman image
pointing to some bogus position in memory, but then they set a clip
region to the position where the actual bits are.
Due to a bug in old versions of pixman, where it would not clip
against the image bounds when a clip region was set, this would
actually work.
The workaround added by this commit is to try and detect whether a
source drawable is actually a window without a client clip set. Such a
window will generally have a clip region that corresponds exactly to
the hierarchy clip in the server, whereas pixmaps will have a clip
region that is an exact match to the drawable.
When we detect such a window, we allow a fast path to run that would
normally be rejected due to the sources not completely subsuming the
composite region.
Fixed X servers should call the new function
pixman_disable_out_of_bounds_workaround() to disable the workaround.
This was reported in bug 22484.
commit 61254a3c09497214a9c7ca89e275286533a3be2e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 9 23:17:56 2009 -0400
Add a BUILT_SOURCES with pixman-combine{32,64}.{c.h}
Bug 22681.
commit 34ec50a4761cab50c6216b08ef5cfb36bf94209e
Author: Adrian Bunk <adrian.bunk@movial.com>
Date: Fri Jul 10 00:11:15 2009 +0300
Fix the NEON build after "Convert CamelCase names to underscore_names."
This patch fixes the following build error caused
by commit a98b71eff4041df58c9dcc2b1e25cefa38f364ff
(Convert CamelCase names to underscore_names.):
<-- snip -->
...
pixman-arm-neon.c: In function 'neon_composite_over_n_8_0565':
pixman-arm-neon.c:1784: error: 'x_dst' undeclared (first use in this function)
pixman-arm-neon.c:1784: error: (Each undeclared identifier is reported only once
pixman-arm-neon.c:1784: error: for each function it appears in.)
pixman-arm-neon.c:1785: error: 'p_dst' undeclared (first use in this function)
pixman-arm-neon.c: In function 'neon_composite_over_n_0565':
pixman-arm-neon.c:1937: error: 'x_dst' undeclared (first use in this function)
pixman-arm-neon.c:1938: error: 'p_dst' undeclared (first use in this function)
pixman-arm-neon.c: In function 'neon_composite_over_8888_0565':
pixman-arm-neon.c:2074: error: 'x_dst' undeclared (first use in this function)
pixman-arm-neon.c:2075: error: 'p_dst' undeclared (first use in this function)
make[3]: *** [libpixman_arm_neon_la-pixman-arm-neon.lo] Error 1
...
<-- snip -->
commit 6b34482870fd53a9285f795f47656ac73fd706b0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 9 04:04:00 2009 -0400
Update the CRC value in scaling-test.c.
The changes in pixman behavior justifying this are:
- New clipping rules
- Bug fixes in region code. In particular, when
pixman_region_init_rects() is called on these two boxes:
{ 2, 6, 7, 6 }
{ 4, 1, 6, 7 }
it now ignores the first one, which is empty and produces
{ 4, 1, 6, 7 }
Previously, it would produce:
{ 2, 1, 7, 7 }
for some reason.
commit 4c60ed5ec662e2d7088a7800dd7c71d3926c42a4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 9 04:00:19 2009 -0400
Fix bug in pixman-region.c where empty regions would not be properly initialized.
Also add a couple more tests to region-test.c.
commit bcf01c21d704717264011182e71cfaaf6922a437
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jul 9 01:47:19 2009 -0400
Fix a couple of problems with the tests when HAVE_GTK is not defined.
- Make sure the non-gtk+ test programs are added to noinst_PROGRAMS
when HAVE_GTK is not set.
- Don't include glib.h in oob-test.c
commit 0db0430d1d410855863e669f0de9e8b5d26db7fd
Merge: 31a40a1 b3cf3f0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 8 18:59:15 2009 -0400
Merge branch 'naming'
commit 31a40a172591ab373add9dd41a52881bea9dc6f2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 8 18:41:41 2009 -0400
Eliminate boxes with x1 > x2 or y1 > y2 in pixman_region_init_rects().
commit 706e6594310a490956d21e939c23de2b5dbe1561
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 8 18:39:43 2009 -0400
Add a box with y2 < y1 in region-test.c
commit b3cf3f0c2be462cd61e63e07655d1b45e55f4a7b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 6 20:33:05 2009 -0400
Fix up some overeager search-and-replace renamings
commit c2e331693d858c01b69135342c139546780b7021
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 6 12:48:59 2009 -0400
Rename num_rects back to numRects.
The name numRects is public API and can't be changed.
commit 8261b4d57cfdf77d7fdd4e4c0fc805ba48f7e0a0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 02:12:21 2009 -0400
Rename combine_*_c to combine_*_ca
s/combine_(.+)_c([^a-z0-9A-Z])/combine_$1_ca$2/g;
commit 3c03990ba214bff000d3494587353b94f9432453
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 01:42:28 2009 -0400
Various sse2 renamings
commit 9d0be1d4c81153ef2407518f605bc55380485955
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 01:38:10 2009 -0400
s/sse2combine/sse2_combine/g
commit a98b71eff4041df58c9dcc2b1e25cefa38f364ff
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 01:35:14 2009 -0400
Convert CamelCase names to underscore_names.
s/sizeRI/size_ri/g;
s/numRI/num_ri/g;
s/RepeatNone/REPEAT_NONE/g;
s/fbOver/over/g;
s/fbIn/in/g;
s/iSrc/src_image/g;
s/iMask/mask_image/g;
s/iDst/dest_image/g;
s/SaDa/Sa.Da/g;
s/FbMaskBits/MASK_BITS/g;
s/RenderSamplesX/RENDER_SAMPLES_X/g;
s/MMXData/mmx_data_t/g;
s/RegionInfo/region_info_t/g;
s/([^0x])([a-z])([A-Z])/$1$2_\l$3/g;
s/([^0x])([A-Z])([A-Z])([a-z])/$1$2_\l$3$4/g;
s/([^0x])([A-Z])([a-z]+)_([a-z])/$1\l$2$3_$4/g;
s/([a-z])_([A-Z])/$1_\l$2/g;
s/su_sE/SuSE/g;
s/X_Free86/XFree86/g;
s/X_free86/XFree86/g;
s/_ULL/ULL/g;
s/_uLL/ULL/g;
s/U_nc/UNc/g;
s/combine ##/combine_ ##/g;
s/## U/## _u/g;
s/## C/## _c/g;
s/UNc_aDD/UNc_ADD/g;
s/BLEND_MODE \((.+)\)/BLEND_MODE (\l$1)/g;
s/blend_(.+)/blend_\l$1/g;
s/AN_ds/ANDs/g;
s/O_rs/ORs/g;
s/over565/over_565/g;
s/8pix/8_pix/g;
s/Over565/over_565/g;
s/inU/in_u/g;
s/inPart/in_part/g;
s/inC/in_c/g;
s/inreverse/in_reverse/g;
s/get_exception_code/GetExceptionCode/g; # GetExceptionCode is WinCE API
s/CP_us/CPUs/g;
s/authentic_aMD/AuthenticAMD/g;
s/op_sR_cx_mAS_kx_dST/op_src_mask_dest/g;
s/no_VERBOSE/noVERBOSE/g;
s/mc_cormack/McCormack/g;
s/r1band/r1_band/g;
s/r2band/r2_band/g;
s/as GOOD things/as good things/g;
s/brokendata/broken_data/g;
s/X_render/XRender/g;
s/__open_bSD__/__OpenBSD__/g;
s/^Quick/quick/g;
s/NextRect/next_rect/g;
s/RectIn/rect_in/g;
s/pboxout/pbox_out/g;
s/F_sorted/FSorted/g;
s/usse2/u_sse2/g;
s/csse2/c_sse2/g;
s/cPixelsse2/c_pixel_sse2/g;
s/Mask565/mask_565/g;
s/565fix_rB/565_fix_rb/g;
s/565fix_g/565_fix_g/g;
s/565r/565_r/g;
s/565g/565_g/g;
s/565b/565_b/g;
s/uPixelsse2/u_pixel_sse2/g;
s/Mask00ff/mask_00ff/g;
s/Mask0080/mask_0080/g;
s/Mask0101/mask_0101/g;
s/Maskffff/mask_ffff/g;
s/Maskff000000/mask_ff000000/g;
s/load128Aligned/load_128_aligned/g;
s/load128Unaligned/load_128_unaligned/g;
s/save128Aligned/save_128_aligned/g;
s/save128Unaligned/save_128_unaligned/g;
s/fillsse2/fill_sse2/g;
s/unpack565/unpack_565/g;
s/pack565/pack_565/g;
s/bltsse2/blt_sse2/g;
s/x565Unpack/x565_unpack/g;
s/r1End/r1_end/g;
s/r2End/r2_end/g;
s/argb8Pixels/argb8_pixels/g;
commit 437ab049872063c78ee934766596dc6859749a3d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 01:34:07 2009 -0400
Remove reference to 8888_RevNP
commit 55e63bd0f09290cf1165030edbb4e92efb09ee6e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:55:45 2009 -0400
Remove reference to 8888RevNP
commit 01994a59ca642f4e5ce126d3ad01e864d3daa0bb
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:41:53 2009 -0400
NoFeatures => NO_FEATURES
commit 309d358ea673b5d4c163670c3c449fb855df7775
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:31:07 2009 -0400
s/FbScrRight/SCREEN_SHIFT_RIGHT/g
commit 71fe4e3e5c64f177a8756e51eddc190b3a08ea40
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:26:30 2009 -0400
CPUFeatures => cpu_features
commit 255ddbe5358b0ed4a7a01ef0ab127833dba94b02
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:19:18 2009 -0400
Rename FbGet8 to GET8
commit 446276c36fd336531745fc1427c4af2ccdbe9875
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:11:57 2009 -0400
Rename RBmask/Gmask => rb_mask/g_mask in pixman-arm-neon.c
commit 412b4b50f7bd8ac29e4c9b20e613154c1b5e371a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:06:59 2009 -0400
Use ALPHA_8 in pixman-image.c instead of Alpha
commit 887383b0adab89bcc131a9a28c4d60af9e4773d1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:05:42 2009 -0400
Uppercase a few more macros in pixman-combine.c.template
commit 4153361c52f332bce9e9cc32adf1e01064014e15
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:02:45 2009 -0400
Rename macros for non-separable blend modes
Lum => LUM
Sat => SAT
Min => CH_MIN
Max => CH_MAX
commit 68405c326db4cd087bdb6290ae42953a98b81838
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jul 4 23:45:01 2009 -0400
Rename some macros in pixman-combine.c.template
s/Combine([AB])([a-zA-Z]+)([^a-zA-Z])/COMBINE_$1_\U$2$3/g;
s/CombineA/COMBINE_A/g;
s/CombineB/COMBINE_B/g;
s/CombineXor/COMBINE_XOR/g;
s/CombineClear/COMBINE_CLEAR/g;
commit 835520b28ff1412bd9b00460a107e72c9ea21e35
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jul 4 23:24:27 2009 -0400
Rename U{no}mask => U_{no_}mask in pixman-vmx.c
commit f9bdd1a82c7629a360109bdf4519c73ba5a99225
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jul 4 23:13:55 2009 -0400
Change name fbComposeGetStart to PIXMAN_IMAGE_GET_LINE.
commit e064aa761831296c8570e0fdfaa0c3585c4a3871
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jul 4 23:12:18 2009 -0400
Rename fbCombine* to combine*
s/fbCombine/combine/g;
commit f61855e186519a490b5d013d2de67dcc8da7a0ac
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 12:51:28 2009 -0400
Fix overeager search and replace
commit 1de32ae2ef8044b349f3ec87ae339fdcedeb83ef
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 12:07:56 2009 -0400
Uppercase some more macro names
commit 47296209dae2e3d33426532a3e896e06373fc088
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 11:40:21 2009 -0400
Consolidate channel macros in pixman-combine.h
There are now RED_8/RED_16 etc. macros instead of the old Red/Green/Blue.
commit 2f3e3d62f7727a652090ea003c98218f3b550818
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 11:17:28 2009 -0400
Change some macro names to be all uppercase
commit 8339a4abc4edcaee6fafbde1a147ba7fcaa9c108
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 09:29:32 2009 -0400
Change names of the FbByte* macros to be more descriptive.
But also more cryptic unfortunately. For example FbByteMul() becomes
UN8x4_MUL_UN8() to indicate that it multiplies 4 UN8 numbers with one
UN8 number.
commit e7f162a5a81221ca6abca79a9a77924d39bf4e16
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 08:42:19 2009 -0400
Clarify a couple of comments
commit b02c33e7da3eb733ca4ada66a6c35b293a191144
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 08:30:36 2009 -0400
Change name of macros that operate on normalized integers.
For example IntMul becomes MUL_UN8 to indicate that it multiplies two
unsigned normalized 8 bit integers.
commit d4a366193b12cf241980a621a15ec0ee67e8f6bb
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 08:10:20 2009 -0400
Fix names in the trap rasterizer.
s/Shift4/SHIFT_4/g;
s/Get4/GET_4/g;
s/Put4/PUT_4/g;
s/DefineAlpha/DEFINE_ALPHA/g;
s/AddAlpha/ADD_ALPHA/g;
s/StepAlpha/STEP_ALPHA/g;
s/add_saturate_8/ADD_SATURATE_8/g;
s/RenderEdgeStepSmall/RENDER_EDGE_STEP_SMALL/g;
s/RenderEdgeStepBig/RENDER_EDGE_STEP_BIG/g;
s/fbRasterizeEdges/b00_re/g;
s/rasterizeEdges/RASTERIZE_EDGES/g;
s/b00_re/rasterize_edges_/g;
commit bcdf0861be346a8a4662376f4305474da9236163
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 08:02:45 2009 -0400
Rename QuadwordCopy_neon to neon_quadword_copy
s/QuadwordCopy_neon/neon_quadword_copy/g;
commit a08548bd5275c69c1e7a7fd894a844ad6ad59638
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 08:00:56 2009 -0400
Fix up the names in pixman_compute_composite_region()
s/miClipPictureSrc/clip_source_image/g;
s/miClipPictureReg/clip_general_image/g;
commit e27b2a1fcc890d3abf272cc27fa2c0a2e8d7ab09
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 07:59:10 2009 -0400
Fix some more pFoo names
s/([^a-z])pReg/$1region/g;
s/([^a-z])pY/$1y_line/g;
s/([^a-z])pU/$1u_line/g;
s/([^a-z])pV/$1v_line/g;
s/([^a-z])p([A-Z])/$1\l$2/g;
commit 006f21b02b23e1865c0e35d0f9b97af63f52a469
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 07:54:10 2009 -0400
Fix the names of some common parameters
s/xDst/dest_x/g;
s/yDst/dest_y/g;
s/xMask/mask_x/g;
s/yMask/mask_y/g;
s/xSrc/src_x/g;
s/ySrc/src_y/g;
commit d2a4281376786fc7f31f7367807c7caa8a99d414
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 07:46:11 2009 -0400
Various simple renamings
s/CvtR8G8B8toY15/CONVERT_RGB24_TO_Y15/g;
s/cvt8888to0565/CONVERT_8888_TO_0565/g;
s/cvt0565to0888/CONVERT_0565_TO_0888/g;
s/miIndexToEnt15/RGB16_TO_ENTRY/g;
s/miIndexToEnt24/RGB24_TO_ENTRY/g;
s/miIndexToEntY24/RGB24_TO_ENTRY_Y/g;
s/miCvtR8G8B8to15/CONVERT_RGB24_TO_RGB15/g;
s/is_same/IS_SAME/g;
s/is_zero/IS_ZERO/g;
s/is_int([ (])/IS_INT$1/g;
s/is_one/IS_ONE/g;
s/is_unit/IS_UNIT/g;
s/Fetch4/FETCH_4/g;
s/Store4/STORE_4/g;
s/Fetch8/FETCH_8/g;
s/Store8/STORE_8/g;
s/Fetch24/fetch_24/g;
s/Store24/store_24/g;
s/_64_generic/64_generic/g;
s/64_generic/_generic_64/g;
s/32_generic_lossy/_generic_lossy_32/g;
s/PdfSeparableBlendMode/PDF_SEPARABLE_BLEND_MODE/g;
s/PdfNonSeparableBlendMode/PDF_NON_SEPARABLE_BLEND_MODE/g;
s/([^_])HSL/$1Hsl/g;
s/Blend/blend_/g;
s/FbScrLeft/SCREEN_SHIFT_LEFT/g;
s/FbScrRigth/SCREEN_SHIFT_RIGHT/g;
s/FbLeftMask/LEFT_MASK/g;
s/FbRightMask/RIGHT_MASK/g;
s/Splita/SPLIT_A/g;
s/Split/SPLIT/g;
s/MMX_Extensions/MMX_EXTENSIONS/g;
commit 1c5774bf6d39e7b349c03866c96811ee1754c9d7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 07:35:40 2009 -0400
Get rid of pFoo names.
s/([^o])pSrc/$1src_image/g;
s/([^o])pDst/$1dst_image/g;
s/([^o])pMask/$1mask_image/g;
s/pRegion/region/g;
s/pNextRect/next_rect/g;
commit e3489730c317061a2cd888b927d36bda0590a3f2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 07:30:47 2009 -0400
Change the name of some routines that were simply misnamed.
s/Src_pixbuf/_over_pixbuf/g;
s/Src_x888_n/_over_x888_n/g;
s/CompositeSrc_8888_8888/composite_over_8888_8888/g;
s/CompositeSrc_8888_0565/composite_over_8888_0565/g;
s/CompositeSrc_8888_8_8888/composite_over_8888_n_8888/g;
commit 90cac1115551c0fd70ace419179bcf2a30d6b1c2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 28 21:06:01 2009 -0400
Fix up names of compositing functions
s/SrcAdd/Add/g;
s/SolidMaskSrc/Src/g;
s/SolidMaskIn/In/g;
s/SolidMask/Over/g;
s/Solid_n/Over_n/g;
s/SrcIn/In/g;
s/(fb)(Composite.*)sse2/sse2_$2/g;
s/(fb)(Composite.*)mmx/mmx_$2/g;
s/(fb)(Composite.*)neon/neon_$2/g;
s/(fb)(Composite.*)arm/arm_$2/g;
s/(fb)(Composite.*)vmx/vmx_$2/g;
s/(fb)(Composite.*)/fast_$2/g;
s/b8g8r8x8/f00bar/g;
s/8888C/8888_ca/g;
s/0565C/0565_ca/g;
s/8888RevNPx/pixbuf_x_/g;
s/8x0/8_x_0/g;
s/00x8/00_x_8/g;
s/8x8/8_x_8/g;
s/8x8/8_x_8/g;
s/nx8/n_x_8/g;
s/24x16/24_x_16/g;
s/16x16/16_x_16/g;
s/8xx8/8_x_x8/g;
s/8xn/8_x_n/g;
s/nx0/n_x_0/g;
s/_x_/_/g;
s/f00bar/b8g8r8x8/;
# Fix up NEON type names
s/uint8_8/uint8x8/g;
commit e987661667ac5c650af1c3a2ba173558ff287e06
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 28 20:45:58 2009 -0400
Rename fetchers.
s/fbFetchPixel/fetch_pixels/g;
s/fbFetch/fetch_scanline/g;
s/fbStore/store_scanline/g;
commit 2d32d91e5d89bb04fcbaffb23244a9f023d39239
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 8 00:38:28 2009 -0400
Use postfix decrement, not prefix, in region-test.c
commit 4e41905bacbf533740e999ba79e0620f358c0597
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jul 8 00:08:49 2009 -0400
Eliminate empty rectangles in pixman_region_init_rects().
Otherwise they show up in the validated regions.
commit 967ff0bdc7f46806b7a6d16332ad39cf2c1f01c1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jul 7 22:55:32 2009 -0400
Add an initialization with an empty rectangle to region-test.c
This should produce a valid region without empty rectangles in
it. Currently it doesn't.
commit 40fcc14d1cf8cb6b6c71f27b0a3d3ccc9a845949
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jul 6 20:37:14 2009 -0400
Expand comment in miClipPictureSrc() to explain why a client clip is required.
commit eba3be7b7a2b9a8df235af6255b9d8c70d2b8c93
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jul 5 00:35:31 2009 -0400
Fix forgotten use BITMAP_BIT_ORDER to be ifndef WORDS_BIG_ENDIAN
commit 06f5b51fee35727a823bd86294654178cbfac629
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jul 4 22:49:16 2009 -0400
Return TRUE for the two new formats in pixman_format_supported_source().
commit b0f220b7f236b5dea30ddc5dec51b73c11120e10
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 11:21:33 2009 -0400
Inlucde pixman-private.h in pixman-region.c
Delete some duplicated macros.
commit f6ef071e2805bcf52473f06cd7171097b4afd926
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 29 11:07:20 2009 -0400
Rename OptimizedOperatorInfo to optimized_operator_info_t
commit 7b7e4b23cab361b444d0c69a1b9c1678d3c5df2b
Author: Ben Skeggs <bskeggs@redhat.com>
Date: Wed Jul 1 10:18:29 2009 +1000
Add accessor functions for PIXMAN_x2r10g10b10 and PIXMAN_a2r10g10b10
commit 968f720d0e8b97bbeb2db9edb75ec524d697e1d6
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed Jul 1 16:29:48 2009 +0300
Avoid overrunning scanlines in NEON blitters.
commit 863f9e9b7599b89c9dd42dd9c7913c2513384761
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 28 18:54:32 2009 -0400
Change comma to semicolon in pixman-combine.c.template
commit 10aa32315529eaff848b8348cad47b2673f853cf
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Sat Jun 27 11:56:38 2009 +0300
Really fix ARM build.
Commit 9d3f71d726c8b959b64c3e6b43ca4d3ccb320c32 broke the build
on ARM architectures by just removing custom include files and
not providing "pixman-private.h" as a replacement.
commit 996e59f7f81864f7935d6dd58d8efd5a5ea265ea
Author: Guillaume Letellier <glet.n800@googlemail.com>
Date: Fri Jun 26 19:02:08 2009 -0400
Fix ARM build.
Commit 6e20c2574354d1cb071a1201ff166cb5e92c00d2 broke the build on ARM
architectures by not updating the use of fbComposeGetSolid()
correctly.
commit e8addcc69a36375d1330749e00854d9651c8f8d0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 26 18:58:23 2009 -0400
Change checks for srca == 0 to src == 0
It is not generally correct to bail out just because the source alpha
is 0. The color channels still mig not be and in that case the correct
result is:
s + (1 - srca) * d = s + d
which is not generally 0.
commit 9a7ce32ef5cf70a17d83154cfd1b96aa54ce9232
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 25 12:42:03 2009 -0400
Make arm compositing functions static
commit 9d3f71d726c8b959b64c3e6b43ca4d3ccb320c32
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 25 10:20:44 2009 -0400
Delete ARM header files
commit 9837465fd9a5d4e7280d4c79c41d2d9a9c8f71c0
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Jun 24 01:30:34 2009 +0300
Use -mcpu instead of -march for ARM SIMD runtime autodetection
Option -mcpu has higher priority than -march with the current versions
of gcc and that's why it is better to use. There is no particular
reason why 'arm1136j-s' is used in this patch, it could be any armv6
compatible core.
commit 6b8251039a905114e4b0776c3f8f58cb0678a532
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 20:08:50 2009 -0400
Add test cases to oob-test using PIXMAN_{a,x}2b10g10r10
commit f94053cd9b1dc8db6c924c8cf50d75ccc1898cce
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 13:12:07 2009 -0400
Post-release version bump
commit f6faa06ef85fc4c9ff38dbc9243c060b4cdacc1a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 12:51:40 2009 -0400
Pre-release version bump
commit 084392fbd72e55f87e9bc37dd02384fc145f7d36
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 05:44:18 2009 -0400
Delete scanFetchProc type. Use fetch_scanline_t instead.
fetch_scanline_t now takes a pixman_image_t argument instead of an
bits_image_t, so there is also a bunch of updates in pixman-access.c
commit 588b42dc1e8fe252bde1eb0905bb9fac806e8ca3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 21:28:28 2009 -0400
Constify the mask argument to scanline fetchers.
commit 5cfdee917d3cac38b103f7453c5a8a0047b95337
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 21:22:06 2009 -0400
Add a mask and mask_bits argument to the raw scanline fetchers.
commit d3bebaf731b4e1714653b50a4a861171f497b42f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 21:10:52 2009 -0400
Rename fetchProc32 to fetch_scanline_t and fetch_pixels_32_t to fetch_pixels_t
commit 6af8672c69b770ce229bd1d156f1fe70d74800f9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 20:58:39 2009 -0400
Get rid of the 64 bit fetcher types.
It's simpler to just declare everything as 32 bit fetchers and do the
conversion in the few functions that actually need to know the size of
the pixel type.
commit 70cba5cfa8a5d702c32170c511a7318766e45731
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 20:38:58 2009 -0400
Consolidate the three scanline store types into one.
The 64 bit storers do their own type conversion.
commit 973ebf1631de695483fcb4b5e4c2b27e037ca3bf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 19:03:11 2009 -0400
Get rid of remaining scanFetchProc casts
commit 24303475c26dada40474f5972b1abee2315ba8f9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 19:02:10 2009 -0400
Get rid of scanFetchProc casts in pixman-radial-gradient.c
commit 99780d3b2264f6e2bb210d3fdc1237c8fbfc3f25
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 19:00:52 2009 -0400
Get rid of scanFetchProc casts in pixman-conical-gradient.c
commit 2d2d3a2625fcc1151f61d0dc1a6ff268d7491be8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 18:58:39 2009 -0400
Get rid of casts to scanFetchProc in pixman-bits-image.c
Instead just declare the functions with the required type and do any
type conversions in the function itself.
commit 4597ad88d9ade51b5a0b4eb87503e1278b29ef56
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 18:44:01 2009 -0400
Fix bug where 64 bit pixel were fetched as 32 bit ones.
commit aa6adb646a2c61062d867cece2b0669f658abb39
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 18:41:35 2009 -0400
Delete FbIntMult and FbIntDiv macros, and move FbIntAdd to pixman-combine.h
commit 53ada03119d44984775877f2a2fee5ce442ac1c8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 12:10:48 2009 -0400
Add a table to oob-test so that it can test more than one setup.
commit 895a8da63370635b05ffb91d3d670c6627d8b2ab
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 11:28:03 2009 -0400
Fix offset bug in pixman_run_fast_path().
Fast paths should only run when the source images complete cover the
composite region, because otherwise they would be required to sample
the border, and fast paths generally don't know how to do that.
The check for this did not work right because it didn't take the
offset generated by the composite coordinates into account. This
commits fixes that by adding (x, y) coordinates to image cover
indicating the new position of the source in destination coordinates.
Based on this we now compare against the region extents which are
already in destination coordinates.
commit fd90429a32927d8aa516a3d26cc309ca7043e4d3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 11:23:04 2009 -0400
Fix typo in oob-test.c
commit bed9c378ff9d01c8e646241dd96a43e2eb870cca
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 10:37:07 2009 -0400
Add test case for out-of-bounds memory access.
commit b6c97ae2c934ca5adade10303d6faa6e827f826d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 24 09:04:54 2009 -0400
Fix comment in pixman-utils to have the right sense.
commit c0047fbfd54d519698a0991111f2440dc8e081b9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 16:55:53 2009 -0400
Subtract x_off/y_off before conversion to integer.
They are fixed-point values, not integers.
Bug 22437, reported by Michel Dänzer.
commit 905856f43d38b5f2932d8b459e805e1c86b7a2f3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 16:37:35 2009 -0400
Add convolution-test.c program
commit 79d397003f56238aa680b0670e1e7d7ba1594dda
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 16:23:26 2009 -0400
Delete leftover use of PIXMAN_OP_FLASH_SUBTRACT
commit ebc4a4df9c92934891d202ae2603216a046ec939
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 14:55:36 2009 -0400
Remove support for component alpha with HSL blend modes.
It isn't clear that component alpha makes sense with HSL blend modes.
commit ca4ff13027b76d0ac7398f159a731f7606b7bd51
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 14:39:49 2009 -0400
Remove FLASH_SUBTRACT blend mode.
We may resurrect it later, but leave it out for now, as the closest
thing we have to a spec:
http://www.kaourantin.net/2005/09/some-word-on-blend-modes-in-flash.html
claims that alpha values should be subtracted, whereas real-world flash
files indicate that they shouldn't.
commit 5dab62a2f922a515634d65b133aeb089e855b399
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Tue Jun 23 17:12:39 2009 +0200
Fix BlendColorBurn
It should return 0 when sa == 0
commit e3a94e892850f91d2cb0463dc2c86f7217deb8a4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 20 20:19:57 2009 -0400
Add screen-test.c test program
commit 16873f6d1baa3b0c26b31e71ad6d36d53efaf9e3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 17 11:46:01 2009 -0400
Make the composite test window bigger by default.
Also rearrange the squares to better match typical aspect ratios.
commit eb4fd0477a4f3acd111fc9132f2dec7f1f63f3e1
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Thu Jun 18 15:24:33 2009 +0200
Use floating point in SetLum
commit 96d5044c0c4a9e34deb97655679f1d688c192c99
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Wed Jun 17 17:40:52 2009 +0200
Do not use combineMask in component-alpha functions
commit bf356c6d8cdbabf2faf4b6d77f94ccd3bd0459fb
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Wed Jun 17 16:59:45 2009 +0200
Fix typo
commit cdae71ee85c74f702a8f0b999432e4d6d5caf766
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Wed Jun 17 10:46:44 2009 +0200
[TEST] Update composite-test to test more operators
commit c35685255f07a5a1f656d3153b5534876481b65b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Nov 29 15:12:45 2008 -0500
Fix ColorDodge and ColorBurn to conform to the spec
commit 49a4fc09694d241f6b9f725a084c27eba3e31d00
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Nov 29 15:11:07 2008 -0500
Remove optimizations that I'm not convinced are correct
commit 3fb71f8b41dedd55982eccd16b8518cce10258fa
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Nov 29 15:02:04 2008 -0500
Fix some more problems in MultiplyC
commit 254e62159b4a8652c1dd9c47d0e5e0d0ff2ced3a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Nov 29 14:53:57 2008 -0500
Fix various problems in FbCombineMultiplyC
Don't read the destination unless we have to. fbByteMulAddC()
produces its result in its first argument, not its last.
commit a158d7f14f4b987e9e6380ffe896dbcfd41799ec
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Nov 26 13:52:00 2008 -0500
Add some comments about the linearity of the non-separable blend modes
commit cae5062d3bf16d32cf675ccb0030e29cc940b25e
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Nov 25 22:53:37 2008 +0100
fix component-alpha versions to set source to 0 when mask is 0
commit 9df72ebdb8280c7ca3b2696c3f7f48b69438502b
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Nov 25 22:50:54 2008 +0100
remove debugging leftovers
commit 19aae37bfb8fb349258675dd96872c5ba65dcce1
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Nov 25 22:50:17 2008 +0100
correct subtract implementation
commit f130d99c94edbf5aeebeb317df64dbd7a6d20efd
Author: Benjamin Otte <otte@gnome.org>
Date: Sun Nov 23 18:36:32 2008 +0100
fix Multiply component-alpha version
commit 4bb1eac4e7c6c785da3c2b2b1836c83446befc80
Author: Benjamin Otte <otte@gnome.org>
Date: Sun Nov 23 18:34:50 2008 +0100
fix comment
commit 73810b320ec5eab5bcbd9137f012cf0e4bf6867f
Author: Benjamin Otte <otte@gnome.org>
Date: Sun Nov 23 17:03:50 2008 +0100
fix component-alpha versions for seperable blend modes
commit 4b921c1d910a5d78ca4784a6879789a5af6718d3
Author: Benjamin Otte <otte@gnome.org>
Date: Sun Nov 23 16:23:22 2008 +0100
rename operator SUBTRACT to FLASH_SUBTRACT
Also document it and move it out of the PDF blend modes to make clear
that it is not in any way related to PDF.
commit 7cbfe3ba214006dda5fa6d21871ef6fc61067005
Author: Benjamin Otte <otte@gnome.org>
Date: Sun Nov 23 15:42:53 2008 +0100
rework blend-mode documentation to match current code better
commit f26c9ec438c97515ae874711859e012971ea920a
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Nov 19 21:07:13 2008 +0100
typo fix: Seperable => Separable
commit ea17e2e2e43e578b3799fe9a6f7533569aed880c
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Nov 19 21:06:06 2008 +0100
remove semicolon at end of macro
commit ecf9f83ac64236b0834d268e6235306ab84fb749
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Nov 19 21:05:16 2008 +0100
remove a leftover debugging statement
That was an assertion check by infinite loop
commit c061b4dd16af52383afae470e845bd43a552d925
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Nov 13 17:40:10 2008 +0100
invent a Subtract operator for component alpha
This seems to make sense, and as I can't test it against Adobe's Flash
player as that one can't do component alpha, this one looks best.
commit 93e32235e6a72bfea14d36a0407fbbe6482e20d9
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Nov 13 17:34:19 2008 +0100
add non-seperable versions for component alpha
commit 239cc46aa77b4be71d738c0136a5465796a29886
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Nov 13 17:29:00 2008 +0100
add component-alpha versions of the seperable blend-modes
commit 2f57b6f4e9020654ad175a593b17ff07fc3f5cbd
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Nov 13 16:12:22 2008 +0100
rewrite nonseperable blend modes the same way as seperable ones
commit fd1bec2859f775feaff329315cdf16ad27ec4728
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Nov 13 15:13:17 2008 +0100
clean up seperable blend modes
The code is now shorter and faster than before
commit e8b4394a409cda48b6598847292b768ad027dbf0
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Nov 12 19:26:13 2008 +0100
prefix HSL operators with HSL
This is necessary to distinguish SATURATE from PDF's HSL SATURATION
commit f08263a25181a5f18991490629ca2e9582836ac6
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Nov 12 19:12:12 2008 +0100
remove invert operator
src INVERT dest == (white IN src) DIFFERENCE dest
commit 755638d73cfc5879bd440f0148e982e562509fd0
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Oct 23 21:20:23 2008 +0200
add nonseperable blend modes from PDF spec
commit e3ad87033e3771a3c54b1b8e49813a6959315cd7
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Oct 9 21:46:50 2008 +0200
fix ColorDodge and ColorBurn to conform to the PDF spec
commit 35bb57e7234994c4169458275e362f02cb5138aa
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Oct 9 18:00:45 2008 +0200
use PDF algorithm for soft-light
commit 0735aeeaeba04f0c33f22b25a191cfd1f27c271d
Author: Benjamin Otte <otte@gnome.org>
Date: Tue Oct 7 15:13:45 2008 +0200
Add INVERT and SUBTRACT blend modes used in Flash
commit 740425ab969adda1aaf36d8f52dec6f6e5303ed6
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Aug 29 23:15:33 2007 +0200
use a pixman_op_t here
This improves the readability in gdb when debugging this structure
commit 94e9673eaaf9e22530159f0335a0a30d2f2a0047
Author: Benjamin Otte <otte@gnome.org>
Date: Thu Sep 25 12:53:06 2008 +0200
Add support for extended blend mode. First pass.
This adds support only for FbCombineU function.
This work is based on equations provided in SVG 1.2 specification draft.
http://www.w3.org/TR/SVG12/
Based on a previous patch by Emmanuel Pacaud <emmanuel.pacaud@free.fr>
commit 99108040f03726bf4bddf55baa7ff6acd796fcf0
Author: Michel Dänzer <michel@daenzer.net>
Date: Tue Jun 23 14:02:26 2009 -0400
Fix the build on big endian machines.
commit bb3b3da18ac6e1f935008fa50cd854b3de19afc3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 13:44:48 2009 -0400
Rename PIXMAN_FORMAT_16BPC macro to PIXMAN_FORMAT_IS_WIDE
commit 039d4618f79e384d93a7548466f80acae6da738c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 13:41:27 2009 -0400
Write alpha map fetching with FbByteMul() instead of div_255()
Delete the div_255/div_65535 macros.
commit 3e39b566ee2aaa414b95b0dae98cc5971c399359
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 23 07:34:17 2009 -0400
Remove unused typedefs.
commit 2c70814b6bff2091bcc55ae4252fe82ae53439e4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 20:43:08 2009 -0400
Delete unused _pixman_image_get_fetcher() function
commit b3bd7394477a64ca0460655ca3a8e5326c402167
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 19:51:13 2009 -0400
Move accessor macros to their own header.
Also rearrange some things in pixman-private.h
commit fe8ef09e9835f90b669a2b1ddfda49e839d6de53
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 19:38:58 2009 -0400
Move FbGet8() macro into pixman-bits-image.c
It is only used for bilinear filtering now. Also some formatting
changes in pixman-private.h
commit 03587764455bd41684bf29bbecb657ba45b0c341
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 19:35:11 2009 -0400
Delete FbInOverC macro
commit 1c429b4fbedc5287659c836c0d30801a6209bf57
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 19:25:25 2009 -0400
Make pixman-mmx.c compile again.
commit 7bb9df038293b591e687cbf3a9830476bef7f9fc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 16:34:15 2009 -0400
Fix typo in CLIP macro.
commit 63b050de5b2627aee0d75c66244e55757ba007ab
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 16:05:27 2009 -0400
Turn the FbAdd() macro into an FbIntAdd() which doesn't take a channel.
The only use of the channel argument could be written better with FbByteAdd().
commit 026ef583288e1e63e5a84ba998aea2e674f02a17
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 15:58:28 2009 -0400
Delete FbInU macro.
Replace uses of it with FbIntMult().
commit 5028c1599ad9119dbb7b58d2f93e60c857aec769
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 15:21:40 2009 -0400
Use fbOver() instead of fbOver24.
fbOver() is faster anyway, and this lets us get rid of fbOverU.
Also use FbByteMul() in fbIn instead of four times FbInU.
Finally, delete FbOverC and FbInC since they weren't used.
commit ca4750be0a5ea0a6910ad9f4eed6a9989c91c230
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 08:09:11 2009 -0400
Eliminate Fetch/Store24 macros.
Replace them with inline functions in pixman-bits-image.c.
commit e68f8bc1187785309ed3befcda1e1a211fe624e6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 07:05:24 2009 -0400
Remove unused ACCESS macros in pixman-bits-image.c
commit 233d8907ed02d6624f458dd40c9db46055fc7630
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 22 06:51:04 2009 -0400
Various minor changes
- Add underscores to the pixman_image_get_solid(),
pixman_image_is_solid(), and pixman_is_opaque() names.
- A number of formatting fixes
- Move debug code to the end of pixman-private.h
- Collect all prototypes for image methods in one place
commit 950bcd7d4a6226d969b0b69513f6806a2d40e08e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 22:33:31 2009 -0400
Some formatting changes
commit 8b616c5725891f2f2d21b71796fb9af5644260e4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 22:16:39 2009 -0400
Delete struct point
commit 653fe825c92935318e0d2d552c3a0336ef82a1de
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 22:12:25 2009 -0400
Move region helpers into pixman-utils.c
commit 00d852c96931f4bc27dfec124062e71eb49dc9bc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 22:11:07 2009 -0400
Move code around
commit a4ef790faac2c822df8336ee00c6fc5ea84aaa53
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 22:05:49 2009 -0400
Move pixman_version() to pixman.c
commit f1049c61d6b6b977f56533644bbfa7e2a95ca3a1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 22:01:58 2009 -0400
Move pixman_compute_composite_region() into pixman-utils.c
commit 7690af20fcf7f341a5162b77a66660cd05a155b9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 21:42:14 2009 -0400
Eliminate pointless Red/Green/Blue macros
commit f6faf538eebed4722c085c2eef7b3ae524e3e00c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 4 07:39:13 2009 -0400
Get rid of indexed argument to store functions
commit fdb25d97477635dafb0f8c328de65727a2d73a48
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 21:36:43 2009 -0400
Move macros around in pixman-private.h
commit 76bf3073d45e184973cfc992d8f366a4a5ed0127
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 21:32:23 2009 -0400
Move some macros into pixman-access.c
commit e2b5b05b3818f6a4ecf24dd0030e22784af22e22
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 21:28:38 2009 -0400
Delete obsolete comment
commit 271a0d34a07ee04d8de0cb435ab9242aeb0a4c5c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 21:28:24 2009 -0400
Move edge stepper macros into pixman-edge.c
commit 92eca118ad9cdeb61a00a591916f4e34aaaab916
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 19:45:29 2009 -0400
Delete FB_MASK and FB_ALLONES macros
commit 9541538a97b1101a886a26653a8b416701b2e065
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 19:38:57 2009 -0400
Implement fbStore_a2g2b2r2
commit 433d94e60b8404df39582b6149e60a5faa965160
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 19:35:20 2009 -0400
Replace switch functions in pixman-access.c with a table of accessors.
Also delete unused orig_data pointer.
commit d78e30b26be15683062a1a3b76fbbe7d3b5abe0f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 19:06:25 2009 -0400
Rename pixman_image_can_get_solid() to pixman_image_is_solid
commit 6e20c2574354d1cb071a1201ff166cb5e92c00d2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 18:58:53 2009 -0400
Turn fbComposeGetSolid() macro into a pixman_image_get_solid() function.
commit 76aa72e8cac12400ac8f635b81642335b0d27310
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 18:51:36 2009 -0400
Delete unused WRITE_ACCESS() macro
commit 3c0ed5b92dc205d4fa6c9fa2f2772022f2404549
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 18:51:06 2009 -0400
Move pixman_image_fill_rectangles() to pixman.c
commit fb0fe616f2e0ce8f31f88887ca2a7ec394886b90
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 18:43:27 2009 -0400
Delete unused mod macro
commit bfa6f8c0b0418a3b4337da6c8bd0d4e9eda7e83e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 18:40:25 2009 -0400
Eliminate bit fiddling macros from pixman-private.h.
There was one remaining use of FbMaskBits in the a1 trap rasterizer;
just move that macro there.
commit 84886292e2c9be4149a32c7499015960331db426
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 18:29:39 2009 -0400
Implement fbComposeGetSolid() as a call to pixman_image_get_scanline()
commit 8e40734174e97ff319c31ba49096cc8b7d5117ae
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 16:45:17 2009 -0400
Eliminate FbStipMask macro.
It was only used for storing into a1 images, and that code could be
written more clearly by computing the bit index directly.
commit 590d034bb399d28b191ac50c764d03ebd342e149
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 16:07:50 2009 -0400
Implement pixman_format_supported_destination() in terms of pixman_format_supported_source()
commit 16a87a89e1330c18876aaf17ccc6f07243062ca8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 15:09:02 2009 -0400
Move FbGen macro into pixman-combine.c
commit d18722cdb6ddde7abba9cd1492e636f2668fadf1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 13:18:46 2009 -0400
Use DIV instead of _div In pixman-trap.c.
commit 81d6725f3106a888fe0fbffba4a0d05d553d0777
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 11:19:00 2009 -0400
Move edge utilities into pixman-trap.c
commit 793c92dadb6f9c82ace50711c0e8c51e62368f19
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 11:15:30 2009 -0400
Move compiler dependencies to a new pixman-compiler.h file
commit 5624ca0417bf7a30b5b05235e902b237a77b8543
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 10:12:15 2009 -0400
Rename FastPathInfo to pixman_fast_path_t
commit afcfc8efc48630f0f349aefc8c86619fc7514647
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 10:09:22 2009 -0400
Eliminate MSBFirst, LSBFirst, IMAGE_BYTE_ORDER, and BITMAP_BIT_ORDER.
Just use WORDS_BIGENDIAN instead.
commit fd83e3594b440ade9acc1263dcd2a0980aa7ebcc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 09:50:24 2009 -0400
Rename combine.inc and combine.h.inc to pixman-combine.{c,h}.template.
commit d7234efc9a5d6a371692287555820fcd0f7ba48d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 21 09:44:22 2009 -0400
Only use force_align_arg_pointer on gcc/x86-32
commit 093112a1b720c3a74b28b7b4289feb16fbe4afd1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 20 20:28:36 2009 -0400
Rename pixman-pict.c to pixman.c
There are no traces of fbpict.c in it anymore.
commit b7b6847b6692796a5da8590dd6254add6d566a7a
Author: M Joonas Pihlaja <jpihlaja@cc.helsinki.fi>
Date: Fri Jun 19 17:29:11 2009 +0300
Remove redundant NULL checks from general_composite_rect().
The general_composite_rect() function has two invocations
of the return_if_fail() macro before any of its variable
declarations. Removing them allows for compilation to
succeed using a pre-C99 compiler.
commit d4dc812380f937908e466bfab52bfcc3b5334ebe
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 19 13:19:02 2009 -0400
Get rid of pixman_region_internal_set_static_pointers()
Instead just define the function in pixman-region16.c
commit 8b344e417e06f80a24bff9b6fadf4d82b54ab911
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 4 07:31:39 2009 -0400
Rename PixmanTimer to pixman_timer_t
commit 2f9787a9cf3fe0783d1b46a01534ba6588b53e3f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 4 07:29:14 2009 -0400
Rename GradientWalker to pixman_gradient_walker_t
commit cacfd7fe33e7e7643199de0dffb8312c0c432ccf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 19 13:14:11 2009 -0400
Delete unused IS_SOURCE_IMAGE() macro
commit 216f46eb7e3f468f2b64421bdfbcb6e58eafc7e8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 4 07:17:36 2009 -0400
Remove commented-out fbAddTriangles
commit 43f3825660914aae7786537ad069758a057488ce
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 19 13:04:26 2009 -0400
Remove useless FbBits typedef
commit 8821885207f74bf9a18b374a1ee5de2442f603a3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 4 06:52:32 2009 -0400
Delete unused CombineFunc{32,64} types
commit e063bd5555ed874a351bada2ef2a7082c42cb426
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 19 12:57:56 2009 -0400
Rename bits_image.fetch_pixels_{32,64} to fetch_pixels_raw_{32,64}
Also add a couple of comments about what these functions do.
commit ce2944747455265d24bbbd6ab4b843bf974c8126
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 19 12:28:59 2009 -0400
Delete empty FASTCALL macro
commit 207c9480b5fdb30dd5b9bfc37707ff9cbf1d2d8a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 19 12:15:19 2009 -0400
Delete FbComposeData type
commit 9dfaa6365f247c1fefb84805ecf850deebb05193
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 4 06:02:32 2009 -0400
Remove unused pixmanFetchGradient() declaration
commit da001051d876051763dc0bc1a90d58ec7ca31e96
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 3 22:51:18 2009 -0400
Remove dstMask from pixman-fast-path.c
These were used to zero the x8 channel of PIXMAN_x8r8g8b8
destinations. However, we treat this channel as undefined, so there is
no need to zero it.
commit 304412752e2cbb7a8d407ca1af45d4ec1508e5b2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 3 22:48:57 2009 -0400
Eliminate trivial READ and WRITE macros in pixman-fast-path.c
commit ac3fdeb97b21bd03e1902166310533377abd441d
Author: William Bonnet <william@wbonnet.net>
Date: Fri Jun 19 07:27:28 2009 -0400
Fix build on Sun Studio.
Don't use return in a void function.
commit 94964c221fe8141e5177d98f5357dca33fa00544
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Tue Jun 16 12:08:29 2009 -0400
[NEON] Add ARGB8-over-RGB565 compositing blitter.
commit af660613eefbb474fd62f01b6f073fae389bd6f7
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Tue Jun 16 12:08:29 2009 -0400
[NEON] Add transparent rect blitter.
commit 8eeeca993252edc39da9c5c57545b81215fafc81
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Tue Jun 16 12:08:29 2009 -0400
[NEON] Replace Ian's glyph-blitter with a better one.
Each scanline of the destination is bulk-loaded into a cached buffer on
the stack (using the QuadWordCopy routine) before being processed. This
is the primary benefit on uncached framebuffers, since it is necessary
to minimise the number of accesses to such things and avoid
write-to-read turnarounds.
This also simplifies edge handling, since QuadWordCopy() can do a
precise writeback efficiently via the write-combiner, allowing the main
routine to "over-read" the scanline edge safely when required. This is
why the glyph's mask data is also copied into a temporary buffer of
known size.
Each group of 8 pixels is then processed using fewer instructions,
taking advantage of the lower precision requirements of the 6-bit
destination (so a simpler pixel multiply can be used) and using a more
efficient bit-repacking method.
(As an aside, this patch removes nearly twice as much code as it
introduces. Most of this is due to duplication of Ian's inner loop,
since he has to handle narrow cases separately. RVCT support is of
course preserved.)
We measured the doubling of performance by rendering 96-pixel height
glyph strings, which are fillrate limited rather than latency/overhead
limited. The performance is also improved, albeit by a smaller amount,
on the more usual smaller text, demonstrating that internal overhead is
not a problem.
commit 1a7f25946b5b64aa604fab0f6d428bacb5296a4e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 16 11:59:20 2009 -0400
Post-release version bump
commit 9733b2c4d4ed8fbd3f6e770446b457e0526db152
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 16 11:52:48 2009 -0400
Pre-release version bump
commit b1cb5922f785310ef790811b52e4e2b0c85dfccc
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Mon Jun 15 16:09:32 2009 +0300
Add RVCT support for straight blitter.
commit b6a3868ced67eb363273bfbee0d850c4d06cca34
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Mon Jun 15 16:02:04 2009 +0300
Better CFLAGS handling for recent ARM platforms.
commit 1217c11a02ef60a3955fd98f7cec48de4cb9561b
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed May 27 15:31:59 2009 +0300
Misc warning fixes.
commit 68ec1244cdd4aa2703739a19c7c3917231b7b889
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 13 09:32:59 2009 -0400
Add API to set a function to be called when the image is destroyed.
commit ebc39ed35a9f79ac9bb329bfc7dc27f290f6e1b0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 10 08:52:31 2009 -0400
Work around X server bug.
X servers prior to
ebfd6688d1927288155221e7a78fbca9f9293952
relied on pixman not clipping to destination geometry whenever an
explicit clip region was set. Since only X servers set
source_clipping, we can just trigger off of that.
commit 08eb065c568de5c0cb67b7b02ccb17bf72d5059c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 3 05:21:29 2009 -0400
Move region computation closer to the region walking.
Computing the composite is region is a bit expensive, so only compute
it if we are likely to actually walk it.
commit 78ca4eea6467dbb6b9da1198b9526750a0a8dca3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 23:17:34 2009 -0400
Simplify clipping rule
The new rule is:
- Output is clipped to the destination clip region.
- If a source image has the clip_sources property set, then there
is an additional step, after repeating and transforming, but before
compositing, where pixels that are not in the source clip are
rejected. Rejected means no compositing takes place (not that the
pixel is treated as 0). By default source clipping is turned off;
when they are turned on, only client-set clips are honored.
The old rules were unclear and inconsistently implemented.
commit b9683cb2ae519707e06a0b9302f8a373d336da12
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 3 00:25:54 2009 -0400
Fix pixman_image_is_opaque()
- Don't claim that non-repeating bits images are opaque.
- Don't claim that conical gradients are opaque ever.
commit 7aeed3fc08b3359a3e4e6178f569dbb28ffdad08
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 22:57:23 2009 -0400
Only call fast paths when the images cover the composite region
commit e67c7eedf203f4424bdfac7982d2bc7c6e1748d2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 22:17:00 2009 -0400
Pass the region to walk_region_internal()
commit 85a2f55e6b55833cb4092c6e9e58497fbd9e7167
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 22:08:02 2009 -0400
Remove srcRepeat and maskRepeat arguments from _pixman_walk_composite_region()
commit dc0a9dd65ab2622646d1220adf3e5ea70dcae951
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 22:04:47 2009 -0400
Remove all the srcRepeat/srcTransform stuff from the general implementation.
commit f885caad4a709d7d2c4f0bf63d735080bcca3c24
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 22:02:52 2009 -0400
Make _pixman_walk_composite_region() a wrapper around an internal function
commit d5768884a1576e7ad4a9d1e24063d214babb7157
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 21:31:58 2009 -0400
Handle repeat_none/normal for 64 bit fetchers
commit c9ea4a9722bc3c2223e8c8d72aa1b23598db489e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 21:20:42 2009 -0400
Make the untransformed path handle REPEAT_NONE and REPEAT_NORMAL
commit cf7bf4eb57351b44f467eda9f4d9fa8f97754550
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 5 01:33:28 2009 -0400
Post-release version bump
commit b721bc49199a24364bceb6e76ad9c6e6b2996905
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 5 01:10:00 2009 -0400
Pre-release version bump
Also squash some warnings and correct the variable name in RELEASING.
commit 5f086792eeaea6b2c401105b8bbf0c92fb7d192e
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Thu Jun 4 11:24:26 2009 -0400
[NEON] Really fix filler bug.
Advance the destination pointer (r4 register) properly.
Found by Siarhei Siamashka.
commit 3b12cc7a23f81581b027764be96bf028785b1b5f
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Thu Jun 4 11:24:22 2009 -0400
[NEON] Fix filler bug.
r5 is being sourced explicitly instead of the %[width] reference.
It's probably a copy-paste bug, not spotted because I didn't
originally write it.
commit 3c570a815afb282df01f41acad385ff0e3e33899
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Jun 4 00:05:06 2009 -0400
Add an --enable-timers configure option to enable the TIMER_BEGIN/END macros
commit 7077138fb3c633e8791b2a4139ade07dbc677dd3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 3 23:54:57 2009 -0400
Some cleanups in the configure.ac file
commit 9d442a6bc6f1ae28c3f36247bf3e2ab959fb2712
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 3 22:25:25 2009 -0400
Correct link to bugzilla in README
commit 4465866cba3700e831101ea429d5de2a95cf7470
Merge: a673a89 d4d716c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 3 21:49:59 2009 -0400
Merge branch 'many-pixels'
commit a673a898e1e119836c9c68eff71feaec49f97bf1
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed Jun 3 10:43:42 2009 -0400
Delete now-unused fbCompositeSrc_x888x0565neon().
commit 7b3e90c361602c4599ec592d83b4eb1eb0ea76cf
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed Jun 3 10:43:42 2009 -0400
Replace fbCompositeSrc_x888x0565neon with fbCompositeSrc_24x16neon.
commit 0bfd9904e4adafbaa04ddfe1c0b22df1dac411e5
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed Jun 3 10:43:41 2009 -0400
Enable NEON straight blits.
commit 4da5316285976f43d19231548f79c8b3b02ce060
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed Jun 3 10:43:41 2009 -0400
Enable NEON copies.
commit 15ec3977843029f61f9e869610123977da8b446a
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed Jun 3 10:43:41 2009 -0400
Enable NEON fills.
commit 78faaa58d60f982eb4fdb674b7740315282d4d65
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Wed Jun 3 10:43:41 2009 -0400
Add more NEON fast paths
commit d4d716cc25536b5a9db3ed216d64f5f9be8b69a2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 03:27:46 2009 -0400
Only advance the Z coordinate for non-affine transformations
commit c2b119492949d89ae1823961438e7086c700ea3f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 03:25:46 2009 -0400
Consistently use 256 pixels as the size of the temp buffers
commit 10bc25b01a00b94eac72d9afe890bd0ff3699951
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 1 19:51:06 2009 -0400
Inline repeating instead of doing it as a separate pass
commit db4f7fc9df581af54c4ed760dee14ef8a09873d2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 23 21:10:46 2009 -0400
Move pixman_expand/contract to pixman-utils.c
commit abb60f43f46b10f8057baa0fcc3eb480883ef23b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 23 21:03:39 2009 -0400
Change pixel wise fetcher to fetch many pixels at a time instead of just one
commit 9a7ded161c014ba51f9d3723f29a32b759717673
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 11:37:01 2009 -0400
Remove unused access macro
commit 2b82a4c14d8e8c8686a8b2d38abdc0df259e087c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 09:00:24 2009 -0400
Add a 64 bit pixel fetcher and use it for solid colors
commit f9fa5bcac04af660a2c873e7cfbc969cb37bee77
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:47:51 2009 -0400
Move simple fetchers after transformed fetcher
commit c981eb95bb3f0806ad92a13e45cfff1ad6cf362c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:39:18 2009 -0400
Rename some of the fetchers
commit e043530553ebfcebe106b5cc3a35448727e597aa
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:31:50 2009 -0400
Split filter switching into its own bits_image_fetch_filtered() function
commit cb04bfd6b4932030b6e9114b926d6c71ce57b97f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:28:35 2009 -0400
Move 'adjust' code into the individual filters
commit 94c6abe8fcddce64efa7975e7f71296b1a049b1c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:18:40 2009 -0400
Add bits_image prefix to fetchers
commit 5b8304fd17b86639a3adb3eec8ce1116a9d3425e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:15:35 2009 -0400
Move some code around - use image->fetch_pixel in FbFetchSolid
commit 48a2d0bba24ac5c9c1426efd3cab08c652ab8952
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:13:39 2009 -0400
Rename _pixman_image_fetch_pixels() to bits_image_fetch_alpha_pixels
commit 0486f0f3241225c887549def31e5e246ff16255f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 08:04:38 2009 -0400
Get rid of the StoreExternalAlpha() functions
commit d9b045d18e4723e710dab410fc011d36fc5dd327
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 07:49:55 2009 -0400
Add fetch_scanline_raw{32,64}
commit 67cd7fcbdfe026ddc4967c07939c2a548a80d6b5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 07:13:51 2009 -0400
Add store_scanline_raw_{32,64} virtual functions to bits image
commit 2434524fd9b8258af88afb1d71fe25813a5def2e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 20:32:42 2009 -0400
Move remaining pixman-transformed.c code into pixman-bits-image.c
commit 4bd73c4d6a1d0489c8eb35a867ef55187ca75650
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 20:27:51 2009 -0400
Fix coordinate computation for perspective transformations
- Don't convert to integer
- Saturate to INT16_MIN/MAX on overflow
commit 3dd2496890ccf499721df8b86f95c8f5b8ad196a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 18:39:26 2009 -0400
Get rid of pixman-transformed-accessors
commit df23b360a0330e89c1f38f9d64e8ac150ea740e4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 16:52:31 2009 -0400
Remove unused code from pixman-transformed.c
commit 2557931bac461d8a0274ad638c12687afbe26145
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 12:44:55 2009 -0400
Handle alpha maps in _pixman_image_fetch_pixels()
commit 72ae714b7400db7282aa0f92cc740bc106685e54
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 08:28:54 2009 -0400
Only do region lookups when the source region is different from the full region
commit ccbe5cf8f39f57a973e5901ad5fe583557947e98
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 07:40:29 2009 -0400
Fix typo in fetch_bilinear_pixels()
Change the number of temp pixels in FbFetchTransformed() to something a little more reasonable.
commit 72a3e20c722b16f1b28975451d33e934f54da46f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 19 10:04:33 2009 -0400
Process the correct number of coordinates for the NEAREST filter
The number of coordinates to process is twice the number of pixels.
commit e8b4ebf59143a04f5b6f10fb112d39ca50250293
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 19 09:23:01 2009 -0400
Fix a couple of bugs in the bilinear fetcher
- The x and y distances are the most significant fractional bits.
- We need to fetch four times the number pixels produced.
commit b24fc024fabed9406958611edc607f2af51e46cd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 19 08:30:01 2009 -0400
Make fbFetchTransformed() used the new filtered many-pixel fetchers
commit 8e0ad050e7ce7b3200e6126f782bad94d9df97f6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 19 08:09:03 2009 -0400
Add fetch_convolution_pixels() function
commit 1510ffb750b8b74c32dffd11cc0f20ce091767c1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 19 06:59:13 2009 -0400
Add fetch_bilinear_pixels() function
A bilinear fetcher that fetches many pixels instead of just one.
commit a156e4e097f424722c4f1d03f0cf4bb9370962d4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 19 06:18:00 2009 -0400
Add fetch_extended() function
This function takes a list of coordinates and transforms it into
another list of coordinates, according to the repeat method of the
picture.
commit d2cbfeca0efbf108c320e38bb39970af57c84438
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 19 05:23:29 2009 -0400
Add _pixman_image_fetch_pixels()
Including a virtual fetch_pixel() function in bits_image_t.
commit bd1cc87da39ad2e631bec5fa988a2e03eae0f929
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 16:51:28 2009 -0400
Get rid of toplevel argument to implementation constructors.
It was always NULL anyway.
commit 8d523bd9f3eb44b9e9a3c64f153626c39a0fffdc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 2 07:47:29 2009 -0400
Make sure the whole delegate chain has the correct toplevel
commit 812a993843542f1ff051c46fe627315fcb73bc56
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 30 22:23:27 2009 -0400
Post-release version bump
commit 3bad5eefd0d4e6ceb4ea52dd5117bf38649b31aa
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 30 22:09:11 2009 -0400
Pre-release version bump.
Also delete non-existant header files from pixman/Makefile.am
commit e3dba0f61af9583728f94210392cc12b602acc2e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 30 21:44:08 2009 -0400
Create a vmx pixman_implementation_t
commit 0c92309a8ab887efd73737b627baca36d800c6f8
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sun May 24 18:41:06 2009 +0200
Update vmxCombine*U to the new interface
Make the functions use different codepaths depending on mask being non
NULL. It could be speed up a bit more but should work as before
speedwise. Conformance checked with cairo tests.
commit 21034db1daf90ac2b17f6929e72b3a0b953e81c4
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed May 27 22:46:23 2009 +0300
Scaling test updated to provide better coverage for problematic cases
Now scaling test should reliably detect problems in new scaling code.
Maximum image size reduced to improve performance (more tests can be
run per second) and also simplify detected errors analysis.
commit 53ce8838254d436b6a4d527aacdece7dba7ceacd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 29 22:21:37 2009 -0400
In pixman-sse2.c test for non-zero source, not just non-zero source alpha.
commit da9f3266fd00a5634fd2fb8a9cffbf24d668aaab
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 29 21:20:20 2009 -0400
In the mmx implementation, check for source == 0 rather than alpha == 0.
Otherwise we compute the incorrect value when the source has zero in
the alpha channel, but non-zero in the color channels.
commit f889ad9f362293f00c142aa14e87fd212aea54c1
Author: Jonathan Morton <jonathan.morton@movial.com>
Date: Fri May 29 13:38:45 2009 -0700
Fixup the arm-simd and arm-neon implementations.
commit d6dfafd9584c37d0d382c5ca974eab04209ad834
Author: Magnus Kessler <Magnus.Kessler@gmx.net>
Date: Thu May 28 12:09:07 2009 +0100
pixman: define pixman_have_{mmx,sse2} on 64-bit Linux
The refactoring of pixman removed pixman-sse2.h and pixman-mmx.h in commit
41a9a17e0308f2075bb1bd59c4411e43a67d49ec
(http://cgit.freedesktop.org/pixman/commit/?id=41a9a17e0308f2075bb1bd59c4411e43a67d49ec).
On 64-bit Linux this breaks linking of new programs as well as execution of
existing programs with the following errors:
../pixman/.libs/libpixman-1.so: undefined reference to `pixman_have_mmx'
../pixman/.libs/libpixman-1.so: undefined reference to `pixman_have_sse2'
This patch fixes the issue for me by re-introducing the definitions for these
functions. It might be preferable, though, to create proper trivial static
inline functions instead.
Signed-off-by: Magnus Kessler <Magnus.Kessler@gmx.net>
commit 3d93070db88563b5a8f1e07f53f86c5e8ada8bbf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 27 21:51:00 2009 -0400
Really fix PPC build.
Add a pixman_composeFunctions variable to pixman-vmx.c.
commit 3f5c2936c67d2b0dcf08b80e11c954ba73602ee2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 27 21:15:18 2009 -0400
Add back pixman_composeFunctions since vmx is not ported to implementations yet
commit 6f93d36915fe3a8d8c75d26af8d5b9ba58aba4e3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 06:04:15 2009 -0400
In _pixman_implementation_fill() don't call the delegate; call the actual implementation
commit a5a249613ba44ff791a7415f32192b1a0cc717db
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 17 04:56:13 2009 -0400
Call the toplevel implementation for combining
commit e5c367120adaa5ae265866336d097f0435300706
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 16 11:22:54 2009 -0400
Set up combiner functions for an implementation directly in combine.inc.
Previously it would go through two big tables, and the general
implementation would select the correct one dynmcailly.
commit fb272d1464f12bd913d3fdbc4ec512758b5c4c98
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 16 10:24:30 2009 -0400
Consolidate the general implementation into one function
commit 6a22abd899b2c226c01be055145c6ee3e469ee3c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 16 09:56:31 2009 -0400
Move the argument struct into pixman_image_composite_rect
commit 4983f6b26cdd36eafbb97c21e5eb8d54ba59fa21
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 11:32:59 2009 -0400
Make a couple of functions static
commit 41a9a17e0308f2075bb1bd59c4411e43a67d49ec
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 11:31:30 2009 -0400
Delete pixman-sse2.h and pixman-mmx.h
commit 5dc9671b2588bfe084d69789e5c367474c5efa92
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 11:27:01 2009 -0400
Make the fast_path implementation run the c_fast_paths
commit 364e218ad6a68028b4c11d051faee33f80513af4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 11:24:28 2009 -0400
Split fill implementations out in the implementations
commit 24e73d69ee99c2dc19d474b75f262e6efddfccf1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 11:04:07 2009 -0400
Add alignment workaround to sse2
commit 1369b0b9d4ce89c50f56ec1c552b534f96273c1c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 11:03:15 2009 -0400
Add a general_blt() that just returns FALSE
commit 9955b1516902d7671d41777bf1989f23cb0a87ed
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 10:56:15 2009 -0400
Move sse2 and mmx blt implementations to their respective files
commit 46f0707481d50950fdb5d4588486affef0baa9ef
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 10:32:36 2009 -0400
Move gcc alignment workaround to pixman-sse2.c
commit 53150f4fcafba0a5a69fddaee4b2ae687f0a2149
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 10:28:41 2009 -0400
Set up SSE2 combiners
commit 63c1ab031347dd2f26a25f29589516e1e59ba8db
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 10:23:01 2009 -0400
Make pixman_implementation call the right combiner
commit c8a2c336a7a90abc094ec57a4ae15ffabf6e1763
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 10:15:58 2009 -0400
Use the implementation's combiner's
commit cb236a85df18f0f5e04698fb63c3895c2a2762dc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 10:06:29 2009 -0400
Move SSE2 variable initializations to pixman_implementations_create_sse2
commit 03fa1bcb9af2cf48148b03c9a02cf5b4a7340356
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 09:50:55 2009 -0400
Move mmx fast path code to pixman-mmx.c
commit 6e13149f99d7922ae84086f7867c9a9b69a49203
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 09:44:45 2009 -0400
Move sse2 fast path running to the sse2 implementation
commit cb8608bba4f212aceef0cf579c650ee4988f56bd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 09:42:42 2009 -0400
Change pixman_lookup_fast_path() to actually run the fast path
Then just return in the general implementation if we ran a fast path.
commit bee5549f6b469989a45cb3bcd4a916a6799c182d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 09:26:42 2009 -0400
Add _pixman_choose_implementation
commit 713fb295761f13989bc0da31c26b3a1535ab449e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 09:21:37 2009 -0400
Remove fast path lookup code from pixman-general
commit f5837da6e24cb1adf116f42724b83948c70476f0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 09:12:04 2009 -0400
Beginning of sse2 implementation
commit 9a25f0fb672c2b6aee488958cf7f7c6e9ea3a33b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 09:06:19 2009 -0400
Copy fast path lookup code into pixman-utils.c
commit 248ef3ec24bfcb4759f12e1839456c0c422b994c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 08:51:09 2009 -0400
Initial fast path implementation
Move fbSrcScaleNearest() here, and move
_pixman_walk_composite_region() to pixman-utils.c
commit 2c64b2a6487114263be8f26fc9328ddc36c61b9a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 08:14:01 2009 -0400
Change prototypes for compositing functions to use 32 bit integers
commit d6345a69fb7179ce6dc71117423e83baef427071
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 05:12:52 2009 -0400
Add component alpha combiners in pixman-implementation.c
commit 918f763a9111f643d5b8a1460258089e79f68fb0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 04:52:28 2009 -0400
Beginning of MMX implementation
commit 4b8f440d494f675c2ae5b9d41d950a6c79d14548
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 04:32:32 2009 -0400
Move entire C implementation into pixman-general.c
commit 12726de921a621b8147d12d7e0788076bc4cc80d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 04:04:36 2009 -0400
Add beginning of general implementation
commit d2faa63aee2179188dba712835c40068729565ff
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 03:40:05 2009 -0400
Formatting
commit a17e27c2b4afc6118e5aeae380eb96d98f982033
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 03:31:11 2009 -0400
Beginning of pluggable implementations
commit 25509f4b0b3a6b17810605706e5b93e0b9f4cb08
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 18:28:03 2009 -0400
Move fbStoreExternalAlpha{,64} into pixman-bits-image.c
commit d74ad7c0fe9bd50ae04b59806f6c2bb9e6289634
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu May 21 10:45:51 2009 -0400
Add new store_scanline_{32,64} in bits_image_t
Also move fbStore and fbStore64 into pixman-bits-image.c
commit 74f837b1a2e85f2bfcaaf5c659077e4883fe6ac7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 23 11:33:21 2009 -0400
Post-release version bump
commit a282b640becfa1bb4979382f6a49cb59a7f992e2
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Fri May 22 12:13:57 2009 -0700
NEON: Remove some unneeded casts
There are some unnecessary (void*) casts. Eliminate some of them. Doesn't
change the generated code.
commit ff866e70e399e655ad9b5a851bb682463fdda5ac
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Fri May 22 11:56:44 2009 -0700
Fix uses of dst_keep
commit 19d6669aacd8f0ba5246448e423c1cbce9cb4fd3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 22 12:07:55 2009 -0400
Pre-release version bump
commit 67addb4b3800f754155c8607bca85d23d840e056
Author: Jonathan Morton <jonathan.morton@movial.com>
Date: Fri May 22 12:01:26 2009 -0400
Initialize the ARM SIMD fast path array.
commit 2f1732359787f946bd1efd92be1f2f86aa91be3c
Author: Jonathan Morton <jonathan.morton@movial.com>
Date: Fri May 22 08:25:26 2009 -0700
Fix compile error caused by e42fae9e8364f5f0791f9fce749ab18b33acf598
commit 85b390cadf8c60808ed17df95885e72c082ad180
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 20 10:45:29 2009 -0400
Fix alpha map computation in pixman_compute_composite_region()
According to the RENDER spec, the origin of the alpha map is
interpreted relative to the origin of the drawable of the image, not
the origin of the drawable of the alpha map.
This commit fixes that and adds an alpha-test.c test program.
The only use of alpha maps I have been able to find is in Qt and they
don't use a non-zero alpha origin.
commit cb4085bdb5a40c38209f69c26b3ffe60d08ff4de
Author: Jonathan Morton <jonathan.morton@movial.com>
Date: Thu May 21 07:16:34 2009 -0400
Avoid malloc() by allocating a fixed set of boxes on the stack
commit 5424d0245b28dff81032341a60dea1dd70c594b7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu May 21 05:07:19 2009 -0400
Fix build on ppc. Pointed out by Chris Ball
commit 14cd45dc4a63296a549bcc53453ca40beed67f51
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 05:53:40 2009 -0400
Make SSE2 fast paths static and remove them from the header file
commit 0f1a212bf24490cbf80d6135bac17c5122d18cd2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 05:49:13 2009 -0400
Make MMX fast paths static and remove them from the header file
commit 87f18154c1198752f2217241c568c28a103e69f6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 5 09:07:32 2009 -0400
Notes on component alpha
commit ac2299693f76be9c0d19a015096497d26aaf2c7d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 5 08:49:49 2009 -0400
Note about glyphs polygons
commit c093ee8a415602d78b53dbe936ca743ed816d393
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 5 07:31:52 2009 -0400
Notes on output kernels
commit 90ae09f2e4826d21ebab21c6538cfa7fe1e0b90b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 5 03:10:44 2009 -0400
Further notes on the rendering pipeline
commit fa274ffc6180fc0d57f11bf7b691fe95f344c5d9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue May 5 01:58:48 2009 -0400
Some roadmap notes
commit ba1dcec76ae1033b0cbb3048c3d82450922a02cc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon May 4 17:39:19 2009 -0400
Describe alpha map in the pipeline
commit 3fdefd683b5cbaaa4a93f1737197954f1df8bc57
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 22:46:34 2009 -0400
Notes on the rendering pipeline
commit e07a4c6e8c1571f762c6f583204f16e3aca42882
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 21:07:06 2009 -0400
Move C fast paths to their own file pixman-fast-path.c
commit e42fae9e8364f5f0791f9fce749ab18b33acf598
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 21:05:45 2009 -0400
Move the arch specific fast path tables into their arch files
commit 93900a591c530a310542dfcca7e41d3391dc3565
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 19:12:02 2009 -0400
Move CPU detection code to its own file
commit e6e6f6350230cc2e10e7dfe0ebd89ec4b587b660
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 01:18:49 2009 -0400
Move conical gradient code to pixman-conical-gradient.c and delete pixman-source.c
commit 47abb3c7659a4eb1214c358796965f92f98fc901
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 01:08:54 2009 -0400
Move the radial gradient code form pixman-source.c into pixman-radial-gradient.c
commit a10b0e7e136116cea95d6717f119d92599491f27
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 00:59:36 2009 -0400
Duplicate some code that was shared between radial and conical gradients.
It is going to live in separate files.
commit 9a867fa231e37d945f1dc3d18cb17359b24dbde3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 00:56:16 2009 -0400
Move the linear gradient code from pixman-source.c into pixman-linear-gradient.c
commit ade664ced3b9ac64120424f0fc80dc0deef69b00
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun May 3 00:46:30 2009 -0400
Rename pixmanFetchSourcePict to pixmanFetchGradient
Move the solid fill parts into pixman-solid-fill.c
commit 8267d8d38f794c51e09f440c470f1c23c59e11aa
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 23:26:30 2009 -0400
Add a generic 64 bit fetcher and use it for gradients and transformed images
commit ecaaef2f505fb61b383b194236b68ee59d52ecda
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 23:08:59 2009 -0400
Move the gradient walker code to its own file
commit 51d972ecd885b05165a09d19fb3491ecb3ce813a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 22:55:56 2009 -0400
Replace pixman_image_get_fetchers() with pixman_image_get_scanline_{32,64}
commit b7f113200e285c003b9225de83d8fe83492717ee
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 22:46:20 2009 -0400
Set up scanline getters for bits images
commit b496d566dcc3e277f9ed9a8e93dbb3963a6d14e6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 22:42:59 2009 -0400
Set up scanline getters for source pictures
commit c62f2a14f433a07c5333cfefeed934214507d63a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 22:26:23 2009 -0400
Store get_scanline() functions in the image struct
commit 0b497b33fe8bdfc404ed377f3b7525b4e5c11ad5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 22:00:25 2009 -0400
Add stubs for property_changed virtual functions
commit 7bb615f6baf39e3d7c31a8ce521c0ff0b5172d7e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 21:14:36 2009 -0400
Split pixel images into pixman-bits-image.c
commit 53bae97c7e7bf9b20ddfd400fd0bd11d03431d39
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 21:08:12 2009 -0400
Split conical gradient images into pixman-conical-gradient.c
commit c43c3628935722f489d5e5359413dbb17d4c4a44
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 21:06:23 2009 -0400
Split radial gradient images into pixman-radial-gradient.c
commit 76418e388e1439f8e7f33eb777856c8eb475a2fc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 20:54:17 2009 -0400
Split linear gradient images into pixman-linear-gradient.c
commit 58de62bfada0d0ca945350fe3da38dee48aac7b4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 20:40:16 2009 -0400
Split solid fill images into pixman-solid-fill.c
commit aa234489b0653ef63cf1b3d162aa7a339779c4da
Merge: 7a9bfa1 010e286
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 16 12:51:05 2009 -0400
Merge branch 'master' of git+ssh://sandmann@git.freedesktop.org/git/pixman
commit 010e28653f95bb78215e3cacb6a4f47d9a289fde
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 16 08:33:35 2009 -0400
Don't read potentially uninitialized data in pixman_CombineMaskU()
This is mainly to quiet valgrind. The data in question would only be
uninitialized when the corresponding mask pixel was zero, so the end
result is zero in any case.
commit 822cd47562c138002b45b24e6d4e25de3893088d
Author: Loïc Minier <lool@dooz.org>
Date: Fri May 15 16:11:16 2009 +0200
Fix fd check after auxv file open() [Bug 21749]
Signed-off-by: Julien Cristau <jcristau@debian.org>
commit 58e08374e1cd01371786469787b3709eca27f463
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 15 07:47:59 2009 -0400
Don't call hyphenated git commands as they don't exist anymore
commit b365547e7dd9cb02fb43d85ae4104903083c4ebf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 15 07:47:22 2009 -0400
Post-release version bump
commit 564ecfe8e9a1aba41f5a798de461294ae2fe1c6d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 15 06:57:59 2009 -0400
Pre-release version bump
commit e483af47db769fcba559dda72699bc80d154b575
Author: Adam Jackson <ajax@nwnk.net>
Date: Fri May 15 06:26:48 2009 -0400
Fix overflows during trap rasterization. [Bug 16560].
Avoid overflows when rasterizing traps that fall entirely in the space
between the final sample row and the end of the coordinate system, or
in the space between the beginning of the coordinate system and the
first sample row. Such traps don't contain any sample points, so the
top and bottom of the edges can safely be moved to the beginning/end.
commit 7a9bfa146154e555a9e2e8a807bb7df2b30f860c
Merge: 81b94d7 e17fc72
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 13:10:01 2009 -0400
Merge branch 'master' of git+ssh://sandmann@git.freedesktop.org/git/pixman
commit 81b94d725834d03f7856ae0d505a7340f1135326
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 13:09:45 2009 -0400
Add test that shows difference in clipping with transformed vs untransformed
commit e17fc72e958e1ddee0b24e8a90ae9609e1e44391
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 06:17:55 2009 -0400
Remove unused CombineMask64 type
commit a1bc6bf15995fae8be2de61f859fcc73d80f7b64
Merge: ffce146 e74a284
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed May 13 05:58:36 2009 -0400
Merge branch 'master' into refactor
commit e74a2847ddcb3b4c1675efaaa923e78556277dff
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 9 08:34:12 2009 -0400
Fix divide-by-zero crash
commit a95c39c7d533ed7d6c8c7708604c5844cdc22dfe
Author: Jonathan Morton <jmorton@sd070.hel.movial.fi>
Date: Thu May 7 11:54:15 2009 +0300
Test USE_GCC_INLINE_ASM instead of USE_NEON_INLINE_ASM.
The former is now Autoconf enabled, and does what it says on the tin.
commit 62af131a5a7222c58ed9aac38b7dddb75c0e87f7
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue May 5 15:25:43 2009 +0300
Fixed rendering bug for source alpha == 0 in OVER fastpath functions
Handling of the case when source alpha is zero was keeping destination
pixel unmodified. But this is different from how generic path behaves.
For example fbOver(0x00200483, 0x9CAC7E9F) == 0x9CCC82FF and the
destination pixel changes from 0x9CAC7E9F to 0x9CCC82FF in spite
of having zero alpha.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit a589afa3a7f3430a5b37bb9efb6574fe6ac8d9af
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Wed May 6 13:30:29 2009 -0400
Enable NEON assembly when we can build it
This adds detection for ARM NEON build support as well as gnu assembler
syntax detection from Jonathan Morton.
commit ffce1461502c9cc4dbf613b64eddba4c4de6a4d4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat May 2 19:55:10 2009 -0400
Remove unused combineMaskU functions
commit 38e5929400ea8d8bdf0830006f761a5498f558a5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 14:18:32 2009 -0400
Optimize source reading in combine4
commit 3d6720a22777523c428914c2f84439d240778484
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:04:36 2009 -0400
Enable mmxCombineSaturateU
commit 742d444f96bf160d2b7707cc894dd9b516f3179c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:04:29 2009 -0400
Enable mmxCombineAddU
commit fd31818cfba0a750672bf50fbe550fa29ec77d99
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:04:23 2009 -0400
Enable mmxCombineXorU
commit b7fe2f3378c6fb0828e863cb1a2df9191fb3e25e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:04:16 2009 -0400
Enable mmxCombineAtopReverseU
commit 55a703f88c60acef5f1053d2d409c6e7048a714c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:04:10 2009 -0400
Enable mmxCombineAtopU
commit f747b4184865c5e8b1c36c7116b6a47560f26e8d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:04:02 2009 -0400
Enable mmxCombineOutReverseU
commit 3c6fd2699dc2741b6ad121eb441a32b52b169a82
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:03:50 2009 -0400
Enable mmxCombineOutU
commit 9d13da03b7d4525aa8ffbb9b787dee8964323810
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:03:39 2009 -0400
Enable mmxCombineInReverseU
commit 2262f0084722d8548071730f8fcbe318560e9fbf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:03:32 2009 -0400
Enable mmxCombineInU
commit 5e5c78a6cc962f154b749d954c35ac663f8ac483
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:03:24 2009 -0400
Enable mmxCombineOverReverseU
commit 81342af3bda044c059a13a37a9ede542212dc5a2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:03:16 2009 -0400
Enable mmxCombineOverU
commit 3d684556dbdb087fa6d0631f06ccde38bb02dea5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 03:02:58 2009 -0400
Implement the mmx combiners with masks (disabled)
commit cdb6aa49bec3595a00eb203c258111c713de9bbc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:01:09 2009 -0400
Enable sse2CombineSaturateU
commit 29528b9523e779ff59029f11f79f1e22cbeaf4cd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:52 2009 -0400
Enable sse2CombineAddU
commit 374ad0c363baf93e724409f575e1bbd7cfd8914a
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:47 2009 -0400
Enable sse2CombineAtopXorU
commit c1bdbff80ac724cab8213d41f91c525e10ca9ff1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:39 2009 -0400
Enable sse2CombineAtopReverseU
commit 74d79f271c45807bf23b395e7050130f7da1139c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:33 2009 -0400
Enable sse2CombineAtopU
commit c3d92fe51869c4e7b4ed83fb3bed5d0e7e651782
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:26 2009 -0400
Enable sse2CombineOutReverseU
commit 53809bde5265378c400792bdb0b2639a0cde6c08
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:20 2009 -0400
Enable sse2CombineOutU
commit 9293a51323e7e2b4aedb75c3fa55475aa4a269e7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:12 2009 -0400
Enable sse2CombineInReverseU
commit d45c0db9603a84989d59e5e1519b424ab756f221
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 01:00:07 2009 -0400
Enable sse2CombineInU
commit 92c1199bf7e9379beca52fa880a0a436ffdda7e2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 00:59:59 2009 -0400
Enable sse2CombineOverReverseU
commit d1879bc048be083198a35bb037273171bc07a211
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 00:59:51 2009 -0400
Enable sse2CombineOverU
commit 22fda2d1aba7368a7545d1659b737e695a6c5b26
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 00:59:29 2009 -0400
Implement the sse2 combiners with masks (disabled)
commit 1ddd91bfee87c13ce18d82d9ab9b2fb2de7cca22
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri May 1 00:58:38 2009 -0400
Use memcpy() in fbCombineSrcU when there is no mask
commit 24012542295f80455c8df01262099b98d2b2de37
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 17:59:09 2009 -0400
Have the generic code go through the component alpha path always
commit 8b2e08d494c6da1512f44d0754b0f52a184cc6f3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 17:53:48 2009 -0400
Get rid of separate combineU and combineC types
commit 6d6e33d33818b56982f15da1943da499db220bc1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 17:14:04 2009 -0400
Change type of combineU to take a mask
commit fe571035f8889fd12892f2257b64536feced3f4e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 19:50:24 2009 -0400
Make combineC function type take const args
Fix type of mmx component alpha combiners
Fix type of sse2 component alpha combiners
Fix type of vmx component alpha combiners
commit f9a9ce8940c5644f25721abe6af6c72c4eabcfe7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:54:32 2009 -0400
Remove accessor version of pixman-compose.c
commit 0236393b031798a36144820a6254b646f9279580
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:51:09 2009 -0400
Remove unused xoff/yoff variables
commit d0a6c1e9a5447e982dc4d544146c1b5234e490cf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:50:18 2009 -0400
Move store logic into pixman-image.c
commit 363be5285950d20cc77cf4a7eb50d5f1f5fea0f7
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:42:47 2009 -0400
Move fetch logic to pixman-image.c
commit bf879f1b37cfe5ee2ec921d26bf9d9126ca59b9c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:25:48 2009 -0400
Simplify logic to compute store function
commit 20cedd756f54bc735fe25ab29aafd3cdfeddda30
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:14:13 2009 -0400
Formatting
commit 4c74f519ca3788fe357caf54e22e6cab609b681e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:08:44 2009 -0400
Factor out duplicated fetcher finding code
commit eb5d30a9d3bfb1bddaf9e60e2092353fe6b1dd48
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 02:03:03 2009 -0400
Get rid of SOURCE_IMAGE_CLASS_NEITHER again
commit 87922006e506a252c81d42f0c1bacb59d1c67e60
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Apr 30 01:49:13 2009 -0400
More refactoring notes
commit 8c646172743568584f7cefd3177b410fd3b22b2d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Apr 29 23:13:14 2009 -0400
Add notes on how Render actually works
commit 57a3d09b01834103e61785c6269d152bdfd91a4f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Apr 29 20:15:20 2009 -0400
Move calls of the classification out of the if statements.
commit cb73922ab9ab7d627f059601a03714cfff07d25b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Apr 29 19:55:19 2009 -0400
Move SourcePictClassify into pixman-image.c
In preparation for making pixman_image_t more of a real object, move
SourcePictClassify into pixman-image.c and expose it through a
function pointer. Later, this function will be split into smaller
functions depending on the exact type of the image.
commit 3d73ce6813743811ff4413df554b438d3790c361
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Apr 29 01:44:56 2009 -0400
More refactoring notes
commit 4d255141f78451ec5edb27ed29437651d6f64491
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Apr 28 23:02:49 2009 -0400
Add refactoring notes
commit f98c800fba076197c56df7a990a30a98a115b9e0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon May 4 18:54:27 2009 -0400
Mention utils.h in test/Makefile.am so that make dist will pick it up
Pointed out by Julien Cristau.
commit e047f605e2e9ef4f23e63c38259c5ceb720060dc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon May 4 18:34:54 2009 -0400
Move all the GTK+ test code into its own file, utils.c
commit c882260d4b481283c3d59385bfa31bfeffc0a58f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Apr 28 22:49:31 2009 -0400
Include string.h and fix warning in trap-test.c
commit c74becfdb939af56d19b1d8cef94f3cfc11f238c
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Tue Apr 28 08:44:47 2009 -0700
Add solaris-hwcap.mapfile to EXTRA_DIST
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit dbb72c02fda0d59d0da4ba100c7120ebc244835f
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Mon Apr 20 16:13:44 2009 +0300
Updated scaling test to support rgb565, source clipping, etc.
Now test provides better coverage for various image scaling
cases. Unused byte for x8r8g8b8 format is ignored. Running
the test program without any command line options provides
a PASS/FAIL verdict based on the precalculated crc32 value
for using pixman with all the fastpath functions disabled,
which should simplify testing for correcteness.
commit 880afeecc0d8bd610733292fd1cb692bba98dd5b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Apr 24 21:35:46 2009 -0400
Add trap-crasher.c test program
Based off of Pavel Kankovsky's test case in bug 16560.
commit eac663a7c8d254842224f1aed992c91691a425b8
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:38 2009 -0400
Enable fbCompositeSolidMask_nx8x8888neon
commit 99fd917adf9bf649fb94b32feae466250433a6ff
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:38 2009 -0400
Enable fbCompositeSolidMask_nx8x0565neon
commit c0436ed25598bff4b6c426faf528e56726632ed2
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:38 2009 -0400
Enable fbCompositeSrc_8888x8x8888neon
commit f2b3dfcce4add4027163289c0a282430418a4857
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:38 2009 -0400
Enable fbCompositeSrc_8888x8888neon
commit 6da2f2b360225b6f1f20c00734db66499b94bfa0
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:37 2009 -0400
Enable fbCompositeSrc_x888x0565neon
commit b8625fa2dd0811092f6c96b31596277bb0c61021
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:37 2009 -0400
Enable fbCompositeSrcAdd_8000x8000neon
commit 452ed13867d4a7b1509030f7f79cbb17b51e7b36
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:37 2009 -0400
Enable fbCompositeSrcAdd_8888x8x8neon
commit f2af00bf02dcf3e7e27ac3e035d41c387fc9400b
Author: Ian Rickards <Ian.Rickards@arm.com>
Date: Tue Apr 21 17:32:36 2009 -0400
Add support for ARM NEON fast paths
Currently disabled
commit 9fdca26d3087da5a620d720f5a56ccbfdf55587e
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Tue Apr 21 17:32:36 2009 -0400
Add support for doing ARM simd detection on Windows
commit 2423118e239e9c85dd68403bf8b97b30965df38e
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Wed Apr 15 10:38:37 2009 -0400
Add support for doing ARM simd detection on Windows
commit 3d9716f44ea799e003c19783f087239fe89c88dc
Author: Søren Sandmann Pedersen <ssp@dhcp-100-2-40.bos.redhat.com>
Date: Thu Apr 9 20:38:53 2009 -0400
Post-release version bump
commit 0a63858b07e1d7bccf54a69881e50246a530785d
Author: Søren Sandmann Pedersen <ssp@dhcp-100-2-40.bos.redhat.com>
Date: Thu Apr 9 16:38:05 2009 -0400
Pre-release version bump
commit 86ec5419b238cba841bed303679fdaf8b4299a6f
Author: Søren Sandmann Pedersen <ssp@dhcp-100-2-40.bos.redhat.com>
Date: Mon Apr 6 15:25:03 2009 -0400
Fix search and replace issue
commit 179750544d911adf5b01749e33b3ef44a62b0b0e
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Fri Apr 3 13:02:37 2009 -0700
Replace custom type ullong with standard uint64_t in pixman-mmx.c
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit fd7449c4855e77d31770f9042ba43e186c541ce5
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Fri Apr 3 12:40:10 2009 -0700
Fix MMX & SSE intrinsics to work with Sun compilers & Solaris
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit 47dabe1d025c420a07ac940ab46e5d00c752d2d8
Author: Søren Sandmann Pedersen <ssp@dhcp-100-2-40.bos.redhat.com>
Date: Sat Apr 4 06:04:42 2009 -0400
Fix pixbuf_from_argb32() to take premultiplied alpha into account
commit fb8e9b16d5760aa82c1ca4c180faed964a4e7ff5
Author: Søren Sandmann Pedersen <ssp@dhcp-100-2-40.bos.redhat.com>
Date: Sat Apr 4 05:57:20 2009 -0400
Add a new trap-test test program.
Also some tweaks to the build system in the test directory to make it
build non-gtk+-using application when use of gtk+ is disabled.
commit cdcbd9be3a2318bf650b8f56fea51acb5991b075
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Wed Apr 1 18:26:24 2009 -0400
Set srcRepeat = False when using fbCompositeSrcScaleNearest
NORMAL repeat was broken (the optimized function can handle repeat operation
itself and can be screwed up if 'pixman_walk_composite_region' tries to help it
by splitting the work into handling multiple separate areas).
Splitting work into handling different areas does not work right for the
transform case (and it is never used for generic path). The point is that this
splitting only has full pixel precision at the moment, while correct blitting
needs to preserve some fractional part in calculations when moving from one
"tile" to another.
commit a9adae3dc38764fe055b66e38175be5220fb3f9a
Author: Siarhei Siamashka <siarhei.siamashka@nokia.com>
Date: Tue Mar 31 20:58:56 2009 +0300
Image scaling regression test script
This test script can help in finding regressions in image scaling
fastpath implementations. It uses test program compiled with
and without fastpath code and can compare results of execution
for different pseudorandom compositing operations involving scaling.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit 29e8556814ddddf269da90989e0de6d406d0afe6
Author: Mark Kettenis <kettenis@openbsd.org>
Date: Tue Mar 24 14:28:38 2009 -0400
Add support for BGRA and BGRx formats.
commit e92417b7805315ff38a3d5758bd7075418d3ae6d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Mar 17 13:28:31 2009 +0000
Check for failure when intersecting regions.
Need to check and report the failure of intersecting the rectangle with
the clip region during pixman_image_fill_rectangles().
commit 9ba3236354deb472edf109b6842a5b8749bd746c
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Tue Mar 17 08:39:48 2009 +0000
Check for allocation errors during pixman_op()
Propagate the error returns from pixman_rect_alloc().
commit 2664c2d57552176052d753def2d307f63c2c9ff4
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Feb 10 19:47:19 2009 -0500
Remove stale comment
commit ced5a4f356f5f2322a8aeb2876348707cf56dbcd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Feb 6 19:41:24 2009 -0500
Add license and copyright holders to COPYING
commit 2d9c7cd84b276ebe2ff72d03c34a2d7f4f98b9f9
Author: Thomas Jaeger <ThJaeger@gmail.com>
Date: Tue Jan 20 18:40:46 2009 -0500
Implement PIXMAN_REPEAT_REFLECT for images
commit 3d0911dee7f1d00b1e61fb183ab337c693b49adc
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Feb 6 18:03:31 2009 -0500
Reinstate SrcScaledNearest optimization
commit 6815e754d31d5a431028c8ca62911c07b753edc8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Feb 6 18:01:57 2009 -0500
Bump version number post-release
commit 6df6a43dc7119a510cf9db2e62fcc970a539e5a3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Feb 6 17:31:32 2009 -0500
Bump version number pre release
commit 6e6c7ac5e0bce2e1893675eb45a8d98876085794
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Feb 6 17:30:24 2009 -0500
Comment out SrcScaledNearest optimization that hasn't been tested much
commit e651118b67111d36193f55a752d13e66df5ca953
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Feb 6 17:29:04 2009 -0500
Fix release targets to remove all hashfiles before generating tar balls
commit 072d848f592530973f1f0a0066a320ec5965625c
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Fri Jan 9 12:48:22 2009 -0500
Add pixman-matrix.c to Makefile.win32
commit c55db2905706ae78364bfb63dcfa62c00cc486c7
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Fri Jan 9 12:48:20 2009 -0500
Conditionally include config.h in pixman-matrix.c to fix win32 build
commit 8f98ffadf58de1e28294b3ab2c09f380ccc535e5
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sat Dec 20 17:18:51 2008 +0000
Fix pixman-1-uninstalled.pc to point to the libtool library
Otherwise we fail to link when compiling cairo against the uninstalled
library.
commit 9d726712c22d8555d00b9f1ebacd5425dc9a5b61
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Nov 21 01:20:38 2008 +0000
Allocate initial array of RegionInfo on the stack.
The region validate() code is frequently called by cairo as it is used to
extract regions from the trapezoids for fast-paths through the drawing
code and also for fast-path clipping and the RegionInfo allocation (as
well as the pixman_rect_alloc during the final union) appears as a hot
spot on application memory profiles.
commit 08530f5bf23386355a19b83db88173302c7a5300
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Wed Dec 17 10:35:03 2008 -0800
Don't treat PIXMAN_TYPE_YUY2 and PIXMAN_TYPE_YV12 as PIXMAN_FORMAT_COLOR.
Various pieces of code expect PIXMAN_FORMAT_COLOR (and its less cool older
brother, PICT_FORMAT_COLOR) formats to have ARGB bits, and the YUV formats do
not.
commit 4546234c18f5bb5e2d193d2fa8ff5c3ca78bc716
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Fri Dec 5 12:01:03 2008 -0500
[arm-simd] Add a comment about aligning source and destination pointers.
commit 985829f26b15aaa3e336127412c771027577313f
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Fri Dec 5 11:45:03 2008 -0500
Check alignment of 'src' pointer in optimized ARM routines
fbCompositeSrcAdd_8000x8000arm() tries to align 'dst' already but must check
'src' too. Otherwise, the next 4-byte copy loop might access an odd 'src' address
causing an alignment trap.
Patch from Enrico Scholz
commit 4238047c228ca885a24bd341aa48a3ad54590837
Merge: bfa76d4 d625ca5
Author: Keith Packard <keithp@keithp.com>
Date: Tue Nov 25 22:04:29 2008 -0800
Merge commit 'origin/master'
commit bfa76d47ac85c88fbb9d7226f09c6c6654b10342
Author: Keith Packard <keithp@keithp.com>
Date: Tue Nov 25 22:03:55 2008 -0800
Bump to 0.13.3 after 0.13.2 release
commit 0191d1a41ea273e5b1920ed83dfa33820870ebae
Author: Keith Packard <keithp@keithp.com>
Date: Tue Nov 25 21:37:54 2008 -0800
Bump version to 0.13.2 for release
commit 6002963ea32d05592da05a6eeafd5d8ee9d9d496
Author: Keith Packard <keithp@keithp.com>
Date: Mon Nov 24 11:49:32 2008 -0800
Move matrix operations from X server to pixman
Signed-off-by: Keith Packard <keithp@keithp.com>
commit d625ca5f291c01b3672648e5897f30a17326367f
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Mon Nov 24 15:11:24 2008 -0500
Optimize rectilinear nearest-neighbour scaling
Add a special case for a source transformation that is only a scale and
preserves rectangular pixels and doesn't rotate the image. Currently, only
SOURCE is special cased, however I plan to do more work in this area as needed.
The biggest advantage the specialization currently has is writing directly to
the destination surface instead of a temporary scanline buffer. However, it is
still pretty unoptimized but I want to keep things simple for now.
commit 0c3dd54f6bf02156e4b94a2b5bfadef148715643
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Fri Nov 21 21:35:30 2008 -0500
Unify scanline buffer types
Change the type of the stack based scanline buffer to uint8_t to match the rest
of the variables. Also premultiply the scanline buffer size by sizeof(uint32_t)
because the bpp can be either sizeof(uint32_t) or sizeof(uint64_t).
commit e201504da81cd9ceb7d20d12b3a923289f93b108
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Thu Nov 20 10:41:40 2008 -0500
[arm-simd] Fix typo found by 王新拓
'and r7, %[upper_component_mask]' appears to by a short hand for
'and r7, %[upper_component_mask], %[upper_component_mask]'. Use
the explicit form to avoid any confusion.
commit cd2a79ab81045aa7e35bc901081e57dea6ac4845
Author: David Woodhouse <dwmw2@infradead.org>
Date: Tue Nov 18 16:01:11 2008 -0500
Less fragile Linux altivec detection
Instead of using really fragile SIGILL trapping, use a more reliable
detection method by checking what the CPU really supports.
https://bugzilla.redhat.com/show_bug.cgi?id=472000
https://bugzilla.redhat.com/show_bug.cgi?id=451831
commit b1b0507c24d7a3afb1ee09fc23783fa22cd0e56e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Nov 10 23:18:09 2008 -0500
Make comments about PIXMAN_REFLECT more useful
commit 056c6d97db753a928ac2794ec215c86cceffe901
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Nov 5 23:58:56 2008 -0500
Various formatting fixes, and a simplification of the adjusting code
commit 607562b2a6cc8536350d0a9bcb6fe99224ad4f1f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Nov 5 17:51:55 2008 -0500
Inline the fetchers
commit 7a1717e605e502b52ebca999991d2e07791e0cd1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Nov 5 17:23:45 2008 -0500
Use fetch_nearest() instead of having duplicated code
commit 49647e705438e0827d4a0e955dfaaf01cfae7524
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Nov 5 17:12:22 2008 -0500
Do the fetch_bilinear inline rather than in separate functions
commit c8b314c43bd70a1c375aef3cacfe717ca9dbc85b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Nov 5 16:59:56 2008 -0500
Make use of fetch_bilinear() in the various bilinear implementations
commit bad1ee39d3cc27ec07303f6484515a886430cda6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Nov 5 16:38:33 2008 -0500
Add fetch_bilinear function
commit 95f2af9584f8f4327ddf6d6948dee17ab48ad8b3
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Nov 3 13:09:02 2008 -0500
Add missing pixman-arm-simd.[ch] files.
Pointed out by Chris Ball and Adrian Bunk.
commit 1d5bb7a3f17fb88cdabee8a27b79fb9fb129e189
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Oct 31 15:08:03 2008 -0400
Inlucde inttypes.h on digital Tru64
Bug 18007, reported by Joonas Pihlaja.
commit f9db3ec7b94db45f388b210d7bed639048f1aa23
Author: Adrian Bunk <adrian.bunk@movial.fi>
Date: Fri Oct 31 14:59:30 2008 -0400
Rename the current ARM code to ARM SIMD
This code is only for CPUs supporting the SIMD instructions, not for all ARM
CPUs.
I stumbled above the recent commit with the ARM SIMD code while preparing a
patch that models the patch from #13445 after the MMX and SSE2 cases:
The ARM SIMD option currently uses --disable-arm, although this code is only
for CPUs >= ARMv6. That's as if one would call the option to disable the SSE2
code --disable-x86.
This patch therefore renames the configure option and the function and file
names to arm-simd/arm_simd.
commit b9e2dd783e34969aa7c41877b0aa49920788637b
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Wed Oct 29 18:13:59 2008 -0700
Define force_inline for compilers other than gcc & MS Visual C
commit 3a775610f22d09fc030804c6dd02208d36920b54
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Wed Oct 29 17:14:41 2008 -0700
Cleanup inline definitions
Replace all inline definitions with a common one in pixman-private.h. Also, add
'force_inline' and replace all existing uses of 'inline' as a forced inline
with 'force_inline'.
commit d68ebb7701e61d7f19c87d2d3686eb30e85e2ede
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Oct 15 18:46:38 2008 -0400
Remove unused AddMul_256 macro
commit 8f5cb6916ddea072e453681d80a879a64bd22f8c
Author: Benjamin Otte <otte@gnome.org>
Date: Mon Oct 13 00:05:40 2008 +0200
unswitch red and blue
The previous code assumed a color format of ABGR when naming the
variables. The true color format is ARGB. This did not cause any bugs
because no functions rely on the order of colors so far. This patch
renames the variables just to avoid confusion.
commit f5d4e01c399d6d23fd7e4cfaa26e0b07e2279690
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Oct 8 21:21:58 2008 +0200
update .gitignore
commit 69dadf231283fadcb117b4d9e799e8633a0e4dab
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Oct 8 21:18:12 2008 +0200
force alignment of arg pointer in potential SSE users
Fix for bug 17824
commit 1c5de7b05831b3d66821707276b71974a232f5c7
Author: David Müller <dave.mueller@gmx.ch>
Date: Tue Sep 23 07:45:51 2008 -0400
Move _mm_empty() to correct place
The "fbComposeSetupSSE2()" function is guarding most of its code
depending on the capabilities of the CPU, but unfortunately the call
to "_mm_empty()" is not part of this code path but executed
unconditionally. This results in a "illegal instruction" crash on
non-MMX / non-SSE capable CPUs caused by the the "emms" instruction
(embedded in "_mm_empty()").
Fix bug 17729.
commit aadcc7f011004794cf88c126641ef8258183878f
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sun Sep 21 11:01:07 2008 -0400
Update TODO
commit 9cb60e142bad01fd54cb7e6f3fa2504ddc87a7da
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sun Sep 21 11:00:33 2008 -0400
Make use of SSE2 blt/fill in more places
commit d69d2705d16c813756acd8a685dc9a28a178423a
Merge: b5a9002 412b0d5
Author: Julien Cristau <jcristau@debian.org>
Date: Fri Sep 19 10:29:05 2008 +0200
Merge tag 'pixman-0.12.0'
Conflicts:
configure.ac
commit b5a9002d2e3f0d961bcfe2acee6e9a0f1c583d5d
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Sep 18 19:28:31 2008 -0400
Inline fetch functions in pixman-transformed.c
There was significant performance overhead associated with indirect
call to the fetch functions, so inline them.
Also, the old code assumed that if the number of rectangles in the
source clip was 1, then the clip was identical to the image
boundaries. Fix that by running a full region_contains_point()
whenever the source clip is different from pict->common.full_region.
Based on a patch from Antoine Azar.
commit a57e7bf34a2f312285c8065b8b1328bd5650788a
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Thu Sep 18 11:44:36 2008 -0400
Fix inner branch code.
The entire source must be 0 not just the alpha component.
Fix some comments too.
commit 54ee41a6603441bf09bbc95c2fec3d0a41c82d0f
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Sep 17 14:38:47 2008 -0400
Post release version bump
commit 24de3b74f4db3db569e1edface5e5804b58c02b5
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Sep 17 14:03:23 2008 -0400
Pre-release version bump
commit 7180230d4d87c55dfef1e17a0cc3b125d45aa3a0
Author: Vladimir Vukicevic <vladimir@slide.(none)>
Date: Wed Sep 17 16:01:31 2008 -0400
Add SRC x888x0565 C fast path
commit d0b181f347ef4720d130beee3f03196afbd28aba
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Wed Sep 17 15:53:20 2008 -0400
Add support for ARMv6 SIMD fastpaths.
commit 412b0d5cbc2c0a5200649cbb0b5e26f8b874437d
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Sep 17 14:03:23 2008 -0400
Pre-release version bump
commit 3f5d6f90b753175a888f36a93d1e79fdc80d95de
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Sep 17 09:50:57 2008 -0400
Don't include stdio.h
commit eba402092082bf48072671e04e224589af872acd
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sun Sep 14 14:58:00 2008 -0400
[sse2] Fix rounding bug in conversion from 565 to 8888
When converting from 565 to 8888, replicate the topmost bits instead
of appending zeros.
commit 6f00d98f87c019849c611d27e9593c5eecfef4c2
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Tue Sep 9 10:49:56 2008 -0400
Fix for bug 17477.
over_2x128 was changing the alphaLo and alphaHi arguments, causing
stripes.
commit bf76505cc6cc5e54c25eb145748e9e364fb367e9
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sun Sep 7 00:40:09 2008 -0400
Update TODO
commit da18a5675b3107c9bf99e228d85619d247fa19a6
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sun Sep 7 00:13:10 2008 -0400
Extend clip-test to demonstrate a bug in source clipping
commit 00f3d6ef22b5a062323208fd540a17ca65dca42b
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sat Sep 6 23:49:25 2008 -0400
Fix bug in pixman_image_is_opaque()
Non-repeating gradient images would be reported as opaque. Also add
new test program to test source clipping.
commit d5b4fd7e11c2f2b2e8ab3cb95bef252ce142982e
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sat Sep 6 06:17:32 2008 -0400
Update RELEASING
commit 35fcdf352a29241f235f2bc7a692c20ad8baf240
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sat Sep 6 06:15:31 2008 -0400
Bump release
commit 5e7388540f2cd201331cb3d1f616e3c300dbc45f
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sat Sep 6 05:14:18 2008 -0400
Check for __sun || __sun in pixman.h. Update TODO
Reported by Bernd Nies.
commit f369d612b3d65529e4b10d8a0b1e015407357d9b
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Sat Sep 6 04:33:16 2008 -0400
Use error instead of #error in a couple of other places
commit f921c8c57ffdd6d0afd3d41d50e3565084ebd49c
Author: Peter O'Gorman <pogma@thewrittenword.com>
Date: Fri Aug 15 15:00:24 2008 -0500
Minor portability fixes
Use AC_C_INLINE to figure out `inline'.
IRIX compiler does not exit with a non-zero exit status when it sees #error
commit e2cbe1a0a4db750ab05d804901f155adb312746b
Author: Frédéric Plourde <frederic.plourde@polymtl.ca>
Date: Thu Sep 4 16:30:21 2008 -0400
Win32 build system fixes
Signed-off-by: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
commit ed862f1b2f62ee27884b9b429c54162039f3cb10
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Sep 4 16:21:08 2008 -0400
Make sure pixman-combine{32,64}.h are disted
commit f9d3f372f907c997abe4c4a65cc4a3dbe0bb41e2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Aug 24 00:40:16 2008 -0400
Rename pixman-sse.h pixman-sse2.h
commit fdff58cfa2ed77d2ceb38f48711ac5c91513aab1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Aug 23 23:59:49 2008 -0400
A few other renamings of SSE->SSE2
commit 9bfa8aaf17b256d90832802dcd386c05b904b97e
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Aug 23 23:54:24 2008 -0400
Be consistent in naming SSE2 related things SSE2
commit 00841cb314a3b737dc5f492e113f36c19ba336e1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Aug 23 23:42:36 2008 -0400
Remove use of MMX extensions.
They were never a big improvement anyway, and now that we have SSE2
support, they would only be useful on Pentium IIIs, and only if
explicitly enabled, which most distributions couldn't do anyway.
commit 3cd6acfe74dabfbc18af49bed077c2a39b9a742d
Author: Andre Tupinamba <andrelrt@gmail.com>
Date: Thu Aug 21 14:43:17 2008 -0700
[sse2] Change pixman-sse to pass __mm128i args as pointers, so as not to confuse MSVC
commit 9b9f7b59e5ce17735157ca9b154e8bc545f5c96b
Author: Ginn Chen <ginn.chen@sun.com>
Date: Thu Aug 21 14:21:01 2008 -0700
Use hidden attribute for private functions when compiling with Sun Studio
https://bugs.freedesktop.org/show_bug.cgi?id=17183
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit e78eee87319e0290025c9d87bffe379bec440587
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Tue Aug 19 11:57:53 2008 -0700
Add sys/inttypes.h include for AIX
commit cb9d5750582ea93ef1902a5185164088cdaa0140
Merge: daf1745 dfe1f63
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Jul 31 13:32:59 2008 -0400
Merge branch 'master' of sandmann@git.freedesktop.org:/git/pixman
commit daf17450607e533dc590b4673c88241862b6b138
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Jul 31 13:32:38 2008 -0400
Bug 16921. MMX and SSE2 intrinsics not enabled when compiling with Intel's icc
Remove GCC specific inline-growth flags, and use __force_inline__ in
pixman-sse2 instead. Based on patch by Matt Turner.
commit dfe1f63f709fc711c15d1be317dc1404d72b3efd
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jul 25 10:14:29 2008 -0700
Add depth 30 formats to pixman_format_supported_source.
Thanks to Julien Cristau for pointing out that these were missing.
commit db3fb5eb605c4e1a6fcb93902389a22fc496151c
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jul 21 22:06:02 2008 -0400
Don't require GCC 4.2 on x86-64
commit 53fa7133fdf7f5879f10847228f478983c480b79
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jul 21 21:55:55 2008 -0400
TODO
commit 58ab45b85d1732da7c84a274acdca3bfcf1c36b1
Author: André Tupinambá <andrelrt@gmail.com>
Date: Mon Jul 21 21:53:20 2008 -0400
Use CopyAreasse2, plus a compatibility fix
commit 51576cda8ba830c0d7dbbeaebb79fbef276f7e2d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jul 18 14:49:35 2008 -0400
Fix typo in sse2 configure logic
commit 596218e488fc92c5a03d07892015a106dcd541b4
Author: Frederic Plourde <frederic.plourde@polymtl.ca>
Date: Thu Jul 17 13:51:31 2008 -0700
Win32 Makefile fix
commit f729457da5de4a96ccd220ce71c583cdec971483
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Jul 17 14:13:34 2008 -0400
Update RELEASING and release targets in Makefile.am
commit 72045eabd57cf793266424c39246b435b655b19f
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Jul 17 14:07:23 2008 -0400
Post-release version-bump
commit 2a14ecf1cd07e9a3f367ea66a7b10da929ccc06d
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Jul 17 13:38:57 2008 -0400
Pre-release version bump
commit 411c0e990f7a96d4e15f2cbbe07d3b50b6a20f95
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Thu Jul 17 13:37:56 2008 -0400
Make a couple of functions static
commit 96f57c07f24cd6d86c0aad624bd1a16b85f08e04
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Thu Jul 17 13:32:45 2008 -0400
Speed up fbOver
Use FbByteMulAdd to operate on two components at a time and force the function
to be inlined.
commit d4855cd9d028c49c2a12f61c6227579fcb8af5b6
Author: Jeff Muizelaar <jmuizelaar@mozilla.com>
Date: Thu Jul 17 13:32:08 2008 -0400
Comment FbByteMulAdd
commit dcbe4b3f80fb8dc6a83efa7e66a891f8b102608d
Author: Julien Cristau <jcristau@debian.org>
Date: Wed Jul 16 22:03:29 2008 +0200
fix --enable-{mmx,sse2,vmx}
If --enable-foo is used, don't treat it as --disable-foo, and
error out if the appropriate compiler support isn't detected.
commit e21f00db50c30e80c8969fbf63982aeb7434dc1d
Author: Damien Carbery <damien.carbery@sun.com>
Date: Wed Jul 16 15:47:38 2008 -0400
Add pixman-1-uninstalled.pc file
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit 1570746350baf82d36aeb7ea1702350700b795d7
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Jul 16 15:19:17 2008 -0400
Use -no-undefined -- fixes bug 15927
commit 99fead412e7602daf193035831b952e252dac0e1
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Jul 16 15:07:30 2008 -0400
Use <inttypes.h> on most types of Unix.
Fix for bug 15560.
commit c5bb4ab8fcb784d479c71996f2ff081374741d43
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Jul 16 14:56:48 2008 -0400
Update TODO
commit 2070f10db927a97d7d38024e607093f5a6e00291
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Jul 16 14:30:46 2008 -0400
Remove unused pixman-combine.c
commit 9d54568d5f93701313fdbb49c1ef9dc79fe5850c
Author: André Tupinambá <andrelrt@gmail.com>
Date: Wed Jul 16 14:29:29 2008 -0400
Fix SSE2 bug where x888 pixels were treated as 8888
commit 7dfd023e94d9ab5940d7062c2e5cde11ab02f43e
Author: Benjamin Otte <otte@gnome.org>
Date: Wed Jul 16 20:41:02 2008 +0200
fix Altivec detection
the old code used to cause infinite looping on G3 machines.
commit 0a92401678286eb438fe24979fd032efba540a0a
Author: Behdad Esfahbod <behdad@behdad.org>
Date: Tue Jul 15 16:49:32 2008 -0700
Fix fbCompositeSrc_x888xnx8888mmx to properly ignore source alpha
commit 687176023caf53f2fe234827d152f270048b1cd3
Author: Julien Cristau <jcristau@debian.org>
Date: Tue Jul 15 16:59:21 2008 +0200
make --{en,dis}able-gtk work correctly
--enable-gtk had the same effect as --disable-gtk.
Now we check for it by default, and error out if we can't
find it and it was explicitly enabled.
commit 9d97716d2fd91d5611a5e7a7b29b38887b672e9f
Author: André Tupinambá <andrelrt@gmail.com>
Date: Tue Jul 8 14:15:27 2008 -0400
Fix bug 16310 in the SSE2 fast path in function fbCompositeSolidMask_nx8888x0565Csse2
commit 47b95be38ae0ebc61963c0b3b4dddb240a59c18a
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Tue Jul 8 14:10:56 2008 -0400
Update TODO
commit eb53d111bd8651cd00c1b728b09e8be09b8482f7
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Wed Jun 25 17:55:28 2008 -0700
Add a lossy 32-bit generic pixel fetch function for wide surfaces.
The transformed fetch path currently only works at 32-bit precision. Until a
wide version of that function is added, we need to have a path to perform a
wide FetchPixel and then contract it down to a8r8g8b8.
Also, use the right format when expanding the result in fbFetchTransformed64.
fbFetchTransformed returns a8r8g8b8 results.
commit 3c43b869f3821495978c61b9195f0b0e9e9e1245
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Jun 27 01:11:30 2008 -0400
Unexport or delete various functions
- Delete pixman_region_append()
- Delete pixman_region_empty()
- Make pixman_region_validate() static and don't export it.
Reported by Julien Cristau.
commit 36b05f2cac7fa28e31131ca0d6b8b133ccd95ab8
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Jun 27 01:05:30 2008 -0400
Only export the 16 bit version of pixman_region_set_static_pointers()
commit ab4d45806aacf6208820af07b42852c9e4c89fff
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Jun 25 09:46:12 2008 -0400
Update versioning documentation
commit a3c12f4ccfda470574bfe8b7796c0b90237dabe0
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Jun 25 09:36:13 2008 -0400
Update release instructions
commit ca6edbee41e2e4bd18e3615a86bae441822b90e3
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Jun 25 09:24:00 2008 -0400
Explicitly use my GPG key for signing.
commit c48e3bc5ccf3a2f0aa4cadbaa4a0ae968a5d5a91
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Wed Jun 25 09:16:09 2008 -0400
Post-release version bump
commit d8e5ff20f12c52a32dcf0543ab436eb7194b794c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 25 07:58:21 2008 -0400
Pre-release version bump
commit 4a9df4be7e384cf18e3d7a65d1e0023d2e2a280f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 22 13:44:23 2008 -0400
TODO
commit a766b62880108f278478888f5167a5fbf2819a97
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 22 13:42:21 2008 -0400
Add configure time options to disable mmx/sse2/vmx
commit 02268903e4311709744c11e495f9b17f171ec5e9
Author: David Sharp <whereami@gmail.com>
Date: Thu Jun 19 20:23:33 2008 -0700
pixman-sse.c: silence pointer-cast compiler warnings.
Cast pointers to words of the same size, not 32-bits.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit 534e65d54831018b47c169932a04224e5ba53cb8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 13 16:16:59 2008 -0400
Update TODO
commit eb2d95de98683a387153f010077ad9c3c3b1b01d
Author: Luo Jinghua <sunmoon1997@gmail.com>
Date: Sat Jun 14 09:07:22 2008 +0800
Fix implicit declaration of function 'free'.
Otherwise pointer will be truncated on 64bit arch and your programs will crash.
commit 29d144712e558aaeb49f4384028dd669d76a410b
Author: Maximilian Grothusmann <maxi@own-hero.net>
Date: Fri Jun 13 12:44:50 2008 -0700
Fix memory leak by freeing boxes{16,32}.
After calling pixman_region_init_rects() or
pixman_region32_init_rects(), boxes{16,32} were not freed before
returning. Fixes bug 16312.
commit 5d32519316b40b35113c6df9e15d955a16709ba2
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jun 13 09:52:53 2008 -0700
Use pixman_malloc_ab instead of plain malloc for the fbStore64_generic scratch buffer.
commit b1c70c4e6435d7f15751111828c381feb1d139cf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 13 00:25:45 2008 -0400
Move PIXMAN_FORMAT_16BPC to pixman-private.h
commit 7fa966df0ee781fa486715710f389b148c11d36e
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jun 6 23:02:51 2008 -0700
Decide based on the image formats whether we need wide compositing.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit 7cb735c9c0fa55ae1f4d8d13da9f33e3da2ae8fe
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jun 6 19:40:25 2008 -0700
Take the source format into account in pixman_expand.
Extract the original bits of the source image for each component and then
replicate up to 16 bits to fill the wide components. Make sure to hard-code the
alpha value to 1 if the source format didn't have alpha.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit c0d98e96605c6d03f4b02f337f2f5827165bb092
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jun 6 18:51:48 2008 -0700
Make expansion and contraction loops clearer.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit fc0b28bf6af81428b7ac045614eea97fbf9c4a70
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jun 6 18:05:15 2008 -0700
Add wide source picture, external alpha, and transformed image routines.
The wide external alpha path should work correctly with wide formats. The wide
transformed fetch code for now just does a 32-bit fetch and then expands, which
will lose precision. Source pictures, for now, are evaluated at depth 32 and
then are expanded to depth 64. We could get higher precision by evaluating them
directly at depth 64, but this should be good enough for now.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit 42a3a2d6fc8d3e521c6914ff8fb89f1fbc673e28
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jun 6 15:45:17 2008 -0700
Add wide fetch/store functions.
Use the narrow ones and expand/contract where necessary. Still need wide paths
for fancy pictures, but this gets the basic stuff working.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit 7591d3f1d7e0884f9362018edf720724095cf380
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Jun 6 15:30:52 2008 -0700
Add expand and contract functions to convert between ARGB8 and ARGB16.
The expansion function isn't quite correct, but gives reasonable results.
Signed-off-by: Søren Sandmann Pedersen <sandmann@redhat.com>
commit bae5db893f20eaf9c8ec56057617a8ce800cce48
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 13:06:50 2008 -0400
Post-release version bump
commit 88e02d36792d3ad2615a775c9d21136c760087ef
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 12:32:56 2008 -0400
Pre-release version bump
commit fe43a2c1638ee75ca6bbc437a59461cc5c2b6f46
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 12:28:05 2008 -0400
Add back prototypes for pixman_version() and pixman_version_string() to pixman.h
commit fd380c7764c9cbc05f070b178a4b38b342503471
Author: Julien Cristau <jcristau@debian.org>
Date: Mon Jun 9 12:01:37 2008 +0200
Add a couple more missing PIXMAN_EXPORTs
commit f8f3b454a8dc4f91b4aff0e3c7ab28d65383ec8f
Author: Julien Cristau <jcristau@debian.org>
Date: Mon Jun 9 11:53:23 2008 +0200
Add PIXMAN_EXPORT for pixman_region_equal
This used to be exported, so removing the export broke ABI.
commit 6e8f785ae7b629f5f81627fdb61f07d99df0b9ba
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 02:43:37 2008 -0400
Post-release version bump
commit 26b486b9a9e599a5b45a73f8b3ec72f9a3560cfb
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 01:59:56 2008 -0400
Bump version number
commit 95e749168d08cd35e151e612404c9318dcb0df9e
Merge: f7f5da7 ae1f016
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 01:57:26 2008 -0400
Merge region32 branch; fix conflicts
commit ae1f016d404d323158072499f83185d4e83eaedb
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 01:53:03 2008 -0400
Unbump version number
commit f7f5da7fc446c3cadb3f82a2ddc6ae57f4c4b795
Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
Date: Mon Jun 9 01:52:36 2008 -0400
Unbump version number; remove file added to EXTRA_DIST
commit e84db894933b25ef9ab83a6c15a0521e15d61bae
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Jun 9 01:29:14 2008 -0400
Bump version number and make it distcheck
commit 7145d6dbdab79930ed923ae9551501127be28864
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Jun 9 01:29:14 2008 -0400
Bump version number and make it distcheck
commit a76826f19893a0575c0e16079fc1ec6d33171594
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Jun 9 01:03:15 2008 -0400
Fix uses of short variables in pixman-region.c
commit 85bad33380b7b78bdd6a7238c1439bcc42e28231
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Jun 9 00:51:28 2008 -0400
Add infinite loop test
commit 62e9b4d6cfcbc10046539b8e9643691bb02bea39
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Jun 9 00:00:07 2008 -0400
Export pixman_compute_composite_region32() and use it in walk_region
commit 57819ae3c219252db98df5eefa36499a6b77970c
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 23:53:35 2008 -0400
Fix bug in pixman_compute_composite_region()
It was using the output region as the input. Add and use
pixman_region16_copy_from_region32().
commit 664b891aac50642d6d2ab6c482f4765029ae9b91
Merge: 0b4c6dc 2b91152
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 23:39:29 2008 -0400
Merge branch 'master' into region32
commit 2b9115293e5fca70ca9ffe44ef74c80885dcedbb
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 23:39:03 2008 -0400
Call _mm_empty() at the end of fbComposeSetupSSE
commit 0b4c6dcefd63a43aa9bb6556017e259589116522
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 22:48:59 2008 -0400
Add pixman_image_set_clip_region32
commit 703f82cd02f5224632b4b7f7f3f072067fa4f76d
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 22:20:44 2008 -0400
Use 32 bit regions internally
commit de150bf82fbe0e346fa38eae10a5bd43538bb3d9
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 22:07:46 2008 -0400
Add pixman_region32_copy_from_region16
commit e30f7e2eb56b53667ee83e2cad942f171a9486a0
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 21:43:01 2008 -0400
Some formatting fixing
commit cb7cc369f500a7828dc3c9935d8d82af47573df5
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 21:41:54 2008 -0400
Move all the PIXMAN_EXPORT into .c files
commit 890f1a4280af4c7b8d8913ba592a9dd617482463
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 21:13:52 2008 -0400
Move PIXMAN_EXPORT into pixman-region.c
commit 7a32c864e95d35e13d5473f5519639d91f62e20a
Merge: 81369a4 1248418
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 20:14:52 2008 -0400
Merge branch 'master' into region32
commit 1248418854b0e6e2f7fa8c2760a05b6604d3ded7
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 20:01:37 2008 -0400
Fix forgotten use of pixman-combine.h
commit fb8f17fdf1eaec4ab8edba1486bfa83c0965d738
Merge: 9267b0b 1063933
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:55:43 2008 -0400
Merge branch 'vmx'
commit 1063933bacb8b5d06b42b7b06a116339ce7c1f0c
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:55:35 2008 -0400
Rename pixman-combine.h -> pixman-combin32.h
commit 81369a4c4f09bc6cceef173947df4c9a78952c7a
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:32:15 2008 -0400
Fix up types in pixman32-region.c
commit 4cf2b696266214482dad6e40184b74e1161e8ea7
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:31:31 2008 -0400
Add prototypes for 32 bit region methods
commit 7d0c507b084e78217145ab82c35d579e5c8c26db
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:31:04 2008 -0400
Add pixman-region32.c
commit c22df027d6b9c9957e73ea9e34f14d504deb9d91
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:24:28 2008 -0400
Add prefixes to global primitive regions
commit cab6a175ec4a1b29b51060293aacaf2cf2f987a0
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:20:27 2008 -0400
Delete more unused stuff
commit 9395f08d6e6316ee853a976b806e57821e13991e
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:16:55 2008 -0400
Delete more unused stuff
commit b00fcb6d627370930daec9d1e9601af7ce28944c
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:15:41 2008 -0400
More data types; remove unused stuff
commit 4bdcd3bdb1223d5e611af9721e2eceb7e867b138
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:12:29 2008 -0400
Add point_type_t
commit abf6b6ca6ce8f54cb8ba9d34570d4cdf0537bbd2
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:11:24 2008 -0400
Replace pixman_box16_t with box_type_t
commit 68ccaa06751e76b9d9c70a7c0b8e9b22cf7d6f62
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:07:30 2008 -0400
Add pixman-region16.c; compile that instead of pixman-region.c
commit 149477457c9463e22350c15ccfca5ddf8a78e7af
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 8 19:05:43 2008 -0400
macroize pixman-region.c
commit 567b4c255050ee3cc2dd0c03fb091d1f981332eb
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sat Jun 7 19:38:01 2008 +0200
Use sigaction instead of signal to restore the previous handler
commit 7ef19261ee5bb4c78ca55533c67e1f267faed61e
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sat Jun 7 19:28:10 2008 +0200
Use combine macros from the generated header
commit 795fd8a4c0f9417fb92beaff8595064c573b7652
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sat Jun 7 19:25:09 2008 +0200
Split combine.inc generated files in source and header
commit 9267b0bb549044591f28124a86e169b2235339b6
Author: Dimitrios Apostolou <jimis@gmx.net>
Date: Tue Jun 3 16:33:58 2008 -0400
Fix compilation on SGI
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit 8ef3f49a9580fb148c2e5f567c0aafddd4b0f136
Merge: 27b753c 9a6d3a1
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sun Jun 1 16:37:52 2008 +0200
Fixup
commit 9a6d3a1dcf89fc04f71a9dfed1aeeda1e3fb83bc
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri May 2 17:33:17 2008 -0700
Fix wide alpha fetch macro.
Signed-off-by: Soren Sandmann Pedersen <sandmann@redhat.com>
commit 86ed05b0f93505c136fb279fa4529596fc7c682a
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Wed Apr 23 17:30:14 2008 -0700
Use wide compositing functions when wide == 1.
Signed-off-by: Soren Sandmann Pedersen <sandmann@redhat.com>
commit 4e2d2546b79354a1accff8614d50eb8f75a15c98
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Tue Apr 15 13:58:27 2008 -0700
Add infrastructure for allocating wide scanline buffers. Not yet used.
Signed-off-by: Soren Sandmann Pedersen <sandmann@redhat.com>
commit 598334a15723dc3857d1e932c17365a1f8c5f094
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Tue Apr 15 13:13:46 2008 -0700
Split fetch/fetchPixel/store proc types into 32-bit and 64-bit versions.
Signed-off-by: Soren Sandmann Pedersen <sandmann@redhat.com>
commit 4a7e1676fd381bda53ece2f13204fbe568e07b0d
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Apr 4 14:43:48 2008 -0700
Move the scanline buffer allocation logic into pixman_composite_rect_general.
Pass the src, mask, and dest buffers into pixman_composite_rect_general_* as
void* pointers since those functions should not do pointer arithmetic.
Signed-off-by: Soren Sandmann Pedersen <sandmann@redhat.com>
commit 30bdbbed073750efa0a0c1e3f68925196e118953
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu May 15 01:07:59 2008 -0400
Update TODO
commit d71bfc7777a48edfeb0aee0e3da97ac700a3dc90
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu May 15 01:00:28 2008 -0400
Work around GCC bug causing crashes in Mozilla with SSE2
When using SSE2 intrinsics, gcc assumes that the stack is 16 byte
aligned. Unfortunately some code, such as Mozilla and Mono contain
code that aligns the stack to 4 bytes.
The __force_align_arg_pointer__ makes gcc generate a prologue that
realigns the stack pointer to 16 bytes. Fix bug 15693.
commit 1f275b4bdc28b121f4afd3cfd2df187bebedf35d
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed May 7 22:27:56 2008 -0400
Add support for 8 bit fills in pixman_fill_mmx()
commit a56df9149d2af0414ba8311b413dbc2f01c94427
Author: Richard Hult <richard@imendio.com>
Date: Sat May 3 15:03:00 2008 -0400
Add --disable-gtk switch to configure
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit 9aa1c4e5d2db3793ae6e301496fe39475de84382
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri May 2 21:10:07 2008 -0400
Update TODO
commit 1e1c8a1f52183edecfea346257468681d6a88c36
Author: Oswald Buddenhagen <ossi@kde.org>
Date: Thu May 1 10:50:58 2008 +0200
fix pixman compile with srcdir != builddir
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit 510ee5d8c23e2d9133dc83634e15b7660f411a1f
Author: Thomas Zimmermann <kuhundbaer@web.de>
Date: Fri Apr 25 22:13:24 2008 -0400
Remove trailing comma from enum (bug 15364)
commit 3cea659d72bc3429a8766e63c66346e76e61c9b5
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Thu Apr 24 18:10:56 2008 -0700
Fix pixman/Makefile.am to work with Solaris make
commit 27b753c9deabe5ac775021abfae98a6a1830cfc2
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Thu Apr 24 01:08:29 2008 +0200
Remove unused macro
commit 584118fb6c15d695b6a203c2df51411958957880
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Thu Apr 24 01:06:38 2008 +0200
Remove VMX from CPUFeatures, ppc isn't using it at all
commit fc96121afd5d8451c9d8ba8a693e589d1999d131
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Thu Apr 24 01:03:08 2008 +0200
Simplify cpu feature check
commit 08b317a5f519978cfabebd75d5595b19fc1d1425
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Thu Apr 24 00:41:16 2008 +0200
Refactor path selection
commit 083cadd4c7d1270b0ee9f0365327b872898d1561
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Thu Apr 24 00:36:51 2008 +0200
Force inlining
commit 92ef26dfed3337831dd5156bfe0d20b132a26a29
Author: André Tupinambá <andrelrt@gmail.com>
Date: Wed Apr 23 00:18:39 2008 -0400
Add SSE2 implementations of many compositing operations.
commit 8e68544e0d8cc7af24fb8b298fd6afd47c620136
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sat Apr 12 13:16:46 2008 +0200
Unbreak vmx pixman
commit 1ec7bd2cb2d02caca06742b0091f293d29d95a44
Merge: e63bf15 5388222
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sat Apr 12 09:53:24 2008 +0200
Merge branch 'master' into vmx
Conflicts:
pixman/pixman-pict.c
commit 53882228c9bbd50609e2858502b9bc087ca76903
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Apr 12 00:22:35 2008 -0400
Simplify handling compiler handling in MMX code
Instead of using the parameters --param inline-unit-growth=10000 and
--param large-function-growth=10000", just make the inline functions
__always_inline__.
Also support Intel's compiler in pixman-mmx.c.
Based on a patch by Serhat <ubunturk@gmail.com>
commit 9f76747adec7ea00e31dd817427c1ed1bfa86aa8
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Thu Apr 3 17:27:08 2008 -0700
Use a macro to append _accessors to things.
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit a7065162aff9d1de9fc3db9756e4e76f6b8d063b
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Tue Apr 1 17:26:03 2008 -0700
Generate 64-bit combining functions.
Copy some macros from pixman-private.h into combine.inc and update them to
generate 64-bit versions as appropriate. Add a rule to generate
pixman-combine64.c and add it to the build.
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit 48521e6fe4378f9cc49d2dfb8d87490e65267a49
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Tue Apr 1 16:31:26 2008 -0700
Replace hardcoded numbers and uint*_t in combine.inc.
The masks and shifts have been replaced with preprocessor defines generated by
combine.pl. The uint*_t types have been replaced with comp4_t, comp2_t, and
comp1_t depending on how many components the value is supposed to hold.
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit e0e5c4b72937728d0b36b1077d94ce92a2374c9a
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Mon Mar 31 16:42:53 2008 -0700
Tack 32 onto the ends of the combining function types.
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit f88519ed3fed42e41aa5623540466d0bee1a887b
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Mon Mar 31 16:33:09 2008 -0700
Move combining routines into combine.inc and add a Perl rule to generate it.
This will eventually be used to search & replace types and mask/shift
calculations to generate a wide version of these functions.
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit 30746b1e1e5101fd1502c676e777e27953772f75
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Mon Mar 31 16:09:44 2008 -0700
Move combining macros into pixman-combine.c.
Signed-off-by: Søren Sandmann <sandmann@redhat.com>
commit 1ae751215e255adecacad960b5bc98ff86039a07
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Apr 9 21:39:29 2008 -0400
Require GCC 3.4 for SSE and SSE2.
Also include <emmintrin.h> in the SSE2 test and use SSE_FLAGS rather than MMX_FLAGS
Reported by Dave Yeo.
commit a1f51cb09ead3e0007c12e98ce74948a92e80ec5
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Apr 8 21:58:00 2008 -0400
Fix bug in FbStore_b2g3r3
commit 0b207ae11065c740f2644a89fc13207a5343554e
Author: Antoine Azar <cairo@antoineazar.com>
Date: Sun Apr 6 10:56:53 2008 -0400
Optimize operators based on source or dest opacity.
Check if we can replace our operator by a simpler one if the src or
dest are opaque The output operator should be mathematically
equivalent to the source.
commit 2976e690410d10b916014effe5d1842d0c8a7908
Author: Julien Cristau <jcristau@debian.org>
Date: Sun Apr 6 17:12:12 2008 +0200
Revert "pixman-version.h is generated, don't distribute it"
This reverts commit 4fd8910ea499eb484e29c44dbee7dbc029656e9c.
commit 4fd8910ea499eb484e29c44dbee7dbc029656e9c
Author: Julien Cristau <jcristau@debian.org>
Date: Fri Apr 4 21:36:02 2008 +0200
pixman-version.h is generated, don't distribute it
commit 4cde0886b52c82b792e8fbf2248bf8ff9aa079fa
Author: Frederic Plourde <frederic.plourde@polymtl.ca>
Date: Thu Apr 3 13:52:54 2008 -0700
Add CopyAreammx fast path for argb32 SRC xrgb32 and abgr32 SRC xbgr32
commit f45b331f7bb7d7effe279159d8c899952b52a270
Author: Julien Cristau <jcristau@debian.org>
Date: Sun Mar 30 20:53:42 2008 +0200
Remove prototype for nonexistent pixman_image_set_filter_params
commit a331519b865d157ac5fec231fda02ee74ba1ede1
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Mar 28 12:26:18 2008 -0700
Get rid of pixman_composeFunctions_accessors.
The combining functions operate on scratch memory, so they don't need the access
wrappers. There's also no reason not to use the MMX combining functions in the
accessor path.
commit 0c3547bad41e1a5b12c0ffaa1c106043399dc3fc
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Mar 28 12:16:07 2008 -0700
Fix test build when srcdir != builddir.
The tests were including pixman.h, but pixman.h couldn't find pixman-version.h
because it was in $(top_builddir)/pixman rather than $(top_srcdir)/pixman.
commit cd3799317fced697e4bc729c3ea8d42ed7edf526
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Mar 28 05:23:34 2008 -0400
Post-release version bump
commit 92b675db8d3ef44c3c87110443b15a68a871cf7b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Mar 27 10:08:35 2008 -0400
Fix log generation
commit 0c33317f59b93f5cab348619b1c38a5dce97de94
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Mar 27 10:07:11 2008 -0400
Bump version to 0.10.0.
Also a bunch of changes to the release make targets
commit 0637671959b56bba93f39208c825c0d97e2f90df
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Thu Mar 27 08:37:29 2008 -0400
Make username configurable; add Makefile.win32 to EXTRA_DIST
commit 10a227ed9311529cd98cb8b3aa1b8d48dad8b517
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Wed Mar 26 16:10:43 2008 -0700
Fix up unsigned long long/ullong usage
A few stray "unsigned long long"s were in place, along with
a ullong typedef outside of the appropriate ifdef.
commit eec44d371f278ee1f7de03d1a0fcaa17941c8a00
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Mar 26 02:20:42 2008 -0400
Make it distcheck
commit 03b9c143770566ebcbee7ca3abde223529c07ce9
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Mar 26 01:49:56 2008 -0400
Move version functions from pixman-version.c into pixman-utils.c.
Delete pixman-version.c
commit cb7fceabb9da30d03b29f9ff946a3793a1b9ebab
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Mar 25 23:11:19 2008 -0400
Make pixman-version.h print an error if you include it by itself
commit 0982adf0794507899f642bdb55f3a979d6cc486e
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Mar 25 23:07:03 2008 -0400
Update TODO
commit 3e700366ef82f0ecd28014cf873ffd292ad9cdc5
Author: Carl Worth <cworth@cworth.org>
Date: Tue Mar 25 19:43:40 2008 -0700
Eliminate duplicate case values that were breaking the compilation.
commit 7fa668f4ac4be756d097b29240bf15bb71ae6db9
Author: Carl Worth <cworth@cworth.org>
Date: Tue Mar 25 13:12:29 2008 -0700
New API: pixman_format_supported_destination and pixman_format_supported_source
These functions allow for callers to use the PIXMAN_FORMAT macro to
construct a format code and to then determine if the resulting code
is supported by pixman for either destination or source surfaces.
commit bd2a53fc4ece82321f139cdf3276a7ceb871f895
Author: Carl Worth <cworth@cworth.org>
Date: Mon Mar 24 14:51:09 2008 -0700
Add pixman_version function and related macros
The complete new API here makes available compile-tim version checks:
PIXMAN_VERSION
PIXMAN_VERSION_STRING
PIXMAN_VERSION_ENCODE
as well as run-time version checks:
pixman_version()
pixman_version_string()
commit b078cb3250b63b1c942b93738557af7401e42c9b
Author: Carl Worth <cworth@cworth.org>
Date: Mon Mar 24 12:00:46 2008 -0700
Increment pixman version to 0.9.7
This represents the in-development state, (so that the next release
will be 0.9.8 with an even-number micro component).
commit 0c2c891c8f76d1fdb6efe763d35cd5bf75b9a9a7
Author: Carl Worth <cworth@cworth.org>
Date: Mon Mar 24 11:58:33 2008 -0700
Document incrementing the micro version immediately after a release
This is a cairo-like scheme where the version number is incremented
both immediately before and immediately after a release.
commit 11cfd5d1bb9d1ea89f9d82bf6f447e577d673816
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Tue Mar 25 11:45:56 2008 -0700
Only define pixman_have_sse() as function if USE_SSE2 is also defined
.. otherwise it's already a macro evaluating to FALSE.
commit e63bf1554b4adf9e687ec86213a97caab2218a77
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sun Mar 23 16:12:31 2008 +0100
Make configure message alike the mmx/sse/sse2 ones
commit dcc530178050522705e70ff2f09b9da2b358ac01
Merge: 550e5f5 29a8ae4
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sun Mar 23 16:04:26 2008 +0100
Update vmx
commit 550e5f54abe4f3f0b6fcd278c3b4533036276e3f
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sat Mar 22 11:28:48 2008 +0100
update patch
commit 4f33f454c6dbaf356d20cee8d35fdf02f9a0317d
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Mar 21 18:59:45 2008 -0700
Move fbFetchTransformed and friends into pixman-transformed.c.
commit 90ff2bfbe5fd7f1e3aa5273e0fb72ae05e1e88c1
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Mar 21 18:18:50 2008 -0700
Move pixmanFetchSourcePict and friends into pixman-source.c.
commit 76febfcd20c962a467d08c2ee9be612216ffa030
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Mar 21 18:06:54 2008 -0700
Move fetch, fetchPixel, and store routines into pixman-access.c.
commit d6143b8634e2d923456b3198e692ccb463d59952
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Mar 21 17:13:32 2008 -0700
Get rid of fbPrepareAccess and fbFinishAccess, since the former was unused and neither one did anything anyway.
commit 9fe5913c34a71d83a497e0d2de8db50522db75ee
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Mar 21 14:15:34 2008 -0700
Rename pixman-compose-operators.c to pixman-combine.c and fix the build.
Add pixman-combine.c to the source list. Make the functions in it static. Call
fbCombineInU through the PIXMAN_COMPOSE_FUNCTIONS table. Declare the functions
tables as extern in pixman-private.h.
commit d47a686d91d28d996fc7326ada0d2f0c3a305852
Author: Antoine Azar <cairo@antoineazar.com>
Date: Thu Feb 21 03:38:46 2008 -0500
[PATCH] Moved all composition operators from pixman-compose.c to their own c/h file
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
commit 29a8ae4185bf65dbafe0dd7aff3b83bef1bbffbc
Author: Kamalneet Singh <kamalneet.s@samsung.com>
Date: Wed Mar 19 10:02:11 2008 -0400
Fix computation of x_offset in pixman_add_traps.
commit aa9907b237062dade232297aed2269730a988e29
Author: nmiell@gmail.com <nmiell@gmail.com>
Date: Fri Mar 14 22:23:19 2008 -0700
Fix the SSE related AMD64 build breakage
The introduction of pixman_have_sse() copied the #ifdef __amd64__
found around pixman_have_mmx() in pixman-mmx.c but didn't include the
equivalents of the macros in pixman-mmx.h. As a result, the AMD64 link
fails because the pixman_have_sse() function doesn't exist.
I also introduced header inclusion guards to pixman-mmx.h and
pixman-sse.h while I was at it.
commit 6449782f8a4bea0274a30f86d56214c2c73c0303
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Mar 14 19:24:28 2008 -0400
Fix typo; include pixman-sse.h
commit 917e73385f8769f84da453df99d4e8e0dccc5b23
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Mar 14 19:20:34 2008 -0400
Require MMX and MMX_Extensions for SSE. Various code style fixes.
commit 6cb327be1f4e64d09bd9fa8d444afda17ed58da4
Author: Rodrigo Kumpera <kumpera@gmail.com>
Date: Fri Mar 14 19:11:17 2008 -0400
Add build system support for SSE2.
commit ddfb69ae8778ac4b3050ddebf499c137ad6eef7b
Author: Frederic Plourde <frederic.plourde@polymtl.ca>
Date: Thu Mar 13 14:24:08 2008 -0700
Enable/fix MMX compilation under Win32 with Visual Studio
commit f2d8a5caa63596739b4dc47c00daaaafd9f522e2
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Mar 10 23:41:52 2008 -0400
Add rounding epsilon for NEAREST filter after transformation, not before.
For nearest filtering, the transformed location must be rounded to the
nearest sample. For locations that precisely in the middle between two
samples, we round down by adding -epsilon to the coordinates.
Before, we would do this on untransformed coordinates. This patch
changes it to happen after transformation. It also clarifies the
difference between sample locations and rounding.
Reported by Robert O'Callahan.
commit 5bcde57da704000f0fbb52291d01c7f3c0dc8655
Author: Antoine Azar <cairo@antoineazar.com>
Date: Wed Mar 5 15:27:11 2008 -0800
Fixed transformed/untransformed cases of extend_pad by using fbfetchtransformed in all cases and making sure no fast path can be taken.
commit 476f10237e432321d7f456b4df9fd206b78d8827
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Feb 29 18:32:44 2008 -0500
Update TODO
commit 8533dcbccc142621027469e62dd84030d4248eec
Author: Antoine Azar <cairo@antoineazar.com>
Date: Tue Feb 26 16:36:22 2008 -0500
Fix EXTEND_PAD for untransformed sources
commit 77c43c6c49511b203fb098a78d38bb4cef7c2cfd
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Feb 25 20:12:42 2008 -0500
Fix another NULL dereference in pixman-compose.c, reported by Joel
Bosveld.
Update TODO.
commit 8d79c48126398aa7b31e9bb9e25af9d231075604
Author: Bertram Felgenhauer <int-e@gmx.de>
Date: Thu Feb 14 16:40:54 2008 +0100
Fix a NULL pointer dereference in fbFetchFromNRectangles().
As pointed out by Soeren Sandmann Pedersen, calling
pixman_region_contains_point with a NULL box argument leads to a crash.
Also fix a few warnings.
commit 435086f6a437d8e6b707fad7c9bb30b91ff80684
Author: Antoine Azar <cairo@antoineazar.com>
Date: Tue Jan 29 11:53:03 2008 +0100
Refactor fbFetchTransformed()
commit e95638c629334151e27633cc1c476ea582d766ec
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Sun Jan 27 14:49:12 2008 -0800
Include only pixman-private.h, not pixman.h, in local .c files
This is so that changes (such as symbol renames) can take place in
pixman-private and ensure that they're included before the prototypes from
pixman.h. pixman-private.h includes pixman.h right at the start.
commit 787cc57c7cb36a3b7eff836dd979d08cf7861e29
Author: Bertram Felgenhauer <int-e@gmx.de>
Date: Wed Jan 23 16:08:48 2008 +0100
export pixman_transform_point_3d function
commit e4d482a6bb766f50f49ba81591ca7c26ba3ce047
Author: Carl Worth <cworth@cworth.org>
Date: Tue Jan 22 16:33:58 2008 -0800
A tiny amount of ifdef reduction.
Just moving two common assignments outside the condition to
drop the #else part.
commit bcac3335893a24e1d16790cb38d8a105b1e19951
Merge: e5ceddf 054be10
Author: Carl Worth <cworth@cworth.org>
Date: Tue Jan 22 16:31:44 2008 -0800
Merge commit 'inte/sampling'
commit e5ceddf038d69cef74df0632f93abae37ec6d7ce
Author: Carl Worth <cworth@cworth.org>
Date: Tue Oct 30 13:03:18 2007 -0700
Ignore test/fetch-test
commit ad773927d885515bf43d9824c1577199fccfc535
Author: Carl Worth <cworth@cworth.org>
Date: Tue Oct 30 12:52:19 2007 -0700
Add release-publish target and RELEASING instructions
commit 054be107365cac5dc6cff2b6f705978f1899c79e
Author: Bertram Felgenhauer <int-e@gmx.de>
Date: Tue Jan 22 08:00:05 2008 +0100
eliminate a special case in fbRasterizeEdges{4,8}.
commit 5467807e757ad6a5ec45085c963425f9dd6d2414
Author: Bertram Felgenhauer <int-e@gmx.de>
Date: Tue Jan 22 07:57:54 2008 +0100
fix cairo's a1-traps-sample test
For 1 bit alpha targets, the left and right boundaries of edges were
not rounded correctly.
commit 1d89bac5a7a5693911d8a74701bd1c0292160478
Author: Bertram Felgenhauer <int-e@gmx.de>
Date: Sat Jan 19 13:29:56 2008 +0100
fix cairo's a1-image-sample test
Move the sampling point for image surfaces very slightly so that it's in
the upper left quadrant of the pixel.
commit 45074018c3c221272719ecb2bf9f4ec66ffb8729
Author: Alp Toker <alp@toker.com>
Date: Tue Jan 15 16:34:57 2008 -0500
Avoid use of C++ keyword xor in header
commit e0af5922cdc5caa97cfb822b792d744e28a3bb37
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Tue Jan 15 16:51:59 2008 -0800
Remove trailing ; in SETUP_YV12 macro
Causes compilation problems with MSVC.
commit 9a0639650e276c4c0da5dfe37a8d3ba5a6b81712
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Tue Nov 6 16:15:01 2007 -0800
Remove last CVS $Id: ChangeLog,v 1.7 2013/08/25 17:42:39 matthieu Exp $ tags
commit df964790e893a8b511e9322e7161087d8ba182cc
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu Dec 20 00:23:18 2007 -0500
Don't use the pixbuf fast paths when the source picture has alpha. Bug
13650, reported by Wu Nian.
commit 49240111dbb31c335856f9653544a039275bf033
Merge: 808e4f5 72b46bc
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Sun Dec 16 00:38:16 2007 +0100
Merge branch 'master' of git://anongit.freedesktop.org/pixman
commit 72b46bcf345db668b3ec00e7f27c5454cf2ad8b5
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Dec 7 18:59:54 2007 -0500
Guard MMX get_fast_path() with pixman_have_mmx()
commit bb056d4e02ff8ff27f4d2a14f630f5dc01b85d28
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Dec 3 13:14:42 2007 -0500
Use -fvisibility=hidden by default.
Add a PIXMAN_EXPORT macro that expands to the appropriate GCC magic.
Various formatting fixes.
commit 48d52fadc23ab027215a3d6c07ffcdbb6d40eb3f
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 22:50:05 2007 -0500
Make the tables static; remove unused flag
commit 0a53c41dbc5d6476595b2ad58dd9a14a3e85295c
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 21:56:25 2007 -0500
Set maskRepeat to FALSE when the function is NEED_SOLID_MASK
commit 47d39c002d3b5bce827ab1f782583ae8625a5975
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 20:55:56 2007 -0500
Conditionalize MMX code with USE_MMX
commit 14d628b0154c6101f0d1bb03d91ff99ca07e4398
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 20:54:13 2007 -0500
Add some commented-out plain C fast paths.
commit a916c69cc6a02cf35e6aa26181581faf560b6e9d
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 20:46:29 2007 -0500
Delete switch of doom.
commit 4dcddfa6e9d4de4f4e08fd8e8879db5327b8bf2a
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 20:41:49 2007 -0500
Check for correct op.
commit 60134ed7ab638b244dc4f3007d56d794815dab7b
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 20:35:03 2007 -0500
Add code to locate fast paths. Comment out switch of doom.
commit 819a6d6878d57d3b55075f048a7eed6d5bcab694
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Dec 1 19:56:26 2007 -0500
Beginning of the end for the Switch of Doom.
Add tables with information about the MMX and plain-C fast paths.
Update TODO.
commit f1f52ae4b1b2cca27104c1210625356084baf2f8
Author: Carl Worth <cworth@cworth.org>
Date: Tue Oct 30 11:48:31 2007 -0700
Track name change from pixman.pc to pixman-1.pc in .gitignore
commit d4d78c8c1a73d1007ebaae3117923bb72d09118f
Merge: 85bccce b39ca42
Author: Alan Hourihane <alanh@tungstengraphics.com>
Date: Wed Oct 24 21:39:34 2007 +0100
Merge branch 'master' of git+ssh://git.freedesktop.org/git/pixman into yuv-porting
commit b39ca42fce85248f6c19459388f71bf73a147792
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Oct 24 15:48:45 2007 -0400
Bump version number
commit 85bccce4d863b99be4b9ce62a8ac7d95f0acab3d
Merge: 8aa38d2 2853243
Author: Alan Hourihane <alanh@tungstengraphics.com>
Date: Thu Oct 18 17:33:43 2007 +0100
Merge branch 'master' of git+ssh://git.freedesktop.org/git/pixman into yuv-porting
Conflicts:
pixman/pixman-compose.c
pixman/pixman.h
commit 28532430efeb4a1aba8f3e30a790531d2a9e1472
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Oct 17 20:01:27 2007 -0400
Only compile with -msse on x86-64.
commit ab6743b17074dfedffb0ee32fe2e37cad03769bf
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Oct 17 19:20:55 2007 -0400
Make stride signed in various places. This should fix some the
crashers that people have reported in bug 12398.
commit aca8b610d9ab178fcbcfa4a44d87e52aa7918ea4
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Oct 17 18:43:13 2007 -0400
Remove comma from enumerator list. Bug 12621, reported by Matt Kraai.
commit 089c3e6ad00105b2f9a1118d15b4f381653ea6ff
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed Oct 17 18:40:28 2007 -0400
Add README file based on text from Bjorn Lindquist
commit 8aa38d2256c191bf3437034f6176bae30c3c3d19
Merge: cea752b 39a67d3
Author: Alan Hourihane <alanh@tungstengraphics.com>
Date: Wed Oct 17 19:39:41 2007 +0100
Merge branch 'master' of git+ssh://git.freedesktop.org/git/pixman into yuv-porting
Conflicts:
pixman/pixman-image.c
commit 808e4f541b4cfde40c91e6c6cd942f9074d38e94
Merge: 33d4028 39a67d3
Author: Luca Barbato <lu_zero@gentoo.org>
Date: Mon Oct 1 22:13:05 2007 +0000
Merge branch 'master' of git://anongit.freedesktop.org/pixman
commit 39a67d35f05aa47cf50191e0837a2125593a7bbc
Author: Tilman Sauerbeck <tilman@code-monkey.de>
Date: Sat Sep 29 22:45:42 2007 +0200
Fixed the declaration of pixman_image_set_source_clipping().
commit 7f820e15070c9b9618d78425b8cb1a4df722eb22
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu Sep 27 12:46:46 2007 +0100
[pixman-image] [mlk] Free the locally allocated bits.
If we fail to allocate the image, remember to free the bits if we have
created the buffer on behalf of the caller.
commit b4f0cc6eeaff8d5ea114734fcfa293fce1904ce4
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu Sep 27 12:44:44 2007 +0100
[pixman-image] Avoid a potential malloc(0).
Do not attempt to allocate bits if either the image width or height is
0 - Cairo has a habit of attempting to create such surfaces when
generating glyphs. The malloc(0) may return a NULL pointer and be treated
as an out-of-memory error.
commit 958a650b8eb1b61143122c3ad1f9b637b6467984
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu Sep 27 12:40:59 2007 +0100
[pixman-image] Avoid integer overflow when allocating bits.
Check for potential overflows at every step of the calculation of the
buffer size required for the pixels.
(Fixes https://bugs.freedesktop.org/show_bug.cgi?id=11627)
commit 5b60c91fd6865021aa6027ee65fa8371a4e2d297
Author: Jeff Muizelaar <jeff@freiheit.infidigm.net>
Date: Thu Sep 20 15:40:17 2007 -0400
Fix special case selection when the mask has a transform
http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=commitdiff;h=c19ece1d8c32dc81740a4036a642661f54064e75
was a mismerge that avoided setting the maskTransform condition when the mask
has a transform. This allowed a special case routine to be chosen when the
mask had a transform, which is not expected by the special case routines.
commit cea752bdb80c8e6317a8c8af8510807c87d87694
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Mon Sep 17 18:49:40 2007 +0100
Prevent promotion to unsigned when calculating strides.
commit 1092cdd09f71748182e578957de9610b729df257
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Mon Sep 17 17:08:31 2007 +0100
Use a consistent type for stride and more importantly, use always a signed type.
commit be4990f4a0a8d278b99df7669c5162136120ccd5
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Fri Sep 14 15:48:18 2007 +0100
Remove the macro magic from READ/WRITE macros.
commit 14f2a4c222bb6f0748a07e21663663b43beef466
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Fri Sep 14 10:53:32 2007 +0100
Remove the MMX code path for YV12 for the meanwhile, as pixel output is not
exactly the same as the non-MMX code.
This reverts commit c61d6ae39e5039dcb27bf95334a86520b562bbc5.
commit 3be35594c99b7abd2af43b66349ca53bfa1462d6
Author: Carl Worth <cworth@cworth.org>
Date: Tue Sep 11 16:29:06 2007 +0100
Fix build breakage when under the influence of USE_MMX
This was recently broken (dc7c047d1c68f343b66e81d9e79084e4171e2634) when
removing an assignment to noinst_LTLIBRARIES.
commit dc7c047d1c68f343b66e81d9e79084e4171e2634
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Mon Sep 10 15:20:44 2007 -0700
[memlk] don't try to allocate new data for 0-rectangle regions
commit c61d6ae39e5039dcb27bf95334a86520b562bbc5
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Fri Sep 7 10:52:01 2007 +0100
MMX code path for YV12 copy, taken from the xserver glucose-2 branch.
commit 562fa00e40b5466914b4f4cf49ae183e7b38e4f8
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Fri Sep 7 10:49:21 2007 +0100
YUV formats fetch support.
commit 469dd84cf8862a54ac31f0fc91ee539f3ad439e2
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Thu Sep 6 12:27:12 2007 +0100
New test for image fetching.
commit ba5fc60317e177a4140d4ea2cf8cb538d1e4e07a
Author: José Fonseca <jrfonseca@tungstengraphics.com>
Date: Wed Sep 5 21:56:24 2007 +0100
Perform stride calculations inside the callback functions.
commit 1b098ede1938d1225c32cf5639e4c7a891859897
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Tue Sep 4 11:19:33 2007 -0700
[win32] Makefile and compilation fixes for win32
commit 5fc4d5ab1fae8677f5a95f5eb0e4fad3a9e0bf82
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Tue Sep 4 11:18:40 2007 -0700
compilation: build edge/compose with accessors separately
Simplify the build by creating a new file for pixman-compose and
pixman-edge built with accessor functions.
commit 6b96b62ca419ac414d5715a4ba9f30664e510fcd
Author: Carl Worth <cworth@cworth.org>
Date: Tue Sep 4 17:24:04 2007 -0700
Don't copy unused bits to an alpha channel
This bug was identified by cairo's rgb24-ignore-alpha test which
blends RGB24 over ARGB32 and notices that "alpha" values are
making it from the source to the destination.
commit 8ff7213f39edc1b2b8b60d6b0cc5d5f14ca1928d
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Sat Aug 25 23:30:41 2007 -0700
rasterize traps that extend outside of the image bounds correctly
Traps that extend outside of the image bounds are rasterized incorrectly
currently; the problem is a signed vs. unsigned comparison that got
introduced when a width parameter went from int -> uint. This patch
puts it back to int (since it's stored as an int in the bits structure
to begin with), and also fixes a similar warning in the memset wrapper
commit 028993aacb9ec48aa9d347d0d189250b464cf30f
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Aug 24 16:49:29 2007 -0400
Set accessors for the destination image in composite-test.c
commit 341be6a408e86d5b8976e63746e646ef973339bb
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Aug 24 16:30:10 2007 -0400
Add missing comma in enum
commit fb667257ab8f5cf9c6af399ac394b8aa7826fd96
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Aug 24 16:19:31 2007 -0400
Remove trailing comma in enum
commit c7dad7b9a038fbe94a2bdc67cc0a5f40f8a40d5c
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Aug 24 16:12:30 2007 -0400
Add conjoint and disjoint operators to pixman.h
commit 245a5e04eb4bf3b973d32ce5f21e6e2eac00b48b
Merge: 25846ed 9c09561
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Aug 21 16:31:45 2007 -0400
Merge branch 'master' of ssh+git://sandmann@git.freedesktop.org/git/pixman
commit 25846ed93a87fcaefbfdb397343e986c8f53f997
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Aug 21 14:11:54 2007 -0400
Fix bug 12039, based on Chris Wilson's patch.
commit 9c09561a91debfd7c77a39b337b51b2ab16d6da9
Author: Eric Anholt <eric@anholt.net>
Date: Mon Aug 20 12:58:47 2007 -0700
Fix failure to set identity transform in pixman.
While here, optimize out a free/malloc in the case where a transform
existed previously and the new transform is non-identity.
commit 3e74bc431908dd42775d8e82ca2e4d589de820cb
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Aug 17 18:01:09 2007 -0400
Add pixman_image_set_source_clipping()
commit c7bec5898891f3077986c141b48e5ff77f1d5046
Author: Carl Worth <cworth@cworth.org>
Date: Wed Aug 15 10:16:11 2007 -0700
Fix typo AC_MAJOR -> PIXMAN_MAJOR
This typo was causing build failures for some. Thanks to David Sharp for
pointing out the problem.
commit d9b989c890724480d27aec471d5f5fbcc09c0a61
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Tue Aug 14 16:16:27 2007 -0700
Remove redundant defines.
commit 7bdb9840eb414b41ad41871864baa4f2445d8c05
Author: Arcady Goldmints-Orlov <arcadyg@nvidia.com>
Date: Mon Aug 13 17:37:59 2007 -0700
One more minor wrapping fix
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
commit 166b78295683d9bcf688702e98259e62f9b25c86
Author: Arcady Goldmints-Orlov <arcadyg@nvidia.com>
Date: Mon Aug 13 15:20:18 2007 -0700
Remove unnecessary wrapping from fbFetch/fbStore.
These functions fetch from a picture to a scanline buffer, or store
from a scanline buffer to a picture. Since pixman allocates its own
scanline buffer, we don't need to wrap accesses to it.
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
commit 7b1d0c091dd5ae8797b6f7a0ab3d40d5c3676fe9
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Mon Aug 13 17:26:51 2007 -0700
Don't skip fbFetch/fbStore when PIXMAN_FB_ACCESSORS is enabled.
pixman_composite_rect_general_accessors skips the fetch / store steps by setting
store to NULL when the op is ADD or OVER and the dest format is [ax]8r8g8b8.
This optimization is only valid when no accessors are in play.
commit 43370d1ce793ef2754c2e6f0fc08e534d4247793
Author: Eric Anholt <eric@anholt.net>
Date: Mon Aug 6 20:06:48 2007 -0700
Update .pc file for library version name change.
commit 778a3f9d7136de062806473dd3604eb03ba5d866
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Wed Aug 1 14:16:55 2007 -0700
Return a bool from pixman_image_unref.
Returns TRUE when the refcount reaches 0 and the image is freed.
commit 4838e2e9d9635883841e692a7074bcb2be96dcf5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Aug 6 17:28:06 2007 -0400
Bump version number; fix typo in configure.ac
commit 7b3c9cef49cdedef03112054925005fa21120bd5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Aug 6 17:24:44 2007 -0400
Change the library name to pixman-1
Set the soname to something based on the library version.
commit 19c46bf18b9cf6694fa3de9c836a3d1eed6c6dac
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Fri Aug 3 15:24:03 2007 -0700
Fix OpenSolaris compilation
commit 0c80a0cd84f30616563cef5910df9deb4f8ed687
Author: Alan Coopersmith <alanc@sun.com>
Date: Mon Jul 16 15:06:23 2007 -0400
Build fixes for Solaris.
commit 0f392d81748ab1338d294de96e28c43270f24180
Author: Jinghua Luo <sunmoon1997@gmail.com>
Date: Tue Jul 10 14:47:28 2007 +0800
Fix bug in rasterizeEdges() where the stride should be signed.
commit bbef73192e558695933d7f05befaa8c18550bb63
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon Jul 2 12:18:42 2007 -0400
Port Vlad's fixes for integer overflows with malloc().
commit 33d4028e3fffa231f40d66b5843de589ec2642fe
Author: root <root@echo.(none)>
Date: Sun Jul 1 11:42:49 2007 +0000
First import of vmx
commit 2e61f30e4c8d0e01e175495e13a5f132521ad6f2
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Jun 22 13:37:46 2007 -0400
Revert "Add a cache of images to reduce malloc/free time"
Revert the image cache since it isn't thread safe.
This reverts commit deb09d769ae4fc55cde595c170f417692284b3e8.
commit 64e3146c5ddfad415663fa5f87f7b9ff327a8c56
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 22 00:58:05 2007 -0400
Don't treat void as a value. Bug 11322, Alan Coopersmith.
commit 8216ba1cbd27c5428970b8d393722d0f4343efed
Author: Vladimir Vukicevic <vladimir@pobox.com>
Date: Wed Jun 20 15:13:30 2007 -0400
Add pixman_region_init_rects()
commit f1194a8bc0599e3ecceb785795ad8283a7c04dc0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 20 12:12:43 2007 -0400
Fix typo
commit 3dbb2a56bd1918595091006c6e0de5260d43af09
Author: Alex Larsson <alexl@redhat.com>
Date: Wed Jun 20 12:01:12 2007 -0400
Add non-mmx fast paths for In_8x8 and In_nx8x8. Bug 4191, patch by
Alex Larsson.
commit 658acaad4e73ac705f705f947a42a2cd0979042c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Wed Jun 20 11:36:22 2007 -0400
Add fbCompositeSrc_8888xx888(); comment out
fbCompositeOver_x888x8x8888{mmx} since they are not actually faster
than the generic code.
commit 440ed1da1c7ac600865c615cf257173cac2af214
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 14:41:04 2007 -0400
Optimize pixman_fill_rectangles() in a few more cases
commit deb09d769ae4fc55cde595c170f417692284b3e8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 12:41:21 2007 -0400
Add a cache of images to reduce malloc/free time
commit 6cb74dfe3d395051f9a2e4b850979a018ac340ca
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 11:23:05 2007 -0400
Also store the g3 part correctly
commit 07e73371ef096b42d3a983266105b71ea01b4cc8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 11:19:43 2007 -0400
Fix fbStore_b2g3r3(). Pointed out by Dan Amelang
commit d7f426806d25a9cea93a4c43a3f23e7ae9d67383
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 10:46:36 2007 -0400
Smplify the 1x1r optimization for the general compositing and fix the
1xn and nx1 cases.
commit 9ebec1f7dbe5576d572fede28d7560ea6000b566
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 10:40:58 2007 -0400
Fix pixman_fill() to return TRUE when it succeeded
commit 15b5960bcb7cadfe6fe92036dc0f08a85a2009f1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 00:57:33 2007 -0400
Add in 0xff alpha channel in Over_x888x8x8888mmx
commit e73e000d5bd44a198e35b6d0c421a735d00e0b3f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 19 00:35:58 2007 -0400
Fix solid fill optimization to compute the src correctly
commit edbe099ad3906d7626de854d144fc23d78408357
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 18 14:29:02 2007 -0400
Add non-mmx solid fills. Update TODO
commit f9454b3423b948022f36b7191db8c5f988f46273
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 18 13:37:20 2007 -0400
Make sure the output of fbCompositeOver_x888x8x8888 is actually stored
commit 0e4292666de736a584a3d4e0bcfc6db7d2c6538d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 23:10:23 2007 -0400
Also use this function in the xBGR case
commit 80a61bfb3dcf26271766e36aa31d454889ee43a5
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 22:57:47 2007 -0400
Add new fbCompositeOver_x888x8x8888mmx() operation
commit 19360d0df2ba55d34963101a662dd0ab51d84836
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 22:43:55 2007 -0400
Add fbCompositeOver_x888x8x8888() fast path
commit ff4004f3fbd3c576f1c931c680ad293c5038846d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 22:24:46 2007 -0400
Rename fbCompositeSrc_x888x8x8888 to x888xnx8888
commit 30f198fe53949da59821d2f394f0cecb5bdaa646
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 18:50:00 2007 -0400
Remove accidentally committed use of TIMER_BEGIN/END
commit e71844095ea75b4f9f66c85c87b4b3b6c287e02f
Merge: 4f9f7ae 647852d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 18:49:02 2007 -0400
Merge branch 'master' of ssh+git://sandmann@git.freedesktop.org/git/pixman
commit 647852d714ddfe6e1d71af1f4aea0e272c459fc6
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sun Jun 17 18:55:37 2007 -0400
Add timer macros
commit 4f9f7ae47ad258a1605a6b38c5ec268c9ee17150
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 18:02:06 2007 -0400
Update TODO
commit ad80d4d2bc8c4e37a8266b98a2241c0ebd7f0e43
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sun Jun 17 01:00:07 2007 -0400
Optimize fill rectangles in the op=PIXMAN_OP_CLEAR case
commit 9deaaae3f61f1701b022fe7daa1823a99fda7d00
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Jun 16 23:08:53 2007 -0400
Use the general code in some cases even when a fast path is available
If src or mask are repeating 1x1 images and srcRepeat or
maskRepeat are still TRUE, it means the fast path we
selected does not actually handle repeating images.
So rather than call the "fast path" with a zillion
1x1 requests, we just use the general code (which does
do something sensible with 1x1 repeating images).
commit e0a501d9b7e5c4ca07115552a16c4c4953ec5702
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Jun 16 22:10:36 2007 -0400
Remove ACCESS_MEM macro; define READ and WRITE to directly use the wrapper functions
commit 9b3cfcc13d0613cfb9d15b21a6b90e4a91a1666f
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Jun 16 21:40:43 2007 -0400
Move some utility functions from pixman-edge.c to pixman-utils.c
Set up so pixman-edge.c is compiled twice.
commit 3cd36dae288ac0923f214b8ae81dbfc0f4d5b1b0
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Jun 16 21:23:20 2007 -0400
Slight tweak to the definition of pixman_composeFunctions
commit 68d6c68adaba3a1d538bceca7d7955129d6075de
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat Jun 16 21:19:51 2007 -0400
Add #defines etc to compile pixman-compose.c twice
commit b5d07147fba7085d52966aa162db5d38164dfebf
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 16 15:13:04 2007 -0400
Make fbCompositeSrc_8888x8888mmx() check if the mask is 0
commit 5122f2b28bfbf08479cc88ff9ddfeb371f92264f
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 16 14:56:25 2007 -0400
Unroll loop in fbComposite_x888x8x8888()
commit 8fc40c3b0076e99cc996bd27a2479db4c94cc77b
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 16 14:49:11 2007 -0400
Optimize 1x1 repeating images in the general case
Reinstate checks for empty masks in mmxCombineOverU() and mmxCombineMaskU()
commit 15e5cf16a9770da682addeaff5df8b1793cf4b73
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 16 12:55:59 2007 -0400
Add a few optimizations for solid fills
commit 10854b9d63afe6893ac15fb67714eb98b7a8eca6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 16 01:40:07 2007 -0400
Plug leak of the gradient stops
commit e365aaf7f34d9257fc53e8f180a84fa243edcb2c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Sat Jun 16 01:15:05 2007 -0400
Plug leak in the bits=NULL case for pixman_image_create_bits()
commit 451a0510324491e82269d8e0d997ee4707ba8df8
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Fri Jun 15 14:33:57 2007 -0400
When setting identity transformations store them as NULL to prevent
hitting the general compositing code.
commit cd9c484f0d8cef0cc243a73de5a8d742b8678230
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Jun 15 01:45:04 2007 -0400
Turn off debug spew for incorrect arguments
commit e1dd17451cbe2c7d36205fe2fc4cea0092ee4141
Author: Søren Sandmann <sandmann@redhat.com>
Date: Fri Jun 15 00:15:03 2007 -0400
Disable source clipping by default
commit 1426483f8af21553bd8b2ad997617680944be420
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu Jun 14 17:37:12 2007 -0400
Update TODO
commit 7a8877bc0800ffcfe18bedec49068049c877fa5d
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu Jun 14 17:35:28 2007 -0400
Update TODO
commit a0e161ca9aa562a0f4b55b15b1ab3b9380f0d9bb
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu Jun 14 17:34:42 2007 -0400
Update TODO
commit 596bd530205e9835ede0bc8816c9b2dfff75e921
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu Jun 14 12:59:15 2007 -0400
Reset clip regions correctly when NULL is passed
commit e8dfb54ccea26b7e7948ca9806c97194892f0791
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 23:50:04 2007 -0400
Make default clip region the full image
commit 42192ad0fc7fe0fa7600f879646de867691351bb
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 23:37:25 2007 -0400
Don't complain if users try to read non-existing data from images
commit 0e77667851869849cbddc30466db99ff5dc02b19
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 22:53:35 2007 -0400
Don't require rowstride to be a multiple of 4 when bits is NULL
commit b6bdd8273cc3500d1f69402f39c3d6e718920a66
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 22:14:32 2007 -0400
Add pixman_fill_rectangles()
commit 0ab81dc6383e843aa3fa78da289820a55f4a08f0
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 15:32:27 2007 -0400
Add pixman_add_trapezoids() function
commit 756b54f6e45bb423ffabfcad2b6d8574130c6e53
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 15:27:31 2007 -0400
Add boolean returns to various setters
commit 6d62986ee0be7191ad6ef938d82cbadbe995c377
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 14:30:53 2007 -0400
Allow bits to be NULL when bit images are created
commit d466cf1d2f09f78baaafac713d6bc7d4f003b860
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue Jun 12 14:24:40 2007 -0400
Add various accessors; remove composite_rect
commit b62b769c0da8d8eae68bd41a53f390c1f0917be0
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 22:02:03 2007 -0400
Bump version number
commit c663029510c8a329dc87246cc895b21f0af79eb6
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 21:39:24 2007 -0400
Make use of pixman_fill_mmx() in various places. Delete #if0'ed code
commit 3dca89a677528845ccaee7ff6d355207c631ddd2
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 21:35:14 2007 -0400
Add pixman_fill_mmx() function
commit cf6b8f63d4dd2d96efcde673696e1703856a3787
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 14:55:31 2007 -0400
Forgotten fbHaveMMX()
commit 02f6129400eda40167e91e0ff4724d7a5ae5a80d
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 14:54:44 2007 -0400
Rename fbHaveMMX() pixman_have_mmx()
Guard pixman_blt_mmx() with pixman_have_mmx()
commit 105d398c4d061eb102747f824e6c04ab897cb5e1
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 14:41:01 2007 -0400
Add pixman_blt_mmx() based on fbBltmmx() from the X server.
Implement fbCompositeAreammx() in terms of it.
Uncomment calls to fbCompositeAreammx() in pixman-pict.c
Add public pixman_blt() that just returns false if not using mmx.
commit 6a64eb109449806186164332383be1235ab9c21c
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 09:15:05 2007 -0400
Bump version number
commit 30499e2e88985df2cd1ece82227802a316e31a32
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Mon Jun 11 00:22:19 2007 -0400
Add a version of miComputeCompositeRegion; call it from
pixman_image_composite(). Remove const from return value of
pixman_region_rectangles().
commit 5ca61dc99b198243f08e6f1f3f96e3c87ff818b9
Author: Søren Sandmann Pedersen <sandmann@redhat.com>
Date: Tue Jun 5 11:33:17 2007 -0400
Fix bug in pixman_image_set_filter() where only the parameters were
updated, not the filter type. Reported by Michel Dänzer.
commit 808e2de3a6270b32a026722f59a49736d224d46c
Author: Daniel Stone <daniel@fooishbar.org>
Date: Thu May 24 16:24:39 2007 +0300
Add .gitignore file
commit d1ce3f95509bd86c0aa850d6b58c8a065517c84f
Author: Daniel Stone <daniel@fooishbar.org>
Date: Thu May 24 16:19:40 2007 +0300
Use canonical autogen.sh
Use the standard autogen.sh, which allows for srcdir != builddir.
commit 8129984603de569e01563d810a334765c2ec5062
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 23 16:38:38 2007 -0400
Declare the two new trapezoid functions in pixman.h
commit 4355cc5c57f3e402af9a508762c8ed3a5ac9f2ca
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed May 23 16:40:23 2007 -0400
Add pixman-trap with the trapezoid rasterization code from the X server.
Add two different trapezoid types that X makes use of.
commit 35f99a530de11bcf0e98c372bc49b9bf0f2ecf37
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 23 16:09:49 2007 -0400
Make sure gradient-test.c builds when srcdir != buildir. Patch from
Julien Cristau <jcristau@debian.org>.
commit d5e8a7b8bdd4b18e504859059683cb9723503b3c
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed May 23 15:39:03 2007 -0400
Fix bug in rasterizeEdges() where the stride was treated as if in
bytes, when it was in uint32_t's. Formatting fixes. Delete misleading
comment from pixman-private.h
commit ee37469d6adad32cb31e52a95abafa32943b3e8d
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 23 12:18:09 2007 -0400
Fix function name
commit 727b77983bd8b684764e69cdea38ce6290c60467
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 22 13:39:25 2007 -0400
Add more edge functions
commit 4600c6823e4dea52a34fe881f5374691bc76f555
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 22 12:52:52 2007 -0400
Add implementation of edge rasterization
commit 1413bb7a5ddc2d49109a1e9669fab155352bc3c7
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 22 11:58:46 2007 -0400
Add edge data types
commit e32b240145ee7bbc2e69020b0bb00c33c68acf15
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue May 22 10:00:46 2007 -0400
Detect endianness
commit e5cf135170198a33429b00f7c506a84054f0297e
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue May 22 09:54:19 2007 -0400
Include string.h in pixman-pict.c
commit 097de78d135259c64c5cf8789680bfdc354c12f9
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue May 22 09:51:54 2007 -0400
Check for getisax() support
commit 37f90ba0b2d9797de93477aaa9e113329e50f93d
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue May 22 09:49:23 2007 -0400
Check for MMX in the build system
commit 56623268a76ab65228c41dba5fbf27463b1a5691
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue May 22 00:04:39 2007 -0400
Update TODO
commit ed184ebb7c2f12010207ffa210975a9b22b152ef
Author: Søren Sandmann <sandmann@redhat.com>
Date: Tue May 22 00:03:31 2007 -0400
Make the mmx code compile
commit 2db377de616c4c0826d1a56777d7a4f858049758
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon May 21 23:46:24 2007 -0400
Add pixman-mmx.[ch] and move macros around to make it compile.
Not yet hooked up.
commit ce506999e6dc6ad07d2665277d0250e7d9e0b6a8
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Mon May 21 20:03:37 2007 -0400
Use the general code if the images have read/write functions
commit a54096d554414dd88a3c6a7a53816552844a5b08
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Mon May 21 17:51:41 2007 -0400
Update TODO
commit ccef70a685191bb3cd4b7891f1ebde1881b3aa13
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Mon May 21 15:03:41 2007 -0400
Fix bug in fbCompositeGetSolid() where a format was compared to a format type
commit 154c4dd97896178cd54bdb1057bef2eab3870c0c
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Mon May 21 14:27:40 2007 -0400
Make pixman_image_composite() take a region parameter; comment out non-implemented functions from the switch of doom
commit 4518de9fec813bcb19facbc944821e882a91671a
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon May 21 10:00:05 2007 -0400
Add slightly changed copy of miComputeCompositeRegion() to pixman-pict.c
commit 4df446bb73b1ab89e119d6714a3feae8a384e113
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 19 17:19:39 2007 -0400
Move mod and div macros to pixman-private.h
commit bcb4c8f02137178096473191a05c3b84e4ce5116
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 19 17:13:02 2007 -0400
Add fbComposeGetStart() macro
commit e9e326eafe3e4ed221eefbb7ddbd46d5d983505d
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 19 17:05:23 2007 -0400
Add fbComposeGetSolid() macro
commit 456ebbbb27381d5fff4d2426a261c4760eb0b8df
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 19 16:44:40 2007 -0400
Add implementation of can_get_solid()
commit eabc2f48f07decb5fa15db985fffa9e648506568
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 19 16:40:10 2007 -0400
Various formatting/style tweaks
commit bdb307ac4a6ad20e687f286491a3d9df6807567f
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 19 15:53:37 2007 -0400
Add macro FUNC that expands to __PRETTY_FUNCTION__ or __func__
depending on the compiler.
commit 4c15a7838eadf9b608b28ebafccceb0aa25a83dc
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 19 12:04:21 2007 -0400
Include limits.h in pixman-compose.c; patch from Alan Coopersmith
commit 595ca53c094b8dee6747670aaa471fb19f1a6d94
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 18 15:21:51 2007 -0400
Add pixman-pict.c which is a version of fbpict.c. It compiles, but
isn't hooked up to anything.
commit e1328980457ce6f51ce2649d79feefa616408ce9
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 18 13:38:26 2007 -0400
Make pixman_image_set_indexed() not copy its argument
commit e12ca669af9143581c4af4c8c885273fc6b12c2d
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 18 12:04:16 2007 -0400
Free the indexed table when the image is freed
commit ff2e0e9636b1dd3690b5ab5e1dff04ff5c9a07ab
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 18 11:54:01 2007 -0400
Add new function pixman_image_set_indexed()
commit 74b76ad9fefd39d7d60a059f2f8537b5f6b94652
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Thu May 17 10:19:29 2007 -0400
Fix wrong type in composite-test.c
commit d25d77852d253042b859468f64b228d11c2a0f82
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Thu May 17 09:12:09 2007 -0400
Add a TODO file. Indent pixman-compose.c
commit db3c13c8fea0e3d0be382d55d58fc9d0d01bba44
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed May 16 19:35:55 2007 -0400
Add macro magic in pixman-private.h to allow reading and writing to
happen through functions. Use them in pixman-compose.c; also delete
unnecessary READ and WRITE macros that always operate on host memory.
Add accessor functions to composite-test.c
commit 57d6894ab06d2ac07e17108c01e8ba282fc51384
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 16 11:13:11 2007 -0400
Add an image argument to all the store functions
Some tweaks to composite-test.c
commit 0cfb66104cc553ba365df546d7ba9b0e8415e30f
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 16 11:07:54 2007 -0400
Add an image argument to all the fetch functions
commit a49e425933e3ccd1ae59c0e60ddbab8a88282639
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 16 11:03:09 2007 -0400
Move some macros from pixman-compose.c to pixman-private.h
commit 24f8cfce32d3c5dcd3ff6d9ebd513c35cdacc972
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 16 10:56:08 2007 -0400
Add API to have accessor functions on pixman
commit 195100527f6c678bf9848dc6c2a08658ed39a17d
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 15 16:40:40 2007 -0400
Various formatting fixes
Rename pixman_image_composite() to pixman_image_composite_rect()
commit 97a4ce541c9fc72aeee0f05b8529d0ca87fb7863
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 15 12:15:46 2007 -0400
Fix typo in pixman.h
commit 322659703d7c52d45ba3962b8386ac5f61e403db
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 15 12:13:01 2007 -0400
Replace hack to get standard integer types with #if/#elif construction
commit ffbb4a6b1fb52dc46639d18bf0dd769fe53d3e88
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 15 11:08:24 2007 -0400
Don't build GTK+ test programs if GTK+ is not available
commit b8d223d6837d37bc09efdf3c4d957ff24337004a
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 12 19:24:42 2007 -0400
Export pixman_region_reset
commit 38c4ac5a1d25d96087bfe1e3d02816feaa6b8bf9
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 12 17:58:50 2007 -0400
Export a pixman_region_selfcheck
commit f226c2b4f2465aba5f9e1f3fed48f0840d0b67c0
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 12 17:55:48 2007 -0400
Export pixman_region_equal()
commit ecf9d36f6a62f4d77e2c025ee3109ac46f13f15d
Author: Søren Sandmann <sandmann@redhat.com>
Date: Sat May 12 17:32:43 2007 -0400
Add new pixman_region_set_static_pointers
commit ffab43129163de418c324cffcf602e6254024f95
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Thu May 10 22:15:57 2007 -0400
Make the region data struct public
commit e126ef091151372ed29562f3ff1a964774583b9b
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Thu May 10 16:14:40 2007 -0400
Make the pixman_transform_point_3d() function public
commit f267e4dce73819a4a511ffaebd0cca9dcb3bd5fb
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Thu May 10 16:08:12 2007 -0400
Change the names of a few functions to prevent them from clashing with the X names
commit c976db965862c0b2ba940122dc7e690cd23b5fa3
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu May 10 10:13:54 2007 -0400
Use a radial gradient in the gradien-test
commit 7ad923eb6ff71b3865ea43b2ee247715607146da
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu May 10 09:30:17 2007 -0400
Make sure 64 bit fixed point types are signed
commit a5a11df9024f9b7ee6194e0b842cd430f4fb5697
Author: Søren Sandmann <sandmann@redhat.com>
Date: Thu May 10 09:16:34 2007 -0400
Add a transformation to the gradient test
commit 1a58e8478f6f87de3ffe31b0fd2b1ee06d08fe6c
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed May 9 18:18:38 2007 -0400
Use fixpoint instead of double in gradient test
commit 0ebb7e31db85a179afdcd731fcc6b0e311084cb1
Author: Søren Sandmann <sandmann@redhat.com>
Date: Wed May 9 18:10:30 2007 -0400
Remove AM_MAINTAINER_MODE ; add new gradient-test
commit dd670c29bf1de3e951f936dba834e4bfe07a9bd4
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 9 14:20:57 2007 -0400
Fix various stupid mistakes, such as inverted return_if_fail() tests
and only allocating space for a pointer instead of an image.
commit 271c830eb0b817bd892704fb15856b19b0458d07
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 9 11:22:56 2007 -0400
Remove *error from solid fill constructor
commit e9b1be0151d7bc677bd74f0a5a6836672c1ad9dd
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 9 11:12:21 2007 -0400
Various formatting fixes
commit 059f62f3b02b6244b866e58d248bc8e6869f506e
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 9 11:09:59 2007 -0400
Handle setting of NULL properties
commit 7529b47ee5f55e7b16bdfa750dd18dac11194210
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 9 11:00:06 2007 -0400
Make images ref counted. Memory management.
commit 8bdb8b1d93bbbffafe111b4fc4dac0df9bbb6fe5
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 9 09:47:33 2007 -0400
Export pixman_gradient_stop; get rid of *error argument from init functions.
Add return_if_fail macros to pixman-private.h
commit 4ea0d782092d9bd7c1570bcfccf3fe340a3d258a
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Wed May 9 08:20:43 2007 -0400
Change to use malloced image instead of stack allocated
commit 45c261d75ae348cb4afc6c97d4daa90cfd50e890
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 8 17:02:44 2007 -0400
Apply bad hack to avoid including config.h
commit 59df25cbe403112c3c301dd212cfaa7b8f848499
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 8 14:24:32 2007 -0400
Install header file in pixman/pixman.h
commit 2f882e03614608a2a39690cf4e7105e4dde25e21
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 8 14:00:13 2007 -0400
Fix libpixman.pc.in
commit 0c01cbedbaf068a9db4edefbb130c58f1f1c85ac
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 8 13:37:03 2007 -0400
Add setters for various properties
commit e36c6a5eb4cc89da8cf8d66dd45d02b75584e243
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 8 13:19:51 2007 -0400
Make the test program test something useful.
Also add a check that the public image struct is big enough to contain the
private union.
commit 4bd9ebc83d5a25141b5c9868513b918befd433d0
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 8 10:48:27 2007 -0400
Add a simple test program; fix linking problems
commit 50289aace6a8699c08593a8cb93bf8dfc30ed818
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Tue May 8 10:32:54 2007 -0400
Implement pixman_image_composite() in terms of fbCompositeRect().
commit df7570f0ad6b903d7b910734f1906d423928c048
Author: Søren Sandmann <sandmann@redhat.com>
Date: Mon May 7 22:36:15 2007 -0400
Add a version of fbcompose.c. Fixes and additions to make it compile
commit 589604bfa36524809f3f44b96f624f7c7bedbee0
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Sun May 6 12:46:42 2007 -0400
Fix copyright notice
commit c2602792aa8d5d4a376beb9557f544b78735c210
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 23:45:19 2007 -0400
Add fixed point macros, add declarations for image init functions
commit da2510138584c4dd80b011f3bc767923c6ee443e
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 22:34:54 2007 -0400
Run configure from autogen.sh
commit 560a2f52ade892526d5d64a1fb36471ade57ed45
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 22:34:22 2007 -0400
Don't run configure from autogen.sh
commit eb90370859435390d0276d0c2c5f3251b32e431a
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 22:18:33 2007 -0400
Make autogen.sh run configure
commit 97cdcabe18a2e910dbfa4892dd8f32354fb02463
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 22:16:40 2007 -0400
Changes to autogen.sh
commit 261a293555d45245f34214e646131a410e8fd4a7
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 22:11:49 2007 -0400
Make autogen.sh run configure
commit 9f40d13e9f9e23f62280375605f4234e71642c24
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 22:08:40 2007 -0400
Add pixman.pc.in
commit 7f0b18c94cf84750b097fe96aa3c8ac9e1b406e3
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 22:07:19 2007 -0400
Add code to initialize images, based on picture.c from the X server
commit af13f449087a5dd72abf5f1178234e85add33632
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 19:44:13 2007 -0400
Change autogen.sh to call autoreconf. Remove reference to libcomp.h
commit 565f410a1c420da875cd9d13efa22126ad5fa567
Author: Soren Sandmann Pedersen <ssp@dhcp83-218.boston.redhat.com>
Date: Fri May 4 19:13:57 2007 -0400
Add the files.
|