st/va: set default rt formats when calling vaCreateConfig
authorJulien Isorce <j.isorce@samsung.com>
Mon, 17 Oct 2016 16:33:36 +0000 (17:33 +0100)
committerJulien Isorce <j.isorce@samsung.com>
Tue, 18 Oct 2016 07:44:14 +0000 (08:44 +0100)
As specified in va.h, default value should be set on attributes
not present in the input list.

Signed-off-by: Julien Isorce <j.isorce@samsung.com>
Reviewed-by: Mark Thompson <sw@jkqxz.net>
src/gallium/state_trackers/va/config.c
src/gallium/state_trackers/va/surface.c

index 2f96eb6cedf65751deb5f36e46a9b6195b81d0bc..da52a58c5db16f2994236590d0ab7750cc16da4b 100644 (file)
@@ -195,6 +195,11 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoin
             }
          }
       }
+
+      /* Default value if not specified in the input attributes. */
+      if (!config->rt_format)
+         config->rt_format = VA_RT_FORMAT_YUV420 | VA_RT_FORMAT_RGB32;
+
       pipe_mutex_lock(drv->mutex);
       *config_id = handle_table_add(drv->htab, config);
       pipe_mutex_unlock(drv->mutex);
@@ -256,6 +261,10 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, VAEntrypoint entrypoin
       }
    }
 
+   /* Default value if not specified in the input attributes. */
+   if (!config->rt_format)
+      config->rt_format = VA_RT_FORMAT_YUV420;
+
    pipe_mutex_lock(drv->mutex);
    *config_id = handle_table_add(drv->htab, config);
    pipe_mutex_unlock(drv->mutex);
index 5e929803b015776af90beee6aa79ddbf237c61cd..f8513d93e021298485682d0c864f7b6dd131693e 100644 (file)
@@ -419,7 +419,7 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id,
    /* vlVaCreateConfig returns PIPE_VIDEO_PROFILE_UNKNOWN
     * only for VAEntrypointVideoProc. */
    if (config->profile == PIPE_VIDEO_PROFILE_UNKNOWN) {
-      if (config->rt_format == VA_RT_FORMAT_RGB32) {
+      if (config->rt_format & VA_RT_FORMAT_RGB32) {
          for (j = 0; j < ARRAY_SIZE(vpp_surface_formats); ++j) {
             attribs[i].type = VASurfaceAttribPixelFormat;
             attribs[i].value.type = VAGenericValueTypeInteger;
@@ -427,7 +427,8 @@ vlVaQuerySurfaceAttributes(VADriverContextP ctx, VAConfigID config_id,
             attribs[i].value.value.i = PipeFormatToVaFourcc(vpp_surface_formats[j]);
             i++;
          }
-      } else if (config->rt_format == VA_RT_FORMAT_YUV420) {
+      }
+      if (config->rt_format & VA_RT_FORMAT_YUV420) {
          attribs[i].type = VASurfaceAttribPixelFormat;
          attribs[i].value.type = VAGenericValueTypeInteger;
          attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;