Files
netris-nestri/apps/nescapture/Cargo.toml
Wanjohi 6164e0c636 feat(nescapture): open the capture layer
A Vulkan implicit layer that captures frames from inside the workload's own
process and encodes them on the GPU they were drawn on. Fourth and last of this
batch, imported as a tree from `nestrilabs/nescapture` on the same terms.

Filed under `apps/` rather than `crates/` despite building a cdylib. The rule
here is what a thing *is*, not what it compiles to: this is a finished artefact
that gets installed into an image beside its layer manifest, not a library
another crate in this tree depends on. `crates/` is for the latter, and putting
this there would make the distinction useless the first time someone looked.

Wired to the workspace, `nesprotocol` by path. Its description named the
transport component; that reads better as what it actually is — where the frames
go — so it says that instead.

Whole workspace builds and tests: 21 across four members.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 18:04:02 +03:00

46 lines
1.0 KiB
TOML

[package]
name = "nescapture"
version = "0.2.0"
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Vulkan implicit layer: direct frame capture, Vulkan Video encode, and IPC out to the session transport"
[lib]
name = "nescapture_layer"
crate-type = ["cdylib"]
[dependencies]
# Vulkan bindings
ash = { git = "https://github.com/ash-rs/ash", rev = "55dd56906bbb5760e9e9e6c56f45be67f67e0649" }
# Shader fingerprinting
sha2 = "0.10"
bytemuck = "1"
# Concurrent state maps
dashmap = "6"
once_cell = "1"
pollster = "0.4.0"
# Logging
log = "0.4"
env_logger = "0.11"
anyhow = "1"
# Per-game shader-hash config
toml = "0.8"
serde = { version = "1", features = ["derive"] }
# Vulkan Video hardware encoding.
pixelforge = { git = "https://github.com/hgaiser/pixelforge.git", rev = "85c8654d383e194b984e27b319de96e4335e2b4f", features = ["dmabuf"] }
# libc for DMA-BUF OS primitives
libc = "0.2"
# Shared IPC protocol
nesprotocol = { path = "../../crates/nesprotocol" }
[profile.release]
opt-level = 3
lto = "thin"