R57.A8 Event profiling support & lazy plugin loading
Besides some bugfixes (e.g. a proper fix for vapoursynth#929), this release introduced event profiling with nsight. Configure nsight to capture NVTX traces (and CUDA/GPU metrics if you also want to profile CUDA plugins.)
A new VS-C API RawNode._setName(name)
can be used to set a node's name. Event profiling will include the node's name. vspipe -g
and vspipe --filter-time
will also include a node's name (if different from node's filter name).
NVTX Event Domains:
- vs-cache: cache related events (categories: 1 hit, 2 miss, 3 grow, 4 shrink).
- vs-create: filter creation events (measures filter creation latency)
- during run time, filter callbacks are classifies into these four domains
- vs-initial:
arInitial
getFrame callbacks - vs-ready:
arAllFrameReady
orarFrameReady
getFrame callbacks - vs-error:
arError
getFrame callbacks - vs-unknown: other activationReasons (shouldn't normally happen).
- vs-initial:
The profiling code is always enabled, but without using nsight instrumentation, the overhead should be minimal.
(Define NVTX_DISABLE
macro to completely remove the profiling code.)
You might need a certain internal script to help generate better profiles.
python 3.8/3.9/3.10/3.11/3.12alpha support are provided.
Note: this release dropped support for 32-bit windows/x86 as it has been effectively unmaintained and untested since api4.