diff options
author | Sil Vilerino <sivileri@microsoft.com> | 2023-03-03 13:00:57 -0500 |
---|---|---|
committer | Eric Engestrom <eric@engestrom.ch> | 2023-03-08 18:00:15 +0000 |
commit | ca25ff5d50dead6d1f151bfd77a06afa45f6deff (patch) | |
tree | f8f16529534b20df13320dca6f103f4ad01654ed | |
parent | 488db14f21bc91d75b46a682ddc9fd741fed7ee8 (diff) | |
download | mesa-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.json | 2 | ||||
-rw-r--r-- | src/gallium/drivers/d3d12/d3d12_video_dec_vp9.cpp | 10 |
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++) |