README.md
1# Fuzzers for SurfaceFlinger
2## Table of contents
3+ [SurfaceFlinger](#SurfaceFlinger)
4+ [DisplayHardware](#DisplayHardware)
5+ [Scheduler](#Scheduler)
6+ [Layer](#Layer)
7
8# <a name="SurfaceFlinger"></a> Fuzzer for SurfaceFlinger
9
10SurfaceFlinger supports the following data sources:
111. Pixel Formats (parameter name: `defaultCompositionPixelFormat`)
122. Data Spaces (parameter name: `defaultCompositionDataspace`)
133. Rotations (parameter name: `internalDisplayOrientation`)
143. Surface composer tags (parameter name: `onTransact`)
15
16You can find the possible values in the fuzzer's source code.
17
18#### Steps to run
191. Build the fuzzer
20```
21 $ mm -j$(nproc) surfaceflinger_fuzzer
22```
232. To run on device
24```
25 $ adb sync data
26 $ adb shell /data/fuzz/arm64/surfaceflinger_fuzzer/surfaceflinger_fuzzer
27```
28
29# <a name="DisplayHardware"></a> Fuzzer for DisplayHardware
30
31DisplayHardware supports the following parameters:
321. Hal Capability (parameter name: `hasCapability`)
332. Hal BlendMode (parameter name: `setBlendMode`)
343. Hal Composition (parameter name: `setCompositionType`)
354. Hal Display Capability (parameter name: `hasDisplayCapability`)
365. Composition Types (parameter name: `prepareFrame`)
376. Color Modes (parameter name: `setActiveColorMode`)
387. Render Intents (parameter name: `setActiveColorMode`)
398. Power Modes (parameter name: `setPowerMode`)
409. Content Types (parameter name: `setContentType`)
4110. Data Space (parameter name: `setDataspace`)
4211. Transforms (parameter name: `setLayerTransform`)
43
44You can find the possible values in the fuzzer's source code.
45
46#### Steps to run
471. Build the fuzzer
48```
49 $ mm -j$(nproc) surfaceflinger_displayhardware_fuzzer
50```
512. Run on device
52```
53 $ adb sync data
54 $ adb shell /data/fuzz/arm64/surfaceflinger_displayhardware_fuzzer/surfaceflinger_displayhardware_fuzzer
55```
56
57# <a name="Scheduler"></a> Fuzzer for Scheduler
58
59Scheduler supports the following parameters:
601. VSync Periods (parameter name: `lowFpsPeriod`)
61
62You can find the possible values in the fuzzer's source code.
63
64#### Steps to run
651. Build the fuzzer
66```
67 $ mm -j$(nproc) surfaceflinger_scheduler_fuzzer
68```
692. To run on device
70```
71 $ adb sync data
72 $ adb shell /data/fuzz/arm64/surfaceflinger_scheduler_fuzzer/surfaceflinger_scheduler_fuzzer
73```
74
75# <a name="Layer"></a> Fuzzer for Layer
76
77Layer supports the following parameters:
781. Display Connection Types (parameter name: `fakeDisplay`)
792. State Sets (parameter name: `traverseInZOrder`)
803. State Subsets (parameter name: `prepareCompositionState`)
814. Disconnect modes (parameter name: `disconnect`)
825. Data Spaces (parameter name: `setDataspace`)
83
84You can find the possible values in the fuzzer's source code.
85
86#### Steps to run
871. Build the fuzzer
88```
89 $ mm -j$(nproc) surfaceflinger_layer_fuzzer
90```
912. Run on device
92```
93 $ adb sync data
94 $ adb shell /data/fuzz/arm64/surfaceflinger_layer_fuzzer/surfaceflinger_layer_fuzzer
95```
96