frontends/va: Reallocate p010 buffer for AV1 10 bits decode
authorLeo Liu <leo.liu@amd.com>
Sat, 7 Aug 2021 21:09:55 +0000 (17:09 -0400)
committerLeo Liu <leo.liu@amd.com>
Fri, 13 Aug 2021 13:24:01 +0000 (09:24 -0400)
Check bit depth and reallocate p010 buffer if it's 10 bits.

Signed-off-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Boyuan Zhang <Boyuan.Zhang@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12307>

src/gallium/frontends/va/picture.c

index 6af7397..5a5792e 100644 (file)
@@ -741,6 +741,14 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID context_id)
       realloc = true;
    }
 
+   if (u_reduce_video_profile(context->templat.profile) == PIPE_VIDEO_FORMAT_AV1 &&
+       surf->buffer->buffer_format == PIPE_FORMAT_NV12) {
+      if (context->desc.av1.picture_parameter.bit_depth_idx == 1) {
+         surf->templat.buffer_format = PIPE_FORMAT_P010;
+         realloc = true;
+      }
+   }
+
    if (realloc) {
       struct pipe_video_buffer *old_buf = surf->buffer;