On 29.10.2015 18:40, Julien Isorce wrote:
Add support for VA_PROFILE_NONE and VAEntrypointVideoProc
in the 4 following functions:

vlVaQueryConfigProfiles
vlVaQueryConfigEntrypoints
vlVaCreateConfig
vlVaQueryConfigAttributes

Signed-off-by: Julien Isorce <j.iso...@samsung.com>

Reviewed-by: Christian König <christian.koe...@amd.com>

But you should reorder the patch, e.g. commit patch #6 first and then patch #5. Otherwise we have a state where the state tracker claims to support post processing but doesn't.

Christian.

---
  src/gallium/state_trackers/va/config.c     | 20 ++++++++++++++++++++
  src/gallium/state_trackers/va/va_private.h |  7 +++++--
  2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/va/config.c 
b/src/gallium/state_trackers/va/config.c
index 5030f9e..0f47aac 100644
--- a/src/gallium/state_trackers/va/config.c
+++ b/src/gallium/state_trackers/va/config.c
@@ -52,6 +52,9 @@ vlVaQueryConfigProfiles(VADriverContextP ctx, VAProfile 
*profile_list, int *num_
              profile_list[(*num_profiles)++] = vap;
        }
+ /* Support postprocessing through vl_compositor */
+   profile_list[(*num_profiles)++] = VAProfileNone;
+
     return VA_STATUS_SUCCESS;
  }
@@ -67,6 +70,11 @@ vlVaQueryConfigEntrypoints(VADriverContextP ctx, VAProfile profile, *num_entrypoints = 0; + if (profile == VAProfileNone) {
+       entrypoint_list[(*num_entrypoints)++] = VAEntrypointVideoProc;
+       return VA_STATUS_SUCCESS;
+   }
+
     p = ProfileToPipe(profile);
     if (p == PIPE_VIDEO_PROFILE_UNKNOWN)
        return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
@@ -118,6 +126,11 @@ vlVaCreateConfig(VADriverContextP ctx, VAProfile profile, 
VAEntrypoint entrypoin
     if (!ctx)
        return VA_STATUS_ERROR_INVALID_CONTEXT;
+ if (profile == VAProfileNone && entrypoint == VAEntrypointVideoProc) {
+       *config_id = PIPE_VIDEO_PROFILE_UNKNOWN;
+       return VA_STATUS_SUCCESS;
+   }
+
     p = ProfileToPipe(profile);
     if (p == PIPE_VIDEO_PROFILE_UNKNOWN)
        return VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
@@ -151,6 +164,13 @@ vlVaQueryConfigAttributes(VADriverContextP ctx, VAConfigID 
config_id, VAProfile
        return VA_STATUS_ERROR_INVALID_CONTEXT;
*profile = PipeToProfile(config_id);
+
+   if (config_id == PIPE_VIDEO_PROFILE_UNKNOWN) {
+      *entrypoint = VAEntrypointVideoProc;
+       *num_attribs = 0;
+      return VA_STATUS_SUCCESS;
+   }
+
     *entrypoint = VAEntrypointVLD;
*num_attribs = 1;
diff --git a/src/gallium/state_trackers/va/va_private.h 
b/src/gallium/state_trackers/va/va_private.h
index 68cb703..3a02e58 100644
--- a/src/gallium/state_trackers/va/va_private.h
+++ b/src/gallium/state_trackers/va/va_private.h
@@ -146,10 +146,11 @@ PipeToProfile(enum pipe_video_profile profile)
        return VAProfileH264Main;
     case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH:
        return VAProfileH264High;
-   case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED:
-       return VAProfileNone;
     case PIPE_VIDEO_PROFILE_HEVC_MAIN:
        return VAProfileHEVCMain;
+   case PIPE_VIDEO_PROFILE_MPEG4_AVC_EXTENDED:
+   case PIPE_VIDEO_PROFILE_UNKNOWN:
+      return VAProfileNone;
     default:
        assert(0);
        return -1;
@@ -182,6 +183,8 @@ ProfileToPipe(VAProfile profile)
        return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH;
     case VAProfileHEVCMain:
        return PIPE_VIDEO_PROFILE_HEVC_MAIN;
+   case VAProfileNone:
+       return PIPE_VIDEO_PROFILE_UNKNOWN;
     default:
        return PIPE_VIDEO_PROFILE_UNKNOWN;
     }

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to