Module: Mesa
Branch: staging/22.2
Commit: e2472db43bd28d79558529467bd3e31bb9f3c7ef
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e2472db43bd28d79558529467bd3e31bb9f3c7ef

Author: Sil Vilerino <[email protected]>
Date:   Mon Aug 29 12:43:03 2022 -0400

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 <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18300>
(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;

Reply via email to