|
@@ -0,0 +1,68 @@
|
|
|
+From a80d2fe3bcc2c14c6e1434615d1be38924b668ea Mon Sep 17 00:00:00 2001
|
|
|
+From: Carl Zhang <carl.zhang@intel.com>
|
|
|
+Date: Mon, 30 Dec 2019 04:38:43 -0500
|
|
|
+Subject: [PATCH] adjust call sequence to ensure authenticate operation is
|
|
|
+ executed
|
|
|
+
|
|
|
+fixes #355
|
|
|
+
|
|
|
+Downloaded from upstream PR: https://github.com/intel/libva/pull/356
|
|
|
+
|
|
|
+Signed-off-by: Carl Zhang <carl.zhang@intel.com>
|
|
|
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
|
+---
|
|
|
+ va/va.c | 25 ++++++++++++++++---------
|
|
|
+ 1 file changed, 16 insertions(+), 9 deletions(-)
|
|
|
+
|
|
|
+diff --git a/va/va.c b/va/va.c
|
|
|
+index cfcabff..7f014a1 100644
|
|
|
+--- a/va/va.c
|
|
|
++++ b/va/va.c
|
|
|
+@@ -367,11 +367,23 @@ static VAStatus va_getDriverNameByIndex(VADisplay dpy, char **driver_name, int c
|
|
|
+ VADisplayContextP pDisplayContext = (VADisplayContextP)dpy;
|
|
|
+ const char *driver_name_env = NULL;
|
|
|
+ VADriverContextP ctx;
|
|
|
++ VAStatus status = VA_STATUS_SUCCESS;
|
|
|
+
|
|
|
+ ctx = CTX(dpy);
|
|
|
++ if (pDisplayContext->vaGetDriverNameByIndex) {
|
|
|
++ /*if vaGetDriverNameByIndex is implemented*/
|
|
|
++ status = pDisplayContext->vaGetDriverNameByIndex(pDisplayContext, driver_name, candidate_index);
|
|
|
++ } else {
|
|
|
++ if (candidate_index == 0)
|
|
|
++ status = pDisplayContext->vaGetDriverName(pDisplayContext, driver_name);
|
|
|
++ else
|
|
|
++ status = VA_STATUS_ERROR_INVALID_PARAMETER;
|
|
|
++ }
|
|
|
+ driver_name_env = getenv("LIBVA_DRIVER_NAME");
|
|
|
+ /*if user set driver name by vaSetDriverName */
|
|
|
+ if (ctx->override_driver_name){
|
|
|
++ if(*driver_name)
|
|
|
++ free(*driver_name);
|
|
|
+ *driver_name = strdup(ctx->override_driver_name);
|
|
|
+ if (!(*driver_name)) {
|
|
|
+ va_errorMessage(dpy, "va_getDriverNameByIndex failed with %s, out of memory\n",vaErrorStr(VA_STATUS_ERROR_ALLOCATION_FAILED));
|
|
|
+@@ -380,19 +392,14 @@ static VAStatus va_getDriverNameByIndex(VADisplay dpy, char **driver_name, int c
|
|
|
+ va_infoMessage(dpy, "User requested driver '%s'\n", *driver_name);
|
|
|
+ return VA_STATUS_SUCCESS;
|
|
|
+ } else if (driver_name_env && (geteuid() == getuid())) {
|
|
|
++ if(*driver_name)
|
|
|
++ free(*driver_name);
|
|
|
+ /*if user set driver name by environment variable*/
|
|
|
+ *driver_name = strdup(driver_name_env);
|
|
|
+ va_infoMessage(dpy, "User environment variable requested driver '%s'\n", *driver_name);
|
|
|
+ return VA_STATUS_SUCCESS;
|
|
|
+- } else if (pDisplayContext->vaGetDriverNameByIndex) {
|
|
|
+- /*if vaGetDriverNameByIndex is implemented*/
|
|
|
+- return pDisplayContext->vaGetDriverNameByIndex(pDisplayContext, driver_name, candidate_index);
|
|
|
+- } else {
|
|
|
+- if (candidate_index == 0)
|
|
|
+- return pDisplayContext->vaGetDriverName(pDisplayContext, driver_name);
|
|
|
+- else
|
|
|
+- return VA_STATUS_ERROR_INVALID_PARAMETER;
|
|
|
+- }
|
|
|
++ }
|
|
|
++ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+ static char *va_getDriverPath(const char *driver_dir, const char *driver_name)
|