summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorDrommer2022-06-03 23:36:09 +0300
committerDrommer2022-06-03 23:36:09 +0300
commit9cd47b7a20eab0dece24e1e56a8b2ddc828bccb6 (patch)
tree035fbbd4a82665844cde076184cd349fa8e55beb
parentcc04b7568ba8dbb01871386044d581a7d7c8bec1 (diff)
downloadaur-9cd47b7a20eab0dece24e1e56a8b2ddc828bccb6.tar.gz
Update
-rw-r--r--.SRCINFO27
-rw-r--r--PKGBUILD96
-rw-r--r--cflags.patch49
-rw-r--r--cl_accelerator_intel.patch147
-rw-r--r--coffeelake-cometlake-amberlake.patch289
-rw-r--r--fix-docs-links.patch63
-rw-r--r--gbe_bin_generater.patch49
-rw-r--r--reduce-notfound-output.patch41
8 files changed, 711 insertions, 50 deletions
diff --git a/.SRCINFO b/.SRCINFO
index b24b03603d65..198e56dd99a8 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,31 +1,42 @@
pkgbase = beignet
pkgdesc = An open source OpenCL implementation for Intel IvyBridge & Haswell iGPUs
- pkgver = 1.3.2+12+gfc5f430c
- pkgrel = 4
- url = https://01.org/beignet
+ pkgver = 1.3.2.r3283.419c0417
+ pkgrel = 1
+ url = https://www.freedesktop.org/wiki/Software/Beignet/
arch = x86_64
license = LGPL
makedepends = git
- makedepends = llvm
+ makedepends = llvm10
makedepends = cmake
makedepends = python
makedepends = ocl-icd
depends = glu
- depends = llvm-libs
- depends = clang
+ depends = llvm10-libs
+ depends = clang10
depends = mesa
depends = opencl-headers
provides = opencl-intel
provides = opencl-driver
conflicts = opencl-intel
- source = git+https://anongit.freedesktop.org/git/beignet.git#commit=fc5f430cb7b7a8f694d86acbb038bd5b38ec389c
+ source = git+https://github.com/intel/beignet.git#commit=419c041736c5d19cd9c9e7f90717792a01826638
source = llvm8.patch
source = llvm9.patch
source = llvm10.patch
+ source = cflags.patch
+ source = cl_accelerator_intel.patch
+ source = coffeelake-cometlake-amberlake.patch
+ source = fix-docs-links.patch
+ source = gbe_bin_generater.patch
+ source = reduce-notfound-output.patch
sha256sums = SKIP
sha256sums = d24e4d8a1a791dc02c91117f900143789dd6f01eaa89292ad67c4fb4eaf84328
sha256sums = 5913a93fe6ef77b91480bb6d27c7875673294c0a8a924b2ac66756d0d3577908
sha256sums = 2eb9b0801e24f4e537033b41a6bc462e4082f6216d62933240ca3010020ea779
+ sha256sums = 4e6c37dc7b5b40321b4f460d712b88bb644dd061a747ce94aa68187b26b15440
+ sha256sums = 2e058d2d0f30c7a528ccbbd48de2750bdad18927f29891ee53e9d6923250e60b
+ sha256sums = f76b383d53adf441865d25e887d12bbbe5956f1ea4836acc99f060f626a7d39f
+ sha256sums = 88ad44b0299a934610c6bb7e404f539d8c3dde0a4d9fa3e9a7b0f86b670a2e74
+ sha256sums = 7f55e2ddb98e94276a31fae297c1d465c8c3c893068d982cadf28501c88a7810
+ sha256sums = 3f51f892f6cba9c4af81a15117f833769a2526032df93fd928426ed77ffd343b
pkgname = beignet
-
diff --git a/PKGBUILD b/PKGBUILD
index e0f06d61a50c..4db849114d63 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,61 +1,73 @@
-# Maintainer:
-# Contributor: Bruno Pagani <archange@archlinux.org>
-# Contributor: Antoine Lubineau <antoine@lubignon.info>
-# Contributor: Leopold Bloom <blinxwang@gmail.com>
-# Contributor: Michal Krenek (a.k.a. Mikos) <m.krenek@gmail.com>
+# Maintainer: Drommer <drommer@github.com>
pkgname=beignet
-pkgver=1.3.2+12+gfc5f430c
-pkgrel=4
+pkgver=1.3.2.r3283.419c0417
+pkgrel=1
pkgdesc="An open source OpenCL implementation for Intel IvyBridge & Haswell iGPUs"
-arch=(x86_64)
-url="https://01.org/${pkgname}"
-license=(LGPL)
-depends=(glu llvm-libs clang mesa opencl-headers)
-makedepends=(git llvm cmake python ocl-icd)
-provides=(opencl-intel opencl-driver)
-conflicts=(opencl-intel)
-_commit=fc5f430cb7b7a8f694d86acbb038bd5b38ec389c # master as of 2018-08-20
-source=(
- "git+https://anongit.freedesktop.org/git/beignet.git#commit=$_commit"
- llvm8.patch
- llvm9.patch
- llvm10.patch
+arch=('x86_64')
+url="https://www.freedesktop.org/wiki/Software/Beignet/"
+license=('LGPL')
+depends=('glu' 'llvm10-libs' 'clang10' 'mesa' 'opencl-headers')
+makedepends=('git' 'llvm10' 'cmake' 'python' 'ocl-icd')
+provides=('opencl-intel' 'opencl-driver')
+conflicts=('opencl-intel')
+source=("git+https://github.com/intel/beignet.git#commit=419c041736c5d19cd9c9e7f90717792a01826638"
+ "llvm8.patch"
+ "llvm9.patch"
+ "llvm10.patch"
+ "cflags.patch"
+ "cl_accelerator_intel.patch"
+ "coffeelake-cometlake-amberlake.patch"
+ "fix-docs-links.patch"
+ "gbe_bin_generater.patch"
+ "reduce-notfound-output.patch"
)
-sha256sums=(
- SKIP
- d24e4d8a1a791dc02c91117f900143789dd6f01eaa89292ad67c4fb4eaf84328
- 5913a93fe6ef77b91480bb6d27c7875673294c0a8a924b2ac66756d0d3577908
- 2eb9b0801e24f4e537033b41a6bc462e4082f6216d62933240ca3010020ea779
+sha256sums=('SKIP'
+ 'd24e4d8a1a791dc02c91117f900143789dd6f01eaa89292ad67c4fb4eaf84328'
+ '5913a93fe6ef77b91480bb6d27c7875673294c0a8a924b2ac66756d0d3577908'
+ '2eb9b0801e24f4e537033b41a6bc462e4082f6216d62933240ca3010020ea779'
+ '4e6c37dc7b5b40321b4f460d712b88bb644dd061a747ce94aa68187b26b15440'
+ '2e058d2d0f30c7a528ccbbd48de2750bdad18927f29891ee53e9d6923250e60b'
+ 'f76b383d53adf441865d25e887d12bbbe5956f1ea4836acc99f060f626a7d39f'
+ '88ad44b0299a934610c6bb7e404f539d8c3dde0a4d9fa3e9a7b0f86b670a2e74'
+ '7f55e2ddb98e94276a31fae297c1d465c8c3c893068d982cadf28501c88a7810'
+ '3f51f892f6cba9c4af81a15117f833769a2526032df93fd928426ed77ffd343b'
)
-prepare() {
- cd ${pkgname}
+pkgver() {
+ cd $pkgname
+ printf "1.3.2.r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}
- # Remove implementation of cl_intel_device_side_avc_motion_estimation
- # (conflicts with the implemention in Clang 8)
- git revert -n 9b7ca443cf7b 9cb7ff4c285d
+prepare() {
+ cd $pkgname
- # Patches from FreeBSD + Debian to build with newer LLVM
- patch -Np1 -i ../llvm8.patch
- patch -Np1 -i ../llvm9.patch
+ git revert -n 9b7ca443cf7b 9cb7ff4c285d 1bd0d252d733
- # https://lists.freedesktop.org/archives/beignet/2020-January/009251.html
- # https://github.com/intel/opencl-clang/commit/77ae1114c7bf79d724f5129461
- patch -Np1 -i ../llvm10.patch
+ patch -Np1 -i ../llvm8.patch
+ patch -Np1 -i ../llvm9.patch
+ patch -Np1 -i ../llvm10.patch
+ patch -Np1 -i ../cflags.patch
+ patch -Np1 -i ../cl_accelerator_intel.patch
+ patch -Np1 -i ../coffeelake-cometlake-amberlake.patch
+ patch -Np1 -i ../fix-docs-links.patch
+ patch -Np1 -i ../gbe_bin_generater.patch
+ patch -Np1 -i ../reduce-notfound-output.patch
}
build() {
- cmake -B build -S ${pkgname} \
+ cd $pkgname
+
+ cmake -DLLVM_INSTALL_DIR=/opt/llvm10/bin \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DCMAKE_BUILD_TYPE=RELEASE
- make -C build
+ make
}
package() {
- make -C build DESTDIR="${pkgdir}" install
- # Remove headers already provided by 'opencl-headers'
- cd "${pkgdir}"/usr/include/CL
- rm cl.h cl_egl.h cl_ext.h cl_gl.h cl_gl_ext.h cl_platform.h opencl.h
+ cd $pkgname
+ make DESTDIR=$pkgdir install
+ # Remove headers already provided by 'opencl-headers'
+ rm -f $pkgdir/usr/include/CL/{cl.h,cl_{egl.h,ext.h,gl.h,gl_ext.h,platform.h},opencl.h}
}
diff --git a/cflags.patch b/cflags.patch
new file mode 100644
index 000000000000..1bedcf14d7a7
--- /dev/null
+++ b/cflags.patch
@@ -0,0 +1,49 @@
+Description: Set compiler flags
+
+Respect CFLAGS,CXXFLAGS,LDFLAGS (security hardening etc.)
+Be verbose
+Disable non-policy-compliant instruction set assumptions (slows the
+OpenCL compiler by ~few%, no effect on OpenCL execution speed)
+
+Author: Simon Richter <sjr@debian.org>,Rebecca Palmer <rebecca_palmer@zoho.com>
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -31,7 +31,6 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINA
+
+ INCLUDE (FindPkgConfig)
+
+-SET(CMAKE_VERBOSE_MAKEFILE "false")
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/")
+ INCLUDE (GNUInstallDirs OPTIONAL)
+ # support old CMake without GNUInstallDirs
+@@ -73,9 +72,9 @@ ADD_DEFINITIONS(-DGEN7_SAMPLER_CLAMP_BOR
+
+ # compiler flag setting
+ if (COMPILER STREQUAL "GCC")
+- set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -funroll-loops -fstrict-aliasing -msse2 -msse3 -mssse3 -msse4.1 -fPIC -Wall -mfpmath=sse -Wcast-align -Wl,-E")
++ set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -funroll-loops -fstrict-aliasing -fPIC -Wall -Wcast-align -Wl,-E")
+ elseif (COMPILER STREQUAL "CLANG")
+- set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -funroll-loops -fstrict-aliasing -msse2 -msse3 -mssse3 -msse4.1 -fPIC -Wall")
++ set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -funroll-loops -fstrict-aliasing -fPIC -Wall")
+ elseif (COMPILER STREQUAL "ICC")
+ set (CMAKE_C_CXX_FLAGS "${CMAKE_C_CXX_FLAGS} -wd2928 -Wall -fPIC -fstrict-aliasing -fp-model fast -msse4.1 -Wl,-E")
+ endif ()
+--- a/backend/src/sys/platform.hpp
++++ b/backend/src/sys/platform.hpp
+@@ -41,15 +41,6 @@
+ #define __X86__
+ #endif
+
+-/* We require SSE ... */
+-#ifndef __SSE__
+-#define __SSE__
+-#endif
+-
+-/* ... and SSE2 */
+-#ifndef __SSE2__
+-#define __SSE2__
+-#endif
+
+ #if defined(_INCLUDED_IMM)
+ // #define __AVX__
+
diff --git a/cl_accelerator_intel.patch b/cl_accelerator_intel.patch
new file mode 100644
index 000000000000..c60dcaa29acd
--- /dev/null
+++ b/cl_accelerator_intel.patch
@@ -0,0 +1,147 @@
+Description: Move cl_intel_accelerator to cl_intel.h
+
+Beignet's own headers define cl_intel_accelerator etc directly in
+cl_ext.h, but khronos-opencl-headers 2.2~ places these in a separate
+file cl_ext_intel.h, and older versions do not include it at all.
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Forwarded: https://lists.freedesktop.org/archives/beignet/2018-July/009217.html
+
+--- a/include/CL/cl_intel.h
++++ b/include/CL/cl_intel.h
+@@ -26,6 +26,115 @@
+ extern "C" {
+ #endif
+
++#if defined(__CL_EXT_H) && !defined(cl_intel_accelerator)
++#ifdef CL_VERSION_2_2
++#include "CL/cl_ext_intel.h"
++#else
++/*********************************
++* cl_intel_accelerator extension *
++*********************************/
++#define cl_intel_accelerator 1
++#define cl_intel_motion_estimation 1
++
++typedef struct _cl_accelerator_intel* cl_accelerator_intel;
++typedef cl_uint cl_accelerator_type_intel;
++typedef cl_uint cl_accelerator_info_intel;
++
++typedef struct _cl_motion_estimation_desc_intel {
++ cl_uint mb_block_type;
++ cl_uint subpixel_mode;
++ cl_uint sad_adjust_mode;
++ cl_uint search_path_type;
++} cl_motion_estimation_desc_intel;
++
++/* Error Codes */
++#define CL_INVALID_ACCELERATOR_INTEL -1094
++#define CL_INVALID_ACCELERATOR_TYPE_INTEL -1095
++#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL -1096
++#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL -1097
++
++/* Deprecated Error Codes */
++#define CL_INVALID_ACCELERATOR_INTEL_DEPRECATED -6000
++#define CL_INVALID_ACCELERATOR_TYPE_INTEL_DEPRECATED -6001
++#define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL_DEPRECATED -6002
++#define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL_DEPRECATED -6003
++
++/* cl_accelerator_type_intel */
++#define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL 0x0
++
++/* cl_accelerator_info_intel */
++#define CL_ACCELERATOR_DESCRIPTOR_INTEL 0x4090
++#define CL_ACCELERATOR_REFERENCE_COUNT_INTEL 0x4091
++#define CL_ACCELERATOR_CONTEXT_INTEL 0x4092
++#define CL_ACCELERATOR_TYPE_INTEL 0x4093
++
++/*cl_motion_detect_desc_intel flags */
++#define CL_ME_MB_TYPE_16x16_INTEL 0x0
++#define CL_ME_MB_TYPE_8x8_INTEL 0x1
++#define CL_ME_MB_TYPE_4x4_INTEL 0x2
++
++#define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL 0x0
++#define CL_ME_SUBPIXEL_MODE_HPEL_INTEL 0x1
++#define CL_ME_SUBPIXEL_MODE_QPEL_INTEL 0x2
++
++#define CL_ME_SAD_ADJUST_MODE_NONE_INTEL 0x0
++#define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL 0x1
++
++#define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL 0x0
++#define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL 0x1
++#define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL 0x5
++
++extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL
++clCreateAcceleratorINTEL(
++ cl_context /* context */,
++ cl_accelerator_type_intel /* accelerator_type */,
++ size_t /* descriptor_size */,
++ const void* /* descriptor */,
++ cl_int* /* errcode_ret */ ) CL_EXT_SUFFIX__VERSION_1_2;
++
++typedef CL_API_ENTRY cl_accelerator_intel
++ (CL_API_CALL *clCreateAcceleratorINTEL_fn)(
++ cl_context /* context */,
++ cl_accelerator_type_intel /* accelerator_type */,
++ size_t /* descriptor_size */,
++ const void* /* descriptor */,
++ cl_int* /* errcode_ret */ ) CL_EXT_SUFFIX__VERSION_1_2;
++
++extern CL_API_ENTRY cl_int CL_API_CALL
++clGetAcceleratorInfoINTEL
++(
++ cl_accelerator_intel /* accelerator */,
++ cl_accelerator_info_intel /* param_name */,
++ size_t /* param_value_size */,
++ void* /* param_value */,
++ size_t* /* param_value_size_ret */ ) CL_EXT_SUFFIX__VERSION_1_2;
++
++typedef CL_API_ENTRY cl_int
++ (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)(
++ cl_accelerator_intel /* accelerator */,
++ cl_accelerator_info_intel /* param_name */,
++ size_t /* param_value_size */,
++ void* /* param_value */,
++ size_t* /* param_value_size_ret */ ) CL_EXT_SUFFIX__VERSION_1_2;
++
++extern CL_API_ENTRY cl_int CL_API_CALL
++clRetainAcceleratorINTEL(
++ cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2;
++
++typedef CL_API_ENTRY cl_int
++ (CL_API_CALL *clRetainAcceleratorINTEL_fn)(
++ cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2;
++
++extern CL_API_ENTRY cl_int CL_API_CALL
++clReleaseAcceleratorINTEL(
++ cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2;
++
++typedef CL_API_ENTRY cl_int
++ (CL_API_CALL *clReleaseAcceleratorINTEL_fn)(
++ cl_accelerator_intel /* accelerator */ ) CL_EXT_SUFFIX__VERSION_1_2;
++#endif
++#endif
++
+ #define CL_MEM_PINNABLE (1 << 10)
+
+ /* Track allocations and report current number of unfreed allocations */
+--- a/src/cl_accelerator_intel.h
++++ b/src/cl_accelerator_intel.h
+@@ -4,6 +4,7 @@
+ #include "cl_base_object.h"
+ #include "CL/cl.h"
+ #include "CL/cl_ext.h"
++#include "CL/cl_intel.h"
+ #include <stdint.h>
+
+ struct _cl_accelerator_intel {
+--- a/src/cl_driver.h
++++ b/src/cl_driver.h
+@@ -24,6 +24,7 @@
+ #include <stdlib.h>
+ #include "cl_driver_type.h"
+ #include "CL/cl_ext.h"
++#include "CL/cl_intel.h"
+ /* Various limitations we should remove actually */
+ #define GEN_MAX_SURFACES 256
+ #define GEN_MAX_SAMPLERS 16
diff --git a/coffeelake-cometlake-amberlake.patch b/coffeelake-cometlake-amberlake.patch
new file mode 100644
index 000000000000..0d0817ed01e0
--- /dev/null
+++ b/coffeelake-cometlake-amberlake.patch
@@ -0,0 +1,289 @@
+Description: Add Comet Lake/Amber Lake/more Coffee Lake support
+
+Minimally tested, I suggest using intel-opencl-icd instead if possible
+
+Author: Ridley Combs
+Bug-Ubuntu: https://launchpad.net/bugs/1905340
+Origin: https://github.com/intel/beignet/pull/20/files
+
+--- a/backend/src/backend/gen_program.cpp
++++ b/backend/src/backend/gen_program.cpp
+@@ -211,6 +211,10 @@ namespace gbe {
+ ctx = GBE_NEW(KblContext, unit, name, deviceID, relaxMath);
+ } else if (IS_COFFEELAKE(deviceID)) {
+ ctx = GBE_NEW(KblContext, unit, name, deviceID, relaxMath);
++ } else if (IS_COMETLAKE(deviceID)) {
++ ctx = GBE_NEW(KblContext, unit, name, deviceID, relaxMath);
++ } else if (IS_AMBERLAKE(deviceID)) {
++ ctx = GBE_NEW(KblContext, unit, name, deviceID, relaxMath);
+ } else if (IS_GEMINILAKE(deviceID)) {
+ ctx = GBE_NEW(GlkContext, unit, name, deviceID, relaxMath);
+ }
+@@ -331,6 +335,8 @@ namespace gbe {
+ (IS_BROXTON(deviceID) && MATCH_BXT_HEADER(binary)) || \
+ (IS_KABYLAKE(deviceID) && MATCH_KBL_HEADER(binary)) || \
+ (IS_COFFEELAKE(deviceID) && MATCH_KBL_HEADER(binary)) || \
++ (IS_COMETLAKE(deviceID) && MATCH_KBL_HEADER(binary)) || \
++ (IS_AMBERLAKE(deviceID) && MATCH_KBL_HEADER(binary)) || \
+ (IS_GEMINILAKE(deviceID) && MATCH_GLK_HEADER(binary)) \
+ )
+
+@@ -441,6 +447,10 @@ namespace gbe {
+ FILL_KBL_HEADER(*binary);
+ }else if(IS_COFFEELAKE(prog->deviceID)){
+ FILL_KBL_HEADER(*binary);
++ }else if(IS_COMETLAKE(prog->deviceID)){
++ FILL_KBL_HEADER(*binary);
++ }else if(IS_AMBERLAKE(prog->deviceID)){
++ FILL_KBL_HEADER(*binary);
+ }else if(IS_GEMINILAKE(prog->deviceID)){
+ FILL_GLK_HEADER(*binary);
+ }else {
+--- a/src/cl_device_data.h
++++ b/src/cl_device_data.h
+@@ -376,6 +376,8 @@
+ #define PCI_CHIP_COFFEELAKE_S_GT1_2 0x3E93
+ #define PCI_CHIP_COFFEELAKE_S_GT1_3 0x3E99
+
++#define PCI_CHIP_COFFEELAKE_H_GT1_1 0x3E9C
++
+ #define PCI_CHIP_COFFEELAKE_U_GT1_1 0x3EA1
+ #define PCI_CHIP_COFFEELAKE_U_GT1_2 0x3EA4
+
+@@ -383,6 +385,7 @@
+ #define PCI_CHIP_COFFEELAKE_S_GT2_2 0x3E92
+ #define PCI_CHIP_COFFEELAKE_S_GT2_3 0x3E96
+ #define PCI_CHIP_COFFEELAKE_S_GT2_4 0x3E9A
++#define PCI_CHIP_COFFEELAKE_S_GT2_5 0x3E98
+
+ #define PCI_CHIP_COFFEELAKE_H_GT2_1 0x3E94
+ #define PCI_CHIP_COFFEELAKE_H_GT2_2 0x3E9B
+@@ -401,6 +404,7 @@
+ (devid == PCI_CHIP_COFFEELAKE_S_GT1_1 || \
+ devid == PCI_CHIP_COFFEELAKE_S_GT1_2 || \
+ devid == PCI_CHIP_COFFEELAKE_S_GT1_3 || \
++ devid == PCI_CHIP_COFFEELAKE_H_GT1_1 || \
+ devid == PCI_CHIP_COFFEELAKE_U_GT1_1 || \
+ devid == PCI_CHIP_COFFEELAKE_U_GT1_2)
+
+@@ -409,6 +413,7 @@
+ devid == PCI_CHIP_COFFEELAKE_S_GT2_2 || \
+ devid == PCI_CHIP_COFFEELAKE_S_GT2_3 || \
+ devid == PCI_CHIP_COFFEELAKE_S_GT2_4 || \
++ devid == PCI_CHIP_COFFEELAKE_S_GT2_5 || \
+ devid == PCI_CHIP_COFFEELAKE_H_GT2_1 || \
+ devid == PCI_CHIP_COFFEELAKE_H_GT2_2 || \
+ devid == PCI_CHIP_COFFEELAKE_U_GT2_1 || \
+@@ -424,7 +429,65 @@
+
+ #define IS_COFFEELAKE(devid) (IS_CFL_GT1(devid) || IS_CFL_GT2(devid) || IS_CFL_GT3(devid))
+
+-#define IS_GEN9(devid) (IS_SKYLAKE(devid) || IS_BROXTON(devid) || IS_KABYLAKE(devid) || IS_GEMINILAKE(devid) || IS_COFFEELAKE(devid))
++#define PCI_CHIP_COMETLAKE_S_GT1_1 0x9BA5
++#define PCI_CHIP_COMETLAKE_S_GT1_2 0x9BA8
++
++#define PCI_CHIP_COMETLAKE_H_GT1_1 0x9BA4
++#define PCI_CHIP_COMETLAKE_H_GT1_2 0x9BA2
++
++#define PCI_CHIP_COMETLAKE_U_GT1_1 0x9B21
++#define PCI_CHIP_COMETLAKE_U_GT1_2 0x9BAA
++#define PCI_CHIP_COMETLAKE_U_GT1_3 0x9BAC
++
++#define PCI_CHIP_COMETLAKE_S_GT2_1 0x9BC5
++#define PCI_CHIP_COMETLAKE_S_GT2_2 0x9BC8
++
++#define PCI_CHIP_COMETLAKE_H_GT2_1 0x9BC4
++#define PCI_CHIP_COMETLAKE_H_GT2_2 0x9BC2
++
++#define PCI_CHIP_COMETLAKE_W_GT2_1 0x9BC6
++#define PCI_CHIP_COMETLAKE_W_GT2_2 0x9BE6
++#define PCI_CHIP_COMETLAKE_W_GT2_3 0x9BF6
++
++#define PCI_CHIP_COMETLAKE_U_GT2_1 0x9B41
++#define PCI_CHIP_COMETLAKE_U_GT2_2 0x9BCA
++#define PCI_CHIP_COMETLAKE_U_GT2_3 0x9BCC
++
++#define IS_CML_GT1(devid) \
++ (devid == PCI_CHIP_COMETLAKE_S_GT1_1 || \
++ devid == PCI_CHIP_COMETLAKE_S_GT1_2 || \
++ devid == PCI_CHIP_COMETLAKE_H_GT1_1 || \
++ devid == PCI_CHIP_COMETLAKE_H_GT1_2 || \
++ devid == PCI_CHIP_COMETLAKE_U_GT1_1 || \
++ devid == PCI_CHIP_COMETLAKE_U_GT1_2 || \
++ devid == PCI_CHIP_COMETLAKE_U_GT1_3)
++
++#define IS_CML_GT2(devid) \
++ (devid == PCI_CHIP_COMETLAKE_S_GT2_1 || \
++ devid == PCI_CHIP_COMETLAKE_S_GT2_2 || \
++ devid == PCI_CHIP_COMETLAKE_H_GT2_1 || \
++ devid == PCI_CHIP_COMETLAKE_H_GT2_2 || \
++ devid == PCI_CHIP_COMETLAKE_W_GT2_1 || \
++ devid == PCI_CHIP_COMETLAKE_W_GT2_2 || \
++ devid == PCI_CHIP_COMETLAKE_W_GT2_3 || \
++ devid == PCI_CHIP_COMETLAKE_U_GT2_1 || \
++ devid == PCI_CHIP_COMETLAKE_U_GT2_2 || \
++ devid == PCI_CHIP_COMETLAKE_U_GT2_3)
++
++#define IS_COMETLAKE(devid) (IS_CML_GT1(devid) || IS_CML_GT2(devid))
++
++#define PCI_CHIP_AMBERLAKE_Y_GT2_1 0x591C
++#define PCI_CHIP_AMBERLAKE_Y_GT2_2 0x87C0
++#define PCI_CHIP_AMBERLAKE_Y_GT2_3 0x87CA
++
++#define IS_AML_GT2(devid) \
++ (devid == PCI_CHIP_AMBERLAKE_Y_GT2_1 || \
++ devid == PCI_CHIP_AMBERLAKE_Y_GT2_2 || \
++ devid == PCI_CHIP_AMBERLAKE_Y_GT2_3)
++
++#define IS_AMBERLAKE(devid) (IS_AML_GT2(devid))
++
++#define IS_GEN9(devid) (IS_SKYLAKE(devid) || IS_BROXTON(devid) || IS_KABYLAKE(devid) || IS_GEMINILAKE(devid) || IS_COFFEELAKE(devid) || IS_COMETLAKE(devid) || IS_AMBERLAKE(devid))
+
+ #define MAX_OCLVERSION(devid) (IS_GEN9(devid) ? 200 : 120)
+
+--- a/src/cl_device_id.c
++++ b/src/cl_device_id.c
+@@ -304,6 +304,36 @@ static struct _cl_device_id intel_cfl_gt3_device = {
+ #include "cl_gen9_device.h"
+ };
+
++static struct _cl_device_id intel_cml_gt1_device = {
++ .max_compute_unit = 12,
++ .max_thread_per_unit = 7,
++ .sub_slice_count = 2,
++ .max_work_item_sizes = {512, 512, 512},
++ .max_work_group_size = 256,
++ .max_clock_frequency = 1000,
++#include "cl_gen9_device.h"
++};
++
++static struct _cl_device_id intel_cml_gt2_device = {
++ .max_compute_unit = 24,
++ .max_thread_per_unit = 7,
++ .sub_slice_count = 3,
++ .max_work_item_sizes = {512, 512, 512},
++ .max_work_group_size = 256,
++ .max_clock_frequency = 1000,
++#include "cl_gen9_device.h"
++};
++
++static struct _cl_device_id intel_aml_gt2_device = {
++ .max_compute_unit = 24,
++ .max_thread_per_unit = 7,
++ .sub_slice_count = 3,
++ .max_work_item_sizes = {512, 512, 512},
++ .max_work_group_size = 256,
++ .max_clock_frequency = 1000,
++#include "cl_gen9_device.h"
++};
++
+ LOCAL cl_device_id
+ cl_get_gt_device(cl_device_type device_type)
+ {
+@@ -819,6 +849,8 @@ cl_get_gt_device(cl_device_type device_type)
+ case PCI_CHIP_COFFEELAKE_S_GT1_2:
+ case PCI_CHIP_COFFEELAKE_S_GT1_3:
+ DECL_INFO_STRING(cfl_gt1_break, intel_cfl_gt1_device, name, "Intel(R) UHD Graphics Coffee Lake Desktop GT1");
++ case PCI_CHIP_COFFEELAKE_H_GT1_1:
++ DECL_INFO_STRING(cfl_gt1_break, intel_cfl_gt1_device, name, "Intel(R) UHD Graphics Coffee Lake Halo GT1");
+ case PCI_CHIP_COFFEELAKE_U_GT1_1:
+ case PCI_CHIP_COFFEELAKE_U_GT1_2:
+ DECL_INFO_STRING(cfl_gt1_break, intel_cfl_gt1_device, name, "Intel(R) UHD Graphics Coffee Lake Mobile GT1");
+@@ -837,6 +869,7 @@ cl_get_gt_device(cl_device_type device_type)
+ case PCI_CHIP_COFFEELAKE_S_GT2_2:
+ case PCI_CHIP_COFFEELAKE_S_GT2_3:
+ case PCI_CHIP_COFFEELAKE_S_GT2_4:
++ case PCI_CHIP_COFFEELAKE_S_GT2_5:
+ DECL_INFO_STRING(cfl_gt2_break, intel_cfl_gt2_device, name, "Intel(R) UHD Graphics Coffee Lake Desktop GT2");
+ case PCI_CHIP_COFFEELAKE_H_GT2_1:
+ case PCI_CHIP_COFFEELAKE_H_GT2_2:
+@@ -873,6 +906,67 @@ cl_get_gt_device(cl_device_type device_type)
+ cl_intel_platform_enable_extension(ret, cl_khr_fp16_ext_id);
+ break;
+
++ case PCI_CHIP_COMETLAKE_S_GT1_1:
++ case PCI_CHIP_COMETLAKE_S_GT1_2:
++ DECL_INFO_STRING(cml_gt1_break, intel_cml_gt1_device, name, "Intel(R) UHD Graphics Comet Lake Desktop GT1");
++ case PCI_CHIP_COMETLAKE_H_GT1_1:
++ case PCI_CHIP_COMETLAKE_H_GT1_2:
++ DECL_INFO_STRING(cml_gt1_break, intel_cml_gt1_device, name, "Intel(R) UHD Graphics Comet Lake Halo GT1");
++ case PCI_CHIP_COMETLAKE_U_GT1_1:
++ case PCI_CHIP_COMETLAKE_U_GT1_2:
++ case PCI_CHIP_COMETLAKE_U_GT1_3:
++ DECL_INFO_STRING(cml_gt1_break, intel_cml_gt1_device, name, "Intel(R) UHD Graphics Comet Lake Mobile GT1");
++cml_gt1_break:
++ intel_cml_gt1_device.device_id = device_id;
++ intel_cml_gt1_device.platform = cl_get_platform_default();
++ ret = &intel_cml_gt1_device;
++ cl_intel_platform_get_default_extension(ret);
++#ifdef ENABLE_FP64
++ cl_intel_platform_enable_extension(ret, cl_khr_fp64_ext_id);
++#endif
++ cl_intel_platform_enable_extension(ret, cl_khr_fp16_ext_id);
++ break;
++
++ case PCI_CHIP_COMETLAKE_S_GT2_1:
++ case PCI_CHIP_COMETLAKE_S_GT2_2:
++ DECL_INFO_STRING(cml_gt2_break, intel_cml_gt2_device, name, "Intel(R) UHD Graphics Comet Lake Desktop GT2");
++ case PCI_CHIP_COMETLAKE_H_GT2_1:
++ case PCI_CHIP_COMETLAKE_H_GT2_2:
++ DECL_INFO_STRING(cml_gt2_break, intel_cml_gt2_device, name, "Intel(R) UHD Graphics Comet Lake Halo GT2");
++ case PCI_CHIP_COMETLAKE_W_GT2_1:
++ case PCI_CHIP_COMETLAKE_W_GT2_2:
++ case PCI_CHIP_COMETLAKE_W_GT2_3:
++ DECL_INFO_STRING(cml_gt2_break, intel_cml_gt2_device, name, "Intel(R) UHD Graphics Comet Lake Workstation GT2");
++ case PCI_CHIP_COMETLAKE_U_GT2_1:
++ case PCI_CHIP_COMETLAKE_U_GT2_2:
++ case PCI_CHIP_COMETLAKE_U_GT2_3:
++ DECL_INFO_STRING(cml_gt2_break, intel_cml_gt2_device, name, "Intel(R) UHD Graphics Comet Lake Mobile GT2");
++cml_gt2_break:
++ intel_cml_gt2_device.device_id = device_id;
++ intel_cml_gt2_device.platform = cl_get_platform_default();
++ ret = &intel_cml_gt2_device;
++ cl_intel_platform_get_default_extension(ret);
++#ifdef ENABLE_FP64
++ cl_intel_platform_enable_extension(ret, cl_khr_fp64_ext_id);
++#endif
++ cl_intel_platform_enable_extension(ret, cl_khr_fp16_ext_id);
++ break;
++
++ case PCI_CHIP_AMBERLAKE_Y_GT2_1:
++ case PCI_CHIP_AMBERLAKE_Y_GT2_2:
++ case PCI_CHIP_AMBERLAKE_Y_GT2_3:
++ DECL_INFO_STRING(aml_gt2_break, intel_aml_gt2_device, name, "Intel(R) UHD Graphics Amber Lake ULX GT2");
++aml_gt2_break:
++ intel_aml_gt2_device.device_id = device_id;
++ intel_aml_gt2_device.platform = cl_get_platform_default();
++ ret = &intel_aml_gt2_device;
++ cl_intel_platform_get_default_extension(ret);
++#ifdef ENABLE_FP64
++ cl_intel_platform_enable_extension(ret, cl_khr_fp64_ext_id);
++#endif
++ cl_intel_platform_enable_extension(ret, cl_khr_fp16_ext_id);
++ break;
++
+ case PCI_CHIP_SANDYBRIDGE_BRIDGE:
+ case PCI_CHIP_SANDYBRIDGE_GT1:
+ case PCI_CHIP_SANDYBRIDGE_GT2:
+@@ -1083,7 +1177,10 @@ LOCAL cl_bool is_gen_device(cl_device_id device) {
+ device == &intel_glk12eu_device ||
+ device == &intel_cfl_gt1_device ||
+ device == &intel_cfl_gt2_device ||
+- device == &intel_cfl_gt3_device;
++ device == &intel_cfl_gt3_device ||
++ device == &intel_cml_gt1_device ||
++ device == &intel_cml_gt2_device ||
++ device == &intel_aml_gt2_device;
+ }
+
+ LOCAL cl_int
+@@ -1513,7 +1610,8 @@ cl_device_get_version(cl_device_id device, cl_int *ver)
+ || device == &intel_kbl_gt4_device || device == &intel_kbl_gt15_device
+ || device == &intel_glk18eu_device || device == &intel_glk12eu_device
+ || device == &intel_cfl_gt1_device || device == &intel_cfl_gt1_device
+- || device == &intel_cfl_gt3_device) {
++ || device == &intel_cfl_gt3_device || device == &intel_cml_gt1_device
++ || device == &intel_cml_gt2_device || device == &intel_aml_gt2_device) {
+ *ver = 9;
+ } else
+ return CL_INVALID_VALUE;
diff --git a/fix-docs-links.patch b/fix-docs-links.patch
new file mode 100644
index 000000000000..940da1f24458
--- /dev/null
+++ b/fix-docs-links.patch
@@ -0,0 +1,63 @@
+Description: Fix broken links and list syntax in documentation
+
+The upstream documentation is meant to be a part of a larger wiki,
+and does not work properly when built as-is on its own
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+
+--- a/docs/Beignet.mdwn
++++ b/docs/Beignet.mdwn
+@@ -11,7 +11,7 @@ about the compiler, please refer to `bac
+
+ News
+ ----
+-[[Beignet project news|Beignet/NEWS]]
++[[Beignet project news|NEWS]]
+
+ Prerequisite
+ ------------
+@@ -139,6 +139,7 @@ need to refer the "Known Issues" section
+
+ Normally, beignet needs to run under X server environment as normal user. If there isn't X server,
+ beignet provides two alternative to run:
++
+ * Run as root without X.
+ * Enable the drm render nodes by passing drm.rnodes=1 to the kernel boot args, then you can run beignet with non-root and without X.
+
+@@ -288,15 +289,15 @@ Please specify your hardware when report
+
+ Documents for OpenCL application developers
+ -------------------------------------------
+-- [[Cross compile (yocto)|Beignet/howto/cross-compiler-howto]]
+-- [[Work with old system without c++11|Beignet/howto/oldgcc-howto]]
+-- [[Kernel Optimization Guide|Beignet/optimization-guide]]
+-- [[Libva Buffer Sharing|Beignet/howto/libva-buffer-sharing-howto]]
+-- [[V4l2 Buffer Sharing|Beignet/howto/v4l2-buffer-sharing-howto]]
++- [[Cross compile (yocto)|howto/cross-compiler-howto]]
++- [[Work with old system without c++11|howto/oldgcc-howto]]
++- [[Kernel Optimization Guide|optimization-guide]]
++- [[Libva Buffer Sharing|howto/libva-buffer-sharing-howto]]
++- [[V4l2 Buffer Sharing|howto/v4l2-buffer-sharing-howto]]
+-- [[OpenGL Buffer Sharing|Beignet/howto/gl-buffer-sharing-howto]]
+-- [[Video Motion Estimation|Beignet/howto/video-motion-estimation-howto]]
+-- [[Stand Alone Unit Test|Beignet/howto/stand-alone-utest-howto]]
+-- [[Android build|Beignet/howto/android-build-howto]]
++- [[OpenGL Buffer Sharing|howto/gl-buffer-sharing-howto]]
++- [[Video Motion Estimation|howto/video-motion-estimation-howto]]
++- [[Stand Alone Unit Test|howto/stand-alone-utest-howto]]
++- [[Android build|howto/android-build-howto]]
+
+ The wiki URL is as below:
+ [http://www.freedesktop.org/wiki/Software/Beignet/](http://www.freedesktop.org/wiki/Software/Beignet/)
+--- a/docs/howto/video-motion-estimation-howto.mdwn
++++ b/docs/howto/video-motion-estimation-howto.mdwn
+@@ -66,6 +66,6 @@ Please go through it for details.
+ More references
+ ---------------
+
+-https://www.khronos.org/registry/cl/extensions/intel/cl_intel_accelerator.txt
+-https://www.khronos.org/registry/cl/extensions/intel/cl_intel_motion_estimation.txt
+-https://software.intel.com/en-us/articles/intro-to-motion-estimation-extension-for-opencl
++[https://www.khronos.org/registry/cl/extensions/intel/cl_intel_accelerator.txt](https://www.khronos.org/registry/cl/extensions/intel/cl_intel_accelerator.txt)
++[https://www.khronos.org/registry/cl/extensions/intel/cl_intel_motion_estimation.txt](https://www.khronos.org/registry/cl/extensions/intel/cl_intel_motion_estimation.txt)
++[https://software.intel.com/en-us/articles/intro-to-motion-estimation-extension-for-opencl](https://software.intel.com/en-us/articles/intro-to-motion-estimation-extension-for-opencl)
diff --git a/gbe_bin_generater.patch b/gbe_bin_generater.patch
new file mode 100644
index 000000000000..b773927e51aa
--- /dev/null
+++ b/gbe_bin_generater.patch
@@ -0,0 +1,49 @@
+diff -git a/backend/src/gbe_bin_generater.cpp b/backend/src/gbe_bin_generater.cpp
+--- a/backend/src/gbe_bin_generater.cpp
++++ b/backend/src/gbe_bin_generater.cpp
+@@ -108,7 +108,7 @@
+ return *this;
+ }
+
+- const char* file_map_open (void) throw (int);
++ const char* file_map_open (void) noexcept(false);
+
+ const char* get_code (void) {
+ return code;
+@@ -144,8 +144,8 @@
+ return 1;
+ }
+
+- void build_program(void) throw(int);
+- void serialize_program(void) throw(int);
++ void build_program(void) noexcept(false);
++ void serialize_program(void) noexcept(false);
+ };
+
+ string program_build_instance::bin_path;
+@@ -153,7 +153,7 @@
+ #define OUTS_UPDATE_SZ(elt) SERIALIZE_OUT(elt, oss, header_sz)
+ #define OUTF_UPDATE_SZ(elt) SERIALIZE_OUT(elt, ofs, header_sz)
+
+-void program_build_instance::serialize_program(void) throw(int)
++void program_build_instance::serialize_program(void) noexcept(false)
+ {
+ ofstream ofs;
+ ostringstream oss;
+@@ -271,7 +271,7 @@
+ }
+
+
+-void program_build_instance::build_program(void) throw(int)
++void program_build_instance::build_program(void) noexcept(false)
+ {
+ gbe_program opaque = NULL;
+ if(gen_pci_id){
+@@ -289,7 +289,7 @@
+ }
+ }
+
+-const char* program_build_instance::file_map_open(void) throw(int)
++const char* program_build_instance::file_map_open(void) noexcept(false)
+ {
+ void * address;
diff --git a/reduce-notfound-output.patch b/reduce-notfound-output.patch
new file mode 100644
index 000000000000..93924c90f17d
--- /dev/null
+++ b/reduce-notfound-output.patch
@@ -0,0 +1,41 @@
+Description: Reduce error spew on unsupported hardware
+
+Loading beignet on unsupported hardware produces ~20 errors, even
+if another ICD is also installed that does support the hardware.
+Replace these with one message that explicitly says what to do.
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+
+--- a/src/cl_device_id.c
++++ b/src/cl_device_id.c
+@@ -797,10 +797,10 @@ glk12eu_break:
+ case PCI_CHIP_SANDYBRIDGE_BRIDGE_S:
+ case PCI_CHIP_SANDYBRIDGE_S_GT:
+ // Intel(R) HD Graphics SandyBridge not supported yet
++ default:
++ fprintf(stderr, "beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware\n(If you have multiple ICDs installed and OpenCL works, you can ignore this message)\n");
+ ret = NULL;
+ break;
+- default:
+- printf("cl_get_gt_device(): error, unknown device: %x\n", device_id);
+ }
+
+ if (ret == NULL)
+--- a/src/intel/intel_driver.c
++++ b/src/intel/intel_driver.c
+@@ -263,7 +263,6 @@ if(!intel_driver_is_active(intel)) {
+ }
+
+ if(!intel_driver_is_active(intel)) {
+- fprintf(stderr, "Device open failed, aborting...\n");
+ return CL_DEVICE_NOT_FOUND;
+ }
+
+@@ -324,7 +323,6 @@ drm_client_t client;
+ // usually dev_name = "/dev/dri/card%d"
+ dev_fd = open(dev_name, O_RDWR);
+ if (dev_fd == -1) {
+- fprintf(stderr, "open(\"%s\", O_RDWR) failed: %s\n", dev_name, strerror(errno));
+ return 0;
+ }
+