From e2472db43bd28d79558529467bd3e31bb9f3c7ef Mon Sep 17 00:00:00 2001 From: Sil Vilerino Date: Mon, 29 Aug 2022 12:43:03 -0400 Subject: [PATCH] d3d12: Implement cap PIPE_VIDEO_SUPPORTS_CONTIGUOUS_PLANES_MAP Reports d3d12 support for mapping all the contiguous planes. This will be used by vaDeriveImage in the VA frontend Fixes: a585d95803ca38d42b893603a85bf6442a54838a ("radeonsi/vcn: WA 10bit encoding crash in vaapi") Reviewed-by: Ruijing Dong Part-of: (cherry picked from commit a1f904f7a3de33299932645296d481cda2163683) --- .pick_status.json | 2 +- src/gallium/drivers/d3d12/d3d12_video_screen.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 98e80381463..24cc6e9a182 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -22558,7 +22558,7 @@ "description": "d3d12: Implement cap PIPE_VIDEO_SUPPORTS_CONTIGUOUS_PLANES_MAP", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a585d95803ca38d42b893603a85bf6442a54838a" }, diff --git a/src/gallium/drivers/d3d12/d3d12_video_screen.cpp b/src/gallium/drivers/d3d12/d3d12_video_screen.cpp index a5b8cd323b4..eb649823ba0 100644 --- a/src/gallium/drivers/d3d12/d3d12_video_screen.cpp +++ b/src/gallium/drivers/d3d12/d3d12_video_screen.cpp @@ -535,6 +535,8 @@ d3d12_screen_get_video_param_decode(struct pipe_screen *pscreen, return true; case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: return true; + case PIPE_VIDEO_SUPPORTS_CONTIGUOUS_PLANES_MAP: + return true; break; default: debug_printf("[d3d12_screen_get_video_param] unknown video param: %d\n", param); @@ -608,6 +610,7 @@ d3d12_screen_get_video_param_postproc(struct pipe_screen *pscreen, case PIPE_VIDEO_CAP_PREFERED_FORMAT: case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED: case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: + case PIPE_VIDEO_SUPPORTS_CONTIGUOUS_PLANES_MAP: case PIPE_VIDEO_CAP_VPP_MAX_INPUT_WIDTH: case PIPE_VIDEO_CAP_VPP_MAX_INPUT_HEIGHT: case PIPE_VIDEO_CAP_VPP_MIN_INPUT_WIDTH: @@ -652,6 +655,8 @@ d3d12_screen_get_video_param_postproc(struct pipe_screen *pscreen, return supportCaps.InputSample.Width; } else if (param == PIPE_VIDEO_CAP_MAX_HEIGHT) { return supportCaps.InputSample.Height; + } else if (param == PIPE_VIDEO_SUPPORTS_CONTIGUOUS_PLANES_MAP) { + return true; } else if (param == PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE) { return true; } else if (param == PIPE_VIDEO_CAP_VPP_MAX_INPUT_WIDTH) { @@ -755,6 +760,8 @@ d3d12_screen_get_video_param_encode(struct pipe_screen *pscreen, return false; case PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE: return true; + case PIPE_VIDEO_SUPPORTS_CONTIGUOUS_PLANES_MAP: + return true; default: debug_printf("[d3d12_screen_get_video_param] unknown video param: %d\n", param); return 0;