frontends/va: add VASurfaceAttribUsageHint attribute
authorLeo Liu <leo.liu@amd.com>
Thu, 22 Apr 2021 18:32:48 +0000 (14:32 -0400)
committerMarge Bot <eric+marge@anholt.net>
Thu, 22 Apr 2021 18:55:15 +0000 (18:55 +0000)
Chrome browser has been calling this attribute to give driver the surface
usage hint. The hints include:
   VA_SURFACE_ATTRIB_USAGE_HINT_GENERIC
   VA_SURFACE_ATTRIB_USAGE_HINT_DECODER
   VA_SURFACE_ATTRIB_USAGE_HINT_ENCODER
   VA_SURFACE_ATTRIB_USAGE_HINT_VPP_READ
   VA_SURFACE_ATTRIB_USAGE_HINT_VPP_WRITE
   VA_SURFACE_ATTRIB_USAGE_HINT_DISPLAY
   VA_SURFACE_ATTRIB_USAGE_HINT_EXPORT

The surface allocation are generic for us, and we don't need to specify
it. To add the attribute here is because we don't want application which
is calling this attribute to end up returning error and getting no surface
allocated.

Fixes: ebab310987 ("frontends/va: improve surface attribs processing")

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

src/gallium/frontends/va/surface.c

index 1110f3e..574299d 100644 (file)
@@ -772,6 +772,10 @@ vlVaCreateSurfaces2(VADriverContextP ctx, unsigned int format,
          modifiers_count = modifier_list->num_modifiers;
          break;
 #endif
+      case VASurfaceAttribUsageHint:
+         if (attrib_list[i].value.type != VAGenericValueTypeInteger)
+            return VA_STATUS_ERROR_INVALID_PARAMETER;
+         break;
       default:
          return VA_STATUS_ERROR_ATTR_NOT_SUPPORTED;
       }