st/va: GetConfigAttributes: check profile and entrypoint combination
authorSatyajit Sahu <satyajit.sahu@amd.com>
Thu, 20 Feb 2020 08:35:32 +0000 (14:05 +0530)
committerMarge Bot <eric+marge@anholt.net>
Tue, 3 Mar 2020 17:06:07 +0000 (17:06 +0000)
Added check if profile is supported or not for the entrypoint in
GetConfigAttributes.

Signed-off-by: Satyajit Sahu <satyajit.sahu@amd.com>
Acked-by: Leo Liu <leo.liu@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3889>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3889>

src/gallium/state_trackers/va/config.c

index 53d50fde63fafd780da0ed967e52d00020849b1a..617ca6944c43f6275c56b71404453ddcecb56435 100644 (file)
@@ -121,7 +121,9 @@ vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint en
 
    for (i = 0; i < num_attribs; ++i) {
       unsigned int value;
-      if (entrypoint == VAEntrypointVLD) {
+      if ((entrypoint == VAEntrypointVLD) &&
+          (pscreen->get_video_param(pscreen, ProfileToPipe(profile),
+           PIPE_VIDEO_ENTRYPOINT_BITSTREAM, PIPE_VIDEO_CAP_SUPPORTED))) {
          switch (attrib_list[i].type) {
          case VAConfigAttribRTFormat:
             value = VA_RT_FORMAT_YUV420 | VA_RT_FORMAT_YUV422;
@@ -134,7 +136,9 @@ vlVaGetConfigAttributes(VADriverContextP ctx, VAProfile profile, VAEntrypoint en
             value = VA_ATTRIB_NOT_SUPPORTED;
             break;
          }
-      } else if (entrypoint == VAEntrypointEncSlice) {
+      } else if ((entrypoint == VAEntrypointEncSlice) &&
+                 (pscreen->get_video_param(pscreen, ProfileToPipe(profile),
+                  PIPE_VIDEO_ENTRYPOINT_ENCODE, PIPE_VIDEO_CAP_SUPPORTED))) {
          switch (attrib_list[i].type) {
          case VAConfigAttribRTFormat:
             value = VA_RT_FORMAT_YUV420;