Skip to content

feat(p010): 10-bit semi-planar HDR hardware-decode format → u8 + native u16 RGB#5

Merged
uqio merged 4 commits intomainfrom
feat/p010
Apr 19, 2026
Merged

feat(p010): 10-bit semi-planar HDR hardware-decode format → u8 + native u16 RGB#5
uqio merged 4 commits intomainfrom
feat/p010

Conversation

@uqio
Copy link
Copy Markdown
Collaborator

@uqio uqio commented Apr 19, 2026

Summary

Ships AV_PIX_FMT_P010LE end-to-end — the HDR hardware-decode keystone
format emitted by Apple VideoToolbox, VA-API, NVDEC, D3D11VA, and Intel
QSV for 10-bit HEVC / AV1 output. Two output paths: u8 RGB (fast,
downshifts 10→8 in a single Q15 shift) and native-depth u16 RGB
(lossless, low-bit-packed yuv420p10le-style for downstream HDR
consumers).

Builds on the Ship 2 (yuv420p10) u16 kernel template — same Q15
pipeline, same range_params_n<10, OUT_BITS>, same chroma-bias math.
The new per-backend work is entirely in the u16 semi-planar UV
deinterleave
and the sample >> 6 packing extraction (P010's 10
active bits live in the high 10 of each u16).

API additions

  • frame::P010Frame + P010FrameError + opt-in try_new_checked
    (low-6-bits-zero sanity check — not a provenance validator; see
    docstring).
  • yuv::{P010, P010Row, P010Sink, p010_to} — marker, row struct,
    Sink subtrait, row walker.
  • row::p010_to_rgb_row (u8 out) + row::p010_to_rgb_u16_row (u16
    native-depth out) dispatchers with SIMD/scalar toggle.
  • MixedSinker<P010> impl — with_rgb (u8), type-gated
    with_rgb_u16 (low-bit-packed), with_luma (>> 8 extracts the
    top byte of the high-bit-packed sample), with_hsv (via u8 RGB
    scratch).
  • New RowSlice::UvHalf10 for the semi-planar u16 UV row, new
    P010FrameError::SampleLowBitsSet with P010FramePlane enum.

Kernel design

Per-backend u16 UV deinterleave:

  • NEON: vld2q_u16 (single instruction — ideal case).
  • SSE4.1: _mm_shuffle_epi8 per-128-lane split + _mm_unpacklo/hi_epi64 combine.
  • AVX2: _mm256_shuffle_epi8 + _mm256_permute4x64_epi64 + _mm256_permute2x128_si256.
  • AVX-512: _mm512_shuffle_epi8 + _mm512_permutexvar_epi64 + _mm512_permutex2var_epi64 (no DQ required).
  • wasm simd128: u8x16_swizzle + i8x16_shuffle combine.

After deinterleave + sample >> 6, every backend runs the same Q15
pipeline as yuv420p10 — scale, upsample, clamp, narrow, write.

Cross-format equivalence test: same logical 10-bit samples fed
through yuv420p10 (low-packed) and P010 (high-packed) produce
byte-identical u8 RGB. Verified across every matrix × range.

SIMD backends

All 5 shipped with scalar-equivalence tests across every matrix
(BT.601/709/2020-NCL/SMPTE240M/FCC/YCgCo) × both range modes × tail
widths (18/30/34/1922/1920). NEON has an additional
out-of-range-input adversarial regression (p010-style, random noise,
all-bits-set variants).

Backend Block u8 status u16 status Test runtime
NEON 16 Y/it aarch64 native CI
SSE4.1 16 Y/it x86 CI (SDE)
AVX2 32 Y/it x86 CI (SDE)
AVX-512BW 64 Y/it x86 CI (SDE)
wasm simd128 16 Y/it wasmtime CI (wasip1)

CI benchmark (1920px row, scalar → SIMD, ns/iter)

Results from the bench runner across all configured tiers (full
report
):

Target u8 path u8 speedup u16 path u16 speedup
macOS aarch64 NEON 4109 → 721 ns 5.7× 4035 → 910 ns 4.4×
Windows x86_64 default 6927 → 1591 ns 4.4× 6804 → 1727 ns 3.9×
Ubuntu x86_64 native 7168 → 1754 ns 4.1× 6698 → 1826 ns 3.7×
Ubuntu x86_64 default 7177 → 1754 ns 4.1× 6729 → 1822 ns 3.7×
Ubuntu x86_64 avx2-max 6522 → 1754 ns 3.7× 6800 → 1823 ns 3.7×
Ubuntu x86_64 sse41-max 5744 → 1715 ns 3.3× 5712 → 2401 ns 2.4×
Ubuntu x86_64 force-scalar 6909 → 6916 ns 1.0× 6757 → 6758 ns 1.0×
macOS aarch64 force-scalar 4845 → 4882 ns 1.0× 4960 → 4782 ns 1.0×

Notes:

  • Every SIMD tier delivers 2.4–5.7× speedup on both output paths.
  • colconv_force_scalar rows validate the dispatch gate.
  • P010 ratios are slightly below Ship 2's yuv420p10 (which was
    4.5–6.2×), reflecting the added u16 UV deinterleave cost that
    semi-planar layouts pay over planar — same delta seen in
    NV12 vs YUV420p in earlier ships.
  • SSE4.1 u16 is the outlier (2.4×): write_rgb_u16_8 uses 9
    shuffles + 6 ORs per 8 u16-pixel chunk, a per-pixel cost that
    wider tiers absorb better. Room for optimization in a follow-up.

Test plan

  • cargo test --lib — 160 tests pass (NEON native)
  • cargo build --lib --target x86_64-pc-windows-msvc — clean
  • cargo build --lib --target wasm32-unknown-unknown (simd128) — clean
  • x86 CI runs SSE4.1 / AVX2 / AVX-512 equivalence tests under Intel SDE
  • wasm CI runs simd128 equivalence tests under wasmtime (wasip1)
  • Criterion bench p010_to_rgb — 2.4–5.7× SIMD speedup across aarch64 + x86_64 + Windows tiers (see table)

🤖 Generated with Claude Code

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds end-to-end support for the P010 (AV_PIX_FMT_P010LE) 10-bit semi-planar YUV 4:2:0 pixel format, including validated frame representation, row-walker API, RGB conversion row primitives, and SIMD backends.

Changes:

  • Introduce P010Frame + validation (including optional low-bit checking) and a new yuv::P010 row-walker (p010_to) with P010Row/P010Sink.
  • Add P010→RGB row primitives for both u8 RGB and native-depth u16 RGB, with SIMD implementations (NEON, SSE4.1, AVX2, AVX-512BW, wasm simd128) plus scalar reference and equivalence tests.
  • Extend MixedSinker to consume P010 rows and optionally populate both u8 RGB and u16 RGB outputs; add benchmarks for P010 throughput.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/yuv/p010.rs New P010 source-format marker, row type, sink trait, and row-walker (p010_to).
src/yuv/mod.rs Register/export the new P010 module and public API.
src/frame.rs Add P010Frame + errors and validation (incl. optional sample low-bit scan).
src/sinker/mixed.rs Add MixedSinker<P010> implementation and tests for P010 behavior.
src/row/scalar.rs Add scalar P010→RGB (u8 and u16) kernels and tests.
src/row/mod.rs Add public P010 row dispatchers with SIMD selection.
src/row/arch/neon.rs NEON P010 SIMD kernels + scalar-equivalence tests.
src/row/arch/x86_sse41.rs SSE4.1 P010 SIMD kernels + scalar-equivalence tests.
src/row/arch/x86_avx2.rs AVX2 P010 SIMD kernels + scalar-equivalence tests.
src/row/arch/x86_avx512.rs AVX-512BW P010 SIMD kernels + scalar-equivalence tests.
src/row/arch/wasm_simd128.rs wasm simd128 P010 SIMD kernels + scalar-equivalence tests.
benches/p010_to_rgb.rs New Criterion benchmarks for P010→RGB (u8 and u16).
Cargo.toml Register the new p010_to_rgb bench target.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/row/scalar.rs Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown

Benchmark Results

Benchmark Results Summary

Date: 2026-04-19 09:29:01 UTC

Benchmark Results for macos-aarch64-neon

System Information

  • OS: macos-latest
  • Arch: aarch64
  • SIMD tier: neon
  • Runner: GitHub Actions 1000009181
  • Runner arch (GH): ARM64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:23:23 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       2,729 ns/iter (+/- 39)
test nv12_to_rgb_row/simd/1280 ... bench:         535 ns/iter (+/- 26)
test nv12_to_rgb_row/scalar/1920 ... bench:       4,101 ns/iter (+/- 112)
test nv12_to_rgb_row/simd/1920 ... bench:         760 ns/iter (+/- 20)
test nv12_to_rgb_row/scalar/3840 ... bench:       8,193 ns/iter (+/- 149)
test nv12_to_rgb_row/simd/3840 ... bench:       1,514 ns/iter (+/- 30)
test nv21_to_rgb_row/scalar/1280 ... bench:       2,732 ns/iter (+/- 45)
test nv21_to_rgb_row/simd/1280 ... bench:         509 ns/iter (+/- 18)
test nv21_to_rgb_row/scalar/1920 ... bench:       4,112 ns/iter (+/- 154)
test nv21_to_rgb_row/simd/1920 ... bench:         760 ns/iter (+/- 18)
test nv21_to_rgb_row/scalar/3840 ... bench:       8,186 ns/iter (+/- 47)
test nv21_to_rgb_row/simd/3840 ... bench:       1,514 ns/iter (+/- 27)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       2,738 ns/iter (+/- 10)
test p010_to_rgb_row/u8_simd/1280 ... bench:         478 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       4,109 ns/iter (+/- 107)
test p010_to_rgb_row/u8_simd/1920 ... bench:         721 ns/iter (+/- 15)
test p010_to_rgb_row/u8_scalar/3840 ... bench:       8,224 ns/iter (+/- 240)
test p010_to_rgb_row/u8_simd/3840 ... bench:       1,439 ns/iter (+/- 26)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       2,691 ns/iter (+/- 61)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:         609 ns/iter (+/- 15)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,035 ns/iter (+/- 91)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:         910 ns/iter (+/- 16)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:       8,050 ns/iter (+/- 159)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       1,814 ns/iter (+/- 26)
test rgb_to_hsv_row/scalar/1280 ... bench:       3,123 ns/iter (+/- 45)
test rgb_to_hsv_row/simd/1280 ... bench:       1,451 ns/iter (+/- 12)
test rgb_to_hsv_row/scalar/1920 ... bench:       4,679 ns/iter (+/- 56)
test rgb_to_hsv_row/simd/1920 ... bench:       2,180 ns/iter (+/- 21)
test rgb_to_hsv_row/scalar/3840 ... bench:       9,359 ns/iter (+/- 327)
test rgb_to_hsv_row/simd/3840 ... bench:       4,359 ns/iter (+/- 39)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       2,694 ns/iter (+/- 17)
test yuv_420_to_rgb_row/simd/1280 ... bench:         490 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       4,039 ns/iter (+/- 43)
test yuv_420_to_rgb_row/simd/1920 ... bench:         733 ns/iter (+/- 26)
test yuv_420_to_rgb_row/scalar/3840 ... bench:       8,302 ns/iter (+/- 356)
test yuv_420_to_rgb_row/simd/3840 ... bench:       1,460 ns/iter (+/- 35)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       2,953 ns/iter (+/- 67)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         464 ns/iter (+/- 16)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       4,422 ns/iter (+/- 99)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:         699 ns/iter (+/- 16)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:       8,854 ns/iter (+/- 176)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       1,391 ns/iter (+/- 27)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       2,954 ns/iter (+/- 47)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:         580 ns/iter (+/- 10)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,460 ns/iter (+/- 205)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:         873 ns/iter (+/- 12)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:       8,843 ns/iter (+/- 100)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       1,738 ns/iter (+/- 9)

Benchmark Results for macos-aarch64-scalar

System Information

  • OS: macos-latest
  • Arch: aarch64
  • SIMD tier: scalar
  • Runner: GitHub Actions 1000009182
  • Runner arch (GH): ARM64
  • RUSTFLAGS: --cfg colconv_force_scalar
  • Date: 2026-04-19 09:24:16 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       3,294 ns/iter (+/- 589)
test nv12_to_rgb_row/simd/1280 ... bench:       3,505 ns/iter (+/- 595)
test nv12_to_rgb_row/scalar/1920 ... bench:       5,088 ns/iter (+/- 680)
test nv12_to_rgb_row/simd/1920 ... bench:       5,347 ns/iter (+/- 1,156)
test nv12_to_rgb_row/scalar/3840 ... bench:       9,622 ns/iter (+/- 1,735)
test nv12_to_rgb_row/simd/3840 ... bench:      10,881 ns/iter (+/- 4,479)
test nv21_to_rgb_row/scalar/1280 ... bench:       3,362 ns/iter (+/- 407)
test nv21_to_rgb_row/simd/1280 ... bench:       3,377 ns/iter (+/- 548)
test nv21_to_rgb_row/scalar/1920 ... bench:       4,976 ns/iter (+/- 628)
test nv21_to_rgb_row/simd/1920 ... bench:       4,959 ns/iter (+/- 734)
test nv21_to_rgb_row/scalar/3840 ... bench:      10,122 ns/iter (+/- 1,650)
test nv21_to_rgb_row/simd/3840 ... bench:       9,821 ns/iter (+/- 1,217)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       3,298 ns/iter (+/- 715)
test p010_to_rgb_row/u8_simd/1280 ... bench:       3,204 ns/iter (+/- 530)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       4,845 ns/iter (+/- 958)
test p010_to_rgb_row/u8_simd/1920 ... bench:       4,882 ns/iter (+/- 1,177)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      10,087 ns/iter (+/- 1,286)
test p010_to_rgb_row/u8_simd/3840 ... bench:       9,635 ns/iter (+/- 833)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,302 ns/iter (+/- 664)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       3,267 ns/iter (+/- 627)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,960 ns/iter (+/- 462)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       4,782 ns/iter (+/- 1,091)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:       9,771 ns/iter (+/- 1,590)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       9,861 ns/iter (+/- 1,179)
test rgb_to_hsv_row/scalar/1280 ... bench:       3,715 ns/iter (+/- 588)
test rgb_to_hsv_row/simd/1280 ... bench:       3,821 ns/iter (+/- 389)
test rgb_to_hsv_row/scalar/1920 ... bench:       5,568 ns/iter (+/- 491)
test rgb_to_hsv_row/simd/1920 ... bench:       5,881 ns/iter (+/- 1,414)
test rgb_to_hsv_row/scalar/3840 ... bench:      12,454 ns/iter (+/- 2,016)
test rgb_to_hsv_row/simd/3840 ... bench:      12,126 ns/iter (+/- 4,844)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       3,097 ns/iter (+/- 383)
test yuv_420_to_rgb_row/simd/1280 ... bench:       3,100 ns/iter (+/- 294)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       4,704 ns/iter (+/- 735)
test yuv_420_to_rgb_row/simd/1920 ... bench:       5,002 ns/iter (+/- 630)
test yuv_420_to_rgb_row/scalar/3840 ... bench:       9,974 ns/iter (+/- 793)
test yuv_420_to_rgb_row/simd/3840 ... bench:       9,828 ns/iter (+/- 1,126)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       3,260 ns/iter (+/- 302)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       3,583 ns/iter (+/- 967)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       4,787 ns/iter (+/- 251)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       4,783 ns/iter (+/- 283)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:       9,522 ns/iter (+/- 171)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       9,550 ns/iter (+/- 393)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,512 ns/iter (+/- 455)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       3,234 ns/iter (+/- 167)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,788 ns/iter (+/- 864)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       5,035 ns/iter (+/- 1,120)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:       9,618 ns/iter (+/- 1,267)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       9,542 ns/iter (+/- 267)

Benchmark Results for ubuntu-x86_64-avx2-max

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: avx2-max
  • Runner: GitHub Actions 1000009190
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_disable_avx512
  • Date: 2026-04-19 09:24:17 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,895 ns/iter (+/- 33)
test nv12_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 2)
test nv12_to_rgb_row/scalar/1920 ... bench:       7,371 ns/iter (+/- 38)
test nv12_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 5)
test nv12_to_rgb_row/scalar/3840 ... bench:      14,746 ns/iter (+/- 62)
test nv12_to_rgb_row/simd/3840 ... bench:       3,351 ns/iter (+/- 10)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,882 ns/iter (+/- 87)
test nv21_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/1920 ... bench:       7,347 ns/iter (+/- 19)
test nv21_to_rgb_row/simd/1920 ... bench:       1,678 ns/iter (+/- 10)
test nv21_to_rgb_row/scalar/3840 ... bench:      14,709 ns/iter (+/- 364)
test nv21_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,331 ns/iter (+/- 45)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,170 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,522 ns/iter (+/- 80)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,754 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,049 ns/iter (+/- 39)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,510 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,516 ns/iter (+/- 14)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,216 ns/iter (+/- 0)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,800 ns/iter (+/- 169)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,823 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,605 ns/iter (+/- 36)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,656 ns/iter (+/- 2)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,712 ns/iter (+/- 13)
test rgb_to_hsv_row/simd/1280 ... bench:       2,584 ns/iter (+/- 13)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,074 ns/iter (+/- 38)
test rgb_to_hsv_row/simd/1920 ... bench:       3,876 ns/iter (+/- 9)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,218 ns/iter (+/- 32)
test rgb_to_hsv_row/simd/3840 ... bench:       7,761 ns/iter (+/- 11)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,583 ns/iter (+/- 138)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,004 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,936 ns/iter (+/- 31)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,505 ns/iter (+/- 79)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,928 ns/iter (+/- 101)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,011 ns/iter (+/- 5)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,678 ns/iter (+/- 11)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         991 ns/iter (+/- 30)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,099 ns/iter (+/- 19)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,490 ns/iter (+/- 44)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,304 ns/iter (+/- 33)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,969 ns/iter (+/- 97)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,753 ns/iter (+/- 35)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,025 ns/iter (+/- 6)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,223 ns/iter (+/- 43)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,534 ns/iter (+/- 6)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,471 ns/iter (+/- 81)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,067 ns/iter (+/- 6)

Benchmark Results for ubuntu-x86_64-default

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: default
  • Runner: GitHub Actions 1000009188
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:24:16 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,452 ns/iter (+/- 69)
test nv12_to_rgb_row/simd/1280 ... bench:       1,117 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,705 ns/iter (+/- 39)
test nv12_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,359 ns/iter (+/- 50)
test nv12_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 4)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,441 ns/iter (+/- 84)
test nv21_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 16)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,701 ns/iter (+/- 40)
test nv21_to_rgb_row/simd/1920 ... bench:       1,673 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,406 ns/iter (+/- 667)
test nv21_to_rgb_row/simd/3840 ... bench:       3,353 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,789 ns/iter (+/- 38)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,170 ns/iter (+/- 0)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       7,177 ns/iter (+/- 35)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,754 ns/iter (+/- 16)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      14,368 ns/iter (+/- 28)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,510 ns/iter (+/- 2)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,496 ns/iter (+/- 22)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,216 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,729 ns/iter (+/- 17)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,822 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,476 ns/iter (+/- 100)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,654 ns/iter (+/- 4)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,655 ns/iter (+/- 10)
test rgb_to_hsv_row/simd/1280 ... bench:       2,589 ns/iter (+/- 4)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,999 ns/iter (+/- 47)
test rgb_to_hsv_row/simd/1920 ... bench:       3,879 ns/iter (+/- 4)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,061 ns/iter (+/- 40)
test rgb_to_hsv_row/simd/3840 ... bench:       7,762 ns/iter (+/- 6)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,548 ns/iter (+/- 217)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,005 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,888 ns/iter (+/- 22)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,505 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,775 ns/iter (+/- 131)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,012 ns/iter (+/- 3)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,843 ns/iter (+/- 27)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         990 ns/iter (+/- 3)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,343 ns/iter (+/- 16)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,483 ns/iter (+/- 5)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,808 ns/iter (+/- 194)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,973 ns/iter (+/- 6)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,826 ns/iter (+/- 28)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,022 ns/iter (+/- 7)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,284 ns/iter (+/- 119)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,550 ns/iter (+/- 5)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,611 ns/iter (+/- 336)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,060 ns/iter (+/- 7)

Benchmark Results for ubuntu-x86_64-native

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: native
  • Runner: GitHub Actions 1000009191
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS: -C target-cpu=native
  • Date: 2026-04-19 09:24:42 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,450 ns/iter (+/- 40)
test nv12_to_rgb_row/simd/1280 ... bench:       1,117 ns/iter (+/- 2)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,703 ns/iter (+/- 117)
test nv12_to_rgb_row/simd/1920 ... bench:       1,675 ns/iter (+/- 2)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,393 ns/iter (+/- 98)
test nv12_to_rgb_row/simd/3840 ... bench:       3,355 ns/iter (+/- 6)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,650 ns/iter (+/- 93)
test nv21_to_rgb_row/simd/1280 ... bench:       1,117 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,696 ns/iter (+/- 24)
test nv21_to_rgb_row/simd/1920 ... bench:       1,675 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,398 ns/iter (+/- 44)
test nv21_to_rgb_row/simd/3840 ... bench:       3,353 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,785 ns/iter (+/- 18)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,170 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       7,168 ns/iter (+/- 22)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,754 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      14,375 ns/iter (+/- 97)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,511 ns/iter (+/- 5)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,491 ns/iter (+/- 49)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,218 ns/iter (+/- 5)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,698 ns/iter (+/- 33)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,826 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,464 ns/iter (+/- 33)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,657 ns/iter (+/- 4)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,656 ns/iter (+/- 31)
test rgb_to_hsv_row/simd/1280 ... bench:       2,588 ns/iter (+/- 6)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,006 ns/iter (+/- 89)
test rgb_to_hsv_row/simd/1920 ... bench:       3,903 ns/iter (+/- 6)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,091 ns/iter (+/- 94)
test rgb_to_hsv_row/simd/3840 ... bench:       7,772 ns/iter (+/- 8)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,553 ns/iter (+/- 22)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,004 ns/iter (+/- 1)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,905 ns/iter (+/- 67)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,506 ns/iter (+/- 1)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,764 ns/iter (+/- 557)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,014 ns/iter (+/- 4)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,851 ns/iter (+/- 13)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         991 ns/iter (+/- 1)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,340 ns/iter (+/- 21)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,483 ns/iter (+/- 1)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,790 ns/iter (+/- 532)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,969 ns/iter (+/- 4)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,822 ns/iter (+/- 10)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,023 ns/iter (+/- 56)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,279 ns/iter (+/- 34)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,527 ns/iter (+/- 12)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,618 ns/iter (+/- 136)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,072 ns/iter (+/- 4)

Benchmark Results for ubuntu-x86_64-scalar

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: scalar
  • Runner: GitHub Actions 1000009189
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_force_scalar
  • Date: 2026-04-19 09:24:18 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,505 ns/iter (+/- 43)
test nv12_to_rgb_row/simd/1280 ... bench:       4,506 ns/iter (+/- 8)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,853 ns/iter (+/- 564)
test nv12_to_rgb_row/simd/1920 ... bench:       6,848 ns/iter (+/- 300)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,581 ns/iter (+/- 27)
test nv12_to_rgb_row/simd/3840 ... bench:      13,569 ns/iter (+/- 55)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,687 ns/iter (+/- 15)
test nv21_to_rgb_row/simd/1280 ... bench:       4,681 ns/iter (+/- 21)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,793 ns/iter (+/- 32)
test nv21_to_rgb_row/simd/1920 ... bench:       6,806 ns/iter (+/- 13)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,577 ns/iter (+/- 41)
test nv21_to_rgb_row/simd/3840 ... bench:      13,628 ns/iter (+/- 326)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,613 ns/iter (+/- 20)
test p010_to_rgb_row/u8_simd/1280 ... bench:       4,617 ns/iter (+/- 11)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,909 ns/iter (+/- 287)
test p010_to_rgb_row/u8_simd/1920 ... bench:       6,916 ns/iter (+/- 159)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,827 ns/iter (+/- 29)
test p010_to_rgb_row/u8_simd/3840 ... bench:      13,847 ns/iter (+/- 127)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,501 ns/iter (+/- 9)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       4,500 ns/iter (+/- 8)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,757 ns/iter (+/- 20)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       6,758 ns/iter (+/- 12)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,106 ns/iter (+/- 56)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:      13,516 ns/iter (+/- 41)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,574 ns/iter (+/- 12)
test rgb_to_hsv_row/simd/1280 ... bench:       4,575 ns/iter (+/- 8)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,862 ns/iter (+/- 16)
test rgb_to_hsv_row/simd/1920 ... bench:       6,860 ns/iter (+/- 15)
test rgb_to_hsv_row/scalar/3840 ... bench:      13,838 ns/iter (+/- 62)
test rgb_to_hsv_row/simd/3840 ... bench:      13,769 ns/iter (+/- 284)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,818 ns/iter (+/- 174)
test yuv_420_to_rgb_row/simd/1280 ... bench:       4,817 ns/iter (+/- 19)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       7,277 ns/iter (+/- 43)
test yuv_420_to_rgb_row/simd/1920 ... bench:       7,278 ns/iter (+/- 32)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      14,561 ns/iter (+/- 28)
test yuv_420_to_rgb_row/simd/3840 ... bench:      14,557 ns/iter (+/- 44)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,822 ns/iter (+/- 22)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       4,820 ns/iter (+/- 9)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,288 ns/iter (+/- 14)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       7,298 ns/iter (+/- 141)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,635 ns/iter (+/- 213)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:      14,632 ns/iter (+/- 25)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,626 ns/iter (+/- 8)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       4,621 ns/iter (+/- 60)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,028 ns/iter (+/- 17)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       7,059 ns/iter (+/- 16)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,444 ns/iter (+/- 657)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:      14,161 ns/iter (+/- 31)

Benchmark Results for ubuntu-x86_64-sse41-max

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: sse41-max
  • Runner: GitHub Actions 1000009192
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_disable_avx512 --cfg colconv_disable_avx2
  • Date: 2026-04-19 09:24:31 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       3,697 ns/iter (+/- 39)
test nv12_to_rgb_row/simd/1280 ... bench:       1,178 ns/iter (+/- 2)
test nv12_to_rgb_row/scalar/1920 ... bench:       5,557 ns/iter (+/- 14)
test nv12_to_rgb_row/simd/1920 ... bench:       1,768 ns/iter (+/- 35)
test nv12_to_rgb_row/scalar/3840 ... bench:      11,156 ns/iter (+/- 196)
test nv12_to_rgb_row/simd/3840 ... bench:       3,537 ns/iter (+/- 9)
test nv21_to_rgb_row/scalar/1280 ... bench:       3,752 ns/iter (+/- 17)
test nv21_to_rgb_row/simd/1280 ... bench:       1,174 ns/iter (+/- 2)
test nv21_to_rgb_row/scalar/1920 ... bench:       5,605 ns/iter (+/- 31)
test nv21_to_rgb_row/simd/1920 ... bench:       1,763 ns/iter (+/- 7)
test nv21_to_rgb_row/scalar/3840 ... bench:      11,173 ns/iter (+/- 49)
test nv21_to_rgb_row/simd/3840 ... bench:       3,531 ns/iter (+/- 4)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       3,965 ns/iter (+/- 43)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,144 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       5,744 ns/iter (+/- 127)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,715 ns/iter (+/- 16)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      11,462 ns/iter (+/- 18)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,431 ns/iter (+/- 5)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,931 ns/iter (+/- 59)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,602 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       5,712 ns/iter (+/- 23)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       2,401 ns/iter (+/- 35)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      11,416 ns/iter (+/- 158)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       4,810 ns/iter (+/- 16)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,359 ns/iter (+/- 47)
test rgb_to_hsv_row/simd/1280 ... bench:       2,839 ns/iter (+/- 6)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,572 ns/iter (+/- 92)
test rgb_to_hsv_row/simd/1920 ... bench:       4,258 ns/iter (+/- 6)
test rgb_to_hsv_row/scalar/3840 ... bench:      13,259 ns/iter (+/- 104)
test rgb_to_hsv_row/simd/3840 ... bench:       8,519 ns/iter (+/- 13)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       3,846 ns/iter (+/- 42)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,208 ns/iter (+/- 1)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       5,617 ns/iter (+/- 124)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,810 ns/iter (+/- 6)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      11,212 ns/iter (+/- 39)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,622 ns/iter (+/- 14)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       3,842 ns/iter (+/- 15)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       1,028 ns/iter (+/- 1)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       5,771 ns/iter (+/- 17)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,536 ns/iter (+/- 2)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      11,632 ns/iter (+/- 37)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       3,073 ns/iter (+/- 17)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,827 ns/iter (+/- 132)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,582 ns/iter (+/- 1)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       5,752 ns/iter (+/- 46)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       2,371 ns/iter (+/- 4)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      11,446 ns/iter (+/- 56)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       4,745 ns/iter (+/- 29)

Benchmark Results for windows-x86_64-default

System Information

  • OS: windows-latest
  • Arch: x86_64
  • SIMD tier: default
  • Runner: GitHub Actions 1000009200
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:27:30 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,444 ns/iter (+/- 413)
test nv12_to_rgb_row/simd/1280 ... bench:       1,176 ns/iter (+/- 95)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,622 ns/iter (+/- 92)
test nv12_to_rgb_row/simd/1920 ... bench:       1,527 ns/iter (+/- 65)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,301 ns/iter (+/- 1,216)
test nv12_to_rgb_row/simd/3840 ... bench:       3,059 ns/iter (+/- 16)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,336 ns/iter (+/- 72)
test nv21_to_rgb_row/simd/1280 ... bench:       1,014 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,546 ns/iter (+/- 42)
test nv21_to_rgb_row/simd/1920 ... bench:       1,530 ns/iter (+/- 29)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,791 ns/iter (+/- 830)
test nv21_to_rgb_row/simd/3840 ... bench:       3,059 ns/iter (+/- 11)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,621 ns/iter (+/- 477)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,059 ns/iter (+/- 14)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,927 ns/iter (+/- 140)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,591 ns/iter (+/- 5)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,958 ns/iter (+/- 871)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,185 ns/iter (+/- 78)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,531 ns/iter (+/- 102)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,152 ns/iter (+/- 17)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,804 ns/iter (+/- 300)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,727 ns/iter (+/- 43)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,609 ns/iter (+/- 66)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,468 ns/iter (+/- 46)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,502 ns/iter (+/- 390)
test rgb_to_hsv_row/simd/1280 ... bench:       3,357 ns/iter (+/- 281)
test rgb_to_hsv_row/scalar/1920 ... bench:       8,277 ns/iter (+/- 890)
test rgb_to_hsv_row/simd/1920 ... bench:       4,944 ns/iter (+/- 411)
test rgb_to_hsv_row/scalar/3840 ... bench:      13,457 ns/iter (+/- 402)
test rgb_to_hsv_row/simd/3840 ... bench:       8,498 ns/iter (+/- 159)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,673 ns/iter (+/- 198)
test yuv_420_to_rgb_row/simd/1280 ... bench:         947 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,942 ns/iter (+/- 295)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,422 ns/iter (+/- 12)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,950 ns/iter (+/- 82)
test yuv_420_to_rgb_row/simd/3840 ... bench:       2,831 ns/iter (+/- 140)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,515 ns/iter (+/- 770)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         922 ns/iter (+/- 22)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:      12,619 ns/iter (+/- 48,533)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,376 ns/iter (+/- 26)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      13,600 ns/iter (+/- 1,005)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,745 ns/iter (+/- 31)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,741 ns/iter (+/- 402)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,006 ns/iter (+/- 19)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,117 ns/iter (+/- 447)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,505 ns/iter (+/- 32)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,393 ns/iter (+/- 573)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,023 ns/iter (+/- 72)

View detailed results

Detailed Criterion results have been uploaded as artifacts. Download them from the workflow run to view charts and detailed statistics.

@github-actions
Copy link
Copy Markdown

Benchmark Results

Benchmark Results Summary

Date: 2026-04-19 09:36:57 UTC

Benchmark Results for macos-aarch64-neon

System Information

  • OS: macos-latest
  • Arch: aarch64
  • SIMD tier: neon
  • Runner: GitHub Actions 1000009244
  • Runner arch (GH): ARM64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:32:21 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       3,316 ns/iter (+/- 718)
test nv12_to_rgb_row/simd/1280 ... bench:         654 ns/iter (+/- 134)
test nv12_to_rgb_row/scalar/1920 ... bench:       5,263 ns/iter (+/- 1,419)
test nv12_to_rgb_row/simd/1920 ... bench:       1,091 ns/iter (+/- 198)
test nv12_to_rgb_row/scalar/3840 ... bench:      11,985 ns/iter (+/- 2,968)
test nv12_to_rgb_row/simd/3840 ... bench:       1,659 ns/iter (+/- 467)
test nv21_to_rgb_row/scalar/1280 ... bench:       3,335 ns/iter (+/- 699)
test nv21_to_rgb_row/simd/1280 ... bench:         638 ns/iter (+/- 194)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,094 ns/iter (+/- 2,854)
test nv21_to_rgb_row/simd/1920 ... bench:       1,155 ns/iter (+/- 337)
test nv21_to_rgb_row/scalar/3840 ... bench:      12,457 ns/iter (+/- 2,963)
test nv21_to_rgb_row/simd/3840 ... bench:       2,236 ns/iter (+/- 639)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       3,983 ns/iter (+/- 1,251)
test p010_to_rgb_row/u8_simd/1280 ... bench:         695 ns/iter (+/- 205)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       5,345 ns/iter (+/- 1,972)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,021 ns/iter (+/- 408)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      11,815 ns/iter (+/- 2,721)
test p010_to_rgb_row/u8_simd/3840 ... bench:       1,951 ns/iter (+/- 771)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,816 ns/iter (+/- 915)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:         848 ns/iter (+/- 260)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       5,826 ns/iter (+/- 1,185)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,341 ns/iter (+/- 410)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      11,058 ns/iter (+/- 1,757)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       2,474 ns/iter (+/- 544)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,392 ns/iter (+/- 833)
test rgb_to_hsv_row/simd/1280 ... bench:       1,796 ns/iter (+/- 407)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,038 ns/iter (+/- 1,427)
test rgb_to_hsv_row/simd/1920 ... bench:       3,023 ns/iter (+/- 916)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,544 ns/iter (+/- 6,265)
test rgb_to_hsv_row/simd/3840 ... bench:       6,284 ns/iter (+/- 1,923)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       3,836 ns/iter (+/- 815)
test yuv_420_to_rgb_row/simd/1280 ... bench:         667 ns/iter (+/- 144)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,076 ns/iter (+/- 1,407)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,059 ns/iter (+/- 281)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      10,494 ns/iter (+/- 1,990)
test yuv_420_to_rgb_row/simd/3840 ... bench:       1,992 ns/iter (+/- 568)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       3,903 ns/iter (+/- 731)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         695 ns/iter (+/- 172)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       6,142 ns/iter (+/- 1,724)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:         996 ns/iter (+/- 216)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      12,423 ns/iter (+/- 3,656)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,080 ns/iter (+/- 527)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,269 ns/iter (+/- 468)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:         636 ns/iter (+/- 216)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,984 ns/iter (+/- 661)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,197 ns/iter (+/- 162)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      15,524 ns/iter (+/- 5,993)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       2,635 ns/iter (+/- 854)

Benchmark Results for macos-aarch64-scalar

System Information

  • OS: macos-latest
  • Arch: aarch64
  • SIMD tier: scalar
  • Runner: GitHub Actions 1000009245
  • Runner arch (GH): ARM64
  • RUSTFLAGS: --cfg colconv_force_scalar
  • Date: 2026-04-19 09:31:39 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       3,028 ns/iter (+/- 247)
test nv12_to_rgb_row/simd/1280 ... bench:       3,038 ns/iter (+/- 594)
test nv12_to_rgb_row/scalar/1920 ... bench:       4,502 ns/iter (+/- 723)
test nv12_to_rgb_row/simd/1920 ... bench:       4,430 ns/iter (+/- 175)
test nv12_to_rgb_row/scalar/3840 ... bench:       9,069 ns/iter (+/- 1,383)
test nv12_to_rgb_row/simd/3840 ... bench:       8,997 ns/iter (+/- 916)
test nv21_to_rgb_row/scalar/1280 ... bench:       2,966 ns/iter (+/- 117)
test nv21_to_rgb_row/simd/1280 ... bench:       3,031 ns/iter (+/- 569)
test nv21_to_rgb_row/scalar/1920 ... bench:       4,489 ns/iter (+/- 852)
test nv21_to_rgb_row/simd/1920 ... bench:       5,944 ns/iter (+/- 1,051)
test nv21_to_rgb_row/scalar/3840 ... bench:      12,293 ns/iter (+/- 2,691)
test nv21_to_rgb_row/simd/3840 ... bench:      12,525 ns/iter (+/- 2,310)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       3,482 ns/iter (+/- 899)
test p010_to_rgb_row/u8_simd/1280 ... bench:       3,203 ns/iter (+/- 537)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       4,604 ns/iter (+/- 782)
test p010_to_rgb_row/u8_simd/1920 ... bench:       4,523 ns/iter (+/- 377)
test p010_to_rgb_row/u8_scalar/3840 ... bench:       8,980 ns/iter (+/- 464)
test p010_to_rgb_row/u8_simd/3840 ... bench:       9,488 ns/iter (+/- 1,797)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       2,906 ns/iter (+/- 171)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       2,876 ns/iter (+/- 251)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,042 ns/iter (+/- 181)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       4,170 ns/iter (+/- 205)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:       8,357 ns/iter (+/- 421)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       8,399 ns/iter (+/- 659)
test rgb_to_hsv_row/scalar/1280 ... bench:       3,361 ns/iter (+/- 220)
test rgb_to_hsv_row/simd/1280 ... bench:       3,194 ns/iter (+/- 124)
test rgb_to_hsv_row/scalar/1920 ... bench:       4,827 ns/iter (+/- 197)
test rgb_to_hsv_row/simd/1920 ... bench:       4,857 ns/iter (+/- 640)
test rgb_to_hsv_row/scalar/3840 ... bench:       9,779 ns/iter (+/- 1,000)
test rgb_to_hsv_row/simd/3840 ... bench:      10,414 ns/iter (+/- 1,659)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       2,820 ns/iter (+/- 416)
test yuv_420_to_rgb_row/simd/1280 ... bench:       2,706 ns/iter (+/- 190)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       4,318 ns/iter (+/- 434)
test yuv_420_to_rgb_row/simd/1920 ... bench:       4,336 ns/iter (+/- 186)
test yuv_420_to_rgb_row/scalar/3840 ... bench:       8,342 ns/iter (+/- 240)
test yuv_420_to_rgb_row/simd/3840 ... bench:       8,280 ns/iter (+/- 187)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       3,218 ns/iter (+/- 806)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       3,054 ns/iter (+/- 194)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       4,621 ns/iter (+/- 697)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       4,870 ns/iter (+/- 378)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      10,097 ns/iter (+/- 1,144)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       9,775 ns/iter (+/- 1,098)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,161 ns/iter (+/- 226)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       2,983 ns/iter (+/- 170)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,420 ns/iter (+/- 183)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       4,532 ns/iter (+/- 133)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:       9,133 ns/iter (+/- 464)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       9,542 ns/iter (+/- 412)

Benchmark Results for ubuntu-x86_64-avx2-max

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: avx2-max
  • Runner: GitHub Actions 1000009249
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_disable_avx512
  • Date: 2026-04-19 09:32:02 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,886 ns/iter (+/- 18)
test nv12_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/1920 ... bench:       7,391 ns/iter (+/- 42)
test nv12_to_rgb_row/simd/1920 ... bench:       1,675 ns/iter (+/- 2)
test nv12_to_rgb_row/scalar/3840 ... bench:      14,733 ns/iter (+/- 39)
test nv12_to_rgb_row/simd/3840 ... bench:       3,351 ns/iter (+/- 13)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,856 ns/iter (+/- 22)
test nv21_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/1920 ... bench:       7,346 ns/iter (+/- 16)
test nv21_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 3)
test nv21_to_rgb_row/scalar/3840 ... bench:      14,701 ns/iter (+/- 146)
test nv21_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 9)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,327 ns/iter (+/- 75)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,170 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,518 ns/iter (+/- 35)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,754 ns/iter (+/- 4)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,035 ns/iter (+/- 749)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,511 ns/iter (+/- 3)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,517 ns/iter (+/- 17)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,216 ns/iter (+/- 3)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,795 ns/iter (+/- 64)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,821 ns/iter (+/- 4)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,607 ns/iter (+/- 32)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,655 ns/iter (+/- 2)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,713 ns/iter (+/- 10)
test rgb_to_hsv_row/simd/1280 ... bench:       2,585 ns/iter (+/- 6)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,079 ns/iter (+/- 23)
test rgb_to_hsv_row/simd/1920 ... bench:       3,876 ns/iter (+/- 8)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,271 ns/iter (+/- 38)
test rgb_to_hsv_row/simd/3840 ... bench:       7,762 ns/iter (+/- 16)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,578 ns/iter (+/- 46)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,004 ns/iter (+/- 1)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,924 ns/iter (+/- 478)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,505 ns/iter (+/- 3)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,840 ns/iter (+/- 92)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,015 ns/iter (+/- 55)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,679 ns/iter (+/- 37)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         995 ns/iter (+/- 4)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,082 ns/iter (+/- 18)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,488 ns/iter (+/- 4)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,265 ns/iter (+/- 20)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,970 ns/iter (+/- 3)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,753 ns/iter (+/- 21)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,028 ns/iter (+/- 6)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,202 ns/iter (+/- 52)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,533 ns/iter (+/- 6)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,630 ns/iter (+/- 73)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,072 ns/iter (+/- 8)

Benchmark Results for ubuntu-x86_64-default

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: default
  • Runner: GitHub Actions 1000009248
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:32:00 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,447 ns/iter (+/- 119)
test nv12_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,706 ns/iter (+/- 34)
test nv12_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 7)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,429 ns/iter (+/- 126)
test nv12_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 3)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,654 ns/iter (+/- 18)
test nv21_to_rgb_row/simd/1280 ... bench:       1,118 ns/iter (+/- 19)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,702 ns/iter (+/- 35)
test nv21_to_rgb_row/simd/1920 ... bench:       1,676 ns/iter (+/- 5)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,399 ns/iter (+/- 40)
test nv21_to_rgb_row/simd/3840 ... bench:       3,353 ns/iter (+/- 3)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,787 ns/iter (+/- 126)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,170 ns/iter (+/- 7)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       7,171 ns/iter (+/- 72)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,755 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      14,375 ns/iter (+/- 562)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,511 ns/iter (+/- 7)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,494 ns/iter (+/- 22)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,217 ns/iter (+/- 5)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,768 ns/iter (+/- 47)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,824 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,471 ns/iter (+/- 56)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,654 ns/iter (+/- 4)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,658 ns/iter (+/- 37)
test rgb_to_hsv_row/simd/1280 ... bench:       2,587 ns/iter (+/- 19)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,988 ns/iter (+/- 15)
test rgb_to_hsv_row/simd/1920 ... bench:       3,879 ns/iter (+/- 4)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,063 ns/iter (+/- 190)
test rgb_to_hsv_row/simd/3840 ... bench:       7,763 ns/iter (+/- 14)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,550 ns/iter (+/- 68)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,004 ns/iter (+/- 3)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,903 ns/iter (+/- 169)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,507 ns/iter (+/- 8)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,770 ns/iter (+/- 508)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,013 ns/iter (+/- 11)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,844 ns/iter (+/- 29)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         993 ns/iter (+/- 2)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,348 ns/iter (+/- 36)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,483 ns/iter (+/- 2)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,798 ns/iter (+/- 252)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,969 ns/iter (+/- 7)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,829 ns/iter (+/- 22)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,023 ns/iter (+/- 3)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,277 ns/iter (+/- 231)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,527 ns/iter (+/- 1)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,610 ns/iter (+/- 24)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,063 ns/iter (+/- 2)

Benchmark Results for ubuntu-x86_64-native

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: native
  • Runner: GitHub Actions 1000009247
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS: -C target-cpu=native
  • Date: 2026-04-19 09:32:26 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,448 ns/iter (+/- 95)
test nv12_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,695 ns/iter (+/- 121)
test nv12_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,363 ns/iter (+/- 94)
test nv12_to_rgb_row/simd/3840 ... bench:       3,353 ns/iter (+/- 3)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,435 ns/iter (+/- 34)
test nv21_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,700 ns/iter (+/- 14)
test nv21_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 2)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,427 ns/iter (+/- 124)
test nv21_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 30)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,781 ns/iter (+/- 45)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,169 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       7,161 ns/iter (+/- 33)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,755 ns/iter (+/- 28)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      14,359 ns/iter (+/- 81)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,513 ns/iter (+/- 3)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,500 ns/iter (+/- 57)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,218 ns/iter (+/- 3)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,759 ns/iter (+/- 69)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,823 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,471 ns/iter (+/- 24)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,657 ns/iter (+/- 3)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,662 ns/iter (+/- 15)
test rgb_to_hsv_row/simd/1280 ... bench:       2,586 ns/iter (+/- 3)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,011 ns/iter (+/- 22)
test rgb_to_hsv_row/simd/1920 ... bench:       3,878 ns/iter (+/- 7)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,094 ns/iter (+/- 31)
test rgb_to_hsv_row/simd/3840 ... bench:       7,766 ns/iter (+/- 13)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,553 ns/iter (+/- 14)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,006 ns/iter (+/- 23)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,894 ns/iter (+/- 496)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,505 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,766 ns/iter (+/- 137)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,013 ns/iter (+/- 6)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,849 ns/iter (+/- 46)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         990 ns/iter (+/- 3)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,342 ns/iter (+/- 23)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,484 ns/iter (+/- 24)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,786 ns/iter (+/- 187)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,968 ns/iter (+/- 2)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,820 ns/iter (+/- 27)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,026 ns/iter (+/- 3)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,281 ns/iter (+/- 63)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,525 ns/iter (+/- 5)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,617 ns/iter (+/- 110)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,068 ns/iter (+/- 5)

Benchmark Results for ubuntu-x86_64-scalar

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: scalar
  • Runner: GitHub Actions 1000009246
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_force_scalar
  • Date: 2026-04-19 09:32:05 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,751 ns/iter (+/- 11)
test nv12_to_rgb_row/simd/1280 ... bench:       4,503 ns/iter (+/- 106)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,801 ns/iter (+/- 20)
test nv12_to_rgb_row/simd/1920 ... bench:       6,845 ns/iter (+/- 103)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,596 ns/iter (+/- 34)
test nv12_to_rgb_row/simd/3840 ... bench:      13,579 ns/iter (+/- 28)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,704 ns/iter (+/- 72)
test nv21_to_rgb_row/simd/1280 ... bench:       4,493 ns/iter (+/- 100)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,766 ns/iter (+/- 90)
test nv21_to_rgb_row/simd/1920 ... bench:       6,769 ns/iter (+/- 21)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,562 ns/iter (+/- 309)
test nv21_to_rgb_row/simd/3840 ... bench:      13,560 ns/iter (+/- 36)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,593 ns/iter (+/- 29)
test p010_to_rgb_row/u8_simd/1280 ... bench:       4,613 ns/iter (+/- 16)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,895 ns/iter (+/- 17)
test p010_to_rgb_row/u8_simd/1920 ... bench:       6,876 ns/iter (+/- 14)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,851 ns/iter (+/- 403)
test p010_to_rgb_row/u8_simd/3840 ... bench:      13,860 ns/iter (+/- 33)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,504 ns/iter (+/- 11)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       4,504 ns/iter (+/- 45)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,772 ns/iter (+/- 52)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       6,780 ns/iter (+/- 134)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,513 ns/iter (+/- 60)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:      13,522 ns/iter (+/- 66)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,576 ns/iter (+/- 90)
test rgb_to_hsv_row/simd/1280 ... bench:       4,571 ns/iter (+/- 8)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,859 ns/iter (+/- 470)
test rgb_to_hsv_row/simd/1920 ... bench:       6,858 ns/iter (+/- 21)
test rgb_to_hsv_row/scalar/3840 ... bench:      13,819 ns/iter (+/- 113)
test rgb_to_hsv_row/simd/3840 ... bench:      13,739 ns/iter (+/- 43)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,819 ns/iter (+/- 32)
test yuv_420_to_rgb_row/simd/1280 ... bench:       4,818 ns/iter (+/- 54)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       7,271 ns/iter (+/- 18)
test yuv_420_to_rgb_row/simd/1920 ... bench:       7,269 ns/iter (+/- 303)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      14,553 ns/iter (+/- 54)
test yuv_420_to_rgb_row/simd/3840 ... bench:      14,572 ns/iter (+/- 54)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,829 ns/iter (+/- 14)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       4,834 ns/iter (+/- 48)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,283 ns/iter (+/- 9)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       7,288 ns/iter (+/- 467)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,623 ns/iter (+/- 47)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:      14,647 ns/iter (+/- 40)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,823 ns/iter (+/- 27)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       4,634 ns/iter (+/- 26)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,057 ns/iter (+/- 33)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       7,067 ns/iter (+/- 18)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,168 ns/iter (+/- 52)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:      14,160 ns/iter (+/- 62)

Benchmark Results for ubuntu-x86_64-sse41-max

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: sse41-max
  • Runner: GitHub Actions 1000009250
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_disable_avx512 --cfg colconv_disable_avx2
  • Date: 2026-04-19 09:32:18 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,604 ns/iter (+/- 109)
test nv12_to_rgb_row/simd/1280 ... bench:         885 ns/iter (+/- 5)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,933 ns/iter (+/- 154)
test nv12_to_rgb_row/simd/1920 ... bench:       1,332 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,887 ns/iter (+/- 25)
test nv12_to_rgb_row/simd/3840 ... bench:       2,660 ns/iter (+/- 11)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,822 ns/iter (+/- 259)
test nv21_to_rgb_row/simd/1280 ... bench:         880 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,911 ns/iter (+/- 24)
test nv21_to_rgb_row/simd/1920 ... bench:       1,325 ns/iter (+/- 7)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,831 ns/iter (+/- 55)
test nv21_to_rgb_row/simd/3840 ... bench:       2,646 ns/iter (+/- 3)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,760 ns/iter (+/- 13)
test p010_to_rgb_row/u8_simd/1280 ... bench:         945 ns/iter (+/- 0)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       7,138 ns/iter (+/- 44)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,422 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      14,317 ns/iter (+/- 53)
test p010_to_rgb_row/u8_simd/3840 ... bench:       2,842 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,521 ns/iter (+/- 518)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,153 ns/iter (+/- 1)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,815 ns/iter (+/- 424)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,737 ns/iter (+/- 3)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,593 ns/iter (+/- 569)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,482 ns/iter (+/- 13)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,627 ns/iter (+/- 48)
test rgb_to_hsv_row/simd/1280 ... bench:       2,566 ns/iter (+/- 3)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,940 ns/iter (+/- 20)
test rgb_to_hsv_row/simd/1920 ... bench:       3,850 ns/iter (+/- 5)
test rgb_to_hsv_row/scalar/3840 ... bench:      13,920 ns/iter (+/- 133)
test rgb_to_hsv_row/simd/3840 ... bench:       7,692 ns/iter (+/- 7)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,582 ns/iter (+/- 27)
test yuv_420_to_rgb_row/simd/1280 ... bench:         904 ns/iter (+/- 6)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,943 ns/iter (+/- 27)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,360 ns/iter (+/- 0)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,854 ns/iter (+/- 39)
test yuv_420_to_rgb_row/simd/3840 ... bench:       2,711 ns/iter (+/- 6)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,621 ns/iter (+/- 13)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         840 ns/iter (+/- 1)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,000 ns/iter (+/- 23)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,263 ns/iter (+/- 6)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,061 ns/iter (+/- 121)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,519 ns/iter (+/- 11)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,827 ns/iter (+/- 143)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,103 ns/iter (+/- 1)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,316 ns/iter (+/- 71)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,658 ns/iter (+/- 1)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,773 ns/iter (+/- 74)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,313 ns/iter (+/- 14)

Benchmark Results for windows-x86_64-default

System Information

  • OS: windows-latest
  • Arch: x86_64
  • SIMD tier: default
  • Runner: GitHub Actions 1000009261
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:36:27 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,396 ns/iter (+/- 54)
test nv12_to_rgb_row/simd/1280 ... bench:       1,126 ns/iter (+/- 58)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,633 ns/iter (+/- 269)
test nv12_to_rgb_row/simd/1920 ... bench:       1,683 ns/iter (+/- 6)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,203 ns/iter (+/- 822)
test nv12_to_rgb_row/simd/3840 ... bench:       3,367 ns/iter (+/- 19)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,985 ns/iter (+/- 1,266)
test nv21_to_rgb_row/simd/1280 ... bench:       1,124 ns/iter (+/- 6)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,844 ns/iter (+/- 115)
test nv21_to_rgb_row/simd/1920 ... bench:       1,680 ns/iter (+/- 15)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,645 ns/iter (+/- 154)
test nv21_to_rgb_row/simd/3840 ... bench:       3,363 ns/iter (+/- 19)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,672 ns/iter (+/- 1,338)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,179 ns/iter (+/- 10)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,797 ns/iter (+/- 150)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,763 ns/iter (+/- 5)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,548 ns/iter (+/- 920)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,527 ns/iter (+/- 39)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,678 ns/iter (+/- 52)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,230 ns/iter (+/- 16)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,059 ns/iter (+/- 504)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,844 ns/iter (+/- 115)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      17,680 ns/iter (+/- 1,357)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       4,257 ns/iter (+/- 346)
test rgb_to_hsv_row/scalar/1280 ... bench:       5,695 ns/iter (+/- 698)
test rgb_to_hsv_row/simd/1280 ... bench:       2,601 ns/iter (+/- 53)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,279 ns/iter (+/- 613)
test rgb_to_hsv_row/simd/1920 ... bench:       3,940 ns/iter (+/- 76)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,217 ns/iter (+/- 291)
test rgb_to_hsv_row/simd/3840 ... bench:       7,794 ns/iter (+/- 124)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,897 ns/iter (+/- 27,380)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,020 ns/iter (+/- 12)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       7,018 ns/iter (+/- 820)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,519 ns/iter (+/- 22)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      14,016 ns/iter (+/- 676)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,033 ns/iter (+/- 44)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,671 ns/iter (+/- 362)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       1,000 ns/iter (+/- 9)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,104 ns/iter (+/- 611)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,497 ns/iter (+/- 16)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,239 ns/iter (+/- 1,304)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,988 ns/iter (+/- 45)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,755 ns/iter (+/- 357)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,030 ns/iter (+/- 28)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,201 ns/iter (+/- 830)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,547 ns/iter (+/- 23)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,504 ns/iter (+/- 93)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,080 ns/iter (+/- 23)

View detailed results

Detailed Criterion results have been uploaded as artifacts. Download them from the workflow run to view charts and detailed statistics.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/sinker/mixed.rs
Comment on lines +1140 to +1146
let expected_elements = self.frame_bytes(3)?;
if buf.len() < expected_elements {
return Err(MixedSinkerError::RgbU16BufferTooShort {
expected: expected_elements,
actual: buf.len(),
});
}
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MixedSinkerError::RgbU16BufferTooShort’s doc comment says the rgb_u16 buffer is only written by Yuv420p10, but this PR also writes it for P010. Please update that error variant’s documentation to reflect that P010 can populate rgb_u16 as well (and any other formats that do).

Copilot uses AI. Check for mistakes.
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 19, 2026

Codecov Report

❌ Patch coverage is 75.69573% with 262 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/row/arch/x86_avx512.rs 2.95% 197 Missing ⚠️
src/sinker/mixed.rs 75.00% 28 Missing ⚠️
src/row/mod.rs 72.00% 14 Missing ⚠️
src/row/arch/neon.rs 94.28% 10 Missing ⚠️
src/frame.rs 90.12% 8 Missing ⚠️
src/row/arch/x86_sse41.rs 98.27% 3 Missing ⚠️
src/row/arch/x86_avx2.rs 99.00% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

@al8n al8n changed the title feat(p010): impl P010 pixel format support feat(p010): 10-bit semi-planar HDR hardware-decode format → u8 + native u16 RGB Apr 19, 2026
@github-actions
Copy link
Copy Markdown

Benchmark Results

Benchmark Results Summary

Date: 2026-04-19 09:43:27 UTC

Benchmark Results for macos-aarch64-neon

System Information

  • OS: macos-latest
  • Arch: aarch64
  • SIMD tier: neon
  • Runner: GitHub Actions 1000009325
  • Runner arch (GH): ARM64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:41:37 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       2,960 ns/iter (+/- 139)
test nv12_to_rgb_row/simd/1280 ... bench:         553 ns/iter (+/- 19)
test nv12_to_rgb_row/scalar/1920 ... bench:       4,428 ns/iter (+/- 66)
test nv12_to_rgb_row/simd/1920 ... bench:         822 ns/iter (+/- 39)
test nv12_to_rgb_row/scalar/3840 ... bench:       8,848 ns/iter (+/- 145)
test nv12_to_rgb_row/simd/3840 ... bench:       1,639 ns/iter (+/- 49)
test nv21_to_rgb_row/scalar/1280 ... bench:       2,976 ns/iter (+/- 95)
test nv21_to_rgb_row/simd/1280 ... bench:         553 ns/iter (+/- 30)
test nv21_to_rgb_row/scalar/1920 ... bench:       4,429 ns/iter (+/- 450)
test nv21_to_rgb_row/simd/1920 ... bench:         823 ns/iter (+/- 32)
test nv21_to_rgb_row/scalar/3840 ... bench:       8,843 ns/iter (+/- 298)
test nv21_to_rgb_row/simd/3840 ... bench:       1,644 ns/iter (+/- 123)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       3,004 ns/iter (+/- 3,029)
test p010_to_rgb_row/u8_simd/1280 ... bench:         526 ns/iter (+/- 38)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       4,514 ns/iter (+/- 339)
test p010_to_rgb_row/u8_simd/1920 ... bench:         792 ns/iter (+/- 245)
test p010_to_rgb_row/u8_scalar/3840 ... bench:       8,995 ns/iter (+/- 502)
test p010_to_rgb_row/u8_simd/3840 ... bench:       1,580 ns/iter (+/- 179)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       2,968 ns/iter (+/- 418)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:         667 ns/iter (+/- 32)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,393 ns/iter (+/- 1,453)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:         998 ns/iter (+/- 81)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:       8,814 ns/iter (+/- 739)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       1,990 ns/iter (+/- 119)
test rgb_to_hsv_row/scalar/1280 ... bench:       3,419 ns/iter (+/- 474)
test rgb_to_hsv_row/simd/1280 ... bench:       1,594 ns/iter (+/- 148)
test rgb_to_hsv_row/scalar/1920 ... bench:       5,108 ns/iter (+/- 354)
test rgb_to_hsv_row/simd/1920 ... bench:       2,420 ns/iter (+/- 264)
test rgb_to_hsv_row/scalar/3840 ... bench:      10,724 ns/iter (+/- 868)
test rgb_to_hsv_row/simd/3840 ... bench:       4,752 ns/iter (+/- 655)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       2,945 ns/iter (+/- 551)
test yuv_420_to_rgb_row/simd/1280 ... bench:         538 ns/iter (+/- 42)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       4,439 ns/iter (+/- 405)
test yuv_420_to_rgb_row/simd/1920 ... bench:         993 ns/iter (+/- 294)
test yuv_420_to_rgb_row/scalar/3840 ... bench:       9,749 ns/iter (+/- 966)
test yuv_420_to_rgb_row/simd/3840 ... bench:       1,742 ns/iter (+/- 188)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       3,249 ns/iter (+/- 414)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         697 ns/iter (+/- 163)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,405 ns/iter (+/- 3,508)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,104 ns/iter (+/- 222)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      12,711 ns/iter (+/- 2,874)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       1,785 ns/iter (+/- 302)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,305 ns/iter (+/- 579)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:         704 ns/iter (+/- 155)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       5,534 ns/iter (+/- 5,259)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,127 ns/iter (+/- 202)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:       9,638 ns/iter (+/- 1,271)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       1,882 ns/iter (+/- 69)

Benchmark Results for macos-aarch64-scalar

System Information

  • OS: macos-latest
  • Arch: aarch64
  • SIMD tier: scalar
  • Runner: GitHub Actions 1000009321
  • Runner arch (GH): ARM64
  • RUSTFLAGS: --cfg colconv_force_scalar
  • Date: 2026-04-19 09:41:17 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       2,944 ns/iter (+/- 364)
test nv12_to_rgb_row/simd/1280 ... bench:       3,003 ns/iter (+/- 108)
test nv12_to_rgb_row/scalar/1920 ... bench:       4,512 ns/iter (+/- 159)
test nv12_to_rgb_row/simd/1920 ... bench:       4,364 ns/iter (+/- 144)
test nv12_to_rgb_row/scalar/3840 ... bench:       8,168 ns/iter (+/- 132)
test nv12_to_rgb_row/simd/3840 ... bench:       8,173 ns/iter (+/- 250)
test nv21_to_rgb_row/scalar/1280 ... bench:       2,727 ns/iter (+/- 39)
test nv21_to_rgb_row/simd/1280 ... bench:       2,729 ns/iter (+/- 118)
test nv21_to_rgb_row/scalar/1920 ... bench:       4,090 ns/iter (+/- 63)
test nv21_to_rgb_row/simd/1920 ... bench:       4,135 ns/iter (+/- 156)
test nv21_to_rgb_row/scalar/3840 ... bench:       8,169 ns/iter (+/- 135)
test nv21_to_rgb_row/simd/3840 ... bench:       8,184 ns/iter (+/- 234)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       2,741 ns/iter (+/- 79)
test p010_to_rgb_row/u8_simd/1280 ... bench:       2,741 ns/iter (+/- 108)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       4,103 ns/iter (+/- 80)
test p010_to_rgb_row/u8_simd/1920 ... bench:       4,103 ns/iter (+/- 65)
test p010_to_rgb_row/u8_scalar/3840 ... bench:       8,202 ns/iter (+/- 272)
test p010_to_rgb_row/u8_simd/3840 ... bench:       8,202 ns/iter (+/- 180)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       2,684 ns/iter (+/- 36)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       2,685 ns/iter (+/- 38)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,021 ns/iter (+/- 112)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       4,023 ns/iter (+/- 64)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:       8,048 ns/iter (+/- 133)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       8,040 ns/iter (+/- 104)
test rgb_to_hsv_row/scalar/1280 ... bench:       3,121 ns/iter (+/- 79)
test rgb_to_hsv_row/simd/1280 ... bench:       3,118 ns/iter (+/- 50)
test rgb_to_hsv_row/scalar/1920 ... bench:       4,674 ns/iter (+/- 164)
test rgb_to_hsv_row/simd/1920 ... bench:       4,671 ns/iter (+/- 93)
test rgb_to_hsv_row/scalar/3840 ... bench:       9,355 ns/iter (+/- 462)
test rgb_to_hsv_row/simd/3840 ... bench:       9,342 ns/iter (+/- 193)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       2,694 ns/iter (+/- 41)
test yuv_420_to_rgb_row/simd/1280 ... bench:       2,694 ns/iter (+/- 44)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       4,038 ns/iter (+/- 63)
test yuv_420_to_rgb_row/simd/1920 ... bench:       4,038 ns/iter (+/- 76)
test yuv_420_to_rgb_row/scalar/3840 ... bench:       8,293 ns/iter (+/- 377)
test yuv_420_to_rgb_row/simd/3840 ... bench:       8,272 ns/iter (+/- 120)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       2,947 ns/iter (+/- 32)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       2,947 ns/iter (+/- 48)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       4,419 ns/iter (+/- 108)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       4,418 ns/iter (+/- 102)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:       8,829 ns/iter (+/- 135)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       8,839 ns/iter (+/- 317)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       2,947 ns/iter (+/- 70)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       2,948 ns/iter (+/- 19)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       4,420 ns/iter (+/- 49)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       4,433 ns/iter (+/- 115)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:       8,833 ns/iter (+/- 114)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       8,837 ns/iter (+/- 112)

Benchmark Results for ubuntu-x86_64-avx2-max

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: avx2-max
  • Runner: GitHub Actions 1000009323
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_disable_avx512
  • Date: 2026-04-19 09:42:07 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,880 ns/iter (+/- 59)
test nv12_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/1920 ... bench:       7,380 ns/iter (+/- 22)
test nv12_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 4)
test nv12_to_rgb_row/scalar/3840 ... bench:      14,733 ns/iter (+/- 57)
test nv12_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 3)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,859 ns/iter (+/- 17)
test nv21_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 2)
test nv21_to_rgb_row/scalar/1920 ... bench:       7,347 ns/iter (+/- 17)
test nv21_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/3840 ... bench:      14,695 ns/iter (+/- 57)
test nv21_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 3)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,329 ns/iter (+/- 49)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,169 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,520 ns/iter (+/- 52)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,755 ns/iter (+/- 3)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,058 ns/iter (+/- 105)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,512 ns/iter (+/- 4)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,521 ns/iter (+/- 14)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,216 ns/iter (+/- 2)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,809 ns/iter (+/- 32)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,823 ns/iter (+/- 6)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,612 ns/iter (+/- 29)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,662 ns/iter (+/- 3)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,720 ns/iter (+/- 13)
test rgb_to_hsv_row/simd/1280 ... bench:       2,586 ns/iter (+/- 14)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,087 ns/iter (+/- 20)
test rgb_to_hsv_row/simd/1920 ... bench:       3,899 ns/iter (+/- 3)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,219 ns/iter (+/- 37)
test rgb_to_hsv_row/simd/3840 ... bench:       7,776 ns/iter (+/- 17)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,580 ns/iter (+/- 53)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,006 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,933 ns/iter (+/- 11)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,505 ns/iter (+/- 2)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,843 ns/iter (+/- 37)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,012 ns/iter (+/- 3)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,690 ns/iter (+/- 27)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         991 ns/iter (+/- 2)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,096 ns/iter (+/- 42)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,486 ns/iter (+/- 3)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,307 ns/iter (+/- 75)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,971 ns/iter (+/- 15)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,760 ns/iter (+/- 41)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,025 ns/iter (+/- 11)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,184 ns/iter (+/- 55)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,525 ns/iter (+/- 1)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,494 ns/iter (+/- 59)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,061 ns/iter (+/- 16)

Benchmark Results for ubuntu-x86_64-default

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: default
  • Runner: GitHub Actions 1000009317
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:40:47 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       3,871 ns/iter (+/- 60)
test nv12_to_rgb_row/simd/1280 ... bench:         756 ns/iter (+/- 7)
test nv12_to_rgb_row/scalar/1920 ... bench:       5,701 ns/iter (+/- 131)
test nv12_to_rgb_row/simd/1920 ... bench:       1,131 ns/iter (+/- 0)
test nv12_to_rgb_row/scalar/3840 ... bench:      11,163 ns/iter (+/- 114)
test nv12_to_rgb_row/simd/3840 ... bench:       2,270 ns/iter (+/- 101)
test nv21_to_rgb_row/scalar/1280 ... bench:       3,749 ns/iter (+/- 36)
test nv21_to_rgb_row/simd/1280 ... bench:         772 ns/iter (+/- 0)
test nv21_to_rgb_row/scalar/1920 ... bench:       5,772 ns/iter (+/- 11)
test nv21_to_rgb_row/simd/1920 ... bench:       1,159 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/3840 ... bench:      11,680 ns/iter (+/- 487)
test nv21_to_rgb_row/simd/3840 ... bench:       2,305 ns/iter (+/- 2)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       3,859 ns/iter (+/- 12)
test p010_to_rgb_row/u8_simd/1280 ... bench:         669 ns/iter (+/- 0)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       5,777 ns/iter (+/- 17)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,004 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      11,598 ns/iter (+/- 55)
test p010_to_rgb_row/u8_simd/3840 ... bench:       2,008 ns/iter (+/- 2)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,606 ns/iter (+/- 72)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,235 ns/iter (+/- 3)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       5,417 ns/iter (+/- 144)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,853 ns/iter (+/- 22)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      10,779 ns/iter (+/- 25)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,706 ns/iter (+/- 2)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,110 ns/iter (+/- 38)
test rgb_to_hsv_row/simd/1280 ... bench:       3,554 ns/iter (+/- 23)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,178 ns/iter (+/- 20)
test rgb_to_hsv_row/simd/1920 ... bench:       5,330 ns/iter (+/- 25)
test rgb_to_hsv_row/scalar/3840 ... bench:      12,369 ns/iter (+/- 38)
test rgb_to_hsv_row/simd/3840 ... bench:      10,662 ns/iter (+/- 69)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       3,740 ns/iter (+/- 6)
test yuv_420_to_rgb_row/simd/1280 ... bench:         685 ns/iter (+/- 0)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       5,642 ns/iter (+/- 66)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,027 ns/iter (+/- 3)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      11,311 ns/iter (+/- 324)
test yuv_420_to_rgb_row/simd/3840 ... bench:       2,055 ns/iter (+/- 2)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,015 ns/iter (+/- 74)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         661 ns/iter (+/- 2)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       6,036 ns/iter (+/- 287)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:         986 ns/iter (+/- 11)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      12,004 ns/iter (+/- 267)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       1,979 ns/iter (+/- 2)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       3,828 ns/iter (+/- 46)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,213 ns/iter (+/- 13)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       5,779 ns/iter (+/- 32)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,816 ns/iter (+/- 4)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      11,447 ns/iter (+/- 100)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,630 ns/iter (+/- 55)

Benchmark Results for ubuntu-x86_64-native

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: native
  • Runner: GitHub Actions 1000009331
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS: -C target-cpu=native
  • Date: 2026-04-19 09:42:58 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,456 ns/iter (+/- 28)
test nv12_to_rgb_row/simd/1280 ... bench:       1,117 ns/iter (+/- 7)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,701 ns/iter (+/- 23)
test nv12_to_rgb_row/simd/1920 ... bench:       1,681 ns/iter (+/- 2)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,372 ns/iter (+/- 43)
test nv12_to_rgb_row/simd/3840 ... bench:       3,354 ns/iter (+/- 74)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,641 ns/iter (+/- 35)
test nv21_to_rgb_row/simd/1280 ... bench:       1,116 ns/iter (+/- 2)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,698 ns/iter (+/- 157)
test nv21_to_rgb_row/simd/1920 ... bench:       1,674 ns/iter (+/- 2)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,406 ns/iter (+/- 71)
test nv21_to_rgb_row/simd/3840 ... bench:       3,352 ns/iter (+/- 4)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,791 ns/iter (+/- 227)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,169 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       7,167 ns/iter (+/- 19)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,754 ns/iter (+/- 82)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      14,386 ns/iter (+/- 300)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,513 ns/iter (+/- 3)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,495 ns/iter (+/- 19)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,217 ns/iter (+/- 2)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,736 ns/iter (+/- 22)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,823 ns/iter (+/- 19)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,476 ns/iter (+/- 58)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,654 ns/iter (+/- 5)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,673 ns/iter (+/- 62)
test rgb_to_hsv_row/simd/1280 ... bench:       2,586 ns/iter (+/- 508)
test rgb_to_hsv_row/scalar/1920 ... bench:       7,017 ns/iter (+/- 32)
test rgb_to_hsv_row/simd/1920 ... bench:       3,878 ns/iter (+/- 5)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,071 ns/iter (+/- 110)
test rgb_to_hsv_row/simd/3840 ... bench:       7,761 ns/iter (+/- 20)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,560 ns/iter (+/- 16)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,004 ns/iter (+/- 1)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,898 ns/iter (+/- 34)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,505 ns/iter (+/- 1)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,768 ns/iter (+/- 412)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,012 ns/iter (+/- 6)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,850 ns/iter (+/- 141)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         991 ns/iter (+/- 35)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,343 ns/iter (+/- 510)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,492 ns/iter (+/- 60)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,801 ns/iter (+/- 218)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,977 ns/iter (+/- 113)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,826 ns/iter (+/- 14)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,027 ns/iter (+/- 4)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,285 ns/iter (+/- 15)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,531 ns/iter (+/- 6)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,619 ns/iter (+/- 68)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,069 ns/iter (+/- 8)

Benchmark Results for ubuntu-x86_64-scalar

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: scalar
  • Runner: GitHub Actions 1000009316
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_force_scalar
  • Date: 2026-04-19 09:40:38 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,504 ns/iter (+/- 110)
test nv12_to_rgb_row/simd/1280 ... bench:       4,509 ns/iter (+/- 118)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,817 ns/iter (+/- 31)
test nv12_to_rgb_row/simd/1920 ... bench:       6,851 ns/iter (+/- 265)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,563 ns/iter (+/- 52)
test nv12_to_rgb_row/simd/3840 ... bench:      14,130 ns/iter (+/- 296)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,700 ns/iter (+/- 47)
test nv21_to_rgb_row/simd/1280 ... bench:       4,706 ns/iter (+/- 164)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,805 ns/iter (+/- 29)
test nv21_to_rgb_row/simd/1920 ... bench:       6,795 ns/iter (+/- 134)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,613 ns/iter (+/- 235)
test nv21_to_rgb_row/simd/3840 ... bench:      13,568 ns/iter (+/- 209)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,613 ns/iter (+/- 64)
test p010_to_rgb_row/u8_simd/1280 ... bench:       4,594 ns/iter (+/- 59)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,899 ns/iter (+/- 27)
test p010_to_rgb_row/u8_simd/1920 ... bench:       6,899 ns/iter (+/- 18)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,848 ns/iter (+/- 237)
test p010_to_rgb_row/u8_simd/3840 ... bench:      13,812 ns/iter (+/- 96)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,494 ns/iter (+/- 15)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       4,502 ns/iter (+/- 13)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,772 ns/iter (+/- 256)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       6,770 ns/iter (+/- 234)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,538 ns/iter (+/- 65)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:      13,533 ns/iter (+/- 33)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,767 ns/iter (+/- 39)
test rgb_to_hsv_row/simd/1280 ... bench:       4,764 ns/iter (+/- 6)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,857 ns/iter (+/- 48)
test rgb_to_hsv_row/simd/1920 ... bench:       6,855 ns/iter (+/- 17)
test rgb_to_hsv_row/scalar/3840 ... bench:      13,819 ns/iter (+/- 226)
test rgb_to_hsv_row/simd/3840 ... bench:      13,744 ns/iter (+/- 181)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,824 ns/iter (+/- 185)
test yuv_420_to_rgb_row/simd/1280 ... bench:       4,822 ns/iter (+/- 86)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       7,274 ns/iter (+/- 38)
test yuv_420_to_rgb_row/simd/1920 ... bench:       7,275 ns/iter (+/- 112)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      14,579 ns/iter (+/- 144)
test yuv_420_to_rgb_row/simd/3840 ... bench:      14,561 ns/iter (+/- 173)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,854 ns/iter (+/- 37)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:       4,854 ns/iter (+/- 99)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,333 ns/iter (+/- 20)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       7,361 ns/iter (+/- 184)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,746 ns/iter (+/- 109)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:      14,824 ns/iter (+/- 33)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,622 ns/iter (+/- 28)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       4,619 ns/iter (+/- 276)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,992 ns/iter (+/- 102)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       6,995 ns/iter (+/- 46)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,100 ns/iter (+/- 64)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:      14,141 ns/iter (+/- 110)

Benchmark Results for ubuntu-x86_64-sse41-max

System Information

  • OS: ubuntu-latest
  • Arch: x86_64
  • SIMD tier: sse41-max
  • Runner: GitHub Actions 1000009329
  • Runner arch (GH): X64
  • RUSTFLAGS: --cfg colconv_disable_avx512 --cfg colconv_disable_avx2
  • Date: 2026-04-19 09:42:47 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,647 ns/iter (+/- 95)
test nv12_to_rgb_row/simd/1280 ... bench:         885 ns/iter (+/- 1)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,932 ns/iter (+/- 15)
test nv12_to_rgb_row/simd/1920 ... bench:       1,331 ns/iter (+/- 2)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,889 ns/iter (+/- 89)
test nv12_to_rgb_row/simd/3840 ... bench:       2,660 ns/iter (+/- 2)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,601 ns/iter (+/- 83)
test nv21_to_rgb_row/simd/1280 ... bench:         880 ns/iter (+/- 20)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,924 ns/iter (+/- 14)
test nv21_to_rgb_row/simd/1920 ... bench:       1,325 ns/iter (+/- 1)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,838 ns/iter (+/- 32)
test nv21_to_rgb_row/simd/3840 ... bench:       2,645 ns/iter (+/- 3)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,743 ns/iter (+/- 17)
test p010_to_rgb_row/u8_simd/1280 ... bench:         945 ns/iter (+/- 0)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       7,158 ns/iter (+/- 19)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,423 ns/iter (+/- 1)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      14,300 ns/iter (+/- 42)
test p010_to_rgb_row/u8_simd/3840 ... bench:       2,841 ns/iter (+/- 2)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,528 ns/iter (+/- 71)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,154 ns/iter (+/- 6)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       6,817 ns/iter (+/- 99)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       1,740 ns/iter (+/- 32)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      13,610 ns/iter (+/- 31)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,478 ns/iter (+/- 40)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,627 ns/iter (+/- 14)
test rgb_to_hsv_row/simd/1280 ... bench:       2,563 ns/iter (+/- 3)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,953 ns/iter (+/- 34)
test rgb_to_hsv_row/simd/1920 ... bench:       3,850 ns/iter (+/- 19)
test rgb_to_hsv_row/scalar/3840 ... bench:      13,903 ns/iter (+/- 172)
test rgb_to_hsv_row/simd/3840 ... bench:       7,689 ns/iter (+/- 8)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,581 ns/iter (+/- 12)
test yuv_420_to_rgb_row/simd/1280 ... bench:         904 ns/iter (+/- 1)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       6,937 ns/iter (+/- 23)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,360 ns/iter (+/- 5)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      13,843 ns/iter (+/- 42)
test yuv_420_to_rgb_row/simd/3840 ... bench:       2,713 ns/iter (+/- 2)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,620 ns/iter (+/- 46)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         842 ns/iter (+/- 0)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       6,996 ns/iter (+/- 17)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,262 ns/iter (+/- 1)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,076 ns/iter (+/- 76)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,517 ns/iter (+/- 7)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,827 ns/iter (+/- 31)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,103 ns/iter (+/- 2)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,308 ns/iter (+/- 17)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,658 ns/iter (+/- 2)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,788 ns/iter (+/- 188)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,313 ns/iter (+/- 2)

Benchmark Results for windows-x86_64-default

System Information

  • OS: windows-latest
  • Arch: x86_64
  • SIMD tier: default
  • Runner: GitHub Actions 1000009312
  • Runner arch (GH): X64
  • RUSTFLAGS: ``
  • Date: 2026-04-19 09:43:04 UTC

all

test nv12_to_rgb_row/scalar/1280 ... bench:       4,390 ns/iter (+/- 18)
test nv12_to_rgb_row/simd/1280 ... bench:       1,128 ns/iter (+/- 203)
test nv12_to_rgb_row/scalar/1920 ... bench:       6,603 ns/iter (+/- 33)
test nv12_to_rgb_row/simd/1920 ... bench:       1,683 ns/iter (+/- 14)
test nv12_to_rgb_row/scalar/3840 ... bench:      13,728 ns/iter (+/- 550)
test nv12_to_rgb_row/simd/3840 ... bench:       3,374 ns/iter (+/- 43)
test nv21_to_rgb_row/scalar/1280 ... bench:       4,544 ns/iter (+/- 165)
test nv21_to_rgb_row/simd/1280 ... bench:       1,124 ns/iter (+/- 9)
test nv21_to_rgb_row/scalar/1920 ... bench:       6,813 ns/iter (+/- 56)
test nv21_to_rgb_row/simd/1920 ... bench:       1,680 ns/iter (+/- 12)
test nv21_to_rgb_row/scalar/3840 ... bench:      13,664 ns/iter (+/- 566)
test nv21_to_rgb_row/simd/3840 ... bench:       3,376 ns/iter (+/- 38)
test p010_to_rgb_row/u8_scalar/1280 ... bench:       4,529 ns/iter (+/- 83)
test p010_to_rgb_row/u8_simd/1280 ... bench:       1,176 ns/iter (+/- 5)
test p010_to_rgb_row/u8_scalar/1920 ... bench:       6,781 ns/iter (+/- 450)
test p010_to_rgb_row/u8_simd/1920 ... bench:       1,760 ns/iter (+/- 7)
test p010_to_rgb_row/u8_scalar/3840 ... bench:      13,539 ns/iter (+/- 597)
test p010_to_rgb_row/u8_simd/3840 ... bench:       3,524 ns/iter (+/- 24)
test p010_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,724 ns/iter (+/- 343)
test p010_to_rgb_u16_row/u16_simd/1280 ... bench:       1,233 ns/iter (+/- 82)
test p010_to_rgb_u16_row/u16_scalar/1920 ... bench:       8,800 ns/iter (+/- 692)
test p010_to_rgb_u16_row/u16_simd/1920 ... bench:       2,147 ns/iter (+/- 147)
test p010_to_rgb_u16_row/u16_scalar/3840 ... bench:      17,485 ns/iter (+/- 1,824)
test p010_to_rgb_u16_row/u16_simd/3840 ... bench:       3,675 ns/iter (+/- 73)
test rgb_to_hsv_row/scalar/1280 ... bench:       4,676 ns/iter (+/- 552)
test rgb_to_hsv_row/simd/1280 ... bench:       2,627 ns/iter (+/- 78)
test rgb_to_hsv_row/scalar/1920 ... bench:       6,995 ns/iter (+/- 50)
test rgb_to_hsv_row/simd/1920 ... bench:       3,896 ns/iter (+/- 18)
test rgb_to_hsv_row/scalar/3840 ... bench:      14,322 ns/iter (+/- 274)
test rgb_to_hsv_row/simd/3840 ... bench:       7,791 ns/iter (+/- 57)
test yuv_420_to_rgb_row/scalar/1280 ... bench:       4,619 ns/iter (+/- 35)
test yuv_420_to_rgb_row/simd/1280 ... bench:       1,015 ns/iter (+/- 25)
test yuv_420_to_rgb_row/scalar/1920 ... bench:       7,009 ns/iter (+/- 735)
test yuv_420_to_rgb_row/simd/1920 ... bench:       1,522 ns/iter (+/- 32)
test yuv_420_to_rgb_row/scalar/3840 ... bench:      14,017 ns/iter (+/- 768)
test yuv_420_to_rgb_row/simd/3840 ... bench:       3,034 ns/iter (+/- 87)
test yuv420p10_to_rgb_row/u8_scalar/1280 ... bench:       4,663 ns/iter (+/- 550)
test yuv420p10_to_rgb_row/u8_simd/1280 ... bench:         999 ns/iter (+/- 9)
test yuv420p10_to_rgb_row/u8_scalar/1920 ... bench:       7,106 ns/iter (+/- 573)
test yuv420p10_to_rgb_row/u8_simd/1920 ... bench:       1,496 ns/iter (+/- 19)
test yuv420p10_to_rgb_row/u8_scalar/3840 ... bench:      14,247 ns/iter (+/- 901)
test yuv420p10_to_rgb_row/u8_simd/3840 ... bench:       2,989 ns/iter (+/- 42)
test yuv420p10_to_rgb_u16_row/u16_scalar/1280 ... bench:       4,771 ns/iter (+/- 698)
test yuv420p10_to_rgb_u16_row/u16_simd/1280 ... bench:       1,029 ns/iter (+/- 12)
test yuv420p10_to_rgb_u16_row/u16_scalar/1920 ... bench:       7,207 ns/iter (+/- 436)
test yuv420p10_to_rgb_u16_row/u16_simd/1920 ... bench:       1,540 ns/iter (+/- 23)
test yuv420p10_to_rgb_u16_row/u16_scalar/3840 ... bench:      14,535 ns/iter (+/- 1,162)
test yuv420p10_to_rgb_u16_row/u16_simd/3840 ... bench:       3,076 ns/iter (+/- 216)

View detailed results

Detailed Criterion results have been uploaded as artifacts. Download them from the workflow run to view charts and detailed statistics.

@uqio uqio merged commit 86be131 into main Apr 19, 2026
58 of 71 checks passed
@uqio uqio deleted the feat/p010 branch April 19, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants