PerfDoc is a Vulkan layer which aims to validate applications against the Mali Application Developer Best Practices document, which is hosted on the Arm Developer website.
Just like the LunarG validation layers, this layer tracks your application and attempts to find API usage which is discouraged.
PerfDoc focuses on checks which can be done up-front, and checks which can portably run on all platforms which support Vulkan.
The intended use of PerfDoc is to be used during development to catch potential performance issues early. The layer will run on any Vulkan implementation, so Mali-related optimizations can be found even when doing bringup on desktop platforms. Just like Vulkan validation layers, errors are reported either through VK_EXT_debug_report to the application as callbacks, or via console/logcat if enabled.
Dynamic checking (i.e. profiling) of how an application is behaving in run-time is currently not in the scope of PerfDoc.
Some heuristics in PerfDoc are based on "arbitrary limits" in case where there is no obvious limit to use. These values can be tweaked later via config files if needed. Some checks which are CPU intensive (index scanning for example), can also be disabled by the config file.
Src. for ARM's Vulkan usage recommendations layer is on GitHub. Highly recommended for Android Vulkan optimization https://t.co/Yqk4thlixs— Joe Davis (@joedavisdev) October 18, 2017
Src. for ARM's Vulkan usage recommendations layer is on GitHub. Highly recommended for Android Vulkan optimization https://t.co/Yqk4thlixs
The features for the PerfDoc release currently include the ability to implement checks (see list below). The layer uses this enumeration to pass down a message code to the application. The debug callback has a message string with more description.
As this is just an announcement of the Vulkan layer, I don’t want to duplicate the information already online. So head on over to GitHub to see all the files, and ReadMe information on how to build, configure and enable layers using PerfDoc.
PerfDoc GitHub Repository