33 Commits
Author SHA1 Message Date
dancingmirrors cd91e8f22f hasvk: Remove now unreachable layered clamping. 2026-07-21 22:25:28 +03:00
dancingmirrors 409568b8d4 hasvk: We can use ARYSPC_LOD0 for layered DPB. 2026-07-21 22:25:28 +03:00
dancingmirrors 49447ce96e hasvk: Expose HASVK_DEBUG=video-debug and clean it up. 2026-07-21 22:25:28 +03:00
dancingmirrors c9dcef66aa hasvk: Emit MFX_AVC_WEIGHTOFFSET_STATE for both list 0 and list 1.
Fixes Haswell corruption with https://files.lynne.ee/testsamples/bbc2.sample.h264.
This is the correct thing to do anyway and only worked on Ivy Bridge by accident.

Assisted-by: Claude
2026-07-21 22:25:27 +03:00
dancingmirrors 1d4d7c0650 hasvk: Haswell doesn't have the same DMV buffer as earlier generations. 2026-07-21 22:25:27 +03:00
dancingmirrors 564cead081 hasvk: Without a QPitch override gen7 can't reliably handle layered DPB.
Just accept corruption and avoid intermittent hangs when not tile aligned.
Breaks: dEQP-VK.video.decode.h264.interleaved_layered_dpb_video_layout

Assisted-by: Claude
2026-07-21 22:25:27 +03:00
dancingmirrors 4204b5ff5b hasvk: Initial layered DPB support and plenty of debug output.
Assisted-by: Claude
2026-07-21 22:25:27 +03:00
dancingmirrors 72177c94e1 hasvk: Fix the length in MFX_AVC_SLICE_STATE. 2026-07-21 22:25:26 +03:00
dancingmirrors 083ee5051c hasvk: Properly handle complementary field pairs.
The else branch here was also unreachable.
Fixes the poisoned first field in https://files.lynne.ee/testsamples/bbc2.sample.h264.

Assisted-by: Claude
2026-07-21 22:25:26 +03:00
dancingmirrors 22ce819de6 hasvk: Account for unsupported shaderStorageImageReadWithoutFormat.
When mpv creates the bwdif_vulkan filter we can sometimes see
exactly what's happening:
shaderStorageImageReadWithoutFormat support is false, but
shaderStorageImageWriteWithoutFormat support is true.
SPIR-V complains and then the GPU hangs since elk can't do the
necessary lowering. See here:
if (var->data.image.format == PIPE_FORMAT_NONE)
   return false;
To make deinterlacing work again the fix probably needs to be in
FFmpeg. See its commit 779763181f85bf25c53af5789d8b9b99d3bb0d1d.

Assisted-by: Claude
2026-07-21 22:25:26 +03:00
dancingmirrors cd1018d5ea hasvk: Advertise VK_KHR_internally_synchronized_queues.
Advertise the extension and feature and accept the internally synchronized
queue create flag. FFmpeg has deprecated its own queue locking mechanism.

Assisted-by: Claude
2026-07-21 22:25:26 +03:00
dancingmirrors 2e5cca4d05 hasvk: Properly handle interlaced video.
There was no handling here at all so the GPU would just hang immediately.

Assisted-by: Claude
2026-07-21 22:25:25 +03:00
dancingmirrors a7089e8341 hasvk: Clamp several MFX_AVC_IMG_STATE fields in case the slice parser fails us.
Also cap the reference frame count at the supported 16.

Assisted-by: Claude
2026-07-21 22:25:25 +03:00
dancingmirrors 4a162aa46b hasvk: Range check and fail the parse upon lost bit alignment in the slice parser.
Assisted-by: Claude
2026-07-21 22:25:25 +03:00
dancingmirrors fac6387b34 hasvk: Account for frames wider than 128 MBs on gen7.
Fixes corruption and GPU hangs observed with a 4096 wide video.

Assisted-by: Claude
2026-07-21 22:25:25 +03:00
dancingmirrors bd3d4fc732 hasvk: Gate video decode behind HASVK_DEBUG=video-decode.
Assisted-by: Claude
2026-07-21 22:25:24 +03:00
dancingmirrors 31fd4c3ded hasvk: Simplify get_h264_video_session_mem_reqs.
Based on ANV code but with the same alignment of 64.

Assisted-by: Claude
2026-07-21 22:25:24 +03:00
dancingmirrors 3d258cbaf7 hasvk: Gate video decode behind VIDEO_CODEC_H264DEC so we don't advertise it without the codec.
Assisted-by: Claude
2026-07-21 22:25:24 +03:00
dancingmirrors a2727d71b6 hasvk: Neutralize the unwritten chroma with monochrome video.
Otherwise we sample garbage with, say, yuvj420p.

Assisted-by: Claude
2026-07-21 22:25:23 +03:00
dancingmirrors 881ec70b2f hasvk: Expose VK_KHR_video_maintenance1 and VK_KHR_video_maintenance2.
Assisted-by: Claude
2026-07-21 22:25:23 +03:00
dancingmirrors 0f70099a69 hasvk: Reject result status queries on the video decode queue.
Inline queries enabled by video_maintenance1 would just lock up my
machine and I'm not sure a proper workaround exists.

A few nits while here.

Assisted-by: Claude
2026-07-21 22:25:23 +03:00
dancingmirrors b0d1db9406 hasvk: Work around FFmpeg commit 24db09a881c9e0eb5b36dcf693c6ac17e9d56be8.
This is mostly for old versions of the VVL.

Assisted-by: Claude
2026-07-21 22:25:23 +03:00
dancingmirrors c96439dde4 hasvk: Flesh out the video decode format support.
Assisted-by: Claude
2026-07-21 22:25:22 +03:00
dancingmirrors 23b29b1f92 hasvk: Rework H.264 decode into long mode.
This is why the previously added slice header parser exists.

Assisted-by: Claude
2026-07-21 22:08:59 +03:00
dancingmirrors c3fe6d4a87 hasvk: Rename genX_video.c to genX_cmd_video.c to match ANV. 2026-07-21 22:08:59 +03:00
dancingmirrorsandirql-notlessorequal 9dad5c1a52 hasvk: Add a slice header parser for H.264 decode.
This is required for long mode, where the driver parses the slice header
itself rather than relying on the hardware to do it.

Co-authored-by: irql-notlessorequal <[email protected]>

[dancingmirrors: Assisted-by: Claude]
2026-07-21 22:08:59 +03:00
dancingmirrors 5c6ad1fb4c hasvk: Validate profiles and harden the video session objects.
Assisted-by: Claude
2026-07-21 22:08:59 +03:00
dancingmirrors cece575042 intel/genxml: A few additions and fixes for video decode.
Assisted-by: Claude
2026-07-21 22:08:58 +03:00
dancingmirrors ed56facc56 hasvk: Drop the video queue paths for CmdSetEvent2 and CmdResetEvent2.
Assisted-by: Claude
2026-07-21 22:08:58 +03:00
dancingmirrors 878d7c9717 hasvk: Sync the per-queue-family batch decoders with current ANV.
Assisted-by: Claude
2026-07-21 22:08:58 +03:00
dancingmirrors f885682e82 hasvk: Adapt the video decode series to current conventions.
No functional change.

Assisted-by: Claude
2026-07-21 22:08:58 +03:00
dancingmirrors a5ae9c9200 hasvk: Advertise H.264 video decode.
Assisted-by: Claude
2026-07-21 21:37:26 +03:00
dancingmirrors 2766ca3284 intel/genxml: A few video decode additions. 2026-07-21 14:38:34 +03:00