How k11mch1/adrenotoolsdrivers works
1. Repository purpose
- This is a distribution and coordination repo for Adreno/GPU drivers used by Android emulators and related tooling.
- It is not the driver source itself. The README makes clear that the actual code comes from Mesa or from Qualcomm device extractions; this repo mainly packages, tracks, and documents those outputs.
2. Primary output boundary: driver artifacts
- The .adrenoDrivers directory is the main artifact boundary in the repo.
- Architecturally, this is the place where built or extracted driver packages are expected to live or be referenced from, separating the repo’s orchestration/documentation layer from the actual driver payloads.
3. Two driver provenance paths
- Turnip drivers are compiled from Mesa.
- Qualcomm drivers are extracted from Qualcomm-SOC devices (phones, Oculus Quest, etc.).
- This split is important because the repo acts as a consumer/packager of two distinct upstream supply chains, not a single codebase.
4. Documentation subsystem
- The docs/ folder contains per-target usage guides for specific emulators and runtimes: Skyline, Strato, Vita3K, Dolphin, PPSSPP, Winlator, ARMSX2, Citron.
- Each guide is a separate integration boundary, implying that installation/compatibility is emulator-specific even though the underlying driver artifacts are shared.
- The docs/images/* folders support those guides with screenshots or visual instructions.
5. Target integration model
- The README shows the drivers are intended for Android emulators and related compatibility layers, not for a single application.
- Each emulator doc likely maps the same driver package into a different runtime environment, so the architecture is “one driver supply, many consumer integrations.”
6. Automation subsystem: upstream change tracking
- The .github/workflows/ directory contains polling workflows for:
- box64
- dxvk
- fex
- vkd3d
- There are separate workflows for polling actions and PRs, which suggests the repo continuously monitors upstream activity and surfaces relevant changes rather than building everything locally from source here.
7. Notification / external communication
- adrenotools-to-discord.yaml indicates a workflow that sends updates to Discord.
- This creates an outward-facing notification path from repository automation to the community/support channel, likely for new driver drops or upstream changes.
8. Persistent workflow state
- last_pr_id.txt and last_run_id.txt are small state files used by automation to remember what it processed last.
- Architecturally, these files support incremental polling and prevent duplicate notifications or repeated processing.
9. Operational boundaries and support model
- The README explicitly separates driver packaging from game/emulator troubleshooting.
- Support is routed to emulator developers or community Discords, which means this repo is not the authoritative fix point for compatibility issues; it is a driver delivery point.
10. External dependencies that matter
- Mesa is the key source project for Turnip.
- GitHub Actions is the main automation runtime.
- Discord is used as an event/notification sink.
- The linked emulator projects are the functional consumers of the drivers.
11. How to diagram it
- A clear architecture diagram would show:
- Upstream sources: Mesa, Qualcomm devices, and tracked projects like dxvk/vkd3d/fex/box64
- Repo automation: GitHub Actions polling and notification workflows
- Artifact layer: .adrenoDrivers
- Documentation layer: docs/ per emulator
- Consumers: Android emulators and Winlator Bionic
- Support/alerts: Discord/community channels
- The main flow is: upstream change or build source → automation / packaging → driver artifacts → emulator-specific docs and user installation.
12. Overall architectural characterization
- This repository is best understood as a driver distribution hub with documentation and automation, not as an application or build system with substantial in-repo code.
- Its architecture is centered on artifact curation, compatibility guidance, and upstream change monitoring.
Main entry points: docs Docs · .adrenoDrivers .adrenoDrivers · workflows Workflows · skyline.md Skyline
Components 19
Artifact layer
Driver payload boundary and packaged outputs.
- .adrenoDrivers · Primary driver artifact boundary for packaged/extracted payloads.
.adrenoDrivers
Docs
Per-target installation and compatibility guides.
- Docs · Repository documentation for emulator-specific driver setup.
docs - Skyline · Usage guide for Skyline.
docs/skyline.md - Strato · Usage guide for Strato.
- Vita3K · Usage guide for Vita3K.
docs/vita3k.md - Dolphin · Usage guide for Dolphin.
docs/dolphin.md - PPSSPP · Usage guide for PPSSPP.
docs/ppsspp.md - Winlator · Usage guide for Winlator/Bionic.
docs/winlator.md - ARMSX2 · Usage guide for ARMSX2.
docs/armsx2.md - Citron · Usage guide for Citron.
docs/citron.md
Automation
Polling and notification workflows plus run state.
- Workflows · GitHub Actions polling and notification workflows.
.github/workflows - last_pr_id · Stores the last processed PR id for incremental polling.
last_pr_id.txt - last_run_id · Stores the last processed run id for incremental polling.
last_run_id.txt
Upstream sources
Projects and device sources that feed driver updates.
- Mesa · Source project for Turnip driver builds.
- Qualcomm devices · Device extractions used for Qualcomm driver packaging.
- Tracked projects · box64, dxvk, fex, and vkd3d upstream projects monitored by workflows.
Consumers
Emulators and compatibility layers that use the drivers.
- Android emulators · Primary consumers of the packaged drivers.
- Winlator Bionic · Compatibility layer consumer documented separately.
Notifications
Outbound community alert sink.
- Discord · Outbound channel for automation updates and alerts.
Connections 25
- Mesa → .adrenoDrivers: builds Turnip · Mesa produces the Turnip driver artifacts consumed by this repo.
- Qualcomm devices → .adrenoDrivers: extracts Qualcomm · Qualcomm device extractions feed the packaged driver boundary.
- Tracked projects → Workflows: polls upstream · Workflows watch external project activity for changes and releases.
- Workflows → .adrenoDrivers: curates updates · Automation tracks, packages, or references driver-related outputs.
- Workflows → last_pr_id: records PR cursor · PR polling uses persistent state to avoid duplicate processing.
- Workflows → last_run_id: records run cursor · Run polling uses persistent state to avoid duplicate processing.
- Workflows → Discord: sends alerts · Notification workflow forwards relevant events to Discord.
- .adrenoDrivers → Docs: documented by · Docs explain how to use the packaged drivers in different runtimes.
- Docs → Skyline: includes · Per-target integration guide.
- Docs → Strato: includes · Per-target integration guide.
- Docs → Vita3K: includes · Per-target integration guide.
- Docs → Dolphin: includes · Per-target integration guide.
- Docs → PPSSPP: includes · Per-target integration guide.
- Docs → Winlator: includes · Per-target integration guide.
- Docs → ARMSX2: includes · Per-target integration guide.
- Docs → Citron: includes · Per-target integration guide.
- Skyline → Android emulators: targets · Skyline-specific installation and compatibility guidance.
- Vita3K → Android emulators: targets · Vita3K-specific installation and compatibility guidance.
- Dolphin → Android emulators: targets · Dolphin-specific installation and compatibility guidance.
- PPSSPP → Android emulators: targets · PPSSPP-specific installation and compatibility guidance.
- ARMSX2 → Android emulators: targets · ARMSX2-specific installation and compatibility guidance.
- Citron → Android emulators: targets · Citron-specific installation and compatibility guidance.
- Winlator → Winlator Bionic: targets · Winlator/Bionic-specific installation and compatibility guidance.
- .adrenoDrivers → Android emulators: consumed by · Shared driver artifacts are installed into emulator runtimes.
- .adrenoDrivers → Winlator Bionic: consumed by · Shared driver artifacts are installed into Winlator/Bionic.