Commit Graph
60 Commits
Author SHA1 Message Date
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
Dave Airlie 353385c186 fix gen7 bits
[dancingmirrors: Adapt for the current genxml format.]
2026-07-21 22:08:57 +03:00
Dave Airlie 5d68b51dca bunch of wip gfx75 fixes
[dancingmirrors: Adapt for the current genxml format.]
2026-07-21 22:08:57 +03:00
Dave Airlie 67635d1925 disable picture remapping 2026-07-21 22:08:57 +03:00
Dave Airlie 1ddc1b218a fix chroma qp offsets to be ints 2026-07-21 22:08:56 +03:00
Dave Airlie 824423d998 fix pic heights 2026-07-21 22:06:16 +03:00
Dave Airlie 0496c5dbc9 add some qm bits 2026-07-21 22:04:23 +03:00
Dave Airlie f4c05ec0dc another query fix 2026-07-21 22:02:20 +03:00
Dave Airlie 5e907af251 hasvk: fix broken break 2026-07-21 22:00:56 +03:00
Dave Airlie 1b28ad306b hasvk: maybe fix queries 2026-07-21 21:59:26 +03:00
dancingmirrors a5ae9c9200 hasvk: Advertise H.264 video decode.
Assisted-by: Claude
2026-07-21 21:37:26 +03:00
Dave Airlie bbdb233abe hasvk: enable video decode extensions 2026-07-21 21:36:06 +03:00
Dave Airlie 3a06bb4fc2 hasvk/query: add query status report 2026-07-21 21:34:40 +03:00
Dave Airlie 1db147a9ce hasvk: add initial video decode support for h264.
This just adds the files with the programming info, it doesn't
enable the extensions etc

[dancingmirrors: A few forward port fixes.]
2026-07-21 15:23:49 +03:00
Dave Airlie 4d12fc3ec6 hasvk/image: allocate some memory for mv storage after video images.
these images need motion vector storage allocated with them
2026-07-21 15:18:38 +03:00
Dave Airlie f75fb64c41 hasvk/format: handle video extensions structs by ignoring them 2026-07-21 15:16:41 +03:00
Dave Airlie 40260e83cb hasvk: add video format features for the one supported video output format 2026-07-21 15:14:49 +03:00
Dave Airlie 587311f645 hasvk: anv: set Y tiling for video decode images
The video decode hw only works with Y tiled images.
2026-07-21 15:05:04 +03:00
Dave Airlie d9147c64f6 hasvk: add video engine support in various places
[dancingmirrors: A few forward port fixes.]
2026-07-21 15:01:34 +03:00
Kenneth Graunke 203bf6b58d hasvk: Make a batch decoder for each queue family
The decoder context needs to know what engine it's associated with.
Nowadays, we have render, compute, blitter, even video engines being
used from the same driver.  Rather than trying to have a single decoder
and thwacking the engine field back and forth between calls, we make
one per queue family, and stash a pointer in anv_queue for easy access.

(Ported from anv: 79caf8a44b682f731c0fd3b941f38cc1869efe2d)

[dancingmirrors: Adapted for elk.]
2026-07-21 14:54:59 +03:00
dancingmirrors 2766ca3284 intel/genxml: A few video decode additions. 2026-07-21 14:38:34 +03:00
Nanley Chery 3126a5ef30 hasvk: Delete enum anv_depth_reg_mode
This is only used on gfx12+.

Reviewed-by: Lionel Landwerlin <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42394>
2026-07-21 14:29:22 +03:00
Alyssa Rosenzweig 1393b91322 hasvk: use vk_standard_sample_locations
instead of the Intel custom code.

Signed-off-by: Alyssa Rosenzweig <[email protected]>
Reviewed-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42910>
2026-07-21 14:26:37 +03:00
elwrcl 7e82b85d19 wip: crocus/rusticl/elk/hasvk local changes before h264 cherry-pick 2026-07-21 14:26:36 +03:00