A Vulkan validation layer that checks applications for performance best practices on Arm Mali GPUs.
PerfDoc is a Vulkan validation layer that checks applications for performance best practices on Arm Mali GPUs. It identifies discouraged API usage that could lead to suboptimal performance, helping developers catch issues early in the development cycle. The layer runs on any Vulkan implementation, allowing Mali-specific optimizations to be checked even when developing on desktop platforms.
Vulkan application developers targeting Arm Mali GPUs, particularly those working on mobile games, graphics applications, or any software requiring optimal GPU performance on Mali devices.
Developers choose PerfDoc because it provides specialized validation for Arm Mali best practices that aren't covered by standard Vulkan validation layers. Its cross-platform capability allows performance optimization work to begin before targeting actual Mali hardware.
A cross-platform Vulkan layer which checks Vulkan applications for best practices on Arm Mali devices.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements over 30 specific checks from Arm's best practices guide, covering command buffers, images, and compute shaders to catch inefficiencies early, as detailed in the MessageCodes enum.
Runs on any Vulkan implementation, allowing Mali optimization checks during desktop development without needing actual Mali hardware, as stated in the README's intended use.
Provides an optional config file to tweak arbitrary limits and disable CPU-intensive checks, reducing false positives for specific applications, with examples in the default config file.
Supports logging via VK_EXT_debug_report callbacks, console, logcat, or files through environment variables, making it adaptable to different development environments.
Development has moved to Khronos Group's Vulkan-ValidationLayers, making this repository obsolete and no longer receiving updates, as warned in the README banner.
Lacks dynamic profiling capabilities, focusing solely on up-front checks without runtime performance analysis, which limits comprehensive optimization as noted in the philosophy section.
Relies on arbitrary limits for some checks, which can cause unnecessary warnings and require manual configuration via the config file, adding overhead for tuning.
Primarily useful only for Arm Mali GPUs, offering limited value for applications targeting other GPU architectures, despite running on any Vulkan implementation.