summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSil Vilerino <sivileri@microsoft.com>2023-03-03 13:00:57 -0500
committerEric Engestrom <eric@engestrom.ch>2023-03-08 18:00:15 +0000
commitca25ff5d50dead6d1f151bfd77a06afa45f6deff (patch)
treef8f16529534b20df13320dca6f103f4ad01654ed
parent488db14f21bc91d75b46a682ddc9fd741fed7ee8 (diff)
downloadmesa-ca25ff5d50dead6d1f151bfd77a06afa45f6deff.tar.gz
d3d12: VP9 Decode - Fix use_prev_in_find_mvs_refs calculation
Fixes: c8e8ce83 ("d3d12: Add VP9 Decode support") Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21694> (cherry picked from commit fb82371558a5f8c0293079e2de292e7723c90915)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/drivers/d3d12/d3d12_video_dec_vp9.cpp10
2 files changed, 9 insertions, 3 deletions
diff --git a/.pick_status.json b/.pick_status.json
index b30f88c7460..d70615377d8 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -2398,7 +2398,7 @@
"description": "d3d12: VP9 Decode - Fix use_prev_in_find_mvs_refs calculation",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "c8e8ce8359ceb9161ac05cf48b15e2e6a298ebd6"
},
diff --git a/src/gallium/drivers/d3d12/d3d12_video_dec_vp9.cpp b/src/gallium/drivers/d3d12/d3d12_video_dec_vp9.cpp
index 816343828d6..0e7c5b45c35 100644
--- a/src/gallium/drivers/d3d12/d3d12_video_dec_vp9.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_video_dec_vp9.cpp
@@ -348,10 +348,16 @@ d3d12_video_decoder_dxva_picparams_from_pipe_picparams_vp9(
dxvaStructure.filter_level = pipe_vp9->picture_parameter.filter_level;
dxvaStructure.sharpness_level = pipe_vp9->picture_parameter.sharpness_level;
- bool use_last_frame_mvs = !pipe_vp9->picture_parameter.pic_fields.error_resilient_mode && pipe_vp9->picture_parameter.pic_fields.show_frame;
+ bool use_prev_in_find_mv_refs =
+ !pipe_vp9->picture_parameter.pic_fields.error_resilient_mode &&
+ !(pipe_vp9->picture_parameter.pic_fields.frame_type == 0 /*KEY_FRAME*/ || pipe_vp9->picture_parameter.pic_fields.intra_only) &&
+ pipe_vp9->picture_parameter.pic_fields.prev_show_frame &&
+ pipe_vp9->picture_parameter.frame_width == pipe_vp9->picture_parameter.prev_frame_width &&
+ pipe_vp9->picture_parameter.frame_height == pipe_vp9->picture_parameter.prev_frame_height;
+
dxvaStructure.wControlInfoFlags = (pipe_vp9->picture_parameter.mode_ref_delta_enabled << 0) |
(pipe_vp9->picture_parameter.mode_ref_delta_update << 1) |
- (use_last_frame_mvs << 2) |
+ (use_prev_in_find_mv_refs << 2) |
(0 << 3);
for (uint32_t i = 0; i < 4; i++)