# k11mch1/adrenotoolsdrivers architecture

> Architecture diagram of the GitHub repository k11mch1/adrenotoolsdrivers, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-19). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/k11mch1/adrenotoolsdrivers
- Repository: https://github.com/k11mch1/adrenotoolsdrivers

## Overview

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`](https://github.com/k11mch1/adrenotoolsdrivers/tree/main/docs) (Docs), [`.adrenoDrivers`](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/.adrenoDrivers) (.adrenoDrivers), [`.github/workflows`](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/.github/workflows) (Workflows), [`docs/skyline.md`](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/skyline.md) (Skyline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_internal_artifacts["Artifact layer"]
  node_adreno_drivers[(".adrenoDrivers<br/>artifact store<br/>[.adrenoDrivers]")]
end

subgraph group_internal_docs["Docs"]
  node_docs_root["Docs<br/>guide hub"]
  node_docs_skyline["Skyline<br/>integration guide<br/>[skyline.md]"]
  node_docs_strato["Strato<br/>integration guide"]
  node_docs_vita3k["Vita3K<br/>integration guide<br/>[vita3k.md]"]
  node_docs_dolphin["Dolphin<br/>integration guide<br/>[dolphin.md]"]
  node_docs_ppsspp["PPSSPP<br/>integration guide<br/>[ppsspp.md]"]
  node_docs_winlator["Winlator<br/>integration guide<br/>[winlator.md]"]
  node_docs_armsx2["ARMSX2<br/>integration guide<br/>[armsx2.md]"]
  node_docs_citron["Citron<br/>integration guide<br/>[citron.md]"]
end

subgraph group_internal_automation["Automation"]
  node_workflows["Workflows<br/>ci orchestration<br/>[workflows]"]
  node_poll_state_pr["last_pr_id<br/>poll state<br/>[last_pr_id.txt]"]
  node_poll_state_run["last_run_id<br/>poll state<br/>[last_run_id.txt]"]
end

subgraph group_external_sources["Upstream sources"]
  node_mesa["Mesa<br/>upstream gpu source"]
  node_qualcomm_devices["Qualcomm devices<br/>device extraction source"]
  node_tracked_projects["Tracked projects<br/>upstream watchlist"]
end

subgraph group_external_consumers["Consumers"]
  node_android_emulators["Android emulators<br/>consumer runtime"]
  node_winlator_bionic["Winlator Bionic<br/>consumer runtime"]
end

subgraph group_external_notifications["Notifications"]
  node_discord["Discord<br/>notification sink"]
end

node_mesa -->|"builds Turnip"| node_adreno_drivers
node_qualcomm_devices -->|"extracts Qualcomm"| node_adreno_drivers
node_tracked_projects -->|"polls upstream"| node_workflows
node_workflows -->|"curates updates"| node_adreno_drivers
node_workflows -->|"records PR cursor"| node_poll_state_pr
node_workflows -->|"records run cursor"| node_poll_state_run
node_workflows -->|"sends alerts"| node_discord
node_adreno_drivers -->|"documented by"| node_docs_root
node_docs_root -->|"includes"| node_docs_skyline
node_docs_root -->|"includes"| node_docs_strato
node_docs_root -->|"includes"| node_docs_vita3k
node_docs_root -->|"includes"| node_docs_dolphin
node_docs_root -->|"includes"| node_docs_ppsspp
node_docs_root -->|"includes"| node_docs_winlator
node_docs_root -->|"includes"| node_docs_armsx2
node_docs_root -->|"includes"| node_docs_citron
node_docs_skyline -->|"targets"| node_android_emulators
node_docs_vita3k -->|"targets"| node_android_emulators
node_docs_dolphin -->|"targets"| node_android_emulators
node_docs_ppsspp -->|"targets"| node_android_emulators
node_docs_armsx2 -->|"targets"| node_android_emulators
node_docs_citron -->|"targets"| node_android_emulators
node_docs_winlator -->|"targets"| node_winlator_bionic
node_adreno_drivers -->|"consumed by"| node_android_emulators
node_adreno_drivers -->|"consumed by"| node_winlator_bionic

click node_adreno_drivers "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/.adrenoDrivers"
click node_docs_root "https://github.com/k11mch1/adrenotoolsdrivers/tree/main/docs"
click node_docs_skyline "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/skyline.md"
click node_docs_vita3k "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/vita3k.md"
click node_docs_dolphin "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/dolphin.md"
click node_docs_ppsspp "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/ppsspp.md"
click node_docs_winlator "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/winlator.md"
click node_docs_armsx2 "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/armsx2.md"
click node_docs_citron "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/citron.md"
click node_workflows "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/.github/workflows"
click node_poll_state_pr "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/last_pr_id.txt"
click node_poll_state_run "https://github.com/k11mch1/adrenotoolsdrivers/blob/main/last_run_id.txt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_adreno_drivers toneBlue
class node_docs_root,node_docs_skyline,node_docs_strato,node_docs_vita3k,node_docs_dolphin,node_docs_ppsspp,node_docs_winlator,node_docs_armsx2,node_docs_citron toneAmber
class node_workflows,node_poll_state_pr,node_poll_state_run toneMint
class node_mesa,node_qualcomm_devices,node_tracked_projects toneRose
class node_android_emulators,node_winlator_bionic toneIndigo
class node_discord toneTeal
```

## Components

### Artifact layer

Driver payload boundary and packaged outputs.

- [.adrenoDrivers](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/.adrenoDrivers): artifact store · Primary driver artifact boundary for packaged/extracted payloads. · `.adrenoDrivers`

### Docs

Per-target installation and compatibility guides.

- [Docs](https://github.com/k11mch1/adrenotoolsdrivers/tree/main/docs): guide hub · Repository documentation for emulator-specific driver setup. · `docs`
- [Skyline](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/skyline.md): integration guide · Usage guide for Skyline. · `docs/skyline.md`
- **Strato**: integration guide · Usage guide for Strato.
- [Vita3K](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/vita3k.md): integration guide · Usage guide for Vita3K. · `docs/vita3k.md`
- [Dolphin](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/dolphin.md): integration guide · Usage guide for Dolphin. · `docs/dolphin.md`
- [PPSSPP](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/ppsspp.md): integration guide · Usage guide for PPSSPP. · `docs/ppsspp.md`
- [Winlator](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/winlator.md): integration guide · Usage guide for Winlator/Bionic. · `docs/winlator.md`
- [ARMSX2](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/armsx2.md): integration guide · Usage guide for ARMSX2. · `docs/armsx2.md`
- [Citron](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/docs/citron.md): integration guide · Usage guide for Citron. · `docs/citron.md`

### Automation

Polling and notification workflows plus run state.

- [Workflows](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/.github/workflows): ci orchestration · GitHub Actions polling and notification workflows. · `.github/workflows`
- [last_pr_id](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/last_pr_id.txt): poll state · Stores the last processed PR id for incremental polling. · `last_pr_id.txt`
- [last_run_id](https://github.com/k11mch1/adrenotoolsdrivers/blob/main/last_run_id.txt): poll state · Stores the last processed run id for incremental polling. · `last_run_id.txt`

### Upstream sources

Projects and device sources that feed driver updates.

- **Mesa**: upstream gpu source · Source project for Turnip driver builds.
- **Qualcomm devices**: device extraction source · Device extractions used for Qualcomm driver packaging.
- **Tracked projects**: upstream watchlist · box64, dxvk, fex, and vkd3d upstream projects monitored by workflows.

### Consumers

Emulators and compatibility layers that use the drivers.

- **Android emulators**: consumer runtime · Primary consumers of the packaged drivers.
- **Winlator Bionic**: consumer runtime · Compatibility layer consumer documented separately.

### Notifications

Outbound community alert sink.

- **Discord**: notification sink · Outbound channel for automation updates and alerts.

## Connections

- 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.
