Skip to main content

split_mode

Function split_mode 

Source
fn split_mode(
    codec: Codec,
    width: u32,
    height: u32,
    engines: Option<i32>,
    api: (u32, u32),
) -> NV_ENC_SPLIT_ENCODE_MODE
Expand 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.