fn split_mode(
codec: Codec,
width: u32,
height: u32,
engines: Option<i32>,
api: (u32, u32),
) -> NV_ENC_SPLIT_ENCODE_MODEExpand description
The split-frame mode a codec session asks for at width x height on a device of engines
NVENC engines under the negotiated api, as gpu_bench_tuning_on_content measured it. AV1
splits across the engines whatever the picture: a 1080p frame encodes in 1.36 ms rather than
2.07 on an RTX 4090, a 1440p one in 2.27 rather than 3.58, and both code as well or better,
where the driver’s own choice splits only from 4K. HEVC splits from a 4K picture, which the
driver’s choice splits on Ada but not on Pascal: a GTX 1080 encodes the 2160p frame in 10.3 ms
rather than 16.1, more than 5% of the 81 ms such a session measures glass to glass, for 2.5 dB
of PSNR on scrolling text. Below 4K a split saves HEVC about a millisecond for up to 2.3 dB,
so the driver decides there, and H.264 never splits. The forced mode cuts two strips on three
engines as on two, so AV1 asks for three there: an L40S encodes a 1080p frame in 1.45 ms
rather than 1.62 and a 2160p one in 4.2 rather than 5.3, coding better in five of six rows
(up to 1.5 dB on text) and 0.5 dB worse in one, where HEVC’s third strip saves nothing at 4K
and costs 0.1 to 0.2 dB. Before API 12.1 the field’s bits are another flag’s, so an older
session leaves them clear.