Index: head/lang/beignet/Makefile =================================================================== --- head/lang/beignet/Makefile (revision 421240) +++ head/lang/beignet/Makefile (revision 421241) @@ -1,59 +1,59 @@ # Created by: Koop Mast # $FreeBSD$ PORTNAME= beignet -PORTVERSION= 1.1.2 +PORTVERSION= 1.2.0 CATEGORIES= lang MASTER_SITES= https://01.org/sites/default/files/ DISTVERSIONSUFFIX= -source MAINTAINER= x11@FreeBSD.org COMMENT= OpenCL library for Intel GPUs BUILD_DEPENDS= clang${LLVMVER}:devel/llvm${LLVMVER} \ opencl>=0:devel/opencl LIB_DEPENDS= libOpenCL.so:devel/ocl-icd \ libdrm.so:graphics/libdrm RUN_DEPENDS= opencl>=0:devel/opencl \ clang${LLVMVER}:devel/llvm${LLVMVER} WRKSRC= ${WRKDIR}/Beignet-${PORTVERSION}-Source -USES= cmake gmake pkgconfig shebangfix +USES= cmake gmake ncurses pkgconfig shebangfix USE_XORG= sm ice x11 xext xfixes USE_GL= gl SHEBANG_FILES= src/git_sha1.sh backend/kernels/compile.sh LLVMVER= 37 CMAKE_ARGS+= -DLLVM_CONFIG_EXECUTABLE=${LOCALBASE}/bin/llvm-config${LLVMVER} ONLY_FOR_ARCHS= i386 amd64 ONLY_FOR_ARCHS_REASON= Beignet needs a graphics driver supported by the Intel KMS driver BROKEN_FreeBSD_9= Beignet is only supported on FreeBSD 10.1 and newer # running tests from makefile doesn't work quite yet, so comment them out for now. #OPTIONS_DEFINE= TESTS #TESTS_DESC= Build and run the test suite .include .if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1000000 && ${OSVERSION} < 1002000 BROKEN= Beignet needs FreeBSD 10.2 or newer due to too old libc++ in 10.1-Release .endif post-patch: @${REINPLACE_CMD} -e 's|llvm-dis|llvm-dis${LLVMVER}|g; \ s|clang |clang${LLVMVER} |g' \ ${WRKSRC}/backend/kernels/compile.sh #post-patch-TESTS-off: @${REINPLACE_CMD} -e 's|ADD_SUBDIRECTORY(utests)||g' \ ${WRKSRC}/CMakeLists.txt post-install: @${RM} -rf ${STAGEDIR}${PREFIX}/include/CL #post-install-TESTS-on: # @cd ${WRKSRC}/utests && sh ./setenv.sh && ./utest_run .include Index: head/lang/beignet/distinfo =================================================================== --- head/lang/beignet/distinfo (revision 421240) +++ head/lang/beignet/distinfo (revision 421241) @@ -1,3 +1,3 @@ -TIMESTAMP = 1463781667 -SHA256 (beignet-1.1.2-source.tar.gz) = 6a8d875afbb5e3c4fc57da1ea80f79abadd9136bfd87ab1f83c02784659f1d96 -SIZE (beignet-1.1.2-source.tar.gz) = 948241 +TIMESTAMP = 1472595672 +SHA256 (beignet-1.2.0-source.tar.gz) = fc7af19efb7596b04510d26c558a576eba3e95e1ef86fd6951213c6a4bf58bff +SIZE (beignet-1.2.0-source.tar.gz) = 1076674 Index: head/lang/beignet/files/patch-src_cl__api.c =================================================================== --- head/lang/beignet/files/patch-src_cl__api.c (revision 421240) +++ head/lang/beignet/files/patch-src_cl__api.c (nonexistent) @@ -1,11 +0,0 @@ ---- src/cl_api.c.orig 2015-02-03 14:58:29.071589000 +0100 -+++ src/cl_api.c 2015-02-03 14:58:39.124158000 +0100 -@@ -64,7 +64,7 @@ - return RET; \ - } while(0) - --inline cl_int -+static inline cl_int - handle_events(cl_command_queue queue, cl_int num, const cl_event *wait_list, - cl_event* event, enqueue_data* data, cl_command_type type) - { Property changes on: head/lang/beignet/files/patch-src_cl__api.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -1 \ No newline at end of property Index: head/lang/beignet/files/patch-src_cl__program.c =================================================================== --- head/lang/beignet/files/patch-src_cl__program.c (revision 421240) +++ head/lang/beignet/files/patch-src_cl__program.c (nonexistent) @@ -1,22 +0,0 @@ ---- src/cl_program.c.orig 2015-02-03 14:59:12.541061000 +0100 -+++ src/cl_program.c 2015-02-03 15:00:05.989743000 +0100 -@@ -166,7 +166,8 @@ - return err; - } - --inline cl_bool isBitcodeWrapper(const unsigned char *BufPtr, const unsigned char *BufEnd) -+static inline cl_bool -+isBitcodeWrapper(const unsigned char *BufPtr, const unsigned char *BufEnd) - { - // See if you can find the hidden message in the magic bytes :-). - // (Hint: it's a little-endian encoding.) -@@ -177,7 +178,8 @@ - BufPtr[3] == 0x0B; - } - --inline cl_bool isRawBitcode(const unsigned char *BufPtr, const unsigned char *BufEnd) -+static inline cl_bool -+isRawBitcode(const unsigned char *BufPtr, const unsigned char *BufEnd) - { - // These bytes sort of have a hidden message, but it's not in - // little-endian this time, and it's a little redundant. Property changes on: head/lang/beignet/files/patch-src_cl__program.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -1 \ No newline at end of property Index: head/lang/beignet/files/patch-backend_src_backend_gen-insn-selection.cpp =================================================================== --- head/lang/beignet/files/patch-backend_src_backend_gen-insn-selection.cpp (revision 421240) +++ head/lang/beignet/files/patch-backend_src_backend_gen-insn-selection.cpp (revision 421241) @@ -1,25 +1,16 @@ Error: No word lists can be found for the language "en_US". --- backend/src/backend/gen_insn_selection.cpp.orig 2015-12-18 07:34:19.000000000 +0000 +++ backend/src/backend/gen_insn_selection.cpp 2016-06-13 17:37:52.540024000 +0000 -@@ -1153,7 +1153,7 @@ - SelectionInstruction *insn = this->appendInsn(SEL_OP_JMPI, 0, 1); - insn->src(0) = src; - insn->index = index.value(); -- insn->extra.longjmp = abs(index - origin) > 800; -+ insn->extra.longjmp = index.value() > origin.value() ? (index - origin) > 800 : (origin - index) > 800; - return insn->extra.longjmp ? 2 : 1; - } - @@ -1752,11 +1752,11 @@ // Boiler plate to initialize the selection library at c++ pre-main static SelectionLibrary *selLib = NULL; + __attribute__((destructor)) static void destroySelectionLibrary(void) { GBE_DELETE(selLib); } static struct SelectionLibraryInitializer { SelectionLibraryInitializer(void) { selLib = GBE_NEW_NO_ARG(SelectionLibrary); - atexit(destroySelectionLibrary); } } selectionLibraryInitializer; Index: head/lang/beignet/files/patch-src_cl__device__id.c =================================================================== --- head/lang/beignet/files/patch-src_cl__device__id.c (revision 421240) +++ head/lang/beignet/files/patch-src_cl__device__id.c (revision 421241) @@ -1,67 +1,65 @@ -diff --git a/src/cl_device_id.c b/src/cl_device_id.c -index e9e2c16..5f35248 100644 ---- src/cl_device_id.c -+++ src/cl_device_id.c -@@ -34,7 +34,12 @@ +--- src/cl_device_id.c.orig 2016-08-23 12:16:02.000000000 +0200 ++++ src/cl_device_id.c 2016-08-31 17:50:49.806646000 +0200 +@@ -35,7 +35,12 @@ #include #include #include +#if defined(__linux__) #include +#elif defined(__FreeBSD__) +#include +#include +#endif #ifndef CL_VERSION_1_2 #define CL_DEVICE_BUILT_IN_KERNELS 0x103F -@@ -202,6 +207,7 @@ LOCAL cl_device_id +@@ -269,6 +274,7 @@ LOCAL cl_device_id cl_get_gt_device(void) { cl_device_id ret = NULL; +/* FIXME check cl_driver_get_device_id() */ const int device_id = cl_driver_get_device_id(); cl_device_id device = NULL; -@@ -526,7 +532,7 @@ skl_gt4_break: +@@ -737,7 +743,7 @@ kbl_gt4_break: case PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS: case PCI_CHIP_SANDYBRIDGE_BRIDGE_S: case PCI_CHIP_SANDYBRIDGE_S_GT: - // Intel(R) HD Graphics SandyBridge not supported yet + printf("Intel(R) HD Graphics SandyBridge not supported yet\n"); ret = NULL; break; default: -@@ -546,6 +552,7 @@ skl_gt4_break: +@@ -757,6 +763,7 @@ kbl_gt4_break: /* Apply any driver-dependent updates to the device info */ cl_driver_update_device_info(ret); +#if defined(__linux__) - struct sysinfo info; - if (sysinfo(&info) == 0) { - uint64_t two_gb = 2 * 1024 * 1024 * 1024ul; -@@ -554,6 +561,24 @@ skl_gt4_break: - two_gb : info.totalram; - ret->max_mem_alloc_size = ret->global_mem_size / 2; + #define toMB(size) (size)&(0xfffffffffffffff<<20) + /* Get the global_mem_size and max_mem_alloc size from + * driver, system ram and hardware*/ +@@ -776,6 +783,24 @@ kbl_gt4_break: + ret->max_mem_alloc_size = toMB((ret->global_mem_size * 3 / 4 > maxallocmem) ? + maxallocmem: ret->global_mem_size * 3 / 4); } +#elif defined(__FreeBSD__) || defined(__DragonFly__) + int mib[2]; + + mib[0] = CTL_HW; + mib[1] = HW_USERMEM; + + uint64_t totalram; + size_t len; + len = sizeof(totalram); + sysctl(mib, 2, &totalram, &len, NULL, 0); + + uint64_t two_gb = 2 * 1024 * 1024 * 1024ul; + ret->global_mem_size = (totalram > two_gb) ? + two_gb : totalram; + ret->max_mem_alloc_size = ret->global_mem_size / 2; +#else +#error "not implimentend on this OS" +#endif return ret; } Index: head/lang/beignet/files/patch-src_cl__event.c =================================================================== --- head/lang/beignet/files/patch-src_cl__event.c (revision 421240) +++ head/lang/beignet/files/patch-src_cl__event.c (revision 421241) @@ -1,28 +1,19 @@ ---- src/cl_event.c.orig 2015-12-18 07:57:09.000000000 +0100 -+++ src/cl_event.c 2016-05-21 00:04:34.412251000 +0200 +--- src/cl_event.c.orig 2016-08-23 12:16:02.000000000 +0200 ++++ src/cl_event.c 2016-08-31 17:43:49.430217000 +0200 @@ -27,6 +27,7 @@ #include #include +#include void cl_event_update_last_events(cl_command_queue queue, int wait) { -@@ -55,7 +56,7 @@ void cl_event_insert_last_events(cl_comm - else set_last_event(queue,event); - } - --inline cl_bool -+static inline cl_bool - cl_event_is_gpu_command_type(cl_command_type type) - { - switch(type) { -@@ -649,7 +650,7 @@ cl_ulong cl_event_get_cpu_timestamp(cl_u +@@ -657,7 +658,7 @@ cl_ulong cl_event_get_cpu_timestamp(cl_u { struct timespec ts; - if(clock_gettime(CLOCK_MONOTONIC_RAW,&ts) != 0){ + if(clock_gettime(CLOCK_MONOTONIC,&ts) != 0){ printf("CPU Timmer error\n"); return CL_FALSE; } Index: head/lang/beignet/pkg-plist =================================================================== --- head/lang/beignet/pkg-plist (revision 421240) +++ head/lang/beignet/pkg-plist (revision 421241) @@ -1,28 +1,29 @@ etc/OpenCL/vendors/intel-beignet.icd lib/beignet/beignet.bc lib/beignet/beignet.pch lib/beignet/include/ocl.h lib/beignet/include/ocl_as.h lib/beignet/include/ocl_async.h lib/beignet/include/ocl_atom.h lib/beignet/include/ocl_common.h lib/beignet/include/ocl_convert.h lib/beignet/include/ocl_defines.h lib/beignet/include/ocl_float.h lib/beignet/include/ocl_geometric.h lib/beignet/include/ocl_image.h lib/beignet/include/ocl_integer.h lib/beignet/include/ocl_math.h lib/beignet/include/ocl_memcpy.h lib/beignet/include/ocl_memset.h lib/beignet/include/ocl_misc.h lib/beignet/include/ocl_printf.h lib/beignet/include/ocl_relational.h lib/beignet/include/ocl_simd.h lib/beignet/include/ocl_sync.h lib/beignet/include/ocl_types.h lib/beignet/include/ocl_vload.h +lib/beignet/include/ocl_work_group.h lib/beignet/include/ocl_workitem.h lib/beignet/libcl.so lib/beignet/libgbe.so lib/beignet/libgbeinterp.so