hw: surface import_raw failures (diagnose washed-out 10-bit HDR)

A failed DMA-BUF import returned None silently → core falls back to software,
whose RGBA path does no BT.2020→709 gamut conversion, so HDR clips render washed
out. The detection log fires before import_raw, so it didn't reveal this. Log the
actual import error (with ten_bit) instead of swallowing it, to confirm whether
10-bit P010 import is failing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Skyler Lehmkuhl 2026-06-26 03:59:39 -04:00
parent 7c2ac0e4d8
commit 28b14b2ad0
1 changed files with 9 additions and 1 deletions

View File

@ -133,7 +133,15 @@ impl HwVideoImporter for SharedHwImporter {
let imported = dmabuf::import_raw(&self.device, &self.adapter, &buf); let imported = dmabuf::import_raw(&self.device, &self.adapter, &buf);
ff::av_frame_free(&mut (drm_f as *mut _)); // the fd was dup'd into Vulkan ff::av_frame_free(&mut (drm_f as *mut _)); // the fd was dup'd into Vulkan
let (y, uv) = imported.ok()?.into_planes(); let (y, uv) = match imported {
Ok(t) => t.into_planes(),
Err(e) => {
// Surface the failure: a silent None here makes core fall back to software (no gamut
// conversion → BT.2020 looks washed out). 10-bit P010 import is the likely culprit.
eprintln!("[hw_video] import_raw failed (ten_bit={ten_bit}): {e}");
return None;
}
};
Some(GpuVideoFrame { Some(GpuVideoFrame {
y: Arc::new(y), y: Arc::new(y),
uv: Arc::new(uv), uv: Arc::new(uv),