Index: head/lang/intel-compute-runtime/Makefile =================================================================== --- head/lang/intel-compute-runtime/Makefile (revision 532646) +++ head/lang/intel-compute-runtime/Makefile (revision 532647) @@ -1,51 +1,52 @@ # $FreeBSD$ PORTNAME= compute-runtime DISTVERSION= 20.15.16524 +PORTREVISION= 1 CATEGORIES= lang PKGNAMEPREFIX= intel- MAINTAINER= jbeich@FreeBSD.org COMMENT= OpenCL implementation for Intel HD 5000 (Gen8) or newer LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= amd64 i386 ONLY_FOR_ARCHS_REASON= Only Intel GPUs on x86 are supported LIB_DEPENDS= libigc.so:devel/intel-graphics-compiler \ libigdgmm.so:multimedia/gmmlib USES= cmake compiler:c++14-lang localbase:ldflags pkgconfig USE_GITHUB= yes USE_LDCONFIG= yes GH_ACCOUNT= intel CMAKE_ON= SKIP_UNIT_TESTS CMAKE_ARGS= -DNEO_DRIVER_VERSION:STRING="${DISTVERSIONFULL}" PLIST_FILES= etc/OpenCL/vendors/intel.icd \ bin/ocloc \ lib/intel-opencl/libigdrcl.so OPTIONS_DEFINE_amd64= L0 OPTIONS_DEFAULT_amd64= L0 L0_DESC= oneAPI Level Zero support L0_BUILD_DEPENDS= level-zero>0:devel/level-zero L0_CMAKE_BOOL= BUILD_WITH_L0 L0_PLIST_FILES= lib/libze_intel_gpu.so.0.8 \ lib/libze_intel_gpu.so.0.8.0 post-patch: @${REINPLACE_CMD} -e '/-Werror/d' \ -e '/FORCE_RESPONSE_FILE/d' \ ${WRKSRC}/CMakeLists.txt @${REINPLACE_CMD} -e '/OCL_ICD_VENDORDIR/s,/etc,${PREFIX}&,' \ ${WRKSRC}/package.cmake post-install: # install/strip has no effect on install(FILES), so strip manually ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/* ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/intel-opencl/*.so .include Index: head/lang/intel-compute-runtime/files/patch-max_freq =================================================================== --- head/lang/intel-compute-runtime/files/patch-max_freq (revision 532646) +++ head/lang/intel-compute-runtime/files/patch-max_freq (revision 532647) @@ -1,44 +1,60 @@ /sys/bus/pci/devices doesn't exist as kms-drm exports sysfs via sysctl $ clinfo | fgrep clock Max clock frequency 0MHz --- shared/source/os_interface/linux/drm_neo.cpp.orig 2020-04-11 07:41:07 UTC +++ shared/source/os_interface/linux/drm_neo.cpp -@@ -24,6 +24,11 @@ +@@ -24,6 +24,13 @@ #include #include +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +#include +#include ++#include ++#include +#endif + namespace NEO { namespace IoctlHelper { -@@ -104,6 +109,16 @@ int Drm::getEnabledPooledEu(int &enabled) { +@@ -104,6 +111,30 @@ int Drm::getEnabledPooledEu(int &enabled) { int Drm::getMaxGpuFrequency(int &maxGpuFrequency) { maxGpuFrequency = 0; +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ++ struct stat sb; ++ if (fstat(getFileDescriptor(), &sb)) { ++ return 0; ++ } ++ char name[SPECNAMELEN + 1]; ++ if (!devname_r(sb.st_rdev, S_IFCHR, name, sizeof(name))) { ++ return 0; ++ } ++ int id; ++ if (!sscanf(name, "drm/%d", &id) && !sscanf(name, "dri/renderD%d", &id)) { ++ return 0; ++ } ++ ++ char oid[MAXPATHLEN + 1]; + char max_freq[PAGE_SIZE]; + size_t len = sizeof(max_freq); -+ -+ if (sysctlbyname("sys.class.drm.card0.gt_max_freq_mhz", &max_freq, &len, NULL, 0)) { ++ snprintf(oid, sizeof(oid), "sys.class.drm.card%d.gt_max_freq_mhz", id - 128); ++ if (sysctlbyname(oid, &max_freq, &len, NULL, 0)) { + return 0; + } + + maxGpuFrequency = std::stoi(max_freq); +#else std::string clockSysFsPath = getSysFsPciPath(); clockSysFsPath += "/gt_max_freq_mhz"; -@@ -115,6 +130,7 @@ int Drm::getMaxGpuFrequency(int &maxGpuFrequency) { +@@ -115,6 +146,7 @@ int Drm::getMaxGpuFrequency(int &maxGpuFrequency) { ifs >> maxGpuFrequency; ifs.close(); +#endif return 0; }