So that it makes more clear for buffer reallocation based
on buffers layout for both decoder and encoder.

Signed-off-by: Leo Liu <leo....@amd.com>
---
 src/gallium/state_trackers/va/picture.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/gallium/state_trackers/va/picture.c 
b/src/gallium/state_trackers/va/picture.c
index 47e63d3b30..ee099fad6e 100644
--- a/src/gallium/state_trackers/va/picture.c
+++ b/src/gallium/state_trackers/va/picture.c
@@ -591,7 +591,7 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID context_id)
    vlVaSurface *surf;
    void *feedback;
    struct pipe_screen *screen;
-   bool interlaced;
+   bool supported;
    bool realloc = false;
    enum pipe_format format;
 
@@ -621,14 +621,17 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID 
context_id)
    context->mpeg4.frame_num++;
 
    screen = context->decoder->context->screen;
-   interlaced = screen->get_video_param(screen, context->decoder->profile,
-                                        context->decoder->entrypoint,
-                                        PIPE_VIDEO_CAP_SUPPORTS_INTERLACED);
-
-   if (surf->buffer->interlaced != interlaced) {
-      surf->templat.interlaced = screen->get_video_param(screen, 
context->decoder->profile,
-                                                         
PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
-                                                         
PIPE_VIDEO_CAP_PREFERS_INTERLACED);
+   supported = screen->get_video_param(screen, context->decoder->profile,
+                                       context->decoder->entrypoint,
+                                       surf->buffer->interlaced ?
+                                       PIPE_VIDEO_CAP_SUPPORTS_INTERLACED :
+                                       PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE);
+
+   if (!supported) {
+      surf->templat.interlaced = screen->get_video_param(screen,
+                                       context->decoder->profile,
+                                       context->decoder->entrypoint,
+                                       PIPE_VIDEO_CAP_PREFERS_INTERLACED);
       realloc = true;
    }
 
-- 
2.11.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to