Skip to content

frontends/va: Only export one handle for contiguous planes

Hannes Mann requested to merge hmann/mesa:vaapi-export-contiguous-planes into main

What does this MR do and why?

Chromium's VA-API decoder requires that the driver should only export one handle containing all planes (relevant code). This prevents the decoder from working on all Gallium drivers, since vaExportSurfaceHandle returns a separate handle for every layer.

This MR adds a check for PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP. If this cap is set a handle is only exported for the first layer. resource_get_info is used to obtain offsets for other layers. Drivers that don't set this cap are unaffected.

Tested with Chromium 119 using the following command line arguments:

--use-gl=angle
--use-angle=vulkan
--enable-accelerated-video-decode
--enable-features=Vulkan,VulkanFromANGLE,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,VaapiVideoDecoder,UseMultiPlaneFormatForHardwareVideo

Hardware video acceleration can be verified by looking for VaapiVideoDecoder in chrome://media-internals or using nvtop.

Merge request reports