blob: d93fae9c3cbf8b35479d69718a33eaf292aab922 [file] [log] [blame] [view]
achristensen@apple.com672f2e82019-05-09 04:15:46 +00001# ANGLE Orientation
2
3A basic guide to get up and running fixing bugs and performance issues in ANGLE.
4
5## First ANGLE Compile
6
7### Windows
8
9- Download and install
dino@apple.com6b04a0c2021-12-07 19:51:36 +000010 [Visual Studio Community](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx).
achristensen@apple.com672f2e82019-05-09 04:15:46 +000011 Installing takes some time.
12
13- Take the time to register a Microsoft account, otherwise you'll get nagged to death.
14
15- Download and install Chromium's
16 [depot_tools](http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up)
17 for building ANGLE.
18
19- Add the `depot_tools` dir to your system path. Open start menu, type "edit environment variables",
20 add it to PATH.
21
22- (recommended) Download and install [Git for Windows](http://gitforwindows.org/).
23
24- Open Git bash, head to C:/src and follow the steps on
dino@apple.com6b04a0c2021-12-07 19:51:36 +000025 [the ANGLE wiki](https://chromium.googlesource.com/angle/angle/+/main/doc/DevSetup.md#Development-setup-Getting-the-source)
achristensen@apple.com672f2e82019-05-09 04:15:46 +000026 to set up the ANGLE solution for the first time.
27
dino@apple.com6b04a0c2021-12-07 19:51:36 +000028- If you follow the [ANGLE wiki VS solution building and debugging guide](https://chromium.googlesource.com/angle/angle/+/main/doc/DevSetup.md#building-and-debugging-with-visual-studio), the VS solution will be in `c:/src/angle/out/Debug/angle-debug.sln`. Open and let the installation
achristensen@apple.com672f2e82019-05-09 04:15:46 +000029 finish. **Important**: set indent style to spaces, not tabs!
30
31- Building should work at this point!
32
33- Try running `angle_end2end_tests`, `angle_unittests` or a sample program.
34
35- Useful VS extensions:
36
37 1. [Build Only Startup Project](https://marketplace.visualstudio.com/items?itemName=SenHarada.BuildOnlyStartupProject)
38 2. [SwitchStartupProject](https://marketplace.visualstudio.com/items?itemName=vs-publisher-141975.SwitchStartupProject)
39 3. [Smart CommandLine Arguments](https://www.visualstudiogallery.msdn.microsoft.com/535f79b1-fbe0-4b0a-a346-8cdf271ea071)
40
41### Linux
42
43- Download and install Chromium's
44 [depot_tools](http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up)
45 for building ANGLE.
46
47- Ensure you add `depot_tools` to your bashrc as in the wiki link above.
48
49- Follow the steps on
dino@apple.com6b04a0c2021-12-07 19:51:36 +000050 [the ANGLE wiki](https://chromium.googlesource.com/angle/angle/+/main/doc/DevSetup.md#Development-setup-Getting-the-source)
achristensen@apple.com672f2e82019-05-09 04:15:46 +000051 to setup ANGLE's build.
52
53- Building should work at this point! Follow the steps on the Wiki.
54
55- Try running `angle_end2end_tests`, `angle_unittests` or a sample program.
56
57## Setting up the [drawElements testing suite](http://go/dEQP)
58
59- [Cherry](https://sites.google.com/a/google.com/deqp/cherry) is the UI for viewing test results.
60 ANGLE checks out a copy in `<angledir>/third_party/cherry`.
61
62- Follow the instructions in the
dino@apple.com6b04a0c2021-12-07 19:51:36 +000063 [installation README](https://android.googlesource.com/platform/external/cherry/+/refs/heads/main/README)
achristensen@apple.com672f2e82019-05-09 04:15:46 +000064 to get it running. On Windows, use 64-bit.
65
66- Read up on testing with
dino@apple.com6b04a0c2021-12-07 19:51:36 +000067 [dEQP on the ANGLE Wiki](https://chromium.googlesource.com/angle/angle/+/main/doc/dEQP.md).
achristensen@apple.com672f2e82019-05-09 04:15:46 +000068
69- Try running `angle_deqp_gles2_tests_no_gtest` with the flag
70 `--deqp-case=dEQP-GLES2.functional.negative_api.*` and load a test report in Cherry.
71
72- To use Cherry, browse to [http://localhost:8080/#/results](http://localhost:8080/#/results) and
73 click '**Import existing batch**', loading `TestResults.qpa`. Look for the qpa file in the
74 current working directory, or `<angledir>/src/tests` if you ran the tests from Visual Studio.
75
76- Note: we only use Cherry for viewing test output, not running the tests. On start, you may see
77 some runtime messages about unable to load case lists. These are safe to ignore. If you didn't
78 load the results URL directly, click the "**Results**" tab to find the Import button.
79
80## Profiling
81
82- You can use `scripts/perf_test_runner.py` to run any target of `./angle_perftests` (see script
83 source for details).
84
85### With Visual Studio
86
87- In Visual Studio 2017, look under Debug/Profiler/Performance Explorer/New Performance Session.
88 Right-click "Targets" and add `angle_perftests` as a Target Project.
89
90- Run `angle_perftests` with the flag `--gtest_filter=DrawCallPerfBenchmark.Run/d3d11_null` for
91 D3D11, `.../d3d9_null` for D3D9, `.../gl_null` for OpenGL and `.../vulkan_null` for Vulkan.
92
93- Make sure you close all open instances of Chrome, they use a lot of background CPU and GPU. In
94 fact, close every process and application you can.
95
96### Profiling with Visual Studio + Chrome
97
98- Install [Chrome Canary](https://www.google.com/chrome/browser/canary.html).
99
100- Canary's install dir is usually `%APPDATA%/Local/Google/Chrome SxS/Application`
101
dino@apple.com6b04a0c2021-12-07 19:51:36 +0000102- Build ANGLE x64, Release, and run 'python scripts/update_chrome_angle.py' to replace Canary's
achristensen@apple.com672f2e82019-05-09 04:15:46 +0000103 ANGLE with your custom ANGLE. (Note: Canary must be closed)
104
105- Start Canary with `--gpu-startup-dialog --disable-gpu-sandbox`, wait for the dialog.
106
107- In Visual Studio, under Debug/Profiler, choose attach to process.
108
109- Attach to the Chrome GPU process, then immediately pause profiling.
110
111- **IMPORTANT:** Verify ANGLE details are correct in `about:gpu`.
112
113- In Canary, start your benchmark, then resume profiling, and exit when done. The report will load
114 automatically.
115
116## Bookmark the latest Khronos specs
117
118- [The GLES 2.0 Spec](https://www.khronos.org/registry/OpenGL/specs/es/2.0/es_full_spec_2.0.pdf)
119
120- [The GLES 3.0 Spec](https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf)
121
122- [The GLES 3.1 Spec](https://www.khronos.org/registry/gles/specs/3.1/es_spec_3.1.pdf)
123
124- [The GLES Shading Language 1.00 Spec](https://www.khronos.org/files/opengles_shading_language.pdf)
125
126- [The GLES Shading Language 3.00 Spec](https://www.khronos.org/registry/gles/specs/3.0/GLSL_ES_Specification_3.00.4.pdf)
127
128- [The WebGL Specs](https://www.khronos.org/registry/webgl/specs/latest/)
129
130- [A modern desktop OpenGL Spec](https://www.opengl.org/registry/doc/glspec45.core.pdf)
131 (for reference)
132
133- [The Vulkan Spec](https://www.khronos.org/registry/vulkan/specs/1.0-wsi_extensions/html/vkspec.html)
134
135These specs can be found in the [OpenGL Registry](https://github.com/KhronosGroup/OpenGL-Registry)
136and the [Vulkan Docs](https://github.com/KhronosGroup/Vulkan-Docs) repositories as well.
137
138## Join Groups and Chats
139
140- Join the `#angle` channel in `chromium.slack.com`.
141
142### For Googlers
143
144- Join angle-team@ for access to many important emails and shared documents.
145
146- We have a Hangouts Chat channel. Ask for an invite.