GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - ARM-software/libGPULayers: A utility for building Vulkan API layer drivers, and a some off-the-shelf layers for the Arm Immortalis and Arm Mali GPUs.

BranchesTags
Open more actions menu

Latest commit

 

History

197 Commits
197 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
cmake
cmake
 
 
docs
docs
 
 
generator
generator
 
 
layer_example
layer_example
 
 
layer_gpu_profile
layer_gpu_profile
 
 
layer_gpu_support
layer_gpu_support
 
 
layer_gpu_timeline
layer_gpu_timeline
 
 
layer_khronos_validation
layer_khronos_validation
 
 
lglpy
lglpy
 
 
source_common
source_common
 
 
source_third_party
source_third_party
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.mypy.ini
.mypy.ini
 
 
.pycodestyle.ini
.pycodestyle.ini
 
 
.pylintrc
.pylintrc
 
 
CMakeLists.txt
CMakeLists.txt
 
 
LICENSE.txt
LICENSE.txt
 
 
README.md
README.md
 
 
lgl_android_install.py
lgl_android_install.py
 
 
lgl_host_server.py
lgl_host_server.py
 
 
lgl_mali_timeline_viewer.py
lgl_mali_timeline_viewer.py
 
 
pylint.sh
pylint.sh
 
 
pytest_local.bat
pytest_local.bat
 
 
pytest_local.sh
pytest_local.sh
 
 

Repository files navigation

About

libGPULayers provides tooling to create new Vulkan layer drivers, allowing you to quickly generate new layers suitable for creation of new developer tools or for ad hoc experiments during development.

In addition, we provide a number of pre-built layers that have been built using this framework. These layers might be used as standalone tools in their own right, or might be used alongside other Arm tools such as Arm Performance Studio.

What are layer drivers?

Layer drivers provide a standard mechanism to inject diagnostic functionality between an application and the underlying graphics driver. Layer drivers intercept the graphics API calls from the application, perform their diagnostic function, and then call into the underlying graphics driver to actually perform the requested operation. The ability to see, and change, the calls into the native driver makes layers an exceptionally powerful tool for debugging both functional and performance issues.

Layer drivers are designed in to the Vulkan API, and they are the mechanism for common workflows such as error checking using the Vulkan Validation Layer (VVL), but they are also a general purpose mechanism suitable for all kinds of developer tooling.

What is the purpose of this project?

We help many application developers to investigate issues during their development cycle. We rarely get access to application source code for these investigations, and cannot change drivers on production devices. Layer drivers provide us with an invaluable mechanism to monitor and make modifications to application API usage without needing to modify the application itself. The GPU Support layer in this project is a tool we use during technical support investigations to quickly triage problems.

We also use layer drivers as a way to develop new API-aware debug and profiling capabilities. The performance layers in this repository, such as the GPU Profile and GPU Timeline layers, are used to profile performance, or add API-aware annotations to performance captures made using other tooling.

As you might be able to tell, we find layers exceptionally useful, and we often want to create ad hoc layers to use for one-off experiments. Creating a new layer from scratch requires a lot of code and is fiddly to get right, with obscure errors when it doesn't work, so we wrote a tool to automate layer creation. This final part of this project is this layer generation tooling, which you use to quickly create a new layer that is ready to deploy.

Supported devices

This library is currently tested on devices running Android or Linux, and using Arm® Immortalis™ and Arm Mali™ GPUs. Contributions adding support for other platforms are welcome.

License

This project is licensed under the MIT license. By downloading any component from this repository you acknowledge that you accept terms specified in the LICENSE.txt file.

Documentation

Common documentation

  • Building a layer
  • Creating a new layer
  • Updating an existing layer
  • Running using a layer on Android
  • Running using a layer on Linux
  • About layers design notes
  • Frequently asked questions

Layer documentation

  • Layer: GPU Support
  • Layer: GPU Profile
  • Layer: GPU Timeline

Support

If you have issues with the layer framework, or the prebuilt layers, please raise them in the project's GitHub issue tracker.

If you have any questions about Arm GPUs, application development for Arm GPUs, or general mobile graphics development or technology, please submit them on the Arm Community graphics forums.


Copyright © 2024-2026, Arm Limited and contributors.

About

A utility for building Vulkan API layer drivers, and a some off-the-shelf layers for the Arm Immortalis and Arm Mali GPUs.

Resources

Readme
MIT license

Security policy

Security policy
Activity
Custom properties

Stars

42 stars

Watchers

2 watching

Forks

14 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.