mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-25 10:39:01 -06:00
`render_page` copied every raster out of vello_cpu's pixmap with `data_as_u8_slice().to_vec()`. That is a second buffer the size of the raster (up to 256 MB for a 64 MP page), alive alongside the first for as long as the copy runs. `Pixmap::take` hands over the pixel vector, and `bytemuck` reinterprets its four one-byte channels as bytes in place: the same bytes, in the same buffer. On a 6182×8000 px page, peak RSS goes from about 425 MB to 246 MB and render time from 102 ms to 81 ms. Pixels are identical: every page of #260's test file, at two scales and as a tile, hashes the same before and after. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
29 lines
964 B
TOML
29 lines
964 B
TOML
[package]
|
|
name = "pdfcraft-render"
|
|
description = "Page rendering (bootstrap: hayro) and document inspection for PdfCraft"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
pdfcraft-fonts = { workspace = true }
|
|
hayro = { workspace = true }
|
|
hayro-syntax = { workspace = true }
|
|
lopdf = { workspace = true }
|
|
kurbo = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
log = { workspace = true }
|
|
# Moves rendered pixels out of the renderer's pixmap without copying; already in the tree through hayro.
|
|
bytemuck = { version = "1", features = ["extern_crate_alloc"] }
|
|
|
|
# lopdf (bootstrap) draws random bytes for encryption; on the web they come from the browser.
|
|
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
|
getrandom = { version = "0.4", features = ["wasm_js"] }
|
|
|
|
[dev-dependencies]
|
|
# Checks the Japanese substitute's character coverage; the version pdfcraft-fonts already uses.
|
|
skrifa = "0.44"
|