Skip to content

Commit

Permalink
enable the mutiple driver selection logic inside vaInitialize
Browse files Browse the repository at this point in the history
add multiple backend driver support part 2
try to open driver one by one

Signed-off-by: Carl Zhang <carl.zhang@intel.com>
  • Loading branch information
XinfengZhang committed Dec 10, 2019
1 parent 7d5ef2a commit 19ee041
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions va/va.c
Expand Up @@ -670,6 +670,8 @@ VAStatus vaInitialize (
{
const char *driver_name_env = NULL;
char *driver_name = NULL;
int candidate_num = 1;
int candidate_index = 0;
VAStatus vaStatus;
VADriverContextP ctx;

Expand All @@ -685,7 +687,12 @@ VAStatus vaInitialize (

va_infoMessage(dpy, "VA-API version %s\n", VA_VERSION_S);

vaStatus = va_getDriverName(dpy, &driver_name, 0);
vaStatus = va_getDriverCandidateNum(dpy, &candidate_num);
if(vaStatus != VA_STATUS_SUCCESS)
{
candidate_num = 1;
}
vaStatus = va_getDriverName(dpy, &driver_name, candidate_index);
/* if application did not call vaSetDriverName */
if (!ctx->override_driver_name) {
va_infoMessage(dpy, "va_getDriverName() returns %d\n", vaStatus);
Expand All @@ -704,6 +711,7 @@ VAStatus vaInitialize (
vaErrorStr(vaStatus));
return vaStatus;
}
candidate_num = 1;
va_infoMessage(dpy, "User requested driver '%s'\n", driver_name);
}
/*if there are LIBVA_DRIVER_NAME environment variable*/
Expand All @@ -714,11 +722,27 @@ VAStatus vaInitialize (

driver_name = strdup(driver_name_env);
vaStatus = VA_STATUS_SUCCESS;
candidate_num = 1;
va_infoMessage(dpy, "User requested driver '%s'\n", driver_name);
}

if ((VA_STATUS_SUCCESS == vaStatus) && (driver_name != NULL)) {
vaStatus = va_openDriver(dpy, driver_name);
for(candidate_index = 0; candidate_index < candidate_num;candidate_index ++)
{
if(candidate_index >= 1)
{
if(driver_name)
free(driver_name);
vaStatus = va_getDriverName(dpy, &driver_name, candidate_index + 1);
if(vaStatus != VA_STATUS_SUCCESS)
break;
}
vaStatus = va_openDriver(dpy, driver_name);
if(vaStatus == VA_STATUS_SUCCESS)
{
break;
}
}
va_infoMessage(dpy, "va_openDriver() returns %d\n", vaStatus);

*major_version = VA_MAJOR_VERSION;
Expand Down

0 comments on commit 19ee041

Please sign in to comment.