зеркало из https://github.com/AvaloniaUI/angle.git
147 строки
6.1 KiB
Markdown
147 строки
6.1 KiB
Markdown
|
# ANGLE Orientation
|
||
|
|
||
|
A basic guide to get up and running fixing bugs and performance issues in ANGLE.
|
||
|
|
||
|
## First ANGLE Compile
|
||
|
|
||
|
### Windows
|
||
|
|
||
|
- Download and install
|
||
|
[Visual Studio 2017 Community](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx).
|
||
|
Installing takes some time.
|
||
|
|
||
|
- Take the time to register a Microsoft account, otherwise you'll get nagged to death.
|
||
|
|
||
|
- Download and install Chromium's
|
||
|
[depot_tools](http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up)
|
||
|
for building ANGLE.
|
||
|
|
||
|
- Add the `depot_tools` dir to your system path. Open start menu, type "edit environment variables",
|
||
|
add it to PATH.
|
||
|
|
||
|
- (recommended) Download and install [Git for Windows](http://gitforwindows.org/).
|
||
|
|
||
|
- Open Git bash, head to C:/src and follow the steps on
|
||
|
[the ANGLE wiki](https://chromium.googlesource.com/angle/angle/+/master/doc/DevSetup.md#Development-setup-Getting-the-source)
|
||
|
to set up the ANGLE solution for the first time.
|
||
|
|
||
|
- The VS 2017 solution will be in `c:/src/angle/out/sln/ANGLE.sln`. Open and let the installation
|
||
|
finish. **Important**: set indent style to spaces, not tabs!
|
||
|
|
||
|
- Building should work at this point!
|
||
|
|
||
|
- Try running `angle_end2end_tests`, `angle_unittests` or a sample program.
|
||
|
|
||
|
- Useful VS extensions:
|
||
|
|
||
|
1. [Build Only Startup Project](https://marketplace.visualstudio.com/items?itemName=SenHarada.BuildOnlyStartupProject)
|
||
|
2. [SwitchStartupProject](https://marketplace.visualstudio.com/items?itemName=vs-publisher-141975.SwitchStartupProject)
|
||
|
3. [Smart CommandLine Arguments](https://www.visualstudiogallery.msdn.microsoft.com/535f79b1-fbe0-4b0a-a346-8cdf271ea071)
|
||
|
|
||
|
### Linux
|
||
|
|
||
|
- Download and install Chromium's
|
||
|
[depot_tools](http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up)
|
||
|
for building ANGLE.
|
||
|
|
||
|
- Ensure you add `depot_tools` to your bashrc as in the wiki link above.
|
||
|
|
||
|
- Follow the steps on
|
||
|
[the ANGLE wiki](https://chromium.googlesource.com/angle/angle/+/master/doc/DevSetup.md#Development-setup-Getting-the-source)
|
||
|
to setup ANGLE's build.
|
||
|
|
||
|
- Building should work at this point! Follow the steps on the Wiki.
|
||
|
|
||
|
- Try running `angle_end2end_tests`, `angle_unittests` or a sample program.
|
||
|
|
||
|
## Setting up the [drawElements testing suite](http://go/dEQP)
|
||
|
|
||
|
- [Cherry](https://sites.google.com/a/google.com/deqp/cherry) is the UI for viewing test results.
|
||
|
ANGLE checks out a copy in `<angledir>/third_party/cherry`.
|
||
|
|
||
|
- Follow the instructions in the
|
||
|
[installation README](https://android.googlesource.com/platform/external/cherry/+/refs/heads/master/README)
|
||
|
to get it running. On Windows, use 64-bit.
|
||
|
|
||
|
- Read up on testing with
|
||
|
[dEQP on the ANGLE Wiki](https://chromium.googlesource.com/angle/angle/+/master/doc/dEQP.md).
|
||
|
|
||
|
- Try running `angle_deqp_gles2_tests_no_gtest` with the flag
|
||
|
`--deqp-case=dEQP-GLES2.functional.negative_api.*` and load a test report in Cherry.
|
||
|
|
||
|
- To use Cherry, browse to [http://localhost:8080/#/results](http://localhost:8080/#/results) and
|
||
|
click '**Import existing batch**', loading `TestResults.qpa`. Look for the qpa file in the
|
||
|
current working directory, or `<angledir>/src/tests` if you ran the tests from Visual Studio.
|
||
|
|
||
|
- Note: we only use Cherry for viewing test output, not running the tests. On start, you may see
|
||
|
some runtime messages about unable to load case lists. These are safe to ignore. If you didn't
|
||
|
load the results URL directly, click the "**Results**" tab to find the Import button.
|
||
|
|
||
|
## Profiling
|
||
|
|
||
|
- You can use `scripts/perf_test_runner.py` to run any target of `./angle_perftests` (see script
|
||
|
source for details).
|
||
|
|
||
|
### With Visual Studio
|
||
|
|
||
|
- In Visual Studio 2017, look under Debug/Profiler/Performance Explorer/New Performance Session.
|
||
|
Right-click "Targets" and add `angle_perftests` as a Target Project.
|
||
|
|
||
|
- Run `angle_perftests` with the flag `--gtest_filter=DrawCallPerfBenchmark.Run/d3d11_null` for
|
||
|
D3D11, `.../d3d9_null` for D3D9, `.../gl_null` for OpenGL and `.../vulkan_null` for Vulkan.
|
||
|
|
||
|
- Make sure you close all open instances of Chrome, they use a lot of background CPU and GPU. In
|
||
|
fact, close every process and application you can.
|
||
|
|
||
|
### Profiling with Visual Studio + Chrome
|
||
|
|
||
|
- Install [Chrome Canary](https://www.google.com/chrome/browser/canary.html).
|
||
|
|
||
|
- Canary's install dir is usually `%APPDATA%/Local/Google/Chrome SxS/Application`
|
||
|
|
||
|
- Build ANGLE x64, Release, and run 'python scripts/update_canary_angle.py' to replace Canary's
|
||
|
ANGLE with your custom ANGLE. (Note: Canary must be closed)
|
||
|
|
||
|
- Start Canary with `--gpu-startup-dialog --disable-gpu-sandbox`, wait for the dialog.
|
||
|
|
||
|
- In Visual Studio, under Debug/Profiler, choose attach to process.
|
||
|
|
||
|
- Attach to the Chrome GPU process, then immediately pause profiling.
|
||
|
|
||
|
- **IMPORTANT:** Verify ANGLE details are correct in `about:gpu`.
|
||
|
|
||
|
- In Canary, start your benchmark, then resume profiling, and exit when done. The report will load
|
||
|
automatically.
|
||
|
|
||
|
## Bookmark the latest Khronos specs
|
||
|
|
||
|
- [The GLES 2.0 Spec](https://www.khronos.org/registry/OpenGL/specs/es/2.0/es_full_spec_2.0.pdf)
|
||
|
|
||
|
- [The GLES 3.0 Spec](https://www.khronos.org/registry/OpenGL/specs/es/3.0/es_spec_3.0.pdf)
|
||
|
|
||
|
- [The GLES 3.1 Spec](https://www.khronos.org/registry/gles/specs/3.1/es_spec_3.1.pdf)
|
||
|
|
||
|
- [The GLES Shading Language 1.00 Spec](https://www.khronos.org/files/opengles_shading_language.pdf)
|
||
|
|
||
|
- [The GLES Shading Language 3.00 Spec](https://www.khronos.org/registry/gles/specs/3.0/GLSL_ES_Specification_3.00.4.pdf)
|
||
|
|
||
|
- [The WebGL Specs](https://www.khronos.org/registry/webgl/specs/latest/)
|
||
|
|
||
|
- [A modern desktop OpenGL Spec](https://www.opengl.org/registry/doc/glspec45.core.pdf)
|
||
|
(for reference)
|
||
|
|
||
|
- [The Vulkan Spec](https://www.khronos.org/registry/vulkan/specs/1.0-wsi_extensions/html/vkspec.html)
|
||
|
|
||
|
These specs can be found in the [OpenGL Registry](https://github.com/KhronosGroup/OpenGL-Registry)
|
||
|
and the [Vulkan Docs](https://github.com/KhronosGroup/Vulkan-Docs) repositories as well.
|
||
|
|
||
|
## Join Groups and Chats
|
||
|
|
||
|
- Join the `#angle` channel in `chromium.slack.com`.
|
||
|
|
||
|
### For Googlers
|
||
|
|
||
|
- Join angle-team@ for access to many important emails and shared documents.
|
||
|
|
||
|
- We have a Hangouts Chat channel. Ask for an invite.
|