frontends/va: Return P010/P016 as possible surface formats when encoding
authorThong Thai <thong.thai@amd.com>
Thu, 22 Oct 2020 01:54:57 +0000 (21:54 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 23 Oct 2020 00:14:42 +0000 (00:14 +0000)
When gstreamer's vaapih265enc queries for possible surface formats, it
only queries using VA_RT_FORMAT_YUV420, so add P010 and P016 as possible
surface formats to enable 10-bit/16-bit encoding.

Signed-off-by: Thong Thai <thong.thai@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7268>

src/gallium/frontends/va/surface.c

index 368b1cb..c396b15 100644 (file)
@@ -484,7 +484,9 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id,
       attribs[i].value.value.i = VA_FOURCC_NV12;
       i++;
    }
-   if (config->rt_format & VA_RT_FORMAT_YUV420_10BPP) {
+   if (config->rt_format & VA_RT_FORMAT_YUV420_10 ||
+       (config->rt_format & VA_RT_FORMAT_YUV420 &&
+        config->entrypoint == PIPE_VIDEO_ENTRYPOINT_ENCODE)) {
       attribs[i].type = VASurfaceAttribPixelFormat;
       attribs[i].value.type = VAGenericValueTypeInteger;
       attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;