From 97f9a08542aa50f7ad00240cb4a5d44606023316 Mon Sep 17 00:00:00 2001 From: Nicolas Chauvet Date: Mon, 20 Apr 2020 09:37:53 +0200 Subject: [PATCH] Update to 2.7.1 --- 406.patch | 255 ----------------------------------------------------- libva.spec | 9 +- sources | 2 +- 3 files changed, 6 insertions(+), 260 deletions(-) delete mode 100644 406.patch diff --git a/406.patch b/406.patch deleted file mode 100644 index de1b29a..0000000 --- a/406.patch +++ /dev/null @@ -1,255 +0,0 @@ -From 98fbb3aa53be8201ccc82508d37a8b0109f9042b Mon Sep 17 00:00:00 2001 -From: "U. Artie Eoff" -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 ---- - 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 - #include - -+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" -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 ---- - 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 } - }; - diff --git a/libva.spec b/libva.spec index 2cec85e..655a312 100644 --- a/libva.spec +++ b/libva.spec @@ -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 - 2.7.1-1 +- Update to 2.7.1 + * Tue Apr 14 2020 Frantisek Zatloukal - 2.7.0-4 - Backport upstream fix for Intel Iris Driver (https://github.com/intel/libva/pull/406) diff --git a/sources b/sources index 1ced8e2..3518ede 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libva-2.7.0.tar.gz) = 6f6c8f9a479f0265415c0926b52aaa4cf54ba5e63170196934f24aecd71ceb1e3f28f5afa2671307885db6f520d6f748f94025a7b62c59f72b8ad9d3744bbdf3 +SHA512 (libva-2.7.1.tar.gz) = 92cef4418eed3a0c6c0d9111abf65bbbd0163c4de5d902ae5219f51b825d4bb269aa39842f2a929d237612af58fbceb9785eebc5cb82cdd6aa68e253826cac8e