# Patched upstream crates Each directory here is a crate exactly as crates.io publishes it, at the version `Cargo.lock` resolves, with a local patch on top. The root `Cargo.toml` routes the dependency here through `[patch.crates-io]`; the directory is excluded from the workspace, so `cargo test --workspace`, clippy and fmt leave it alone. The first commit that adds a directory is the pristine copy (from `~/.cargo/registry/src/*/-`, minus `.cargo-ok` and the crate's own `Cargo.lock`). Every later commit touching it is ours, so `git log -p -- third_party/` is the patch and nothing else. ## Carrying a patch forward When Slint or wgpu is bumped, the version here stops matching and cargo warns that the patch is unused — the build then silently goes back to the unpatched crate. So a bump is: 1. Copy the new version in beside the old one, as its own commit. 2. Re-apply the diff from `git log -p` on the old directory. 3. Point `[patch.crates-io]` at the new directory and delete the old one. 4. Re-check on the device (below) — both patches are behaviour that only a rotated Android display exercises. Drop a patch entirely once upstream has the fix; each section says what upstream change would make it unnecessary. ## wgpu-hal 29.0.4 — Vulkan pre-rotation on Android Upstream creates every Vulkan swapchain with `preTransform = IDENTITY` (`src/vulkan/swapchain/native.rs`, gfx-rs/wgpu#3345). On Android, a window whose orientation differs from the panel's is then rotated by the compositor on the GPU (`composition=CLIENT`), and on this tablet in portrait those frames tear. The patch adds two methods to `wgpu_hal::vulkan::Surface`: - `current_transform(&Adapter)` — the surface's `currentTransform`. - `set_pre_transform(transform)` — the `preTransform` for the next swapchain. Opt-in: nothing calls it but the Skia patch below, and the default is still `IDENTITY`, so desktop and every other caller behave exactly as upstream. Setting it is a promise that the caller draws rotated into a swapchain sized in the panel's orientation; wgpu itself rotates nothing. Unnecessary once wgpu exposes pre-rotation itself (#3345). ## i-slint-renderer-skia 1.17.1 — rotate the canvas to match *(patch lands in a later commit)*