summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai-Chun Ning <kaichun.ning@gmail.com>2022-05-23 10:41:11 +0200
committerConrad Kostecki <conikost@gentoo.org>2022-05-23 13:56:48 +0200
commitd23119be6a4c9988eac3ef4258a8b121e1200878 (patch)
tree3c535a45b2b23974e561dd8ac224f316d753583f
parentx11-libs/cmrt: new package, add 1.0.6 (diff)
downloadgentoo-d23119be6a4c9988eac3ef4258a8b121e1200878.tar.gz
gentoo-d23119be6a4c9988eac3ef4258a8b121e1200878.tar.bz2
gentoo-d23119be6a4c9988eac3ef4258a8b121e1200878.zip
x11-libs/intel-hybrid-codec-driver: new package, add 2.0.0
Signed-off-by: Kai-Chun Ning <kaichun.ning@gmail.com> Signed-off-by: Conrad Kostecki <conikost@gentoo.org>
-rw-r--r--x11-libs/intel-hybrid-codec-driver/Manifest1
-rw-r--r--x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-gcc10-fix.patch11
-rw-r--r--x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-invalid-read-fix.patch39
-rw-r--r--x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-nullptr-fix.patch21
-rw-r--r--x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-vadriverinit-fix.patch13
-rw-r--r--x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-x11-fix.patch54
-rw-r--r--x11-libs/intel-hybrid-codec-driver/intel-hybrid-codec-driver-2.0.0.ebuild53
-rw-r--r--x11-libs/intel-hybrid-codec-driver/metadata.xml18
8 files changed, 210 insertions, 0 deletions
diff --git a/x11-libs/intel-hybrid-codec-driver/Manifest b/x11-libs/intel-hybrid-codec-driver/Manifest
new file mode 100644
index 000000000000..fdb2e271ea38
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/Manifest
@@ -0,0 +1 @@
+DIST intel-hybrid-codec-driver-2.0.0.tar.gz 1332637 BLAKE2B c02a54a12ad3b9d35bd4e15f9ffaecc8cd33750ab2eea73c8e4140ada1c666cd9a2b43725b44a22050f8140ffe2810ca87802854afb4c251cb879f219da8db6b SHA512 1d4e2c41d30892e07a3d2c83977725fca6fc20d887bead41109a0936fa9b4848131e4460cca8efe792f2815fcc9622d38d0a5e117a54403708e1132f1112d37a
diff --git a/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-gcc10-fix.patch b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-gcc10-fix.patch
new file mode 100644
index 000000000000..0c170579857f
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-gcc10-fix.patch
@@ -0,0 +1,11 @@
+--- intel-hybrid-driver/src/media_drv_common.h 2020-05-26 23:18:02.279795861 +0100
++++ intel-hybrid-driver-new/src/media_drv_common.h 2020-05-26 23:19:11.316101524 +0100
+@@ -39,6 +39,6 @@
+ #define BRC_INIT_IGNORE_PICTURE_HEADER_SIZE 0x2000
+ #define BRC_INIT_DISABLE_MBBRC 0x8000
+
+-UINT SEARCH_PATH_TABLE[2][8][16];
+-UINT ME_CURBE_INIT_DATA[30];
++extern UINT SEARCH_PATH_TABLE[2][8][16];
++extern UINT ME_CURBE_INIT_DATA[30];
+ #endif
diff --git a/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-invalid-read-fix.patch b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-invalid-read-fix.patch
new file mode 100644
index 000000000000..e410a8cc89c5
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-invalid-read-fix.patch
@@ -0,0 +1,39 @@
+diff --git a/src/media_drv_gen75_render.c b/src/media_drv_gen75_render.c
+index a3d60ff..51b1442 100644
+--- a/src/media_drv_gen75_render.c
++++ b/src/media_drv_gen75_render.c
+@@ -1453,7 +1453,7 @@ media_drv_gen75_render_init(VADriverContextP ctx)
+
+ if (IS_HASWELL (drv_ctx->drv_data.device_id)) {
+ memcpy(render_state->render_kernels, render_kernels_gen7_haswell,
+- sizeof(render_state->render_kernels));
++ sizeof(render_kernels_gen7_haswell));
+ render_state->render_put_surface = gen7_render_put_surface;
+ render_state->render_put_subpicture = gen7_render_put_subpicture;
+ } else {
+diff --git a/src/media_drv_gen8_render.c b/src/media_drv_gen8_render.c
+index 42005ea..da349cc 100644
+--- a/src/media_drv_gen8_render.c
++++ b/src/media_drv_gen8_render.c
+@@ -1741,7 +1741,7 @@ media_drv_gen8_render_init(VADriverContextP ctx)
+ render_state->max_wm_threads = 64;
+
+ memcpy(render_state->render_kernels, render_kernels_gen8,
+- sizeof(render_state->render_kernels));
++ sizeof(render_kernels_gen8));
+
+ kernel_size = 4096;
+
+diff --git a/src/media_drv_hw_g75.c b/src/media_drv_hw_g75.c
+index 57eddbd..080cd86 100644
+--- a/src/media_drv_hw_g75.c
++++ b/src/media_drv_hw_g75.c
+@@ -3325,7 +3325,7 @@ media_set_curbe_vp8_me (VP8_ME_CURBE_PARAMS * params)
+ MEDIA_CURBE_DATA_ME *cmd = (MEDIA_CURBE_DATA_ME *) params->curbe_cmd_buff;
+
+ media_drv_memcpy (cmd, sizeof (MEDIA_CURBE_DATA_ME), ME_CURBE_INIT_DATA,
+- sizeof (MEDIA_CURBE_DATA_ME));
++ sizeof (ME_CURBE_INIT_DATA));
+ me_mode =
+ params->
+ me_16x_enabled ? (params->me_16x ? ME16x_BEFORE_ME4x : ME4x_AFTER_ME16x) :
diff --git a/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-nullptr-fix.patch b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-nullptr-fix.patch
new file mode 100644
index 000000000000..84562584b6a2
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-nullptr-fix.patch
@@ -0,0 +1,21 @@
+diff --git a/src/vp9hdec/decode_hybrid_vp9.cpp b/src/vp9hdec/decode_hybrid_vp9.cpp
+index 1baf339..7a086e2 100644
+--- a/src/vp9hdec/decode_hybrid_vp9.cpp
++++ b/src/vp9hdec/decode_hybrid_vp9.cpp
+@@ -3289,9 +3289,16 @@ VAStatus Intel_HybridVp9Decode_HostVldRenderCb (
+
+ // Reset padding flag of current frame and update surface dimension
+ surface = SURFACE(pMdfDecodeFrame->ucCurrIndex);
++ if ((surface == NULL) || (surface->private_data == NULL))
++ return VA_STATUS_ERROR_INVALID_PARAMETER;
++
+ pFrameSource = (INTEL_DECODE_HYBRID_VP9_MDF_FRAME_SOURCE *)(surface->private_data);
+ pCurrFrame = &(pFrameSource->Frame);
+ pFrameSource->bHasPadding = false;
++
++ if (pCurrFrame->pMdfSurface == NULL)
++ return VA_STATUS_ERROR_INVALID_PARAMETER;
++
+ pCurrFrame->pMdfSurface->SetSurfaceStateDimensions(
+ pMdfDecodeFrame->dwWidth,
+ pMdfDecodeFrame->dwHeight);
diff --git a/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-vadriverinit-fix.patch b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-vadriverinit-fix.patch
new file mode 100644
index 000000000000..5177e1448539
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-vadriverinit-fix.patch
@@ -0,0 +1,13 @@
+--- intel-hybrid-driver/src/media_drv_init.c
++++ intel-hybrid-driver-new/src/media_drv_init.c
+@@ -2764,9 +2764,9 @@ va_driver_init (VADriverContextP ctx)
+ return ret;
+ }
+
+-VAStatus DLL_EXPORT __vaDriverInit_0_34 (VADriverContextP ctx);
++VAStatus DLL_EXPORT VA_DRIVER_INIT_FUNC (VADriverContextP ctx);
+ VAStatus
+-__vaDriverInit_0_34 (VADriverContextP ctx)
++VA_DRIVER_INIT_FUNC (VADriverContextP ctx)
+ {
+ VAStatus ret = VA_STATUS_ERROR_UNKNOWN;
diff --git a/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-x11-fix.patch b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-x11-fix.patch
new file mode 100644
index 000000000000..2422e4d1721b
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/files/intel-hybrid-codec-driver-2.0.0-x11-fix.patch
@@ -0,0 +1,54 @@
+From b3b4d9a3a08d48bf6022723908a22255cc271ab7 Mon Sep 17 00:00:00 2001
+From: Daniel Charles <daniel.charles@intel.com>
+Date: Fri, 4 May 2018 09:56:10 -0700
+Subject: [PATCH] driver_init: load libva-x11.so for any ABI version
+
+with libva > 2.0.0 hybrid driver can operate with it as well
+so make this load generic to libva installed version
+
+Signed-off-by: Daniel Charles <daniel.charles@intel.com>
+---
+ src/media_drv_output_dri.c | 10 ++++++++++
+ src/media_drv_output_dri.h | 2 +-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/src/media_drv_output_dri.c b/src/media_drv_output_dri.c
+index 42299b8..bbd9713 100644
+--- a/src/media_drv_output_dri.c
++++ b/src/media_drv_output_dri.c
+@@ -105,6 +105,15 @@ media_output_dri_init (VADriverContextP ctx)
+ struct dri_vtable *dri_vtable;
+
+ static const struct dso_symbol symbols[] = {
++#if VA_CHECK_VERSION(1,0,0)
++ {"va_dri_get_drawable",
++ offsetof (struct dri_vtable, get_drawable)},
++ {"va_dri_get_rendering_buffer",
++ offsetof (struct dri_vtable, get_rendering_buffer)},
++ {"va_dri_swap_buffer",
++ offsetof (struct dri_vtable, swap_buffer)},
++ {NULL,}
++#else
+ {"dri_get_drawable",
+ offsetof (struct dri_vtable, get_drawable)},
+ {"dri_get_rendering_buffer",
+@@ -112,6 +121,7 @@ media_output_dri_init (VADriverContextP ctx)
+ {"dri_swap_buffer",
+ offsetof (struct dri_vtable, swap_buffer)},
+ {NULL,}
++#endif
+ };
+
+ drv_ctx->dri_output =
+diff --git a/src/media_drv_output_dri.h b/src/media_drv_output_dri.h
+index 0d6ccf0..889861c 100644
+--- a/src/media_drv_output_dri.h
++++ b/src/media_drv_output_dri.h
+@@ -30,7 +30,7 @@
+ #define _MEDIA__DRIVER_OUT_DRI_H
+ #include <stdbool.h>
+ #include "media_drv_defines.h"
+-#define LIBVA_X11_NAME "libva-x11.so.1"
++#define LIBVA_X11_NAME "libva-x11.so.2"
+ VOID media_output_dri_terminate (VADriverContextP ctx);
+ BOOL media_output_dri_init (VADriverContextP ctx);
diff --git a/x11-libs/intel-hybrid-codec-driver/intel-hybrid-codec-driver-2.0.0.ebuild b/x11-libs/intel-hybrid-codec-driver/intel-hybrid-codec-driver-2.0.0.ebuild
new file mode 100644
index 000000000000..860feeb69f61
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/intel-hybrid-codec-driver-2.0.0.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+MULTILIB_COMPAT=( abi_x86_64 )
+EGIT_COMMIT="edead0c17e2818bc0fee0ea644f85ab81bbe6f7a"
+
+inherit autotools multilib-minimal
+
+DESCRIPTION="Libva support for partially hardware accelerated encode and decode on Haswell and newer"
+HOMEPAGE="https://github.com/intel/intel-hybrid-driver"
+SRC_URI="https://github.com/intel/intel-hybrid-driver/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/intel-hybrid-driver-${EGIT_COMMIT}"
+
+KEYWORDS="~amd64 ~amd64-linux"
+LICENSE="MIT"
+SLOT="0"
+IUSE="wayland X"
+
+BDEPEND="virtual/pkgconfig"
+RDEPEND="
+ >=x11-libs/cmrt-1.0.6
+ >=x11-libs/libdrm-2.4.45
+ >=x11-libs/libva-1.0.16[${MULTILIB_USEDEP}]
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${P}-gcc10-fix.patch"
+ "${FILESDIR}/${P}-vadriverinit-fix.patch"
+ "${FILESDIR}/${P}-x11-fix.patch"
+ "${FILESDIR}/${P}-nullptr-fix.patch"
+ "${FILESDIR}/${P}-invalid-read-fix.patch"
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+multilib_src_configure() {
+ local myconf=(
+ $(use_enable wayland)
+ $(use_enable X x11)
+ )
+ ECONF_SOURCE="${S}" econf "${myconf[@]}"
+}
+
+multilib_src_install() {
+ default
+ find "${D}" -name "*.la" -delete || die
+}
diff --git a/x11-libs/intel-hybrid-codec-driver/metadata.xml b/x11-libs/intel-hybrid-codec-driver/metadata.xml
new file mode 100644
index 000000000000..b93334ee2543
--- /dev/null
+++ b/x11-libs/intel-hybrid-codec-driver/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>media-video@gentoo.org</email>
+ </maintainer>
+ <maintainer type="person" proxied="yes">
+ <email>kaichun.ning@gmail.com</email>
+ <name>Kai-Chun Ning</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">intel/intel-hybrid-driver</remote-id>
+ </upstream>
+</pkgmetadata>