summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSil Vilerino <sivileri@microsoft.com>2023-03-03 13:00:25 -0500
committerEric Engestrom <eric@engestrom.ch>2023-03-08 18:00:15 +0000
commit488db14f21bc91d75b46a682ddc9fd741fed7ee8 (patch)
tree1137c7899201339bec4babf00af66bc7ee8b7d8c
parentb8a0400d6a2e8b771af149f45061fd09f8af2ab8 (diff)
downloadmesa-488db14f21bc91d75b46a682ddc9fd741fed7ee8.tar.gz
frontend/va: Keep track of some VP9 previous frame data for current frame use_prev_in_find_mvs_refs
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 6fea823dc0a3accfc6e0cdae26ac88a08b806c61)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/frontends/va/picture_vp9.c3
-rw-r--r--src/gallium/include/pipe/p_video_state.h3
3 files changed, 7 insertions, 1 deletions
diff --git a/.pick_status.json b/.pick_status.json
index eaa3dfe7ce8..b30f88c7460 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -2407,7 +2407,7 @@
"description": "frontend/va: Keep track of some VP9 previous frame data for current frame use_prev_in_find_mvs_refs",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "c8e8ce8359ceb9161ac05cf48b15e2e6a298ebd6"
},
diff --git a/src/gallium/frontends/va/picture_vp9.c b/src/gallium/frontends/va/picture_vp9.c
index 3d5189a67da..ff3da929f0b 100644
--- a/src/gallium/frontends/va/picture_vp9.c
+++ b/src/gallium/frontends/va/picture_vp9.c
@@ -37,12 +37,15 @@ void vlVaHandlePictureParameterBufferVP9(vlVaDriver *drv, vlVaContext *context,
assert(buf->size >= sizeof(VADecPictureParameterBufferVP9) && buf->num_elements == 1);
+ context->desc.vp9.picture_parameter.prev_frame_width = context->desc.vp9.picture_parameter.frame_width;
+ context->desc.vp9.picture_parameter.prev_frame_height = context->desc.vp9.picture_parameter.frame_height;
context->desc.vp9.picture_parameter.frame_width = vp9->frame_width;
context->desc.vp9.picture_parameter.frame_height = vp9->frame_height;
context->desc.vp9.picture_parameter.pic_fields.subsampling_x = vp9->pic_fields.bits.subsampling_x;
context->desc.vp9.picture_parameter.pic_fields.subsampling_y = vp9->pic_fields.bits.subsampling_y;
context->desc.vp9.picture_parameter.pic_fields.frame_type = vp9->pic_fields.bits.frame_type;
+ context->desc.vp9.picture_parameter.pic_fields.prev_show_frame = context->desc.vp9.picture_parameter.pic_fields.show_frame;
context->desc.vp9.picture_parameter.pic_fields.show_frame = vp9->pic_fields.bits.show_frame;
context->desc.vp9.picture_parameter.pic_fields.error_resilient_mode = vp9->pic_fields.bits.error_resilient_mode;
context->desc.vp9.picture_parameter.pic_fields.intra_only = vp9->pic_fields.bits.intra_only;
diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h
index 0b7ed1ee73c..98837070421 100644
--- a/src/gallium/include/pipe/p_video_state.h
+++ b/src/gallium/include/pipe/p_video_state.h
@@ -862,12 +862,15 @@ struct pipe_vp9_picture_desc
struct {
uint16_t frame_width;
uint16_t frame_height;
+ uint16_t prev_frame_width;
+ uint16_t prev_frame_height;
struct {
uint32_t subsampling_x:1;
uint32_t subsampling_y:1;
uint32_t frame_type:1;
uint32_t show_frame:1;
+ uint32_t prev_show_frame:1;
uint32_t error_resilient_mode:1;
uint32_t intra_only:1;
uint32_t allow_high_precision_mv:1;