{"id":28710798,"url":"https://github.com/arm-software/libgpulayers","last_synced_at":"2026-03-07T03:03:24.113Z","repository":{"id":257591655,"uuid":"853237331","full_name":"ARM-software/libGPULayers","owner":"ARM-software","description":"A utility for building Vulkan API layer drivers, and a some off-the-shelf layers for the Arm Immortalis and Arm Mali GPUs.","archived":false,"fork":false,"pushed_at":"2025-12-17T20:09:59.000Z","size":1682,"stargazers_count":33,"open_issues_count":20,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-19T01:59:18.760Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ARM-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-06T08:59:35.000Z","updated_at":"2025-12-17T20:10:01.000Z","dependencies_parsed_at":"2024-09-17T16:22:30.695Z","dependency_job_id":"7a31f612-e22b-490b-b586-a0b45906ff47","html_url":"https://github.com/ARM-software/libGPULayers","commit_stats":null,"previous_names":["arm-software/libgpulayers"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ARM-software/libGPULayers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FlibGPULayers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FlibGPULayers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FlibGPULayers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FlibGPULayers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ARM-software","download_url":"https://codeload.github.com/ARM-software/libGPULayers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARM-software%2FlibGPULayers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206339,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"online","status_checked_at":"2026-03-07T02:00:06.765Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-14T21:08:16.658Z","updated_at":"2026-03-07T03:03:24.105Z","avatar_url":"https://github.com/ARM-software.png","language":"C++","readme":"# About\n\nlibGPULayers provides tooling to create new Vulkan layer drivers, allowing\nyou to quickly generate new layers suitable for creation of new developer tools\nor for ad hoc experiments during development.\n\nIn addition, we provide a number of pre-built layers that have been built\nusing this framework. These layers might be used as standalone tools in their\nown right, or might be used alongside other Arm tools such as\n[Arm Performance Studio][2].\n\n## What are layer drivers?\n\nLayer drivers provide a standard mechanism to inject diagnostic functionality\nbetween an application and the underlying graphics driver. Layer drivers\nintercept the graphics API calls from the application, perform their diagnostic\nfunction, and then call into the underlying graphics driver to actually perform\nthe requested operation. The ability to see, and change, the calls into the\nnative driver makes layers an exceptionally powerful tool for debugging both\nfunctional and performance issues.\n\nLayer drivers are designed in to the Vulkan API, and they are the mechanism\nfor common workflows such as error checking using the Vulkan Validation Layer\n(VVL), but they are also a general purpose mechanism suitable for all kinds of\ndeveloper tooling.\n\n## What is the purpose of this project?\n\nWe help many application developers to investigate issues during their\ndevelopment cycle. We rarely get access to application source code for these\ninvestigations, and cannot change drivers on production devices. Layer drivers\nprovide us with an invaluable mechanism to monitor and make modifications to\napplication API usage without needing to modify the application itself. The\n`GPU Support` layer in this project is a tool we use during technical\nsupport investigations to quickly triage problems.\n\nWe also use layer drivers as a way to develop new API-aware debug and profiling\ncapabilities. The performance layers in this repository, such as the\n`GPU Profile` and `GPU Timeline` layers, are used to profile performance,\nor add API-aware annotations to performance captures made using other tooling.\n\nAs you might be able to tell, we find layers exceptionally useful, and we\noften want to create ad hoc layers to use for one-off experiments. Creating a\nnew layer from scratch requires a lot of code and is fiddly to get right, with\nobscure errors when it doesn't work, so we wrote a tool to automate layer\ncreation. This final part of this project is this layer generation tooling,\nwhich you use to quickly create a new layer that is ready to deploy.\n\n## Supported devices\n\nThis library is currently tested on devices running Android or Linux, and using\nArm® Immortalis™ and Arm Mali™ GPUs. Contributions adding support for other\nplatforms are welcome.\n\n# License\n\nThis project is licensed under the MIT license. By downloading any component\nfrom this repository you acknowledge that you accept terms specified in the\n[LICENSE.txt](LICENSE.txt) file.\n\n# Documentation\n\nCommon documentation\n\n* [Building a layer](./docs/building.md)\n* [Creating a new layer](./docs/creating.md)\n* [Running using a layer on Android](./docs/running_android.md)\n* [Running using a layer on Linux](./docs/running_linux.md)\n* [About layers design notes](./docs/about_layers.md)\n* [Frequently asked questions](./docs/faq.md)\n\nLayer documentation\n\n* [Layer: GPU Support](./layer_gpu_support/README_LAYER.md)\n* [Layer: GPU Profile](./layer_gpu_support/README_LAYER.md)\n* [Layer: GPU Timeline](./layer_gpu_timeline/README_LAYER.md)\n\n# Support\n\nIf you have issues with the layer framework, or the prebuilt layers, please\nraise them in the project's GitHub issue tracker.\n\nIf you have any questions about Arm GPUs, application development for Arm GPUs,\nor general mobile graphics development or technology, please submit them on the\n[Arm Community graphics forums][1].\n\n- - -\n\n_Copyright © 2024-2025, Arm Limited and contributors._\n\n[1]: https://community.arm.com/support-forums/f/graphics-gaming-and-vr-forum/\n[2]: https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Studio\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farm-software%2Flibgpulayers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farm-software%2Flibgpulayers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farm-software%2Flibgpulayers/lists"}