mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +09:00
52 lines
1.7 KiB
Rust
52 lines
1.7 KiB
Rust
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
use std::hint::black_box;
|
|
|
|
use criterion::{Criterion, criterion_group, criterion_main};
|
|
use fluxer_encoder_ring::{CpuMemcpyBackend, EncoderInputRing, TextureFormat};
|
|
|
|
fn bench_submit_poll_release_cycle(c: &mut Criterion) {
|
|
let mut group = c.benchmark_group("encoder_input_ring");
|
|
group.sample_size(60);
|
|
group.bench_function("submit_poll_release_1080p_nv12", |b| {
|
|
let mut ring = EncoderInputRing::new(CpuMemcpyBackend::new());
|
|
ring.initialise(1920, 1080, TextureFormat::Nv12)
|
|
.expect("init");
|
|
b.iter(|| {
|
|
ring.submit(|_h| {}).expect("submit");
|
|
let ready = ring.poll_next_ready().expect("ready");
|
|
black_box(&ready);
|
|
ring.release_completed(ready).expect("release");
|
|
});
|
|
});
|
|
group.finish();
|
|
}
|
|
|
|
fn bench_submit_only_drained_after(c: &mut Criterion) {
|
|
let mut group = c.benchmark_group("encoder_input_ring");
|
|
group.sample_size(60);
|
|
group.bench_function("submit_then_drain_eight_1080p_nv12", |b| {
|
|
b.iter(|| {
|
|
let mut ring = EncoderInputRing::new(CpuMemcpyBackend::new());
|
|
ring.initialise(1920, 1080, TextureFormat::Nv12)
|
|
.expect("init");
|
|
for _ in 0..8 {
|
|
ring.submit(|_h| {}).expect("submit");
|
|
}
|
|
for _ in 0..8 {
|
|
let ready = ring.poll_next_ready().expect("ready");
|
|
ring.release_completed(ready).expect("release");
|
|
}
|
|
black_box(ring.metrics());
|
|
});
|
|
});
|
|
group.finish();
|
|
}
|
|
|
|
criterion_group!(
|
|
benches,
|
|
bench_submit_poll_release_cycle,
|
|
bench_submit_only_drained_after
|
|
);
|
|
criterion_main!(benches);
|