diff --git a/multimedia/libva-intel-media-driver/Makefile b/multimedia/libva-intel-media-driver/Makefile index 6462e47a0e88..4e63ea8adf78 100644 --- a/multimedia/libva-intel-media-driver/Makefile +++ b/multimedia/libva-intel-media-driver/Makefile @@ -1,60 +1,60 @@ PORTNAME= media-driver DISTVERSIONPREFIX= intel-media- -DISTVERSION= 22.4.0 +DISTVERSION= 22.4.1 CATEGORIES= multimedia PKGNAMEPREFIX= libva-intel- PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ -PATCHFILES+= 4a6e36a98c0b.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= 533e7ae79ff7.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= c0ecf4c2c725.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= 005cbf7b180d.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= 428eab9583eb.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= 615ae63a9ca6.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= 774ab04fbce1.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= 762a39a7da08.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= e1d499bc31b5.patch:-p1 # https://github.com/intel/media-driver/pull/819 -PATCHFILES+= 721cc37f1b56.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= dc74b5f2fe82.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= 921023462274.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= 6de6d1940e88.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= 8f3fa352bd79.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= 2c68fd4a62fb.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= e850bcb7b6e1.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= 22d91bd65702.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= d7f88bd305f8.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= d7280f526022.patch:-p1 # https://github.com/intel/media-driver/pull/819 +PATCHFILES+= 231c06faa4c4.patch:-p1 # https://github.com/intel/media-driver/pull/819 MAINTAINER= jbeich@FreeBSD.org COMMENT= VAAPI driver for Intel HD 5000 (Gen8) or newer LICENSE= MIT BSD3CLAUSE LICENSE_COMB= multi LICENSE_FILE= ${WRKSRC}/LICENSE.md ONLY_FOR_ARCHS= amd64 i386 ONLY_FOR_ARCHS_REASON= only Intel GPUs on x86 are supported BUILD_DEPENDS= gmmlib>=19.3.1:multimedia/gmmlib \ libva>=2.7.0:multimedia/libva LIB_DEPENDS= libigdgmm.so:multimedia/gmmlib \ libva.so:multimedia/libva USES= cmake:testing compiler:c++11-lib localbase pkgconfig USE_GITHUB= yes GH_ACCOUNT= intel ARCH_SUFX= ${ARCH:S/i386/32/:S/amd//:S/x86_//} CMAKE_OFF= MEDIA_BUILD_FATAL_WARNINGS BUILD_CMRTLIB CMAKE_OFF+= ${CMAKE_TESTING_ON} CMAKE_TESTING_ON= MEDIA_RUN_TEST_SUITE # XXX Unbundle googletest CMAKE_TESTING_TARGET= RunULT CMAKE_ARGS= -DBUILD_TYPE:STRING="${CMAKE_BUILD_TYPE}" \ -DARCH:STRING="${ARCH_SUFX}" \ -DUFO_MARCH:STRING="${CPUTYPE}" PLIST_FILES= lib/dri/iHD_drv_video.so OPTIONS_DEFINE= X11 OPTIONS_DEFAULT=X11 X11_LIB_DEPENDS= libva-x11.so:multimedia/libva post-patch: @${REINPLACE_CMD} 's/$${GIT_COMMIT}/${DISTVERSIONFULL}/' \ ${WRKSRC}/media_driver/cmake/linux/media_compile_flags_linux.cmake post-patch-X11-off: @${REINPLACE_CMD} -i .nox11 '/find_package.*X11/d' \ ${WRKSRC}/media_driver/media_top_cmake.cmake .include diff --git a/multimedia/libva-intel-media-driver/distinfo b/multimedia/libva-intel-media-driver/distinfo index aeb3de266af7..32d3b8660388 100644 --- a/multimedia/libva-intel-media-driver/distinfo +++ b/multimedia/libva-intel-media-driver/distinfo @@ -1,23 +1,23 @@ -TIMESTAMP = 1649696783 -SHA256 (intel-media-driver-intel-media-22.4.0_GH0.tar.gz) = f070527b141174970a17195d0225ed43693c39fec83cd5e6d0effaa88e2a5553 -SIZE (intel-media-driver-intel-media-22.4.0_GH0.tar.gz) = 27377195 -SHA256 (4a6e36a98c0b.patch) = 7d09fc3ba601a782b60638f6c2bda7195dd76cf18ed5570c7ff24778b4884391 -SIZE (4a6e36a98c0b.patch) = 1239 -SHA256 (533e7ae79ff7.patch) = 4bd5633c8b5b3641c68b15dda2eea8cd60a999908cb08cf122cb87c62ca95955 -SIZE (533e7ae79ff7.patch) = 1215 -SHA256 (c0ecf4c2c725.patch) = b55fad608637401d970732aaac920921336ab7e2b987ee3bfb696c5065d46f0f -SIZE (c0ecf4c2c725.patch) = 2186 -SHA256 (005cbf7b180d.patch) = fd04a999924cb01f7ff19ec3cdad1dc47b402ae5bd8689592e68c2608266437a -SIZE (005cbf7b180d.patch) = 2193 -SHA256 (428eab9583eb.patch) = c1b72e93494f6c436465f8338dcea2cc290be6a0df36d130ae3eff62e8d95d34 -SIZE (428eab9583eb.patch) = 1138 -SHA256 (615ae63a9ca6.patch) = eebc182e1bb3b38a27c8a416cf964c963a84a56b21a980b4c9a32fc2ddfb6e02 -SIZE (615ae63a9ca6.patch) = 3417 -SHA256 (774ab04fbce1.patch) = 39bfbf9989fecaad834cf725ceb0f85bd93a409419e6d27235ba1ff50bf1faf8 -SIZE (774ab04fbce1.patch) = 6392 -SHA256 (762a39a7da08.patch) = 96e2ac717cf3ffebecb8cefe37de44ccb95091a9d87a75dd03a38bf9ff0dc686 -SIZE (762a39a7da08.patch) = 2404 -SHA256 (e1d499bc31b5.patch) = a7e74670f88de5f8b83a2fe1872ea15f24f5d823ddf4b5c3e7b2a0e090d610a0 -SIZE (e1d499bc31b5.patch) = 3335 -SHA256 (721cc37f1b56.patch) = 0a01b30453907dfe59f52f0e581a63cb5de9310f21560c610cb5be83d5f6185e -SIZE (721cc37f1b56.patch) = 802 +TIMESTAMP = 1650600295 +SHA256 (intel-media-driver-intel-media-22.4.1_GH0.tar.gz) = 5589d4e0142ae957d58798e3fba08d9e5e096e92eed422d40a82d45a14e6042f +SIZE (intel-media-driver-intel-media-22.4.1_GH0.tar.gz) = 27407593 +SHA256 (dc74b5f2fe82.patch) = d844140b4243b3d30ce452296b4a44add79f41da745fc0cfb5cc6b47ec6a15a3 +SIZE (dc74b5f2fe82.patch) = 1239 +SHA256 (921023462274.patch) = e7ecc71c27f68b8668c8742f123e4aa4da367ab7b94dcb011ee6333c784a0bfd +SIZE (921023462274.patch) = 1265 +SHA256 (6de6d1940e88.patch) = 8f02743cbcf2b254ff46b0fadd99904ea3baf1701c6512f2b9f07d19d26edb1f +SIZE (6de6d1940e88.patch) = 2186 +SHA256 (8f3fa352bd79.patch) = 5fddcb5a21e5deacdcc2c12d2404c18e41515fa3b08724303d9b19a44f1e1a85 +SIZE (8f3fa352bd79.patch) = 2192 +SHA256 (2c68fd4a62fb.patch) = 5d880f5140a444368d15c3314a87fc7d34f6e8ffb840f460298932ee71fd8546 +SIZE (2c68fd4a62fb.patch) = 1180 +SHA256 (e850bcb7b6e1.patch) = eaec515e29b441c335f2514745b3ef9f4f198b3c1f522f334da3153023a06941 +SIZE (e850bcb7b6e1.patch) = 3417 +SHA256 (22d91bd65702.patch) = 25797e672d83cc0e175e3012b8e7b42dab9737ce6ba206df720b5ceacebffebc +SIZE (22d91bd65702.patch) = 6453 +SHA256 (d7f88bd305f8.patch) = 4cf2f0363fd67216a56de808809f7357a644736a0620a3b564f0355bf2c831a0 +SIZE (d7f88bd305f8.patch) = 2404 +SHA256 (d7280f526022.patch) = eb085bb3ff3f02c0ea1fc7f5e543953aba3c11361d02810d318df8fc6ca347b3 +SIZE (d7280f526022.patch) = 3276 +SHA256 (231c06faa4c4.patch) = 2dd7e208a6914c640402ac2f912ddb03fb565020cd389a630692ad0d988cc3b0 +SIZE (231c06faa4c4.patch) = 802 diff --git a/multimedia/libva-intel-media-driver/files/patch-revert b/multimedia/libva-intel-media-driver/files/patch-revert index ded901d4dff5..ff6d3c1ca303 100644 --- a/multimedia/libva-intel-media-driver/files/patch-revert +++ b/multimedia/libva-intel-media-driver/files/patch-revert @@ -1,239 +1,240 @@ Temporarily revert https://github.com/intel/media-driver/commit/53405da4ad2d until bundled libdrm is ported In file included from media_driver/linux/common/os/mos_interface.cpp:37: cmrtlib/linux/hardware/drm_device.h:268:19: error: use of undeclared identifier 'DRM_MAJOR' return maj == DRM_MAJOR; ^ ---- cmrtlib/linux/hardware/drm_device.h.orig 2022-01-12 07:51:21 UTC +--- cmrtlib/linux/hardware/drm_device.h.orig 2022-05-08 00:14:20 UTC +++ cmrtlib/linux/hardware/drm_device.h @@ -53,7 +53,6 @@ #endif #include #include -#include #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) @@ -125,7 +124,7 @@ typedef void *drmAddress, **drmAddressPtr; /* #define MAX3( A, B, C ) ((A) > (B) ? MAX2(A, C) : MAX2(B, C)) #define __align_mask(value, mask) (((value) + (mask)) & ~(mask)) -#define ALIGN_CEIL(value, alignment) __align_mask(value, (__typeof__(value))((alignment) - 1)) +#define ALIGN(value, alignment) __align_mask(value, (__typeof__(value))((alignment) - 1)) #define DRM_PLATFORM_DEVICE_NAME_LEN 512 typedef struct _drmPciBusInfo { @@ -231,21 +230,6 @@ drm_device_validate_flags(uint32_t flags) return (flags & ~DRM_DEVICE_GET_PCI_REVISION); } -static bool -drm_device_has_rdev(drmDevicePtr device, dev_t find_rdev) -{ - struct stat sbuf; - - for (int i = 0; i < DRM_NODE_MAX; i++) { - if (device->available_nodes & 1 << i) { - if (stat(device->nodes[i], &sbuf) == 0 && - sbuf.st_rdev == find_rdev) - return true; - } - } - return false; -} - static int drmGetMaxNodeName(void) { return sizeof(DRM_DIR_NAME) + @@ -305,7 +289,7 @@ static drmDevicePtr drmDeviceAlloc(unsigned int type, unsigned int i; char *ptr; - max_node_length = ALIGN_CEIL(drmGetMaxNodeName(), sizeof(void *)); + max_node_length = ALIGN(drmGetMaxNodeName(), sizeof(void *)); extra = DRM_NODE_MAX * (sizeof(void *) + max_node_length); @@ -1192,105 +1176,6 @@ int drmGetDevices(drmDevicePtr devices[], int max_devi return drmGetDevices2(DRM_DEVICE_GET_PCI_REVISION, devices, max_devices); } -/** - * Get information about the opened drm device - * - * \param fd file descriptor of the drm device - * \param flags feature/behaviour bitmask - * \param device the address of a drmDevicePtr where the information - * will be allocated in stored - * - * \return zero on success, negative error code otherwise. - * - * \note Unlike drmGetDevice it does not retrieve the pci device revision field - * unless the DRM_DEVICE_GET_PCI_REVISION \p flag is set. - */ -int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device) -{ - drmDevicePtr local_devices[MAX_DRM_NODES]; - drmDevicePtr d; - DIR *sysdir; - struct dirent *dent; - struct stat sbuf; - int subsystem_type; - int maj, min; - int ret, i, node_count; - dev_t find_rdev; - - if (drm_device_validate_flags(flags)) - return -EINVAL; - - if (fd == -1 || device == NULL) - return -EINVAL; - - if (fstat(fd, &sbuf)) - return -errno; - - find_rdev = sbuf.st_rdev; - maj = major(sbuf.st_rdev); - min = minor(sbuf.st_rdev); - - if (!drmNodeIsDRM(maj, min) || !S_ISCHR(sbuf.st_mode)) - return -EINVAL; - - subsystem_type = drmParseSubsystemType(maj, min); - if (subsystem_type < 0) - return subsystem_type; - - sysdir = opendir(DRM_DIR_NAME); - if (!sysdir) - return -errno; - - i = 0; - while ((dent = readdir(sysdir))) { - ret = process_device(&d, dent->d_name, subsystem_type, true, flags); - if (ret) - continue; - - if (i >= MAX_DRM_NODES) { - fprintf(stderr, "More than %d drm nodes detected. " - "Please report a bug - that should not happen.\n" - "Skipping extra nodes\n", MAX_DRM_NODES); - break; - } - local_devices[i] = d; - i++; - } - node_count = i; - - drmFoldDuplicatedDevices(local_devices, node_count); - - *device = NULL; - - for (i = 0; i < node_count; i++) { - if (!local_devices[i]) - continue; - - if (drm_device_has_rdev(local_devices[i], find_rdev)) - *device = local_devices[i]; - else - drmFreeDevice(&local_devices[i]); - } - - closedir(sysdir); - if (*device == NULL) - return -ENODEV; - return 0; -} - -/** - * Get information about the opened drm device - * - * \param fd file descriptor of the drm device - * \param device the address of a drmDevicePtr where the information - * will be allocated in stored - * - * \return zero on success, negative error code otherwise. - */ -int drmGetDevice(int fd, drmDevicePtr *device) -{ - return drmGetDevice2(fd, DRM_DEVICE_GET_PCI_REVISION, device); -} static int32_t GetRendererFileDescriptor(char * drm_node) { ---- media_driver/linux/common/os/i915/include/xf86drm.h.orig 2022-01-12 07:51:21 UTC +--- media_driver/linux/common/os/i915/include/xf86drm.h.orig 2022-04-22 04:04:55 UTC +++ media_driver/linux/common/os/i915/include/xf86drm.h @@ -713,6 +713,39 @@ extern char *drmGetRenderDeviceNameFromFd(int fd); #define DRM_BUS_PCI 0 +typedef struct _drmPciBusInfo { + uint16_t domain; + uint8_t bus; + uint8_t dev; + uint8_t func; +} drmPciBusInfo, *drmPciBusInfoPtr; + +typedef struct _drmPciDeviceInfo { + uint16_t vendor_id; + uint16_t device_id; + uint16_t subvendor_id; + uint16_t subdevice_id; + uint8_t revision_id; +} drmPciDeviceInfo, *drmPciDeviceInfoPtr; + +typedef struct _drmDevice { + char **nodes; /* DRM_NODE_MAX sized array */ + int available_nodes; /* DRM_NODE_* bitmask */ + int bustype; + union { + drmPciBusInfoPtr pci; + } businfo; + union { + drmPciDeviceInfoPtr pci; + } deviceinfo; +} drmDevice, *drmDevicePtr; + +extern int drmGetDevice(int fd, drmDevicePtr *device); +extern void drmFreeDevice(drmDevicePtr *device); + +extern int drmGetDevices(drmDevicePtr devices[], int max_devices); +extern void drmFreeDevices(drmDevicePtr devices[], int count); + #if defined(__cplusplus) } #endif ---- media_driver/linux/common/os/media_srcs.cmake.orig 2022-01-12 07:51:21 UTC +--- media_driver/linux/common/os/media_srcs.cmake.orig 2022-04-22 04:04:55 UTC +++ media_driver/linux/common/os/media_srcs.cmake -@@ -24,9 +24,6 @@ if(ENABLE_PRODUCTION_KMD) +@@ -27,10 +27,6 @@ endif() media_include_subdirectory(i915_production) endif() -# This is to include drm_device.h in cmrtlib, no cpp file needed. -include_directories(${BS_DIR_MEDIA}/cmrtlib/linux/hardware) +- - set(TMP_SOURCES_ ${CMAKE_CURRENT_LIST_DIR}/hwinfo_linux.c ${CMAKE_CURRENT_LIST_DIR}/mos_context_specific.cpp ---- media_driver/linux/common/os/mos_interface.cpp.orig 2022-01-12 07:51:21 UTC +--- media_driver/linux/common/os/mos_interface.cpp.orig 2022-04-22 04:04:55 UTC +++ media_driver/linux/common/os/mos_interface.cpp @@ -34,7 +34,6 @@ #include "mos_os_virtualengine_scalability_specific_next.h" #include "mos_graphicsresource_specific_next.h" #include "mos_bufmgr_priv.h" -#include "drm_device.h" #if (_DEBUG || _RELEASE_INTERNAL) #include //for simulate random OS API failure ---- media_driver/media_top_cmake.cmake.orig 2022-01-12 07:51:21 UTC +--- media_driver/media_top_cmake.cmake.orig 2022-05-08 00:14:20 UTC +++ media_driver/media_top_cmake.cmake -@@ -145,7 +145,7 @@ if (NOT DEFINED INCLUDED_LIBS OR "${INCLUDED_LIBS}" ST +@@ -198,7 +198,7 @@ if (NOT DEFINED INCLUDED_LIBS OR "${INCLUDED_LIBS}" ST endif() target_compile_options( ${LIB_NAME} PUBLIC ${LIBGMM_CFLAGS_OTHER}) - target_link_libraries ( ${LIB_NAME} ${LIBGMM_LIBRARIES}) + target_link_libraries ( ${LIB_NAME} ${LIBGMM_LIBRARIES} drm) include(${MEDIA_EXT_CMAKE}/ext/media_feature_include_ext.cmake OPTIONAL)