Establishes the v0.1 foundations on both platforms: - dr-types: SourceRef (never a filesystem path — Android SAF has none), Format, Availability, Validator with ETag quote normalisation - dr-gpu: wgpu device, compute pass writing a storage texture, resize - dr-ui: Slint shell with FR-UI-1 adaptive layout, computed in Rust to avoid a binding loop - docker/android: pinned toolchain, verified producing API 28 ARM binaries Measured the cost of the temporary CPU readback path (dr-gpu bench): compute is 0.06-0.28ms across sizes while readback is 0.63-7.43ms, so readback is 90-96% of frame time and scales with area. Recorded in ARCH §6.1 — this is why spike S1 is the priority. Mitigations pending S1: reuse the staging buffer, apply at most one resize per frame, and cap render resolution at 2048 on the long edge. 10 tests passing; core crates cross-compile for aarch64-linux-android.
49 lines
1.3 KiB
Markdown
49 lines
1.3 KiB
Markdown
# DarkRoom
|
|
|
|
A cross-platform, non-destructive RAW photo editor for Linux and Android.
|
|
|
|
**Status:** early. v0.1 is a remote library viewer — see
|
|
[docs/milestone-v0.1.md](docs/milestone-v0.1.md).
|
|
|
|
## Documentation
|
|
|
|
| Document | Contents |
|
|
|---|---|
|
|
| [requirements.md](docs/requirements.md) | What the software must do — 122 numbered requirements |
|
|
| [architecture.md](docs/architecture.md) | How it is built — crates, GPU pipeline, data model, sync |
|
|
| [milestone-v0.1.md](docs/milestone-v0.1.md) | The first buildable milestone |
|
|
|
|
## Building
|
|
|
|
Desktop:
|
|
|
|
```bash
|
|
cargo run -p darkroom-desktop
|
|
```
|
|
|
|
Android (containerised toolchain, see [docker/android](docker/android/README.md)):
|
|
|
|
```bash
|
|
./docker/android/build.sh cargo ndk -t arm64-v8a build --release
|
|
```
|
|
|
|
## Current state
|
|
|
|
Working: workspace, GPU context and compute pass, adaptive Slint shell, Android
|
|
cross-compilation of the core crates.
|
|
|
|
**Not yet working:** the zero-copy display path. The build currently uploads
|
|
frames through the CPU, which is exactly what
|
|
[ARCH §6.1](docs/architecture.md) forbids — measured at 96% of frame time at
|
|
4K. Replacing it is spike S1, the project's highest priority.
|
|
|
|
```
|
|
cargo run -p dr-gpu --example bench --features readback
|
|
```
|
|
|
|
reproduces that measurement.
|
|
|
|
## Licence
|
|
|
|
GPL-3.0-or-later.
|