d3d12: Implement cap PIPE_VIDEO_SUPPORTS_CONTIGUOUS_PLANES_MAP
authorSil Vilerino <sivileri@microsoft.com>
Mon, 29 Aug 2022 16:43:03 +0000 (12:43 -0400)
committerMarge Bot <emma+marge@anholt.net>
Mon, 29 Aug 2022 20:01:01 +0000 (20:01 +0000)
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 <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18300>

src/gallium/drivers/d3d12/d3d12_video_screen.cpp

index a5b8cd3..eb64982 100644 (file)
@@ -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;