Update to 2.7.1
This commit is contained in:
parent
f1ab146eda
commit
97f9a08542
255
406.patch
255
406.patch
@ -1,255 +0,0 @@
|
||||
From 98fbb3aa53be8201ccc82508d37a8b0109f9042b Mon Sep 17 00:00:00 2001
|
||||
From: "U. Artie Eoff" <ullysses.a.eoff@intel.com>
|
||||
Date: Mon, 13 Apr 2020 12:22:06 -0700
|
||||
Subject: [PATCH 1/2] VA/X11: enable driver candidate selection for DRI2
|
||||
|
||||
Map the i965 DRI driver to iHD and i965 vaapi
|
||||
driver candidates.
|
||||
|
||||
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
|
||||
---
|
||||
va/x11/va_x11.c | 126 ++++++++++++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 112 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c
|
||||
index c40c8c4d..3b88a624 100644
|
||||
--- a/va/x11/va_x11.c
|
||||
+++ b/va/x11/va_x11.c
|
||||
@@ -44,6 +44,18 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
||||
+struct driver_name_map {
|
||||
+ const char *key;
|
||||
+ int key_len;
|
||||
+ const char *name;
|
||||
+};
|
||||
+
|
||||
+static const struct driver_name_map g_dri2_driver_name_map[] = {
|
||||
+ { "i965", 4, "iHD" }, // Intel iHD VAAPI driver with i965 DRI driver
|
||||
+ { "i965", 4, "i965" }, // Intel i965 VAAPI driver with i965 DRI driver
|
||||
+ { NULL, 0, NULL }
|
||||
+};
|
||||
+
|
||||
static int va_DisplayContextIsValid (
|
||||
VADisplayContextP pDisplayContext
|
||||
)
|
||||
@@ -73,29 +85,93 @@ static void va_DisplayContextDestroy (
|
||||
free(pDisplayContext);
|
||||
}
|
||||
|
||||
+static VAStatus va_DRI2_GetNumCandidates (
|
||||
+ VADisplayContextP pDisplayContext,
|
||||
+ int *num_candidates
|
||||
+)
|
||||
+{
|
||||
+ char *driver_name = NULL;
|
||||
+ const struct driver_name_map *m = NULL;
|
||||
+ VADriverContextP ctx = pDisplayContext->pDriverContext;
|
||||
+
|
||||
+ *num_candidates = 0;
|
||||
+
|
||||
+ if (!(va_isDRI2Connected(ctx, &driver_name) && driver_name))
|
||||
+ return VA_STATUS_ERROR_UNKNOWN;
|
||||
+
|
||||
+ for (m = g_dri2_driver_name_map; m->key != NULL; m++) {
|
||||
+ if (strlen(driver_name) >= m->key_len &&
|
||||
+ strncmp(driver_name, m->key, m->key_len) == 0) {
|
||||
+ (*num_candidates)++;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ free(driver_name);
|
||||
+
|
||||
+ /*
|
||||
+ * If the dri2 driver name does not have a mapped vaapi driver name, then
|
||||
+ * assume they have the same name.
|
||||
+ */
|
||||
+ if (*num_candidates == 0)
|
||||
+ *num_candidates = 1;
|
||||
|
||||
-static VAStatus va_DRI2GetDriverName (
|
||||
+ return VA_STATUS_SUCCESS;
|
||||
+}
|
||||
+
|
||||
+static VAStatus va_DRI2_GetDriverName (
|
||||
VADisplayContextP pDisplayContext,
|
||||
- char **driver_name
|
||||
+ char **driver_name_ptr,
|
||||
+ int candidate_index
|
||||
)
|
||||
{
|
||||
+ const struct driver_name_map *m = NULL;
|
||||
+ int current_index = 0;
|
||||
VADriverContextP ctx = pDisplayContext->pDriverContext;
|
||||
|
||||
- if (!va_isDRI2Connected(ctx, driver_name))
|
||||
+ *driver_name_ptr = NULL;
|
||||
+
|
||||
+ if (!(va_isDRI2Connected(ctx, driver_name_ptr) && *driver_name_ptr))
|
||||
return VA_STATUS_ERROR_UNKNOWN;
|
||||
|
||||
+ for (m = g_dri2_driver_name_map; m->key != NULL; m++) {
|
||||
+ if (strlen(*driver_name_ptr) >= m->key_len &&
|
||||
+ strncmp(*driver_name_ptr, m->key, m->key_len) == 0) {
|
||||
+ if (current_index == candidate_index) {
|
||||
+ break;
|
||||
+ }
|
||||
+ current_index++;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * If the dri2 driver name does not have a mapped vaapi driver name, then
|
||||
+ * assume they have the same name.
|
||||
+ */
|
||||
+ if (!m->name)
|
||||
+ return VA_STATUS_SUCCESS;
|
||||
+
|
||||
+ /* Use the mapped vaapi driver name */
|
||||
+ free(*driver_name_ptr);
|
||||
+ *driver_name_ptr = strdup(m->name);
|
||||
+ if (!*driver_name_ptr)
|
||||
+ return VA_STATUS_ERROR_ALLOCATION_FAILED;
|
||||
+
|
||||
return VA_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static VAStatus va_NVCTRL_GetDriverName (
|
||||
VADisplayContextP pDisplayContext,
|
||||
- char **driver_name
|
||||
+ char **driver_name,
|
||||
+ int candidate_index
|
||||
)
|
||||
{
|
||||
VADriverContextP ctx = pDisplayContext->pDriverContext;
|
||||
int direct_capable, driver_major, driver_minor, driver_patch;
|
||||
Bool result;
|
||||
|
||||
+ if (candidate_index != 0)
|
||||
+ return VA_STATUS_ERROR_INVALID_PARAMETER;
|
||||
+
|
||||
result = VA_NVCTRLQueryDirectRenderingCapable(ctx->native_dpy, ctx->x11_screen,
|
||||
&direct_capable);
|
||||
if (!result || !direct_capable)
|
||||
@@ -112,13 +188,17 @@ static VAStatus va_NVCTRL_GetDriverName (
|
||||
|
||||
static VAStatus va_FGLRX_GetDriverName (
|
||||
VADisplayContextP pDisplayContext,
|
||||
- char **driver_name
|
||||
+ char **driver_name,
|
||||
+ int candidate_index
|
||||
)
|
||||
{
|
||||
VADriverContextP ctx = pDisplayContext->pDriverContext;
|
||||
int driver_major, driver_minor, driver_patch;
|
||||
Bool result;
|
||||
|
||||
+ if (candidate_index != 0)
|
||||
+ return VA_STATUS_ERROR_INVALID_PARAMETER;
|
||||
+
|
||||
result = VA_FGLRXGetClientDriverName(ctx->native_dpy, ctx->x11_screen,
|
||||
&driver_major, &driver_minor,
|
||||
&driver_patch, driver_name);
|
||||
@@ -130,24 +210,43 @@ static VAStatus va_FGLRX_GetDriverName (
|
||||
|
||||
static VAStatus va_DisplayContextGetDriverName (
|
||||
VADisplayContextP pDisplayContext,
|
||||
- char **driver_name
|
||||
+ char **driver_name, int candidate_index
|
||||
)
|
||||
{
|
||||
VAStatus vaStatus;
|
||||
|
||||
if (driver_name)
|
||||
- *driver_name = NULL;
|
||||
+ *driver_name = NULL;
|
||||
else
|
||||
return VA_STATUS_ERROR_UNKNOWN;
|
||||
-
|
||||
- vaStatus = va_DRI2GetDriverName(pDisplayContext, driver_name);
|
||||
+
|
||||
+ vaStatus = va_DRI2_GetDriverName(pDisplayContext, driver_name, candidate_index);
|
||||
if (vaStatus != VA_STATUS_SUCCESS)
|
||||
- vaStatus = va_NVCTRL_GetDriverName(pDisplayContext, driver_name);
|
||||
+ vaStatus = va_NVCTRL_GetDriverName(pDisplayContext, driver_name, candidate_index);
|
||||
if (vaStatus != VA_STATUS_SUCCESS)
|
||||
- vaStatus = va_FGLRX_GetDriverName(pDisplayContext, driver_name);
|
||||
+ vaStatus = va_FGLRX_GetDriverName(pDisplayContext, driver_name, candidate_index);
|
||||
+
|
||||
return vaStatus;
|
||||
}
|
||||
|
||||
+static VAStatus va_DisplayContextGetNumCandidates (
|
||||
+ VADisplayContextP pDisplayContext,
|
||||
+ int *num_candidates
|
||||
+)
|
||||
+{
|
||||
+ VAStatus vaStatus;
|
||||
+
|
||||
+ vaStatus = va_DRI2_GetNumCandidates(pDisplayContext, num_candidates);
|
||||
+
|
||||
+ /* A call to va_DisplayContextGetDriverName will fallback to other
|
||||
+ * methods (i.e. NVCTRL, FGLRX) when DRI2 is unsuccessful. All of those
|
||||
+ * fallbacks only have 1 candidate driver.
|
||||
+ */
|
||||
+ if (vaStatus != VA_STATUS_SUCCESS)
|
||||
+ *num_candidates = 1;
|
||||
+
|
||||
+ return VA_STATUS_SUCCESS;
|
||||
+}
|
||||
|
||||
VADisplay vaGetDisplay (
|
||||
Display *native_dpy /* implementation specific */
|
||||
@@ -166,7 +265,8 @@ VADisplay vaGetDisplay (
|
||||
|
||||
pDisplayContext->vaIsValid = va_DisplayContextIsValid;
|
||||
pDisplayContext->vaDestroy = va_DisplayContextDestroy;
|
||||
- pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName;
|
||||
+ pDisplayContext->vaGetNumCandidates = va_DisplayContextGetNumCandidates;
|
||||
+ pDisplayContext->vaGetDriverNameByIndex = va_DisplayContextGetDriverName;
|
||||
|
||||
pDriverContext = va_newDriverContext(pDisplayContext);
|
||||
if (!pDriverContext) {
|
||||
@@ -190,7 +290,6 @@ VADisplay vaGetDisplay (
|
||||
return (VADisplay)pDisplayContext;
|
||||
}
|
||||
|
||||
-
|
||||
void va_TracePutSurface (
|
||||
VADisplay dpy,
|
||||
VASurfaceID surface,
|
||||
@@ -208,7 +307,6 @@ void va_TracePutSurface (
|
||||
unsigned int flags /* de-interlacing flags */
|
||||
);
|
||||
|
||||
-
|
||||
VAStatus vaPutSurface (
|
||||
VADisplay dpy,
|
||||
VASurfaceID surface,
|
||||
|
||||
From 253e1b90cdd791524f06f25e08d0be5a3098d5e4 Mon Sep 17 00:00:00 2001
|
||||
From: "U. Artie Eoff" <ullysses.a.eoff@intel.com>
|
||||
Date: Mon, 13 Apr 2020 12:39:45 -0700
|
||||
Subject: [PATCH 2/2] VA/X11: VAAPI driver mapping for iris DRI driver
|
||||
|
||||
Fixes #396
|
||||
|
||||
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
|
||||
---
|
||||
va/x11/va_x11.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c
|
||||
index 3b88a624..cb231681 100644
|
||||
--- a/va/x11/va_x11.c
|
||||
+++ b/va/x11/va_x11.c
|
||||
@@ -53,6 +53,8 @@ struct driver_name_map {
|
||||
static const struct driver_name_map g_dri2_driver_name_map[] = {
|
||||
{ "i965", 4, "iHD" }, // Intel iHD VAAPI driver with i965 DRI driver
|
||||
{ "i965", 4, "i965" }, // Intel i965 VAAPI driver with i965 DRI driver
|
||||
+ { "iris", 4, "iHD" }, // Intel iHD VAAPI driver with iris DRI driver
|
||||
+ { "iris", 4, "i965" }, // Intel i965 VAAPI driver with iris DRI driver
|
||||
{ NULL, 0, NULL }
|
||||
};
|
||||
|
||||
@ -1,15 +1,13 @@
|
||||
#global pre_release .pre1
|
||||
|
||||
Name: libva
|
||||
Version: 2.7.0
|
||||
Release: 4%{?pre_release}%{?dist}
|
||||
Version: 2.7.1
|
||||
Release: 1%{?dist}
|
||||
Summary: Video Acceleration (VA) API for Linux
|
||||
License: MIT
|
||||
URL: https://github.com/intel/libva
|
||||
Source0: %{url}/archive/%{version}%{?pre_release}/%{name}-%{version}%{?pre_release}.tar.gz
|
||||
|
||||
Patch0: 406.patch
|
||||
|
||||
BuildRequires: libtool
|
||||
|
||||
BuildRequires: libudev-devel
|
||||
@ -74,6 +72,9 @@ find %{buildroot} -regex ".*\.la$" | xargs rm -f --
|
||||
%{_libdir}/pkgconfig/libva*.pc
|
||||
|
||||
%changelog
|
||||
* Mon Apr 20 2020 Nicolas Chauvet <kwizart@gmail.com> - 2.7.1-1
|
||||
- Update to 2.7.1
|
||||
|
||||
* Tue Apr 14 2020 Frantisek Zatloukal <fzatlouk@redhat.com> - 2.7.0-4
|
||||
- Backport upstream fix for Intel Iris Driver (https://github.com/intel/libva/pull/406)
|
||||
|
||||
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (libva-2.7.0.tar.gz) = 6f6c8f9a479f0265415c0926b52aaa4cf54ba5e63170196934f24aecd71ceb1e3f28f5afa2671307885db6f520d6f748f94025a7b62c59f72b8ad9d3744bbdf3
|
||||
SHA512 (libva-2.7.1.tar.gz) = 92cef4418eed3a0c6c0d9111abf65bbbd0163c4de5d902ae5219f51b825d4bb269aa39842f2a929d237612af58fbceb9785eebc5cb82cdd6aa68e253826cac8e
|
||||
|
||||
Loading…
Reference in New Issue
Block a user