summaryrefslogtreecommitdiff
path: root/va
diff options
context:
space:
mode:
authorFei Jiang <fei.jiang@intel.com>2013-04-11 22:43:20 +0800
committerbuildbot <buildbot@intel.com>2013-04-16 22:54:50 -0700
commit7769002df8c21dbfbf6b78ffcbc28bf321a03134 (patch)
tree9fdad3421f49a1aa0efe6ca01d48cb36aa5ba6d4 /va
parentbaf2f69a5fe5853d865bc5c701751441a925a4c4 (diff)
downloadlibva-7769002df8c21dbfbf6b78ffcbc28bf321a03134.tar.gz
libva: on android, will pass driver name through vaDisplay
BZ: 98522 On baytrail, VP8 and MPEG4 are decoded by VXD engine, while other codecs are decoded by GEN engine, VXD user space driver is pvr_drv_video.so, GEN user space driver is i965_drv_video.so, so sometime, different decoding thread need let libva load different video driver. Will pass driver name through vaDisplay in function vaGetDisplay. To load pvr driver, need set vaDisplay="libva_driver_name=pvr". Previous vaDisplay setting is still workable Change-Id: Idcf974d1ba883b6e7283bc88e930a871abd920fc Signed-off-by: Fei Jiang <fei.jiang@intel.com> Reviewed-on: http://android.intel.com:8080/101399 Reviewed-by: Shi, PingX <pingx.shi@intel.com> Reviewed-by: cactus <cactus@intel.com> Tested-by: Shi, PingX <pingx.shi@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'va')
-rw-r--r--va/android/va_android.cpp11
-rwxr-xr-xva/va.c4
2 files changed, 12 insertions, 3 deletions
diff --git a/va/android/va_android.cpp b/va/android/va_android.cpp
index e2edb92..97c884c 100644
--- a/va/android/va_android.cpp
+++ b/va/android/va_android.cpp
@@ -115,8 +115,17 @@ static VAStatus va_DisplayContextGetDriverName (
return VA_STATUS_ERROR_UNKNOWN;
}
drm_state->auth_type = VA_DRM_AUTH_CUSTOM;
+ *driver_name = NULL;
- return VA_DRM_GetDriverName(ctx, driver_name);
+ if (strncmp((char *)ctx->native_dpy, "libva_driver_name=", 18) == 0) {
+ *driver_name = strdup((char *)ctx->native_dpy + 18);
+ if (!driver_name)
+ return VA_STATUS_ERROR_ALLOCATION_FAILED;
+ else
+ return VA_STATUS_SUCCESS;
+ } else {
+ return VA_DRM_GetDriverName(ctx, driver_name);
+ }
}
diff --git a/va/va.c b/va/va.c
index e83141c..58d4e19 100755
--- a/va/va.c
+++ b/va/va.c
@@ -458,7 +458,7 @@ VAStatus vaInitialize (
va_infoMessage("VA-API version %s\n", VA_VERSION_S);
vaStatus = va_getDriverName(dpy, &driver_name);
- va_infoMessage("va_getDriverName() returns %d\n", vaStatus);
+ va_infoMessage("va_getDriverName() returns %d, driver_name is %s.\n", vaStatus, driver_name);
driver_name_env = getenv("LIBVA_DRIVER_NAME");
if (driver_name_env && geteuid() == getuid()) {
@@ -470,7 +470,7 @@ VAStatus vaInitialize (
if (VA_STATUS_SUCCESS == vaStatus) {
vaStatus = va_openDriver(dpy, driver_name);
- va_infoMessage("va_openDriver() returns %d\n", vaStatus);
+ va_infoMessage("va_openDriver() returns %d.\n", vaStatus);
*major_version = VA_MAJOR_VERSION;
*minor_version = VA_MINOR_VERSION;