11# About
22
3- libGPUCounters (formerly called HWCPipe) is a utility that allows applications to sample performance
4- counters from Arm® Immortalis™ and Arm Mali™ GPUs. This information allows developers to profile and
5- optimize their application workload using their existing in-house performance tooling, and gives the
3+ libGPUCounters (formerly called HWCPipe) is a utility that allows applications
4+ to sample performance counters from Arm® Immortalis™ and Arm Mali™ GPUs. This
5+ information allows developers to profile and optimize their application
6+ workload using their existing in-house performance tooling, and gives the
67ability to display performance data live in the application user interface.
78
8- The 2.x release series is a major rewrite of the library, capable of exposing all of the public
9- performance counters accessible in the Arm Streamline profiler. This version of the library
10- is not API compatible with the 1.x series, and no longer supports Arm CPU performance counters.
9+ The 2.x release series is a major rewrite of the library, capable of exposing
10+ all of the public performance counters accessible in the Arm Streamline
11+ profiler. This version of the library is not API compatible with the 1.x
12+ series, and no longer supports Arm CPU performance counters.
1113
1214## Supported devices
1315
14- This library aims to support all Arm GPU products from the Mali-T700 series onwards, ensuring
15- developers have coverage of the vast majority of smartphones with Arm GPUs that are in use today.
16- If you find a device with an Arm GPU which does not work, or gives inaccurate results, please open
17- an Issue on the GitHub issue tracker.
16+ The project aims to support all Arm GPU products from the Mali-G71 series or
17+ later, covering all Arm GPU architectures since the Bifrost architecture. This
18+ ensures developers have coverage of the vast majority of smartphones with Arm
19+ GPUs that are in use today. If you find a device with an Arm GPU which does not
20+ work, or gives inaccurate results, please open an Issue on the GitHub issue
21+ tracker.
1822
1923This library only supports devices using the Arm commercial driver.
2024
2125## License
2226
23- This project is licensed under the MIT license. By downloading any component from this repository
24- you acknowledge that you accept terms specified in the [LICENSE.md](LICENSE.md) file.
27+ This project is licensed under the MIT license. By downloading any component
28+ from this repository you acknowledge that you accept terms specified in the
29+ [LICENSE.md](LICENSE.md) file.
2530
26- # Building
31+ ## Using the library
2732
28- The library is designed to be embedded into existing CMake build process. Clone the GitHub
29- repository and add it as a subdirectory to your `CMakeLists.txt`. The build generates two
30- libraries:
33+ The library is designed to be embedded into existing CMake build process. Clone
34+ the GitHub repository and add it as a subdirectory to your `CMakeLists.txt`.
35+ The build generates two libraries:
3136
3237* `device` is the low-level hardware sampling backend.
3338* `hwcpipe` is the high-level query and sampling frontend.
3439
35- You will need to include both libraries in your application link step. For example, your
36- `CMakeLists.txt` could contain:
40+ You will need to include both libraries in your application link step. For
41+ example, your `CMakeLists.txt` could contain:
3742
3843```cmake
3944add_subdirectory(path/to/libGPUCounters)
@@ -44,16 +49,37 @@ target_link_libraries(
4449 hwcpipe)
4550```
4651
47- ## Building the example
52+ ### Building the example
4853
49- A small example demonstrating the API usage is provided in the `examples` folder. To build the
50- example enable the `HWCPIPE_BUILD_EXAMPLES` CMake build option.
54+ A small example demonstrating the API usage is provided in the `examples`
55+ folder. To build the example enable the `HWCPIPE_BUILD_EXAMPLES` CMake build
56+ option.
5157
5258```sh
5359cmake -DHWCPIPE_BUILD_EXAMPLES=ON -B build .
5460```
5561
56- # Support
62+ ## Using the machine readable specification
63+
64+ In addition to the sampling library, this project includes a machine readable
65+ specification containing the definition of the hardware counters and derived
66+ expressions for all of the supported GPUs.
67+
68+ The specification defines all the counters and derived expressions for all of
69+ the supported GPUs, including full documentation for counter groups and
70+ individual counters. Programmatic access is provided via a Python wrapper,
71+ allowing third-party tooling to easily integrate Arm GPU data sources.
72+
73+ For more information see the [specification readme](./specification/README.md).
74+
75+ ## Counter documentation
76+
77+ Interactive counter documentation for all of the GPU products supported by
78+ libGPUCounters can be found on the project GitHub Pages site:
79+
80+ * https://arm-software.github.io/libGPUCounters/
81+
82+ ## Support
5783
5884If you have issues with the library itself, please raise them in the project's GitHub issue tracker.
5985
@@ -62,6 +88,6 @@ graphics development or technology please submit them on the [Arm Community grap
6288
6389- - -
6490
65- _Copyright © 2023-2025, Arm Limited and contributors. All rights reserved. _
91+ _Copyright © 2023-2025, Arm Limited and contributors._
6692
67- [1]: https://community.arm.com/support-forums/f/graphics-gaming- and-vr -forum/
93+ [1]: https://community.arm.com/support-forums/f/mobile- graphics-and-gaming -forum
0 commit comments