summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Yuan <shengquan.yuan@intel.com>2013-05-22 13:05:56 +0800
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2013-08-27 11:16:44 +0200
commit0af50e13eaaa3b386bb3e70d94bc329d3be5737b (patch)
treec0b0b795b0d126301a80f32b9e23179d43d12ad1
parent10db32288b5bb822a405a0639ba8d308787b7ceb (diff)
downloadlibva-0af50e13eaaa3b386bb3e70d94bc329d3be5737b.tar.gz
va_android: allow app to specify which driver it wants to load
There is a platform which integrates two decode cores, and their drivers are sperated and independent. Application needs to know which driver it wants to use (e.g. H264 decode uses driver A, VP8 decode uses driver B) LIBVA_DRIVER_NAME has issues in one-process-multi-thread environment. This patch allows application to specify the driver name via vaGetDisplay: usage: 1. in normal case int android_display=0 vaGetDisplay((void *)&android_display) 2. specify driver name char driver_name[]="libva_driver_name=foo_drv_video.so" vaGetDisplay((void *)driver_name) Change-Id: I9f0f5ecb3565a25c1f6778093c80bb2fc24f24eb Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>
-rw-r--r--va/android/va_android.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/va/android/va_android.cpp b/va/android/va_android.cpp
index 0c2b0b5..01ce1b9 100644
--- a/va/android/va_android.cpp
+++ b/va/android/va_android.cpp
@@ -116,7 +116,18 @@ static VAStatus va_DisplayContextGetDriverName (
}
drm_state->auth_type = VA_DRM_AUTH_CUSTOM;
- return VA_DRM_GetDriverName(ctx, driver_name);
+ if (driver_name == NULL)
+ return VA_STATUS_ERROR_UNKNOWN;
+
+ if (strncmp((char *)ctx->native_dpy, "libva_driver_name=", 18) == 0) {
+ *driver_name = strdup((char *)ctx->native_dpy + 18);
+ if (*driver_name == NULL)
+ return VA_STATUS_ERROR_ALLOCATION_FAILED;
+ else
+ return VA_STATUS_SUCCESS;
+ } else {
+ return VA_DRM_GetDriverName(ctx, driver_name);
+ }
}