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>
This commit is contained in:
Wanjohi
2026-08-26 18:04:02 +03:00
parent 06b844b961
commit 6164e0c636
22 changed files with 5958 additions and 22 deletions

View File

@@ -0,0 +1,22 @@
{
"file_format_version": "1.2.0",
"layer": {
"name": "VK_LAYER_nescapture",
"type": "GLOBAL",
"library_path": "/usr/lib/libnescapture_layer.so",
"api_version": "1.3.290",
"implementation_version": "1",
"description": "direct game frame capture for Nestri",
"functions": {
"vkGetInstanceProcAddr": "vkGetInstanceProcAddr",
"vkGetDeviceProcAddr": "vkGetDeviceProcAddr",
"vkNegotiateLoaderLayerInterfaceVersion": "vkNegotiateLoaderLayerInterfaceVersion"
},
"enable_environment": {
"NESCAPTURE_ENABLE": "1"
},
"disable_environment": {
"DISABLE_NESCAPTURE": "1"
}
}
}