diff options
author | Kai-Chun Ning <kaichun.ning@gmail.com> | 2022-05-23 10:41:11 +0200 |
---|---|---|
committer | Conrad Kostecki <conikost@gentoo.org> | 2022-05-23 13:56:48 +0200 |
commit | d23119be6a4c9988eac3ef4258a8b121e1200878 (patch) | |
tree | 3c535a45b2b23974e561dd8ac224f316d753583f /x11-libs | |
parent | x11-libs/cmrt: new package, add 1.0.6 (diff) | |
download | gentoo-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>
Diffstat (limited to 'x11-libs')
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> |