summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG87
-rw-r--r--MAINTAINERS32
-rw-r--r--README459
-rw-r--r--README.md35
-rw-r--r--README.sources17
-rw-r--r--SECURITY.md6
-rw-r--r--conf/include/maintainers.inc5
-rw-r--r--conf/layer.conf4
-rw-r--r--conf/machine/include/meta-intel.inc14
-rw-r--r--conf/machine/include/qemuboot-intel.inc3
-rw-r--r--conf/machine/include/tune-skylake.inc48
-rw-r--r--conf/machine/intel-skylake-64.conf2
-rw-r--r--documentation/building_and_booting.md134
-rw-r--r--documentation/dpcpp-compiler.md107
-rw-r--r--documentation/reporting_bugs.md22
-rw-r--r--documentation/secureboot/README38
-rw-r--r--documentation/submitting_patches.md26
-rw-r--r--documentation/tested_hardware.md24
-rw-r--r--dynamic-layers/clang-layer/recipes-core/dnn/onednn_3.4.bb (renamed from dynamic-layers/clang-layer/recipes-core/dnn/onednn_2.6.bb)13
-rw-r--r--dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-CMakeLists.txt-link-with-libclang-cpp-library-instea.patch28
-rw-r--r--dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-Enable-LLVM-15.0-support.patch52
-rw-r--r--dynamic-layers/clang-layer/recipes-core/ispc/ispc_1.17.0.bb41
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch51
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch52
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch561
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0004-ispc-12_0_disable-A-B-A-B-and-BSWAP-in-InstCombine.patch67
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0005-ispc-12_0_fix_for_2111.patch35
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0006-OpenCL-Add-cl_khr_integer_dot_product.patch146
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0007-OpenCL-3.0-support.patch4628
-rw-r--r--dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend13
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/allow-to-find-cpp-generation-tool.patch27
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/disable-werror.patch16
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/external-ocloc.patch14
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_24.05.28454.6.bb (renamed from dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_22.23.23405.bb)40
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch30
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch31
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch11
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch10
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.15985.7.bb (renamed from dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.11378.bb)47
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-cl_headers-CMakeLists.txt-use-clang-from-native-sysr.patch49
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch32
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0002-Request-native-clang-only-when-cross-compiling-464.patch60
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang.inc12
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_12.0.0.bb12
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_14.0.0.bb12
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_15.0.0.bb5
-rw-r--r--dynamic-layers/clang-layer/recipes-opencl/vc-intrinsics/vc-intrinsics_0.1.0.bb27
-rw-r--r--dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2024.0.0.bb (renamed from dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2022.1.bb)11
-rw-r--r--dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2406.0.0.0.bb (renamed from dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2151.0.0.0.bb)12
-rw-r--r--dynamic-layers/openembedded-layer/recipes-bsp/thermald/files/0001-Makefile-Fix-build-Issue.patch39
-rw-r--r--dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.5.6.bb (renamed from dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.4.9.bb)7
-rw-r--r--dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Add-print-function-to-print-test-run-status-in-ptest.patch53
-rw-r--r--dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Fix-QA-Issues.patch36
-rw-r--r--dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0002-cmake-don-t-build-for-32-bit-targets.patch (renamed from dynamic-layers/clang-layer/recipes-core/ispc/ispc/0002-cmake-don-t-build-for-32-bit-targets.patch)28
-rw-r--r--dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/run-ptest2
-rw-r--r--dynamic-layers/openembedded-layer/recipes-core/ispc/ispc_1.23.0.bb64
-rw-r--r--dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.15.8.bb (renamed from dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.7.15.bb)3
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/compiler/intel-oneapi-compiler_2022.0.1-3633.bb59
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp-runtime_2024.0.0-49819.bb54
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp_2024.0.0-49819.bb45
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_4.3.1.bb (renamed from dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_3.13.3.bb)9
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.10.0-653.bb35
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.5.1-522.bb42
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2022.0.1-117.bb39
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2024.0.0-49656.bb74
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn/0001-remove-redundant-RPATH.patch37
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_2.1.0.bb (renamed from dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_1.4.3.bb)9
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_2.0.1.bb (renamed from dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_1.2.0.bb)10
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_3.1.0.bb (renamed from dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_2.9.0.bb)8
-rw-r--r--dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.13.0.bb (renamed from dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.9.0.bb)2
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch38
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0485.bb (renamed from dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0438.bb)9
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-CPU-Solving-the-build-failure-caused-by-setting-the-.patch43
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-fix-build-when-using-sysroot.patch32
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-yocto-specific-tweaks-to-the-build-process.patch90
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-inference-engine-use-system-installed-packages.patch296
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/files/0002-inference-engine-installation-fixes.patch348
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/files/0003-cmake-Fix-overloaded-virtual-error.patch33
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/files/0004-protobuf-allow-target-protoc-to-be-built.patch45
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo/0001-use-oe-gflags.patch14
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2024.0.0.bb (renamed from dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2022.1.bb)4
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2022.1.bb141
-rw-r--r--dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2024.0.0.bb143
-rw-r--r--lib/oeqa/runtime/cases/jhi.py41
-rw-r--r--lib/oeqa/runtime/cases/parselogs-ignores-intel-core2-32.txt9
-rw-r--r--lib/oeqa/runtime/cases/parselogs-ignores-intel-corei7-64.txt14
-rw-r--r--recipes-bsp/intel-cmt-cat/intel-cmt-cat_23.11.1.bb29
-rw-r--r--recipes-bsp/metee/metee_3.2.4.bb (renamed from recipes-bsp/metee/metee_3.1.3.bb)5
-rw-r--r--recipes-core/meta/icx-environment.inc15
-rw-r--r--recipes-core/meta/meta-environment-extsdk.bbappend3
-rw-r--r--recipes-core/meta/meta-environment.bbappend3
-rw-r--r--recipes-core/microcode/intel-microcode_20240312.bb (renamed from recipes-core/microcode/intel-microcode_20220510.bb)2
-rw-r--r--recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch2
-rw-r--r--recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend1
-rw-r--r--recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend1
-rw-r--r--recipes-graphics/gmmlib/files/0001-Add-new-DG2-device-IDs-194.patch37
-rw-r--r--recipes-graphics/gmmlib/files/0001-Introduce-ARL-H-support-172.patch42
-rw-r--r--recipes-graphics/gmmlib/gmmlib_22.3.15.bb (renamed from recipes-graphics/gmmlib/gmmlib_22.1.2.bb)4
-rw-r--r--recipes-graphics/hdcp/hdcp/0001-main-fix-hdcpd-service-failure.patch2
-rw-r--r--recipes-graphics/libva/libva-intel-utils_2.20.1.bb (renamed from recipes-graphics/libva/libva-intel-utils_2.14.0.bb)4
-rw-r--r--recipes-graphics/libva/libva-intel_2.20.0.bb (renamed from recipes-graphics/libva/libva-intel_2.14.0.bb)5
-rw-r--r--recipes-graphics/metrics-discovery/metrics-discovery/0001-md_internal.h-Replace-string.h-with-string-C-header-.patch34
-rw-r--r--recipes-graphics/metrics-discovery/metrics-discovery_1.12.170.bb (renamed from recipes-graphics/metrics-discovery/metrics-discovery_1.5.108.bb)3
-rw-r--r--recipes-graphics/xorg-driver/xf86-video-ast_1.1.6.bb (renamed from recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb)4
-rw-r--r--recipes-kernel/intel-ethernet/ixgbe_5.19.6.bb (renamed from recipes-kernel/intel-ethernet/ixgbe_5.15.2.bb)7
-rw-r--r--recipes-kernel/intel-ethernet/ixgbevf_4.18.7.bb (renamed from recipes-kernel/intel-ethernet/ixgbevf_4.15.1.bb)7
-rw-r--r--recipes-kernel/iwlwifi/backport-iwlwifi_git.bb10
-rw-r--r--recipes-kernel/linux/linux-intel-dev.bb32
-rw-r--r--recipes-kernel/linux/linux-intel-rt_6.6.bb (renamed from recipes-kernel/linux/linux-intel-rt_5.15.bb)24
-rw-r--r--recipes-kernel/linux/linux-intel.inc10
-rw-r--r--recipes-kernel/linux/linux-intel/0001-lib-build_OID_registry-fix-reproducibility-issues.patch48
-rw-r--r--recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch30
-rw-r--r--recipes-kernel/linux/linux-intel/0001-vt-conmakehash-improve-reproducibility.patch58
-rw-r--r--recipes-kernel/linux/linux-intel/0002-mconf-fix-output-of-cflags-and-libraries.patch40
-rw-r--r--recipes-kernel/linux/linux-intel/fix-perf-reproducibility.patch39
-rw-r--r--recipes-kernel/linux/linux-intel_5.15.bb18
-rw-r--r--recipes-kernel/linux/linux-intel_6.6.bb21
-rw-r--r--recipes-kernel/linux/linux-intel_6.8.bb20
-rw-r--r--recipes-kernel/linux/linux-yocto-rt_%.bbappend (renamed from recipes-kernel/linux/linux-yocto-rt_5.%.bbappend)0
-rw-r--r--recipes-kernel/linux/linux-yocto_%.bbappend2
-rw-r--r--recipes-kernel/linux/linux-yocto_5.%.bbappend1
-rw-r--r--recipes-kernel/linux/meta-intel-compat-kernel.inc2
-rw-r--r--recipes-multimedia/itt/itt_3.24.6.bb (renamed from recipes-multimedia/itt/itt_3.23.0.bb)2
-rw-r--r--recipes-multimedia/libva/files/0001-Disable-vp9-padding-on-mtl.patch35
-rw-r--r--recipes-multimedia/libva/files/0002-Force-ARGB-surface-to-tile4-for-ACM.patch44
-rw-r--r--recipes-multimedia/libva/files/0004-Add-device-ID-for-ARL.patch45
-rw-r--r--recipes-multimedia/libva/files/0005-Add-XR24-support-to-DMABuf.patch34
-rw-r--r--recipes-multimedia/libva/files/0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch214
-rw-r--r--recipes-multimedia/libva/files/0007-Skip-report-keys.patch78
-rw-r--r--recipes-multimedia/libva/files/0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch255
-rw-r--r--recipes-multimedia/libva/files/0009-Skip-cache-bucket-realloc-for-default-mode-0.patch33
-rw-r--r--recipes-multimedia/libva/files/0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch195
-rw-r--r--recipes-multimedia/libva/files/0011-Disable-422H-format-output.patch33
-rw-r--r--recipes-multimedia/libva/files/0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch32
-rw-r--r--recipes-multimedia/libva/files/c8457540aed1ab9424661087276fb788c0e3aabb.patch109
-rw-r--r--recipes-multimedia/libva/intel-media-driver_23.4.3.bb (renamed from recipes-multimedia/libva/intel-media-driver_22.3.1.bb)14
-rw-r--r--recipes-multimedia/mediasdk/files/fix-gcc13.patch15
-rw-r--r--recipes-multimedia/mediasdk/intel-mediasdk_23.2.2.bb (renamed from recipes-multimedia/mediasdk/intel-mediasdk_22.3.0.bb)9
-rw-r--r--recipes-multimedia/onevpl/files/0001-ARLH-DID-open-source-6286.patch39
-rw-r--r--recipes-multimedia/onevpl/files/0001-Fix-SetBuffersYV12-V-U-plane-offsets-calculation-647.patch32
-rw-r--r--recipes-multimedia/onevpl/files/0001-JPEGe-Enable-BGR4-JPEG-Enc-support-6470.patch96
-rw-r--r--recipes-multimedia/onevpl/files/0001-vpl.pc.in-dont-pass-pcfiledir-to-cflags.patch28
-rw-r--r--recipes-multimedia/onevpl/onevpl-intel-gpu_23.4.3.bb (renamed from recipes-multimedia/onevpl/onevpl-intel-gpu_22.3.2.bb)10
-rw-r--r--recipes-multimedia/onevpl/onevpl/0001-Fix-basename-build-issue-with-musl_libc.patch37
-rw-r--r--recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-missing-UYUV-fourcc-enc-input.patch41
-rw-r--r--recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-regression-of-missing-mutex-init.patch48
-rw-r--r--recipes-multimedia/onevpl/onevpl/0001-samples-Addin-wayland-scanner-auto-generate-on-cmake.patch88
-rw-r--r--recipes-multimedia/onevpl/onevpl/0002-sample_misc-Addin-basic-wayland-dmabuf-support.patch90
-rw-r--r--recipes-multimedia/onevpl/onevpl/0003-sample_misc-use-wayland-dmabuf-to-render-nv12.patch94
-rw-r--r--recipes-multimedia/onevpl/onevpl_2023.4.0.bb (renamed from recipes-multimedia/onevpl/onevpl_2022.0.3.bb)19
-rw-r--r--recipes-oneapi/crypto/intel-crypto-mb/0001-crypto-mb-Make-sure-libs-are-installed-correctly.patch42
-rw-r--r--recipes-oneapi/crypto/intel-crypto-mb_2021.11.1.bb (renamed from recipes-oneapi/crypto/intel-crypto-mb_git.bb)15
-rw-r--r--recipes-oneapi/onedpl/onedpl_2022.3.0.bb (renamed from recipes-oneapi/onedpl/onedpl_2021.6.1.bb)6
-rw-r--r--recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2023.0.0-25370.bb (renamed from recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2022.0.1-3633.bb)1
-rw-r--r--recipes-support/isa-l/isa-l_2.31.0.bb (renamed from recipes-support/isa-l/isa-l_2.30.0.bb)6
-rw-r--r--recipes-support/jhi/jhi_1.41.bb72
-rw-r--r--recipes-support/libipt/libipt_2.1.1.bb (renamed from recipes-support/libipt/libipt_2.0.5.bb)7
-rw-r--r--recipes-support/sbsigntool/sbsigntool-native_git.bb7
-rw-r--r--recipes-support/sbsigntool/sbsigntool/0001-configure-Fixup-build-dependencies-for-cross-compili.patch2
-rw-r--r--recipes-support/sbsigntool/sbsigntool/0002-fix-openssl-3-0.patch32
160 files changed, 3273 insertions, 8414 deletions
diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644
index 2ed8af05..00000000
--- a/CHANGELOG
+++ /dev/null
@@ -1,87 +0,0 @@
1This file will only list major changes that occur within a release.
2For a full list of changes, view the git log of the repository.
3
4Rocko Release 11/2017
5=====================
6
7Moved qat support to separate layer
8-----------------------------------
9Quick Assist Technology (QAT) is more middleware and should not be part of the
10core BSP. The new layer can be found here:
11https://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-qat/
12
13Moved dpdk support to separate layer
14------------------------------------
15We had some requests to make DPDK standalone so that it could be included
16without bringing in anything else from meta-intel, as it is not specific to
17Intel(R) hardware. The new layer is located here:
18https://git.yoctoproject.org/cgit/cgit.cgi/meta-dpdk/
19
20Added support for out-of-tree iwlwifi drivers
21---------------------------------------------
22Backport-iwlwifi out-of-tree wifi modules are now available via meta-intel.
23Backport-iwlwifi brings the latest iwlwifi drivers to almost any kernel
24Note that mac80211 and cfg80211 backports are also necessary, which will most
25likely cause incompatibility with other in-tree wifi drivers.
26See https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi for more info.
27
28Added support for out-of-tree ixgbe drivers
29-------------------------------------------
30The out-of-tree ixgbe drivers bring ixgbe support to nearly any kernel. See
31here: http://www.intel.com/network/connectivity/products/server_adapters.htm
32
33Added an implementation of Secure Boot
34--------------------------------------
35meta-intel now supports a simple Secure Boot implementation. This implementation
36consists of a single binary consisting of an EFI stub, the kernel, an
37initrd, and a kernel command line. The binary is then signed via keys defined by
38the variables SECUREBOOT_SIGNING_KEY and SECUREBOOT_SIGNING_CERT. These keys
39should match the keys embedded in your hardware's firmware.
40See documentation/secureboot/README for more information on this feature.
41
42Improved Yocto Project Compatibility status
43-------------------------------------------
44The common layer should now be considered Yocto Project compatible - it should
45no longer modify OE-core values when adding the layer to your bblayers.conf.
46The meta-tlk layer is still not Yocto Project compatible, however.
47
48Pyro Release 5/2017
49===================
50
51Changed default kernel provider from linux-yocto to linux-intel.
52----------------------------------------------------------------
53Linux-intel is an Intel(R)-maintained kernel based on the latest stable
54branch, along with backports from upstream to better support Intel(R)
55hardware. The intel-linux kernel also has a branch with the preempt-rt
56patches applied, providing a preempt-rt kernel with no additional work.
57
58Added QEMU support.
59-------------------
60We now build several virtio drivers into the kernel by default, and
61have qemuboot.conf files for intel-corei7-64 and intel-core2-32
62targets. This allows one to do basic testing on meta-intel images
63without having to use hardware. The virtio drivers are added via
64KERNEL_FEATURES_INTEL_COMMON. This prevents them from being added to
65custom kernels by default. They can be removed by adding the
66following to a conf or kernel bbappend file:
67 KERNEL_FEATURES_INTEL_COMMON:remove = “cfg/virtio.scc”
68OVMF firmware is also built and can be used in order to emulate a UEFI
69environment. A full runqemu command line for intel-corei7-64 could look
70like this:
71 runqemu core-image-minimal intel-corei7-64 wic ovmf
72
73Musl support
74------------
75Meta-intel is now compatible with the musl C library. You can specify musl
76As your C library by adding the following to your local.conf:
77 TCLIBC = “musl”
78Note: there is a known failure with DPDK.
79
80X32 support
81-----------
82The meta-intel layer can now build with the x32 tune settings in a multi-lib
83setting, it will not work in as the primary MACHINE tune as the bootloader needs
84to be built as a 64bit binary. The setup for this would be as follows:
85 require conf/multilib.conf
86 MULTILIBS = "multilib:libx32
87 DEFAULTTUNE:virtclass-multilib-libx32 = "corei7-64-x32"
diff --git a/MAINTAINERS b/MAINTAINERS
deleted file mode 100644
index 73a9fe3a..00000000
--- a/MAINTAINERS
+++ /dev/null
@@ -1,32 +0,0 @@
1This file contains a list of BSP maintainers for the BSPs contained in
2the meta-intel repository.
3
4The purpose of this file is to provide contact information for
5specific BSPs and other code contained within meta-intel. You should
6address questions and patches for a particular BSP or other code to
7the appropriate maintainer listed in this file, cc'ing the meta-intel
8mailing list. This ensures that your question or patch will be
9addressed by the appropriate person, and that it will be seen by other
10users who may be facing similar problems or questions.
11
12Please see the top-level README file for guidelines relating to the
13details of submitting patches, reporting problems, or asking questions
14about any of the BSPs or other recipes contained within meta-intel.
15
16Descriptions of section entries:
17
18 M: Mail patches to: FullName <address@domain>
19 F: Files and directories with wildcard patterns.
20 A trailing slash includes all files and subdirectory files.
21 F: common/ all files in and below common
22 F: common/* all files in common, but not below
23 One pattern per line. Multiple F: lines acceptable.
24
25Please keep this list in alphabetical order.
26
27Maintainers List (try to look for most precise areas first)
28
29 -----------------------------------
30
31M: Anuj Mittal <anuj.mittal@intel.com>
32F: *
diff --git a/README b/README
deleted file mode 100644
index 58d6a505..00000000
--- a/README
+++ /dev/null
@@ -1,459 +0,0 @@
1meta-intel
2==========
3
4This README file contains information on building and booting
5meta-intel BSP layers. Please see the corresponding sections below
6for details.
7
8
9Yocto Project Compatible
10========================
11
12The BSPs contained in this layer are compatible with the Yocto Project
13as per the requirements listed here:
14
15 https://www.yoctoproject.org/webform/yocto-project-compatible-registration
16
17
18Dependencies
19============
20
21This layer depends on:
22
23 URI: git://git.openembedded.org/bitbake
24
25 URI: git://git.openembedded.org/openembedded-core
26 layers: meta
27 branch: master
28
29
30Table of Contents
31=================
32
33 I. Overview
34 II. Building and booting meta-intel BSP layers
35 a. Building the intel-common BSP layers
36 b. Booting the intel-common BSP images
37 c. Building the installer image
38 III. Technical Miscellany
39 Benefits of using meta-intel
40 The intel-common kernel package architecture
41 Intel-specific machine features
42 IV. Tested Hardware
43 V. Guidelines for submitting patches
44
45
46I. Overview
47===========
48
49This is the location for Intel-maintained BSPs.
50
51For details on the intel-common, see the information below.
52
53For all others, please see the README files contained in the
54individual BSP layers for BSP-specific information.
55
56If you have problems with or questions about a particular BSP, please
57contact the maintainer listed in the MAINTAINERS file directly (cc:ing
58the Yocto mailing list puts it in the archive and helps other people
59who might have the same questions in the future), but please try to do
60the following first:
61
62 - look in the Yocto Project Bugzilla
63 (http://bugzilla.yoctoproject.org/) to see if a problem has
64 already been reported
65
66 - look through recent entries of the meta-intel
67 (https://lists.yoctoproject.org/pipermail/meta-intel/) and Yocto
68 (https://lists.yoctoproject.org/pipermail/yocto/) mailing list
69 archives to see if other people have run into similar problems or
70 had similar questions answered.
71
72If you believe you have encountered a bug, you can open a new bug and
73enter the details in the Yocto Project Bugzilla
74(http://bugzilla.yoctoproject.org/). If you're relatively certain
75that it's a bug against the BSP itself, please use the 'Yocto Project
76Components: BSPs | meta-intel' category for the bug; otherwise, please
77submit the bug against the most likely category for the problem - if
78you're wrong, it's not a big deal and the bug will be recategorized
79upon triage.
80
81
82II. Building and booting meta-intel BSP layers
83==============================================
84
85The following sections contain information on building and booting the
86BSPs contained in the meta-intel layer.
87
88Note that these instructions specifically cover the intel-common, which
89may or may not be applicable to other BSPs contained in this layer - if
90a given BSP contains its own README, that version should be used instead,
91and these instructions can be ignored.
92
93a. Building the intel-common BSP layers
94-------------------------------------------------
95
96In order to build an image with BSP support for a given release, you
97need to download the corresponding BSP tarball from the 'Board Support
98Package (BSP) Downloads' page of the Yocto Project website (or
99equivalently, check out the appropriate branch from the meta-intel git
100repository, see below). For the intel-common BSPs, those tarballs would
101correspond to the following choices in the BSP downloads section:
102
103 - Intel-core2-32 Intel® Common Core BSP (Intel-core2-32)
104 - Intel-corei7-64 Intel® Common Core BSP (Intel-corei7-64)
105
106The intel-* BSPs, also known as the intel-common BSPs, provide a few
107carefully selected tune options and generic hardware support to cover
108the majority of current Intel CPUs and devices. The naming follows the
109convention of intel-<TUNE>-<BITS>, where TUNE is the gcc cpu-type
110(used with mtune and march typically) and BITS is either 32 bit or 64
111bit.
112
113Having done that, and assuming you extracted the BSP tarball contents
114at the top-level of your yocto build tree, you can build a BSP image
115by adding the location of the meta-intel layer to bblayers.conf e.g.:
116
117 yocto/meta-intel \
118
119To enable a particular machine, you need to add a MACHINE line naming
120the BSP to the local.conf file:
121
122 MACHINE ?= "xxx"
123
124where 'xxx' is replaced by one of the following BSP names:
125
126 - intel-core2-32
127
128 This BSP is optimized for the Core2 family of CPUs as well as all
129 Atom CPUs prior to the Silvermont core.
130
131 - intel-corei7-64
132
133 This BSP is optimized for Nehalem and later Core and Xeon CPUs as
134 well as Silvermont and later Atom CPUs, such as the Baytrail SoCs.
135
136You should then be able to build an image as such:
137
138 $ source oe-init-build-env
139 $ bitbake core-image-sato
140
141At the end of a successful build, you should have an image that
142you can boot from a USB flash drive (see instructions on how to do
143that below, in the section 'Booting the intel-common BSP images').
144
145As an alternative to downloading the BSP tarball, you can also work
146directly from the meta-intel git repository. For each BSP in the
147'meta-intel' repository, there are multiple branches, one
148corresponding to each major release starting with 'laverne' (0.90), in
149addition to the latest code which tracks the current master (note that
150not all BSPs are present in every release). Instead of extracting
151a BSP tarball at the top level of your yocto build tree, you can
152equivalently check out the appropriate branch from the meta-intel
153repository at the same location.
154
155b. Booting the intel-common BSP images
156--------------------------------------
157
158If you've built your own image, either from the downloaded BSP layer
159or from the meta-intel git repository, you'll find the bootable
160image in the build/tmp/deploy/images/xxx directory, where again
161'xxx' refers to the machine name used in the build.
162
163Under Linux, insert a USB flash drive. Assuming the USB flash drive
164takes device /dev/sdf, use dd to copy the image to it. Before the image
165can be burned onto a USB drive, it should be un-mounted. Some Linux distros
166may automatically mount a USB drive when it is plugged in. Using USB device
167/dev/sdf as an example, find all mounted partitions:
168
169 $ mount | grep sdf
170
171and un-mount those that are mounted, for example:
172
173 $ umount /dev/sdf1
174 $ umount /dev/sdf2
175
176Now burn the image onto the USB drive:
177
178 $ sudo dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf status=progress
179 $ sync
180 $ eject /dev/sdf
181
182This should give you a bootable USB flash device. Insert the device
183into a bootable USB socket on the target, and power on. This should
184result in a system booted to the Sato graphical desktop.
185
186If you want a terminal, use the arrows at the top of the UI to move to
187different pages of available applications, one of which is named
188'Terminal'. Clicking that should give you a root terminal.
189
190If you want to ssh into the system, you can use the root terminal to
191ifconfig the IP address and use that to ssh in. The root password is
192empty, so to log in type 'root' for the user name and hit 'Enter' at
193the Password prompt: and you should be in.
194
195If you find you're getting corrupt images on the USB (it doesn't show
196the syslinux boot: prompt, or the boot: prompt contains strange
197characters), try doing this first:
198
199 $ dd if=/dev/zero of=/dev/sdf bs=1M count=512
200
201c. Building the installer image
202-----------------------------------------------
203
204If you plan to install your image to your target machine, you can build a wic
205based installer image instead of default wic image. To build it, you need to
206add below configuration to local.conf :
207
208 WKS_FILE = "image-installer.wks.in"
209 IMAGE_FSTYPES:append = " ext4"
210 IMAGE_TYPEDEP_wic = "ext4"
211 INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
212 do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
213 do_rootfs[depends] += "virtual/kernel:do_deploy"
214 IMAGE_BOOT_FILES:append = "\
215 ${KERNEL_IMAGETYPE} \
216 microcode.cpio \
217 ${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.ext4;rootfs.img \
218 ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', 'grub-efi-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
219 ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', '${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg', '', d)} \
220 ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', 'systemd-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
221 ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/loader.conf;loader/loader.conf ', '', d)} \
222 ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/entries/boot.conf;loader/entries/boot.conf', '', d)} "
223
224Burn the wic image onto USB flash device, insert the device to target machine
225and power on. This should start the installation process.
226
227III. Technical Miscellany
228=========================
229
230Benefits of using meta-intel
231----------------------------
232
233Using meta-intel has the following benefits over a generic BSP:
234
235tune flags
236++++++++++
237intel-* MACHINEs each have different compilation flags appropriate for their
238targeted hardware sets. intel-corei7-64 has tune flags appropriate for modern
23964-bit Intel Core i microarchitecture, and includes instruction sets up to
240SSE4.2. intel-core2-32 has tune flags appropriate for legacy 32-bit Intel Core2
241microarchitecture, and includes instruction sets up to SSE3.
242
243linux-intel kernel
244++++++++++++++++++
245The linux-intel kernel is an initiative to bring better Intel(R) hardware
246support to the current LTS linux kernel. It contains a base LTS kernel with
247additional backports from upstream Intel drivers. In addition, a default kernel
248config containing most features found on Intel boards is supplied via the
249yocto-kernel-cache.
250
251graphics stack
252++++++++++++++
253Meta-intel provides the latest Intel Graphics Linux Stack drivers to support
254Intel hardware as defined by the https://01.org/linuxgraphics.
255
256Other software
257++++++++++++++
258 * intel ucode - provides the latest microcode updates for Intel processors
259
260 * thermald - which proactively controls thermal, using P-states, T-states, and
261the Intel power clamp driver.
262(https://01.org/linux-thermal-daemon/documentation/introduction-thermal-daemon)
263
264The intel-common kernel package architecture
265--------------------------------------------
266
267These BSPs use what we call the intel-common Linux kernel package
268architecture. This includes core2-32-intel-common and
269corei7-64-intel-common. These kernel packages can also be used by any
270of the BSPs in meta-intel that choose to include the
271intel-common-pkgarch.inc file.
272
273To minimize the proliferation of vendor trees, reduce the sources we
274must support, and consolidate QA efforts, all BSP maintainers are
275encouraged to make use of the intel-common Linux kernel package
276architecture.
277
278Intel-specific machine features
279-------------------------------
280
281The meta-intel layer makes some additional machine features available
282to BSPs. These machine features can be used in a BSP layer in the
283same way that machine features are used in other layers based on
284oe-core, via the MACHINE_FEATURES variable.
285
286Requirements
287++++++++++++
288
289The meta-intel-specific machine features are only available to a BSP
290when the meta-intel layer is included in the build configuration, and
291the meta-intel.inc file is included in the machine configuration of
292that BSP.
293
294To make these features available for your machine, you will need to:
295
296 1. include a configuration line such as the below in bblayers.conf
297 BBLAYERS += "<local path>/meta-intel"
298 2. include the following line in the machine configuration file
299 require conf/machine/include/meta-intel.inc
300
301Once the above requirements are met, the machine features provided by
302the meta-intel layer will be available for the BSP to use.
303
304Available machine features
305++++++++++++++++++++++++++
306
307Currently, the meta-intel layer makes the following set of
308Intel-specific machine features available:
309
310 * intel-ucode
311
312These machine features can be included by listing them in the
313MACHINE_FEATURES variable in the machine configuration file. For
314example:
315
316 MACHINE_FEATURES += "intel-ucode"
317
318Machine feature details
319+++++++++++++++++++++++
320
321 * intel-ucode
322
323 This feature provides support for microcode updates to Intel
324 processors. The intel-ucode feature runs at early boot and uses
325 the microcode data file added by the feature into the BSP's
326 initrd. It also puts the userland microcode-updating tool,
327 iucode_tool, into the target images along with the microcode data
328 file.
329
330 Q. Why might a user want to enable the intel-ucode feature?
331
332 A. Intel releases microcode updates to correct processor behavior
333 as documented in the respective processor specification
334 updates. While the normal approach to getting such microcode
335 updates is via a BIOS upgrade, this can be an administrative
336 hassle and not always possible in the field. The intel-ucode
337 feature enables the microcode update capability present in the
338 Linux kernel. It provides an easy path for upgrading processor
339 microcode without the need to change the BIOS. If the feature
340 is enabled, it is also possible to update the existing target
341 images with a newer microcode update in the future.
342
343 Q. How would a user bundle only target-specific microcode in the
344 target image?
345
346 A. The Intel microcode data file released by Intel contains
347 microcode updates for multiple processors. If the BSP image is
348 meant to run on only a certain subset of processor types, a
349 processor-specific subset of microcode can be bundled into the
350 target image via the UCODE_FILTER_PARAMETERS variable. This
351 works by listing a sequence of iucode-tool parameters in the
352 UCODE_FILTER_PARAMETERS variable, which in this case will
353 select only the specific microcode relevant to the BSP. For
354 more information on the underlying parameters refer to the
355 iucode-tool manual page at http://manned.org/iucode-tool
356
357 To define a set of parameters for microcode-filtering via the
358 UCODE_FILTER_PARAMETERS variable, one needs to identify the
359 cpuid signatures of all the processors the BSP is meant to run
360 on. One way to determine the cpuid signature for a specific
361 processor is to build and run an intel-ucode-feature-enabled
362 image on the target hardware, without first assigning any value
363 to the UCODE_FILTER_PARAMETERS variable, and then once the
364 image is booted, run the "ucode_tool -S" command to have the
365 ucode tool scan the system for processor signatures. These
366 signatures can then be used in the UCODE_FILTER_PARAMETERS
367 variable in conjunction with -s parameter. For example, for
368 the fri2 BSP, the cpuid can be determined as such:
369
370 [root@fri2 ~]# iucode_tool -S
371 iucode_tool: system has processor(s) with signature 0x00020661
372
373 Given that output, a suitable UCODE_FILTER_PARAMETERS variable
374 definition could be specified in the machine configuration as
375 such:
376
377 UCODE_FILTER_PARAMETERS = "-s 0x00020661"
378
379 Q. Are there any reasons a user might want to disable the
380 intel-ucode feature?
381
382 A. The microcode data file and associated tools occupy a small
383 amount of space (a few KB) on the target image. BSPs which are
384 highly sensitive to target image size and which are not
385 experiencing microcode-related issues might consider not
386 enabling this feature.
387
388
389IV. Tested Hardware
390===================
391
392The following undergo regular basic testing with their respective MACHINE types.
393Note that both 64-bit and 32-bit firmware is available for the MinnowBoard
394Turbot, so it is tested against both intel-corei7-64 and intel-core2-32.
395
396intel-corei7-64:
397 NUC6i5SYH
398 NUC7i7BNH
399 Coffee Lake-H
400
401intel-core2-32:
402 MinnowBoard Turbot
403
404
405V. Guidelines for submitting patches
406====================================
407
408Please submit any patches against meta-intel BSPs to the meta-intel
409mailing list (meta-intel@lists.yoctoproject.org). Also, if your patches are
410available via a public git repository, please also include a URL to
411the repo and branch containing your patches as that makes it easier
412for maintainers to grab and test your patches.
413
414There are patch submission scripts available that will, among other
415things, automatically include the repo URL and branch as mentioned.
416Please see the Yocto Project Development Manual sections entitled
417'Using Scripts to Push a Change Upstream and Request a Pull' and
418'Using Email to Submit a Patch' for details.
419
420Regardless of how you submit a patch or patchset, the patches should
421at minimum follow the suggestions outlined in the 'Submitting a Change
422to the Yocto Project' section in the Yocto Project Development Manual.
423Specifically, they should:
424
425 - Include a 'Signed-off-by:' line. A commit can't legally be pulled
426 in without this.
427
428 - Provide a single-line, short summary of the change. This short
429 description should be prefixed by the BSP or recipe name, as
430 appropriate, followed by a colon. Capitalize the first character
431 of the summary (following the colon).
432
433 - For the body of the commit message, provide detailed information
434 that describes what you changed, why you made the change, and the
435 approach you used.
436
437 - If the change addresses a specific bug or issue that is associated
438 with a bug-tracking ID, include a reference to that ID in your
439 detailed description in the following format: [YOCTO #<bug-id>].
440
441 - Pay attention to line length - please don't allow any particular
442 line in the commit message to stretch past 72 characters.
443
444 - For any non-trivial patch, provide information about how you
445 tested the patch, and for any non-trivial or non-obvious testing
446 setup, provide details of that setup.
447
448Doing a quick 'git log' in meta-intel will provide you with many
449examples of good example commits if you have questions about any
450aspect of the preferred format.
451
452The meta-intel maintainers will do their best to review and/or pull in
453a patch or patchset within 24 hours of the time it was posted. For
454larger and/or more involved patches and patchsets, the review process
455may take longer.
456
457Please see the meta-intel/MAINTAINERS file for the list of maintainers
458and their specific areas; it's also a good idea to cc: the specific
459maintainer, if applicable.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..3ec3992b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,35 @@
1# meta-intel
2
3OpenEmbedded/Yocto BSP layer for Intel platforms.
4
5## Dependencies
6
7This layer primarily depends on OpenEmbedded-Core (OE-Core). However, certain
8recipes may require additional layers to support optional features or
9programming languages not supported by OE-Core. Such recipes are located within
10the `dynamic-layers` directory.
11
12Base dependencies:
13- [Bitbake](https://git.openembedded.org/bitbake)
14- [OE-Core](https://git.openembedded.org/openembedded-core)
15
16Dynamic additional dependencies:
17
18- [meta-openembedded](https://git.openembedded.org/meta-openembedded/tree/meta-oe)
19- [meta-python](https://git.openembedded.org/meta-openembedded/tree/meta-python)
20- [meta-clang](https://github.com/kraj/meta-clang.git)
21
22
23## Contents
24
25- [Building and booting meta-intel BSP layers](documentation/building_and_booting.md)
26- [Intel oneAPI DPC++/C++ Compiler](documentation/dpcpp-compiler.md)
27- [Tested Hardware](documentation/tested_hardware.md)
28- [Guidelines for submitting patches](documentation/submitting_patches.md)
29- [Reporting bugs](documentation/reporting_bugs.md)
30- [Reporting security bugs](SECURITY.md)
31
32## Maintainers
33
34- Anuj Mittal <anuj.mittal@intel.com>
35
diff --git a/README.sources b/README.sources
deleted file mode 100644
index 9b483ee0..00000000
--- a/README.sources
+++ /dev/null
@@ -1,17 +0,0 @@
1The sources for the packages comprising the images shipped with this
2BSP can be found at the following location:
3
4http://downloads.yoctoproject.org/mirror/sources/
5
6The metadata used to generate the images shipped with this BSP, in
7addition to the code contained in this BSP, can be found at the
8following location:
9
10http://downloads.yoctoproject.org/releases/yocto/yocto-2.7/poky-warrior-21.0.0.tar.bz2
11
12The metadata used to generate the images shipped with this BSP, in
13addition to the code contained in this BSP, can also be found at the
14following locations:
15
16git://git.yoctoproject.org/poky.git
17git://git.yoctoproject.org/meta-intel
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 00000000..e70fcb0f
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,6 @@
1# Security Policy
2Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation.
3
4## Reporting a Vulnerability
5Please report any security vulnerabilities in this project [utilizing the guidelines here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html).
6
diff --git a/conf/include/maintainers.inc b/conf/include/maintainers.inc
index b82868ec..9849d0d8 100644
--- a/conf/include/maintainers.inc
+++ b/conf/include/maintainers.inc
@@ -8,9 +8,10 @@ RECIPE_MAINTAINER:pn-core-image-minimal-initramfs = "Anuj Mittal <anuj.mittal@in
8RECIPE_MAINTAINER:pn-embree = "Naveen Saini <naveen.kumar.saini@intel.com>" 8RECIPE_MAINTAINER:pn-embree = "Naveen Saini <naveen.kumar.saini@intel.com>"
9RECIPE_MAINTAINER:pn-gmmlib = "Lim Siew Hoon <siew.hoon.lim@intel.com>" 9RECIPE_MAINTAINER:pn-gmmlib = "Lim Siew Hoon <siew.hoon.lim@intel.com>"
10RECIPE_MAINTAINER:pn-hdcp = "Naveen Saini <naveen.kumar.saini@intel.com>" 10RECIPE_MAINTAINER:pn-hdcp = "Naveen Saini <naveen.kumar.saini@intel.com>"
11RECIPE_MAINTAINER:pn-intel-graphics-compiler = "Naveen Saini <naveen.kumar.saini@intel.com>" 11RECIPE_MAINTAINER:pn-intel-cmt-cat = "Naveen Saini <naveen.kumar.saini@intel.com>"
12RECIPE_MAINTAINER:pn-intel-compute-runtime = "Naveen Saini <naveen.kumar.saini@intel.com>" 12RECIPE_MAINTAINER:pn-intel-compute-runtime = "Naveen Saini <naveen.kumar.saini@intel.com>"
13RECIPE_MAINTAINER:pn-intel-crypto-mb = "Anuj Mittal <anuj.mittal@intel.com>" 13RECIPE_MAINTAINER:pn-intel-crypto-mb = "Anuj Mittal <anuj.mittal@intel.com>"
14RECIPE_MAINTAINER:pn-intel-graphics-compiler = "Naveen Saini <naveen.kumar.saini@intel.com>"
14RECIPE_MAINTAINER:pn-intel-media-driver = "Lim Siew Hoon <siew.hoon.lim@intel.com>" 15RECIPE_MAINTAINER:pn-intel-media-driver = "Lim Siew Hoon <siew.hoon.lim@intel.com>"
15RECIPE_MAINTAINER:pn-intel-mediasdk = "Lim Siew Hoon <siew.hoon.lim@intel.com>" 16RECIPE_MAINTAINER:pn-intel-mediasdk = "Lim Siew Hoon <siew.hoon.lim@intel.com>"
16RECIPE_MAINTAINER:pn-intel-microcode = "Anuj Mittal <anuj.mittal@intel.com>" 17RECIPE_MAINTAINER:pn-intel-microcode = "Anuj Mittal <anuj.mittal@intel.com>"
@@ -22,7 +23,6 @@ RECIPE_MAINTAINER:pn-itt = "Naveen Saini <naveen.kumar.saini@intel.com>"
22RECIPE_MAINTAINER:pn-ixgbe = "Naveen Saini <naveen.kumar.saini@intel.com>" 23RECIPE_MAINTAINER:pn-ixgbe = "Naveen Saini <naveen.kumar.saini@intel.com>"
23RECIPE_MAINTAINER:pn-ixgbevf = "Naveen Saini <naveen.kumar.saini@intel.com>" 24RECIPE_MAINTAINER:pn-ixgbevf = "Naveen Saini <naveen.kumar.saini@intel.com>"
24RECIPE_MAINTAINER:pn-iucode-tool = "Anuj Mittal <anuj.mittal@intel.com>" 25RECIPE_MAINTAINER:pn-iucode-tool = "Anuj Mittal <anuj.mittal@intel.com>"
25RECIPE_MAINTAINER:pn-jhi = "Naveen Saini <naveen.kumar.saini@intel.com>"
26RECIPE_MAINTAINER:pn-level-zero = "Naveen Saini <naveen.kumar.saini@intel.com>" 26RECIPE_MAINTAINER:pn-level-zero = "Naveen Saini <naveen.kumar.saini@intel.com>"
27RECIPE_MAINTAINER:pn-libipt = "Naveen Saini <naveen.kumar.saini@intel.com>" 27RECIPE_MAINTAINER:pn-libipt = "Naveen Saini <naveen.kumar.saini@intel.com>"
28RECIPE_MAINTAINER:pn-libva-intel = "Anuj Mittal <anuj.mittal@intel.com>" 28RECIPE_MAINTAINER:pn-libva-intel = "Anuj Mittal <anuj.mittal@intel.com>"
@@ -51,5 +51,4 @@ RECIPE_MAINTAINER:pn-sbsigntool-native = "Anuj Mittal <anuj.mittal@intel.com>"
51RECIPE_MAINTAINER:pn-secureboot-selftest-image-signed = "Anuj Mittal <anuj.mittal@intel.com>" 51RECIPE_MAINTAINER:pn-secureboot-selftest-image-signed = "Anuj Mittal <anuj.mittal@intel.com>"
52RECIPE_MAINTAINER:pn-secureboot-selftest-image-unsigned = "Anuj Mittal <anuj.mittal@intel.com>" 52RECIPE_MAINTAINER:pn-secureboot-selftest-image-unsigned = "Anuj Mittal <anuj.mittal@intel.com>"
53RECIPE_MAINTAINER:pn-thermald = "Anuj Mittal <anuj.mittal@intel.com>" 53RECIPE_MAINTAINER:pn-thermald = "Anuj Mittal <anuj.mittal@intel.com>"
54RECIPE_MAINTAINER:pn-vc-intrinsics = "Naveen Saini <naveen.kumar.saini@intel.com>"
55RECIPE_MAINTAINER:pn-xf86-video-ast = "Anuj Mittal <anuj.mittal@intel.com>" 54RECIPE_MAINTAINER:pn-xf86-video-ast = "Anuj Mittal <anuj.mittal@intel.com>"
diff --git a/conf/layer.conf b/conf/layer.conf
index 64e209b6..97dfb897 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -19,7 +19,7 @@ LAYERRECOMMENDS_intel = "dpdk"
19# This should only be incremented on significant changes that will 19# This should only be incremented on significant changes that will
20# cause compatibility issues with other layers 20# cause compatibility issues with other layers
21LAYERVERSION_intel = "5" 21LAYERVERSION_intel = "5"
22LAYERSERIES_COMPAT_intel = "kirkstone" 22LAYERSERIES_COMPAT_intel = "kirkstone scarthgap"
23 23
24BBFILES_DYNAMIC += " \ 24BBFILES_DYNAMIC += " \
25 clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \ 25 clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \
@@ -41,3 +41,5 @@ PREFERRED_PROVIDER_nativesdk-libva ?= "nativesdk-libva"
41PREFERRED_PROVIDER_libva-utils ?= "libva-utils" 41PREFERRED_PROVIDER_libva-utils ?= "libva-utils"
42PREFERRED_PROVIDER_libva-utils-native ?= "libva-utils-native" 42PREFERRED_PROVIDER_libva-utils-native ?= "libva-utils-native"
43PREFERRED_PROVIDER_nativesdk-libva-utils ?= "nativesdk-libva-utils" 43PREFERRED_PROVIDER_nativesdk-libva-utils ?= "nativesdk-libva-utils"
44
45# addpylib ${LAYERDIR}/lib oeqa
diff --git a/conf/machine/include/meta-intel.inc b/conf/machine/include/meta-intel.inc
index 9639a4b8..230d0253 100644
--- a/conf/machine/include/meta-intel.inc
+++ b/conf/machine/include/meta-intel.inc
@@ -7,10 +7,9 @@
7PREFERRED_PROVIDER_virtual/kernel ?= "linux-intel" 7PREFERRED_PROVIDER_virtual/kernel ?= "linux-intel"
8PREFERRED_PROVIDER_virtual/kernel:poky-tiny ?= "linux-intel" 8PREFERRED_PROVIDER_virtual/kernel:poky-tiny ?= "linux-intel"
9 9
10PREFERRED_VERSION_linux-intel ?= "5.15%" 10PREFERRED_VERSION_linux-intel ?= "6.6%"
11PREFERRED_VERSION_linux-intel-rt ?= "5.15%" 11PREFERRED_VERSION_linux-intel-rt ?= "6.6%"
12PREFERRED_VERSION_linux-intel:poky-altcfg ?= "5.15%" 12PREFERRED_VERSION_linux-intel:poky-altcfg ?= "6.8%"
13PREFERRED_VERSION_linux-intel-rt:poky-altcfg ?= "5.15%"
14 13
15# Need to point to latest version of libva needed for media components 14# Need to point to latest version of libva needed for media components
16PREFERRED_PROVIDER_libva = "libva-intel" 15PREFERRED_PROVIDER_libva = "libva-intel"
@@ -21,8 +20,9 @@ PREFERRED_PROVIDER_libva-utils = "libva-intel-utils"
21PREFERRED_PROVIDER_libva-utils-native = "libva-intel-utils-native" 20PREFERRED_PROVIDER_libva-utils-native = "libva-intel-utils-native"
22PREFERRED_PROVIDER_nativesdk-libva-utils = "nativesdk-libva-intel-utils" 21PREFERRED_PROVIDER_nativesdk-libva-utils = "nativesdk-libva-intel-utils"
23 22
24PREFERRED_VERSION_opencl-clang ?= "${@bb.utils.contains('LLVMVERSION', '12.0.0', '12.0.0', '14.0.0', d)}" 23LLVM_MAJOR_VERSION = "${@d.getVar('LLVMVERSION').split('.')[0]}"
25PREFERRED_VERSION_opencl-clang-native ?= "${@bb.utils.contains('LLVMVERSION', '12.0.0', '12.0.0', '14.0.0', d)}" 24PREFERRED_VERSION_opencl-clang ?= "${@bb.utils.contains('LLVM_MAJOR_VERSION', '14', '14.0.0', '15.0.0', d)}"
25PREFERRED_VERSION_opencl-clang-native ?= "${@bb.utils.contains('LLVM_MAJOR_VERSION', '14', '14.0.0', '15.0.0', d)}"
26 26
27XSERVER_X86_ASPEED_AST = "xf86-video-ast \ 27XSERVER_X86_ASPEED_AST = "xf86-video-ast \
28 " 28 "
@@ -32,7 +32,7 @@ MACHINE_ESSENTIAL_EXTRA_RDEPENDS:append = "${@bb.utils.contains('MACHINE_FEATURE
32 32
33# recommended extra packages common to all intel machines 33# recommended extra packages common to all intel machines
34MACHINE_EXTRA_RRECOMMENDS:append = " kernel-modules linux-firmware" 34MACHINE_EXTRA_RRECOMMENDS:append = " kernel-modules linux-firmware"
35MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS:append = " kernel-module-i915 linux-firmware-i915" 35MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS:append = " kernel-module-i915 linux-firmware-i915 kernel-module-igc kernel-module-r8152"
36 36
37# for the early boot time kernel microcode loading support, 37# for the early boot time kernel microcode loading support,
38# merge the microcode data in the final initrd image. 38# merge the microcode data in the final initrd image.
diff --git a/conf/machine/include/qemuboot-intel.inc b/conf/machine/include/qemuboot-intel.inc
index 6ac84a55..17a1234d 100644
--- a/conf/machine/include/qemuboot-intel.inc
+++ b/conf/machine/include/qemuboot-intel.inc
@@ -15,5 +15,4 @@ QB_CPU_KVM:intel-skylake-64 = "-cpu Skylake-Client"
15QB_AUDIO_DRV = "alsa" 15QB_AUDIO_DRV = "alsa"
16QB_AUDIO_OPT = "-device AC97" 16QB_AUDIO_OPT = "-device AC97"
17QB_KERNEL_CMDLINE_APPEND = " oprofile.timer=1" 17QB_KERNEL_CMDLINE_APPEND = " oprofile.timer=1"
18# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy 18QB_OPT_APPEND = " -usb -usbdevice tablet "
19QB_OPT_APPEND = " -usb -usbdevice tablet -device virtio-rng-pci"
diff --git a/conf/machine/include/tune-skylake.inc b/conf/machine/include/tune-skylake.inc
deleted file mode 100644
index 05b7283c..00000000
--- a/conf/machine/include/tune-skylake.inc
+++ /dev/null
@@ -1,48 +0,0 @@
1# Settings for the GCC(1) cpu-type "skylake":
2#
3# Intel Skylake CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
4# SSE4.2, AVX, AVX2 and POPCNT instruction set support.
5#
6# This tune is recommended for Intel Skylake CPU (and beyond).
7#
8DEFAULTTUNE ?= "skylake-64"
9
10# Include the previous tune to pull in PACKAGE_EXTRA_ARCHS
11require conf/machine/include/x86/tune-corei7.inc
12
13# Extra tune features
14TUNEVALID[skylake] = "Enable skylake specific processor optimizations"
15TUNE_CCARGS .= "${@bb.utils.contains('TUNE_FEATURES', 'skylake', ' -march=skylake ${SKYLAKE_TUNE} -mfpmath=sse', '', d)}"
16
17# Extra tune selections
18
19AVAILTUNES += "skylake-64"
20TUNE_FEATURES:tune-skylake-64 = "${TUNE_FEATURES:tune-x86-64} skylake"
21BASE_LIB:tune-skylake-64 = "lib64"
22TUNE_PKGARCH:tune-skylake-64 = "skylake-64"
23PACKAGE_EXTRA_ARCHS:tune-skylake-64 = "${PACKAGE_EXTRA_ARCHS:tune-core2-64} skylake-64"
24QEMU_EXTRAOPTIONS_skylake-64 = " -cpu Skylake-Client"
25
26
27# Disable QEMU usermode by default (get avx2)
28MACHINE_FEATURES:remove = "qemu-usermode"
29
30# If qemu-usermode is enabled, we have to disable avx2 ISA extensions, but we can keep mtune as skylake vs generic
31SKYLAKE_TUNE .= "${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', ' -mtune=skylake ${QEMU_UNAVAILABLE_ISA}', '-mtune=generic -mavx2', d)}"
32
33QEMU_UNAVAILABLE_ISA = " \
34-mno-avx \
35-mno-avx2 \
36-mno-avx512f \
37-mno-avx512er \
38-mno-avx512cd \
39-mno-avx512pf \
40-mno-avx512dq \
41-mno-avx512bw \
42-mno-avx512vl \
43-mno-avx512ifma \
44-mno-avx512vbmi \
45-mno-avx512vbmi2 \
46-mno-avx512vnni \
47-mno-avx512bitalg \
48"
diff --git a/conf/machine/intel-skylake-64.conf b/conf/machine/intel-skylake-64.conf
index 47d53fa0..a2b392c2 100644
--- a/conf/machine/intel-skylake-64.conf
+++ b/conf/machine/intel-skylake-64.conf
@@ -5,7 +5,7 @@
5 5
6require conf/machine/include/meta-intel.inc 6require conf/machine/include/meta-intel.inc
7require conf/machine/include/x86/x86-base.inc 7require conf/machine/include/x86/x86-base.inc
8require conf/machine/include/tune-skylake.inc 8require conf/machine/include/x86/tune-x86-64-v3.inc
9require conf/machine/include/intel-common-pkgarch.inc 9require conf/machine/include/intel-common-pkgarch.inc
10 10
11MACHINE_FEATURES += "efi" 11MACHINE_FEATURES += "efi"
diff --git a/documentation/building_and_booting.md b/documentation/building_and_booting.md
new file mode 100644
index 00000000..478a4fb0
--- /dev/null
+++ b/documentation/building_and_booting.md
@@ -0,0 +1,134 @@
1### Building the Intel BSP layers
2
3The intel-common BSP provide a few carefully selected tune options and
4generic hardware support to cover the majority of current Intel CPUs and
5devices. The naming follows the convention of intel-<TUNE>-<BITS>, where
6TUNE is the gcc cpu-type (used with mtune and march typically) and BITS
7is either 32 bit or 64 bit.
8
9In order to build an image with BSP support for a given release, you
10need to clone the meta-intel layer from git repository:
11```
12git clone https://git.yoctoproject.org/meta-intel
13```
14
15Check out the appropriate branch or release tags. The branch name and tags
16would align with Yocto Project
17[Release Codenames](https://wiki.yoctoproject.org/wiki/Releases).
18Assuming meta-intel repository is cloned at the top-level of
19OE-Core build tree, you can build a BSP image by adding the location of
20the meta-intel layer to bblayers.conf:
21```
22BBLAYERS = " \
23 /openembedded-core/meta \
24 /openembedded-core/meta-intel "
25```
26
27To enable a particular machine, add a MACHINE line naming the BSP
28to the local.conf file:
29```
30MACHINE ?= "intel-corei7-64"
31```
32
33where this can be replaced by other MACHINE types available:
34
35 - intel-core2-32
36
37 This BSP is optimized for the Core2 family of CPUs as well as all
38 Atom CPUs prior to the Silvermont core.
39
40 - intel-corei7-64
41
42 This BSP is optimized for Nehalem and later Core and Xeon CPUs as
43 well as Silvermont and later Atom CPUs, such as the Baytrail SoCs.
44
45 - intel-skylake-64
46
47 This BSP uses [x86-64-v3 tuning](https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html).
48
49You should then be able to build an image as such:
50```
51$ source oe-init-build-env
52$ bitbake core-image-sato
53```
54
55At the end of a successful build, you should have an image that
56you can boot from a USB flash drive.
57
58
59## Booting the intel-common BSP images
60
61If you've built your own image, you'll find the bootable
62image in the build/tmp/deploy/images/{MACHINE} directory, where
63'MACHINE' refers to the machine name used in the build.
64
65Under Linux, insert a USB flash drive. Assuming the USB flash drive
66takes device /dev/sdf, use dd to copy the image to it. Before the image
67can be burned onto a USB drive, it should be un-mounted. Some Linux distros
68may automatically mount a USB drive when it is plugged in. Using USB device
69/dev/sdf as an example, find all mounted partitions:
70```
71$ mount | grep sdf
72```
73
74and un-mount those that are mounted, for example:
75```
76$ umount /dev/sdf1
77$ umount /dev/sdf2
78```
79
80Now burn the image onto the USB drive:
81```
82$ sudo dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf status=progress
83$ sync
84$ eject /dev/sdf
85```
86
87This should give you a bootable USB flash device. Insert the device
88into a bootable USB socket on the target, and power on. This should
89result in a system booted to the Sato graphical desktop.
90
91If you want a terminal, use the arrows at the top of the UI to move to
92different pages of available applications, one of which is named
93'Terminal'. Clicking that should give you a root terminal.
94
95If you want to ssh into the system, you can use the root terminal to
96ifconfig the IP address and use that to ssh in. The root password is
97empty, so to log in type 'root' for the user name and hit 'Enter' at
98the Password prompt: and you should be in.
99
100If you find you're getting corrupt images on the USB (it doesn't show
101the syslinux boot: prompt, or the boot: prompt contains strange
102characters), try doing this first:
103```
104$ dd if=/dev/zero of=/dev/sdf bs=1M count=512
105```
106
107## Building the installer image
108
109If you plan to install your image to your target machine, you can build a wic
110based installer image instead of default wic image. To build it, you need to
111add below configuration to local.conf :
112
113```
114WKS_FILE = "image-installer.wks.in"
115IMAGE_FSTYPES:append = " ext4"
116IMAGE_TYPEDEP:wic = "ext4"
117INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
118do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
119do_rootfs[depends] += "virtual/kernel:do_deploy"
120IMAGE_BOOT_FILES:append = "\
121 ${KERNEL_IMAGETYPE} \
122 microcode.cpio \
123 ${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.rootfs.ext4;rootfs.img \
124 ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', 'grub-efi-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
125 ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', '${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg', '', d)} \
126 ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', 'systemd-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
127 ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/loader.conf;loader/loader.conf ', '', d)} \
128 ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/entries/boot.conf;loader/entries/boot.conf', '', d)} "
129```
130
131Burn the wic image onto USB flash device, insert the device to target machine
132and power on. This should start the installation process.
133
134
diff --git a/documentation/dpcpp-compiler.md b/documentation/dpcpp-compiler.md
new file mode 100644
index 00000000..b709a685
--- /dev/null
+++ b/documentation/dpcpp-compiler.md
@@ -0,0 +1,107 @@
1Intel(R) oneAPI DPC++/C++ Compiler (ICX) toolchain
2==========================================================================
3
4Get Started with the Intel oneAPI DPC++/C++ Compiler:
5
6https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html#
7
8
9Getting Started
10===============
11
12Clone the required layers and include them in bblayers.conf:
13
14```
15git clone https://git.openembedded.org/openembedded-core
16git clone https://git.openembedded.org/bitbake
17git clone https://git.openembedded.org/meta-openembedded
18git clone https://github.com/kraj/meta-clang.git
19git clone https://git.yoctoproject.org/meta-intel
20
21$ source openembedded-core/oe-init-build-env
22
23$ bitbake-layers add-layer ../meta-openembedded/meta-oe/
24$ bitbake-layers add-layer ../meta-intel
25$ bitbake-layers add-layer ../meta-clang
26```
27
28Distro
29======
30
31Note that oneAPI DPC++/C++ compiler currently only works when the vendor string is "oe".
32
33```
34DISTRO ?= "nodistro"
35```
36
37MACHINE configuration
38=====================
39
40```
41MACHINE ?= "intel-skylake-64"
42```
43
44Package installation
45====================
46
47```
48# To include OpenCL driver that might be needed when compiling SYCL programs, include:
49IMAGE_INSTALL:append = " intel-compute-runtime intel-graphics-compiler"
50
51# To install only runtime libraries, include:
52IMAGE_INSTALL:append = " intel-oneapi-dpcpp-cpp-runtime intel-oneapi-dpcpp-cpp-runtime-dev"
53
54# To install the toolchain, include:
55IMAGE_INSTALL:append = " intel-oneapi-dpcpp-cpp intel-oneapi-dpcpp-cpp-dev"
56```
57in local.conf.
58
59Build an image
60==============
61
62```
63$ bitbake core-image-minimal
64```
65
66Including oneAPI C++/DPC++ compiler in generated SDK toolchain
67==============================================================
68
69The compiler is not included in the generated SDK by default. If it is expected to be part of SDK, add ICXSDK = "1" in local.conf:
70
71```
72ICXSDK = "1"
73```
74
75Generate SDK:
76```
77bitbake core-image-minimal -c populate_sdk
78```
79
80
81To setup PATH variables on target
82=================================
83
84Once image is booted successfully, some variables would need to be exported to make sure compiler can be used:
85
86```
87$ source /opt/intel/oneapi/compiler/2022.1.0/env/vars.sh
88
89$ mkdir -p /lib64
90
91$ ln -sf /lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
92```
93
94Build application and run
95=========================
96
97To compile a sycl application, for example:
98
99```
100$ icpx --target=x86_64-oe-linux -fsycl simple-sycl-app.c -o simple-sycl-app
101```
102
103To run:
104
105```
106$ ./simple-sycl-app
107```
diff --git a/documentation/reporting_bugs.md b/documentation/reporting_bugs.md
new file mode 100644
index 00000000..5fbc3d27
--- /dev/null
+++ b/documentation/reporting_bugs.md
@@ -0,0 +1,22 @@
1## Reporting bugs
2
3If you have problems with or questions about a particular BSP, please
4contact the maintainer listed in the [Maintainer](../README.md#maintainers) section directly (cc:ing
5the Yocto mailing list puts it in the archive and helps other people
6who might have the same questions in the future), but please try to do
7the following first:
8
9- look in the [Yocto Project Bugzilla](http://bugzilla.yoctoproject.org/) to see if a
10 problem has already been reported
11
12- look through recent entries of the [meta-intel](https://lists.yoctoproject.org/g/meta-intel/messages)
13 and [Yocto Archives](https://lists.yoctoproject.org/g/yocto/messages) mailing list archives to see
14 if other people have run into similar problems or had similar questions answered.
15
16If you believe you have encountered a bug, you can open a new bug and
17enter the details in the [Yocto Project Bugzilla](https://bugzilla.yoctoproject.org/).
18If you're relatively certain that it's a bug against the BSP itself, please use the
19'BSPs | bsps-meta-intel' category for the bug; otherwise, please submit the bug against
20the most likely category for the problem. if you're wrong, it's not a big deal and
21the bug will be recategorized upon triage.
22
diff --git a/documentation/secureboot/README b/documentation/secureboot/README
deleted file mode 100644
index 3d5703bb..00000000
--- a/documentation/secureboot/README
+++ /dev/null
@@ -1,38 +0,0 @@
1Currently, only one implementation of Secure Boot is available out of the box,
2which is using a single signed EFI application to directly boot the kernel with
3an optional initramfs.
4
5This can be added to your build either through local.conf, or via your own
6custom image recipe.
7
8If you are adding it via local.conf, set the following variables:
9
10IMAGE_FEATURES += "secureboot"
11WKS_FILE = "generic-bootdisk.wks.in"
12SECURE_BOOT_SIGNING_KEY = "/path/to/your/signing/key"
13SECURE_BOOT_SIGNING_CERT = "/path/to/your/signing/cert"
14IMAGE_CLASSES += "uefi-comboapp"
15
16If working with an image recipe, you can inherit uefi-comboapp directly instead
17of using the IMAGE_CLASSES variable.
18
19The signing keys and certs can be created via openssl commands. Here's an
20example:
21openssl req -new -x509 -newkey rsa:2048 -subj "/CN=your-subject/" -keyout \
22your-key.key -out your-key.crt -days 365 -nodes -sha256
23openssl x509 -in your-key.crt -out your-key.cer -outform DER
24
25The .crt file is your SECURE_BOOT_SIGNING_CERT, and the .key file is your
26SECURE_BOOT_SIGNING_KEY.
27
28You should enroll the .crt key in your firmware under the PK, KEK, and DB
29options (methods are different depending on your firmware). If a key should ever
30become invalid, enroll it under DBX to blacklist it.
31
32The comboapp can be further manipulated in a number of ways. You can modify the
33kernel command line via the APPEND variable, you can change the default UUID via
34the DISK_SIGNATURE_UUID variable, and you can modify the contents of the
35initramfs via the INITRD_IMAGE or INITRD_LIVE variables.
36
37A simple Secure Boot enabled image used for testing can be viewed at:
38common/recipes-selftest/images/secureboot-selftest-image-signed.bb
diff --git a/documentation/submitting_patches.md b/documentation/submitting_patches.md
new file mode 100644
index 00000000..f36c4b08
--- /dev/null
+++ b/documentation/submitting_patches.md
@@ -0,0 +1,26 @@
1## Guidelines for submitting patches
2
3Please submit any patches against meta-intel BSPs to the
4[meta-intel mailing list](https://lists.yoctoproject.org/g/meta-intel)
5(email: meta-intel@lists.yoctoproject.org). Also, if your patches are
6available via a public git repository, please also include a URL to
7the repo and branch containing your patches as that makes it easier
8for maintainers to grab and test your patches.
9
10The patches should follow the suggestions outlined in the
11[Yocto Project and OpenEmbedded Contributor Guide](https://docs.yoctoproject.org/dev/contributor-guide/index.html).
12In addition, for any non-trivial patch, provide information about how you
13tested the patch, and for any non-trivial or non-obvious testing
14setup, provide details of that setup.
15
16Doing a quick 'git log' in meta-intel will provide you with many
17examples of good example commits if you have questions about any
18aspect of the preferred format.
19
20The meta-intel maintainers will do their best to review and/or pull in
21a patch or patch sets within 24 hours of the time it was posted. For
22larger and/or more involved patches and patch sets, the review process
23may take longer.
24
25Please see the [maintainers](../README.md#maintainers) section for the list of maintainers. It's also
26a good idea to cc: the maintainer, if applicable.
diff --git a/documentation/tested_hardware.md b/documentation/tested_hardware.md
new file mode 100644
index 00000000..48a25ab4
--- /dev/null
+++ b/documentation/tested_hardware.md
@@ -0,0 +1,24 @@
1## Tested Hardware
2
3The following undergo regular basic testing with their respective MACHINE types.
4
5- intel-corei7-64:
6 * Alder Lake-P
7 * Alder Lake-S
8 * Alder Lake-PS
9 * Elkhart Lake
10 * Metor Lake-P
11 * Raptor Lake-P
12 * Tiger Lake
13
14- intel-skylake-64:
15 * Alder Lake-P
16 * Alder Lake-S
17 * Alder Lake-PS
18 * Elkhart Lake
19 * Metor Lake-P
20 * Raptor Lake-P
21 * Tiger Lake
22
23- intel-core2-32:
24 * MinnowBoard Turbot
diff --git a/dynamic-layers/clang-layer/recipes-core/dnn/onednn_2.6.bb b/dynamic-layers/clang-layer/recipes-core/dnn/onednn_3.4.bb
index 44162301..afea70df 100644
--- a/dynamic-layers/clang-layer/recipes-core/dnn/onednn_2.6.bb
+++ b/dynamic-layers/clang-layer/recipes-core/dnn/onednn_3.4.bb
@@ -3,7 +3,7 @@ SUMMARY = "Deep Neural Network Library"
3DESCRIPTION = "This software is a user mode library that accelerates\ 3DESCRIPTION = "This software is a user mode library that accelerates\
4deep-learning applications and frameworks on Intel architecture." 4deep-learning applications and frameworks on Intel architecture."
5LICENSE = "Apache-2.0 & BSD-3-Clause & BSL-1.0" 5LICENSE = "Apache-2.0 & BSD-3-Clause & BSL-1.0"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=b48e3de3bfd47c27882a0d85b20823f5 \ 6LIC_FILES_CHKSUM = "file://LICENSE;md5=3b64000f6e7d52516017622a37a94ce9 \
7 file://tests/gtests/gtest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a \ 7 file://tests/gtests/gtest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a \
8 file://src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \ 8 file://src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \
9 file://src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \ 9 file://src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \
@@ -12,9 +12,11 @@ SECTION = "lib"
12 12
13inherit pkgconfig cmake ptest 13inherit pkgconfig cmake ptest
14 14
15DNN_BRANCH = "rls-v${@'.'.join(d.getVar('PV').split('.')[0:2])}"
16
15S = "${WORKDIR}/git" 17S = "${WORKDIR}/git"
16SRCREV = "52b5f107dd9cf10910aaa19cb47f3abf9b349815" 18SRCREV = "ecd7fb6d5a0df6503d1691c1754a684b9c769c16"
17SRC_URI = "git://github.com/oneapi-src/oneDNN.git;branch=rls-v2.6;protocol=https \ 19SRC_URI = "git://github.com/oneapi-src/oneDNN.git;branch=${DNN_BRANCH};protocol=https \
18 file://run-ptest \ 20 file://run-ptest \
19 " 21 "
20 22
@@ -32,10 +34,11 @@ EXTRA_OECMAKE += " \
32 -DDNNL_CPU_RUNTIME=OMP \ 34 -DDNNL_CPU_RUNTIME=OMP \
33 -DDNNL_ARCH_OPT_FLAGS="" \ 35 -DDNNL_ARCH_OPT_FLAGS="" \
34 -DCMAKE_SKIP_RPATH=ON \ 36 -DCMAKE_SKIP_RPATH=ON \
37 -DONEDNN_BUILD_GRAPH=OFF \
35 " 38 "
36 39
37PACKAGECONFIG ??= "" 40PACKAGECONFIG ??= "gpu"
38PACKAGECONFIG[gpu] = "-DDNNL_GPU_RUNTIME=OCL, , opencl-headers ocl-icd, intel-compute-runtime" 41PACKAGECONFIG[gpu] = "-DDNNL_GPU_RUNTIME=OCL, , opencl-headers virtual/opencl-icd, intel-compute-runtime"
39 42
40do_install:append () { 43do_install:append () {
41 install -d ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs 44 install -d ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs
diff --git a/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-CMakeLists.txt-link-with-libclang-cpp-library-instea.patch b/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-CMakeLists.txt-link-with-libclang-cpp-library-instea.patch
deleted file mode 100644
index 4e25420c..00000000
--- a/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-CMakeLists.txt-link-with-libclang-cpp-library-instea.patch
+++ /dev/null
@@ -1,28 +0,0 @@
1From b9bc0df996d1e65fd70d5eb2d40866693f23bb67 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Thu, 24 Jun 2021 17:53:27 +0800
4Subject: [PATCH] CMakeLists.txt: link with libclang-cpp library instead
5
6Upstream-Status: Inappropriate
7
8Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
9---
10 CMakeLists.txt | 2 +-
11 1 file changed, 1 insertion(+), 1 deletion(-)
12
13diff --git a/CMakeLists.txt b/CMakeLists.txt
14index ef88317e..7507d6a5 100644
15--- a/CMakeLists.txt
16+++ b/CMakeLists.txt
17@@ -281,7 +281,7 @@ if (WASM_ENABLED)
18 list(APPEND ISPC_TARGETS wasm-i32x4)
19 endif()
20
21-set(CLANG_LIBRARY_LIST clangFrontend clangDriver clangSerialization clangParse clangSema clangAnalysis clangAST clangBasic clangEdit clangLex)
22+set(CLANG_LIBRARY_LIST clang-cpp)
23 set(LLVM_COMPONENTS engine ipo bitreader bitwriter instrumentation linker option frontendopenmp)
24
25 if (X86_ENABLED)
26--
272.17.1
28
diff --git a/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-Enable-LLVM-15.0-support.patch b/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-Enable-LLVM-15.0-support.patch
deleted file mode 100644
index fe82ff25..00000000
--- a/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0001-Enable-LLVM-15.0-support.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From 9b722217a2818bc4335bf2c7d3293d30aa5977b1 Mon Sep 17 00:00:00 2001
2From: Dmitry Babokin <dmitry.y.babokin@intel.com>
3Date: Fri, 4 Feb 2022 16:45:34 -0800
4Subject: [PATCH 01/24] Enable LLVM 15.0 support
5
6Upstream-Status: Backport [https://github.com/ispc/ispc/commit/9b722217a2818bc4335bf2c7d3293d30aa5977b1]
7
8Signed-off-by: Dmitry Babokin <dmitry.y.babokin@intel.com>
9---
10 src/ispc.h | 4 ++--
11 src/ispc_version.h | 3 ++-
12 2 files changed, 4 insertions(+), 3 deletions(-)
13
14diff --git a/src/ispc.h b/src/ispc.h
15index 362c2b93..581d5de6 100644
16--- a/src/ispc.h
17+++ b/src/ispc.h
18@@ -1,5 +1,5 @@
19 /*
20- Copyright (c) 2010-2021, Intel Corporation
21+ Copyright (c) 2010-2022, Intel Corporation
22 All rights reserved.
23
24 Redistribution and use in source and binary forms, with or without
25@@ -42,7 +42,7 @@
26 #include "target_registry.h"
27
28 #if ISPC_LLVM_VERSION < OLDEST_SUPPORTED_LLVM || ISPC_LLVM_VERSION > LATEST_SUPPORTED_LLVM
29-#error "Only LLVM 11.0 - 13.0 and 14.0 development branch are supported"
30+#error "Only LLVM 11.0 - 14.0 and 15.0 development branch are supported"
31 #endif
32
33 #if defined(_WIN32) || defined(_WIN64)
34diff --git a/src/ispc_version.h b/src/ispc_version.h
35index e8487e5b..04a3cf64 100644
36--- a/src/ispc_version.h
37+++ b/src/ispc_version.h
38@@ -50,9 +50,10 @@
39 #define ISPC_LLVM_12_0 120000
40 #define ISPC_LLVM_13_0 130000
41 #define ISPC_LLVM_14_0 140000
42+#define ISPC_LLVM_15_0 150000
43
44 #define OLDEST_SUPPORTED_LLVM ISPC_LLVM_10_0
45-#define LATEST_SUPPORTED_LLVM ISPC_LLVM_14_0
46+#define LATEST_SUPPORTED_LLVM ISPC_LLVM_15_0
47
48 #ifdef __ispc__xstr
49 #undef __ispc__xstr
50--
512.17.1
52
diff --git a/dynamic-layers/clang-layer/recipes-core/ispc/ispc_1.17.0.bb b/dynamic-layers/clang-layer/recipes-core/ispc/ispc_1.17.0.bb
deleted file mode 100644
index cfd8e5bc..00000000
--- a/dynamic-layers/clang-layer/recipes-core/ispc/ispc_1.17.0.bb
+++ /dev/null
@@ -1,41 +0,0 @@
1SUMMARY = "Intel(R) Implicit SPMD Program Compiler"
2DESCRIPTION = "ispc is a compiler for a variant of the C programming language, \
3with extensions for single program, multiple data programming."
4HOMEPAGE = "https://github.com/ispc/ispc"
5
6LICENSE = "BSD-3-Clause & Apache-2.0-with-LLVM-exception"
7LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=da5ecffdd210b3cf776b32b41c182e87 \
8 file://third-party-programs.txt;md5=3cd6f8a7c3bd9d2bb898fcb27c75221a"
9
10inherit cmake python3native
11
12S = "${WORKDIR}/git"
13
14SRC_URI = "git://github.com/ispc/ispc.git;protocol=https;branch=main \
15 file://0001-CMakeLists.txt-link-with-libclang-cpp-library-instea.patch \
16 file://0002-cmake-don-t-build-for-32-bit-targets.patch \
17 file://0001-Enable-LLVM-15.0-support.patch \
18 "
19SRCREV = "7ad8429369a4d5ced6b524fdfffe623939d8fe9a"
20
21COMPATIBLE_HOST = '(x86_64).*-linux'
22
23DEPENDS += " clang-native bison-native "
24RDEPENDS:${PN} += " clang-libllvm clang"
25
26EXTRA_OECMAKE += " \
27 -DISPC_INCLUDE_TESTS=OFF \
28 -DISPC_INCLUDE_EXAMPLES=OFF \
29 -DISPC_NO_DUMPS=ON \
30 -DARM_ENABLED=OFF \
31 -DISPC_CROSS=ON \
32 -DISPC_ANDROID_TARGET=OFF \
33 -DISPC_FREEBSD_TARGET=OFF \
34 -DISPC_WINDOWS_TARGET=OFF \
35 -DISPC_IOS_TARGET=OFF \
36 -DISPC_PS4_TARGET=OFF \
37 -DSYSROOT_DIR=${STAGING_DIR_NATIVE} \
38 "
39
40TOOLCHAIN = "clang"
41BBCLASSEXTEND = "native nativesdk"
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch
deleted file mode 100644
index 00f3607a..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch
+++ /dev/null
@@ -1,51 +0,0 @@
1From 3632f727dfd786a8eca50bd01219669bbe7b0df9 Mon Sep 17 00:00:00 2001
2From: haonanya <haonan.yang@intel.com>
3Date: Tue, 11 May 2021 11:13:02 +0800
4Subject: [PATCH 1/3] Remove __IMAGE_SUPPORT__ macro for SPIR since SPIR
5 doesn't require image support
6
7Upstream-Status: Inappropriate
8
9Signed-off-by: haonanya <haonan.yang@intel.com>
10Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
11---
12 clang/lib/Frontend/InitPreprocessor.cpp | 3 ---
13 clang/test/Preprocessor/predefined-macros.c | 2 --
14 2 files changed, 5 deletions(-)
15
16diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
17index c64a912ce919..c60972c96e5d 100644
18--- a/clang/lib/Frontend/InitPreprocessor.cpp
19+++ b/clang/lib/Frontend/InitPreprocessor.cpp
20@@ -1121,9 +1121,6 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
21 // OpenCL definitions.
22 if (LangOpts.OpenCL) {
23 TI.getOpenCLFeatureDefines(LangOpts, Builder);
24-
25- if (TI.getTriple().isSPIR())
26- Builder.defineMacro("__IMAGE_SUPPORT__");
27 }
28
29 if (TI.hasInt128Type() && LangOpts.CPlusPlus && LangOpts.GNUMode) {
30diff --git a/clang/test/Preprocessor/predefined-macros.c b/clang/test/Preprocessor/predefined-macros.c
31index e406b9a70570..88606518c7de 100644
32--- a/clang/test/Preprocessor/predefined-macros.c
33+++ b/clang/test/Preprocessor/predefined-macros.c
34@@ -188,14 +188,12 @@
35
36 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir-unknown-unknown \
37 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR
38-// CHECK-SPIR-DAG: #define __IMAGE_SUPPORT__ 1
39 // CHECK-SPIR-DAG: #define __SPIR__ 1
40 // CHECK-SPIR-DAG: #define __SPIR32__ 1
41 // CHECK-SPIR-NOT: #define __SPIR64__ 1
42
43 // RUN: %clang_cc1 %s -E -dM -o - -x cl -triple spir64-unknown-unknown \
44 // RUN: | FileCheck -match-full-lines %s --check-prefix=CHECK-SPIR64
45-// CHECK-SPIR64-DAG: #define __IMAGE_SUPPORT__ 1
46 // CHECK-SPIR64-DAG: #define __SPIR__ 1
47 // CHECK-SPIR64-DAG: #define __SPIR64__ 1
48 // CHECK-SPIR64-NOT: #define __SPIR32__ 1
49--
502.17.1
51
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch
deleted file mode 100644
index 497db4f5..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch
+++ /dev/null
@@ -1,52 +0,0 @@
1From 60854c328d8729b2ef10b9bb4dcbcc282f43c5e7 Mon Sep 17 00:00:00 2001
2From: Raphael Isemann <teemperor@gmail.com>
3Date: Thu, 1 Apr 2021 18:41:44 +0200
4Subject: [PATCH] Avoid calling ParseCommandLineOptions in BackendUtil if
5 possible
6
7Calling `ParseCommandLineOptions` should only be called from `main` as the
8CommandLine setup code isn't thread-safe. As BackendUtil is part of the
9generic Clang FrontendAction logic, a process which has several threads executing
10Clang FrontendActions will randomly crash in the unsafe setup code.
11
12This patch avoids calling the function unless either the debug-pass option or
13limit-float-precision option is set. Without these two options set the
14`ParseCommandLineOptions` call doesn't do anything beside parsing
15the command line `clang` which doesn't set any options.
16
17See also D99652 where LLDB received a workaround for this crash.
18
19Reviewed By: JDevlieghere
20
21Differential Revision: https://reviews.llvm.org/D99740
22
23Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/60854c328d8729b2ef10b9bb4dcbcc282f43c5e7]
24Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
25
26---
27 clang/lib/CodeGen/BackendUtil.cpp | 8 ++++++++
28 1 file changed, 8 insertions(+)
29
30diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
31index 41eafd13d97c..00d92e7beadd 100644
32--- a/clang/lib/CodeGen/BackendUtil.cpp
33+++ b/clang/lib/CodeGen/BackendUtil.cpp
34@@ -871,7 +871,15 @@ static void setCommandLineOpts(const CodeGenOptions &CodeGenOpts) {
35 BackendArgs.push_back("-limit-float-precision");
36 BackendArgs.push_back(CodeGenOpts.LimitFloatPrecision.c_str());
37 }
38+ // Check for the default "clang" invocation that won't set any cl::opt values.
39+ // Skip trying to parse the command line invocation to avoid the issues
40+ // described below.
41+ if (BackendArgs.size() == 1)
42+ return;
43 BackendArgs.push_back(nullptr);
44+ // FIXME: The command line parser below is not thread-safe and shares a global
45+ // state, so this call might crash or overwrite the options of another Clang
46+ // instance in the same process.
47 llvm::cl::ParseCommandLineOptions(BackendArgs.size() - 1,
48 BackendArgs.data());
49 }
50--
512.29.2
52
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch
deleted file mode 100644
index c609b08b..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0003-Support-cl_ext_float_atomics.patch
+++ /dev/null
@@ -1,561 +0,0 @@
1From 85505bdb386a426310c1fb0a845780beeeec4353 Mon Sep 17 00:00:00 2001
2From: haonanya <haonan.yang@intel.com>
3Date: Wed, 9 Feb 2022 09:16:35 +0800
4Subject: [PATCH] Support cl_ext_float_atomics
5
6This backports https://reviews.llvm.org/D106343 and https://reviews.llvm.org/D109740
7
8Signed-off-by: haonanya <haonan.yang@intel.com>
9
10Upstream-Status: Backport
11
12https://github.com/llvm/llvm-project/commit/d353d1c50112a1cb315eccdab18ce7bd1563cd06
13https://github.com/llvm/llvm-project/commit/544d89e847d42ce8856296752b0fb279aa89aace
14
15Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
16
17---
18 clang/lib/Headers/opencl-c-base.h | 19 ++
19 clang/lib/Headers/opencl-c.h | 378 ++++++++++++++++++++++++++
20 clang/lib/Sema/Sema.cpp | 3 +
21 clang/test/Headers/opencl-c-header.cl | 84 ++++++
22 4 files changed, 484 insertions(+)
23
24diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
25index e8dcd70377e5..d94d64372dbb 100644
26--- a/clang/lib/Headers/opencl-c-base.h
27+++ b/clang/lib/Headers/opencl-c-base.h
28@@ -21,6 +21,25 @@
29 #define cl_khr_subgroup_shuffle 1
30 #define cl_khr_subgroup_shuffle_relative 1
31 #define cl_khr_subgroup_clustered_reduce 1
32+#define cl_ext_float_atomics
33+#ifdef cl_khr_fp16
34+#define __opencl_c_ext_fp16_global_atomic_load_store 1
35+#define __opencl_c_ext_fp16_local_atomic_load_store 1
36+#define __opencl_c_ext_fp16_global_atomic_add 1
37+#define __opencl_c_ext_fp16_local_atomic_add 1
38+#define __opencl_c_ext_fp16_global_atomic_min_max 1
39+#define __opencl_c_ext_fp16_local_atomic_min_max 1
40+#endif
41+#ifdef cl_khr_fp64
42+#define __opencl_c_ext_fp64_global_atomic_add 1
43+#define __opencl_c_ext_fp64_local_atomic_add 1
44+#define __opencl_c_ext_fp64_global_atomic_min_max 1
45+#define __opencl_c_ext_fp64_local_atomic_min_max 1
46+#endif
47+#define __opencl_c_ext_fp32_global_atomic_add 1
48+#define __opencl_c_ext_fp32_local_atomic_add 1
49+#define __opencl_c_ext_fp32_global_atomic_min_max 1
50+#define __opencl_c_ext_fp32_local_atomic_min_max 1
51 #endif // defined(__SPIR__)
52 #endif // (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
53
54diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
55index ab665628c8e1..584db7e81e04 100644
56--- a/clang/lib/Headers/opencl-c.h
57+++ b/clang/lib/Headers/opencl-c.h
58@@ -13531,6 +13531,384 @@ intptr_t __ovld atomic_fetch_max_explicit(volatile atomic_intptr_t *object, uint
59 intptr_t __ovld atomic_fetch_max_explicit(volatile atomic_intptr_t *object, uintptr_t opermax, memory_order minder, memory_scope scope);
60 #endif
61
62+// The functionality added by cl_ext_float_atomics extension
63+#if defined(cl_ext_float_atomics)
64+
65+#if defined(__opencl_c_ext_fp16_global_atomic_load_store)
66+void __ovld atomic_store(volatile __global atomic_half *object, half operand);
67+void __ovld atomic_store_explicit(volatile __global atomic_half *object,
68+ half operand, memory_order order);
69+void __ovld atomic_store_explicit(volatile __global atomic_half *object,
70+ half operand, memory_order order,
71+ memory_scope scope);
72+half __ovld atomic_load(volatile __global atomic_half *object);
73+half __ovld atomic_load_explicit(volatile __global atomic_half *object,
74+ memory_order order);
75+half __ovld atomic_load_explicit(volatile __global atomic_half *object,
76+ memory_order order, memory_scope scope);
77+half __ovld atomic_exchange(volatile __global atomic_half *object,
78+ half operand);
79+half __ovld atomic_exchange_explicit(volatile __global atomic_half *object,
80+ half operand, memory_order order);
81+half __ovld atomic_exchange_explicit(volatile __global atomic_half *object,
82+ half operand, memory_order order,
83+ memory_scope scope);
84+#endif // defined(__opencl_c_ext_fp16_global_atomic_load_store)
85+
86+#if defined(__opencl_c_ext_fp16_local_atomic_load_store)
87+void __ovld atomic_store(volatile __local atomic_half *object, half operand);
88+void __ovld atomic_store_explicit(volatile __local atomic_half *object,
89+ half operand, memory_order order);
90+void __ovld atomic_store_explicit(volatile __local atomic_half *object,
91+ half operand, memory_order order,
92+ memory_scope scope);
93+half __ovld atomic_load(volatile __local atomic_half *object);
94+half __ovld atomic_load_explicit(volatile __local atomic_half *object,
95+ memory_order order);
96+half __ovld atomic_load_explicit(volatile __local atomic_half *object,
97+ memory_order order, memory_scope scope);
98+half __ovld atomic_exchange(volatile __local atomic_half *object, half operand);
99+half __ovld atomic_exchange_explicit(volatile __local atomic_half *object,
100+ half operand, memory_order order);
101+half __ovld atomic_exchange_explicit(volatile __local atomic_half *object,
102+ half operand, memory_order order,
103+ memory_scope scope);
104+#endif // defined(__opencl_c_ext_fp16_local_atomic_load_store)
105+
106+#if defined(__opencl_c_ext_fp16_global_atomic_load_store) && \
107+ defined(__opencl_c_ext_fp16_local_atomic_load_store)
108+void __ovld atomic_store(volatile atomic_half *object, half operand);
109+void __ovld atomic_store_explicit(volatile atomic_half *object, half operand,
110+ memory_order order);
111+void __ovld atomic_store_explicit(volatile atomic_half *object, half operand,
112+ memory_order order, memory_scope scope);
113+half __ovld atomic_load(volatile atomic_half *object);
114+half __ovld atomic_load_explicit(volatile atomic_half *object,
115+ memory_order order);
116+half __ovld atomic_load_explicit(volatile atomic_half *object,
117+ memory_order order, memory_scope scope);
118+half __ovld atomic_exchange(volatile atomic_half *object, half operand);
119+half __ovld atomic_exchange_explicit(volatile atomic_half *object, half operand,
120+ memory_order order);
121+half __ovld atomic_exchange_explicit(volatile atomic_half *object, half operand,
122+ memory_order order, memory_scope scope);
123+#endif // defined(__opencl_c_ext_fp16_global_atomic_load_store) &&
124+ // defined(__opencl_c_ext_fp16_local_atomic_load_store)
125+
126+#if defined(__opencl_c_ext_fp16_global_atomic_min_max)
127+half __ovld atomic_fetch_min(volatile __global atomic_half *object,
128+ half operand);
129+half __ovld atomic_fetch_max(volatile __global atomic_half *object,
130+ half operand);
131+half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *object,
132+ half operand, memory_order order);
133+half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *object,
134+ half operand, memory_order order);
135+half __ovld atomic_fetch_min_explicit(volatile __global atomic_half *object,
136+ half operand, memory_order order,
137+ memory_scope scope);
138+half __ovld atomic_fetch_max_explicit(volatile __global atomic_half *object,
139+ half operand, memory_order order,
140+ memory_scope scope);
141+#endif // defined(__opencl_c_ext_fp16_global_atomic_min_max)
142+
143+#if defined(__opencl_c_ext_fp16_local_atomic_min_max)
144+half __ovld atomic_fetch_min(volatile __local atomic_half *object,
145+ half operand);
146+half __ovld atomic_fetch_max(volatile __local atomic_half *object,
147+ half operand);
148+half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *object,
149+ half operand, memory_order order);
150+half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *object,
151+ half operand, memory_order order);
152+half __ovld atomic_fetch_min_explicit(volatile __local atomic_half *object,
153+ half operand, memory_order order,
154+ memory_scope scope);
155+half __ovld atomic_fetch_max_explicit(volatile __local atomic_half *object,
156+ half operand, memory_order order,
157+ memory_scope scope);
158+#endif // defined(__opencl_c_ext_fp16_local_atomic_min_max)
159+
160+#if defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
161+ defined(__opencl_c_ext_fp16_local_atomic_min_max)
162+half __ovld atomic_fetch_min(volatile atomic_half *object, half operand);
163+half __ovld atomic_fetch_max(volatile atomic_half *object, half operand);
164+half __ovld atomic_fetch_min_explicit(volatile atomic_half *object,
165+ half operand, memory_order order);
166+half __ovld atomic_fetch_max_explicit(volatile atomic_half *object,
167+ half operand, memory_order order);
168+half __ovld atomic_fetch_min_explicit(volatile atomic_half *object,
169+ half operand, memory_order order,
170+ memory_scope scope);
171+half __ovld atomic_fetch_max_explicit(volatile atomic_half *object,
172+ half operand, memory_order order,
173+ memory_scope scope);
174+#endif // defined(__opencl_c_ext_fp16_global_atomic_min_max) && \
175+ defined(__opencl_c_ext_fp16_local_atomic_min_max)
176+
177+#if defined(__opencl_c_ext_fp32_global_atomic_min_max)
178+float __ovld atomic_fetch_min(volatile __global atomic_float *object,
179+ float operand);
180+float __ovld atomic_fetch_max(volatile __global atomic_float *object,
181+ float operand);
182+float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *object,
183+ float operand, memory_order order);
184+float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *object,
185+ float operand, memory_order order);
186+float __ovld atomic_fetch_min_explicit(volatile __global atomic_float *object,
187+ float operand, memory_order order,
188+ memory_scope scope);
189+float __ovld atomic_fetch_max_explicit(volatile __global atomic_float *object,
190+ float operand, memory_order order,
191+ memory_scope scope);
192+#endif // defined(__opencl_c_ext_fp32_global_atomic_min_max)
193+
194+#if defined(__opencl_c_ext_fp32_local_atomic_min_max)
195+float __ovld atomic_fetch_min(volatile __local atomic_float *object,
196+ float operand);
197+float __ovld atomic_fetch_max(volatile __local atomic_float *object,
198+ float operand);
199+float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *object,
200+ float operand, memory_order order);
201+float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *object,
202+ float operand, memory_order order);
203+float __ovld atomic_fetch_min_explicit(volatile __local atomic_float *object,
204+ float operand, memory_order order,
205+ memory_scope scope);
206+float __ovld atomic_fetch_max_explicit(volatile __local atomic_float *object,
207+ float operand, memory_order order,
208+ memory_scope scope);
209+#endif // defined(__opencl_c_ext_fp32_local_atomic_min_max)
210+
211+#if defined(__opencl_c_ext_fp32_global_atomic_min_max) && \
212+ defined(__opencl_c_ext_fp32_local_atomic_min_max)
213+float __ovld atomic_fetch_min(volatile atomic_float *object, float operand);
214+float __ovld atomic_fetch_max(volatile atomic_float *object, float operand);
215+float __ovld atomic_fetch_min_explicit(volatile atomic_float *object,
216+ float operand, memory_order order);
217+float __ovld atomic_fetch_max_explicit(volatile atomic_float *object,
218+ float operand, memory_order order);
219+float __ovld atomic_fetch_min_explicit(volatile atomic_float *object,
220+ float operand, memory_order order,
221+ memory_scope scope);
222+float __ovld atomic_fetch_max_explicit(volatile atomic_float *object,
223+ float operand, memory_order order,
224+ memory_scope scope);
225+#endif // defined(__opencl_c_ext_fp32_global_atomic_min_max) && \
226+ defined(__opencl_c_ext_fp32_local_atomic_min_max)
227+
228+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
229+#if defined(__opencl_c_ext_fp64_global_atomic_min_max)
230+double __ovld atomic_fetch_min(volatile __global atomic_double *object,
231+ double operand);
232+double __ovld atomic_fetch_max(volatile __global atomic_double *object,
233+ double operand);
234+double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *object,
235+ double operand, memory_order order);
236+double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *object,
237+ double operand, memory_order order);
238+double __ovld atomic_fetch_min_explicit(volatile __global atomic_double *object,
239+ double operand, memory_order order,
240+ memory_scope scope);
241+double __ovld atomic_fetch_max_explicit(volatile __global atomic_double *object,
242+ double operand, memory_order order,
243+ memory_scope scope);
244+#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max)
245+
246+#if defined(__opencl_c_ext_fp64_local_atomic_min_max)
247+double __ovld atomic_fetch_min(volatile __local atomic_double *object,
248+ double operand);
249+double __ovld atomic_fetch_max(volatile __local atomic_double *object,
250+ double operand);
251+double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *object,
252+ double operand, memory_order order);
253+double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *object,
254+ double operand, memory_order order);
255+double __ovld atomic_fetch_min_explicit(volatile __local atomic_double *object,
256+ double operand, memory_order order,
257+ memory_scope scope);
258+double __ovld atomic_fetch_max_explicit(volatile __local atomic_double *object,
259+ double operand, memory_order order,
260+ memory_scope scope);
261+#endif // defined(__opencl_c_ext_fp64_local_atomic_min_max)
262+
263+#if defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
264+ defined(__opencl_c_ext_fp64_local_atomic_min_max)
265+double __ovld atomic_fetch_min(volatile atomic_double *object, double operand);
266+double __ovld atomic_fetch_max(volatile atomic_double *object, double operand);
267+double __ovld atomic_fetch_min_explicit(volatile atomic_double *object,
268+ double operand, memory_order order);
269+double __ovld atomic_fetch_max_explicit(volatile atomic_double *object,
270+ double operand, memory_order order);
271+double __ovld atomic_fetch_min_explicit(volatile atomic_double *object,
272+ double operand, memory_order order,
273+ memory_scope scope);
274+double __ovld atomic_fetch_max_explicit(volatile atomic_double *object,
275+ double operand, memory_order order,
276+ memory_scope scope);
277+#endif // defined(__opencl_c_ext_fp64_global_atomic_min_max) && \
278+ defined(__opencl_c_ext_fp64_local_atomic_min_max)
279+#endif // defined(cl_khr_int64_base_atomics) &&
280+ // defined(cl_khr_int64_extended_atomics)
281+
282+#if defined(__opencl_c_ext_fp16_global_atomic_add)
283+half __ovld atomic_fetch_add(volatile __global atomic_half *object,
284+ half operand);
285+half __ovld atomic_fetch_sub(volatile __global atomic_half *object,
286+ half operand);
287+half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *object,
288+ half operand, memory_order order);
289+half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *object,
290+ half operand, memory_order order);
291+half __ovld atomic_fetch_add_explicit(volatile __global atomic_half *object,
292+ half operand, memory_order order,
293+ memory_scope scope);
294+half __ovld atomic_fetch_sub_explicit(volatile __global atomic_half *object,
295+ half operand, memory_order order,
296+ memory_scope scope);
297+#endif // defined(__opencl_c_ext_fp16_global_atomic_add)
298+
299+#if defined(__opencl_c_ext_fp16_local_atomic_add)
300+half __ovld atomic_fetch_add(volatile __local atomic_half *object,
301+ half operand);
302+half __ovld atomic_fetch_sub(volatile __local atomic_half *object,
303+ half operand);
304+half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *object,
305+ half operand, memory_order order);
306+half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *object,
307+ half operand, memory_order order);
308+half __ovld atomic_fetch_add_explicit(volatile __local atomic_half *object,
309+ half operand, memory_order order,
310+ memory_scope scope);
311+half __ovld atomic_fetch_sub_explicit(volatile __local atomic_half *object,
312+ half operand, memory_order order,
313+ memory_scope scope);
314+#endif // defined(__opencl_c_ext_fp16_local_atomic_add)
315+
316+#if defined(__opencl_c_ext_fp16_global_atomic_add) && \
317+ defined(__opencl_c_ext_fp16_local_atomic_add)
318+half __ovld atomic_fetch_add(volatile atomic_half *object, half operand);
319+half __ovld atomic_fetch_sub(volatile atomic_half *object, half operand);
320+half __ovld atomic_fetch_add_explicit(volatile atomic_half *object,
321+ half operand, memory_order order);
322+half __ovld atomic_fetch_sub_explicit(volatile atomic_half *object,
323+ half operand, memory_order order);
324+half __ovld atomic_fetch_add_explicit(volatile atomic_half *object,
325+ half operand, memory_order order,
326+ memory_scope scope);
327+half __ovld atomic_fetch_sub_explicit(volatile atomic_half *object,
328+ half operand, memory_order order,
329+ memory_scope scope);
330+#endif // defined(__opencl_c_ext_fp16_global_atomic_add) && \
331+ defined(__opencl_c_ext_fp16_local_atomic_add)
332+
333+#if defined(__opencl_c_ext_fp32_global_atomic_add)
334+float __ovld atomic_fetch_add(volatile __global atomic_float *object,
335+ float operand);
336+float __ovld atomic_fetch_sub(volatile __global atomic_float *object,
337+ float operand);
338+float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *object,
339+ float operand, memory_order order);
340+float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *object,
341+ float operand, memory_order order);
342+float __ovld atomic_fetch_add_explicit(volatile __global atomic_float *object,
343+ float operand, memory_order order,
344+ memory_scope scope);
345+float __ovld atomic_fetch_sub_explicit(volatile __global atomic_float *object,
346+ float operand, memory_order order,
347+ memory_scope scope);
348+#endif // defined(__opencl_c_ext_fp32_global_atomic_add)
349+
350+#if defined(__opencl_c_ext_fp32_local_atomic_add)
351+float __ovld atomic_fetch_add(volatile __local atomic_float *object,
352+ float operand);
353+float __ovld atomic_fetch_sub(volatile __local atomic_float *object,
354+ float operand);
355+float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *object,
356+ float operand, memory_order order);
357+float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *object,
358+ float operand, memory_order order);
359+float __ovld atomic_fetch_add_explicit(volatile __local atomic_float *object,
360+ float operand, memory_order order,
361+ memory_scope scope);
362+float __ovld atomic_fetch_sub_explicit(volatile __local atomic_float *object,
363+ float operand, memory_order order,
364+ memory_scope scope);
365+#endif // defined(__opencl_c_ext_fp32_local_atomic_add)
366+
367+#if defined(__opencl_c_ext_fp32_global_atomic_add) && \
368+ defined(__opencl_c_ext_fp32_local_atomic_add)
369+float __ovld atomic_fetch_add(volatile atomic_float *object, float operand);
370+float __ovld atomic_fetch_sub(volatile atomic_float *object, float operand);
371+float __ovld atomic_fetch_add_explicit(volatile atomic_float *object,
372+ float operand, memory_order order);
373+float __ovld atomic_fetch_sub_explicit(volatile atomic_float *object,
374+ float operand, memory_order order);
375+float __ovld atomic_fetch_add_explicit(volatile atomic_float *object,
376+ float operand, memory_order order,
377+ memory_scope scope);
378+float __ovld atomic_fetch_sub_explicit(volatile atomic_float *object,
379+ float operand, memory_order order,
380+ memory_scope scope);
381+#endif // defined(__opencl_c_ext_fp32_global_atomic_add) && \
382+ defined(__opencl_c_ext_fp32_local_atomic_add)
383+
384+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
385+#if defined(__opencl_c_ext_fp64_global_atomic_add)
386+double __ovld atomic_fetch_add(volatile __global atomic_double *object,
387+ double operand);
388+double __ovld atomic_fetch_sub(volatile __global atomic_double *object,
389+ double operand);
390+double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *object,
391+ double operand, memory_order order);
392+double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *object,
393+ double operand, memory_order order);
394+double __ovld atomic_fetch_add_explicit(volatile __global atomic_double *object,
395+ double operand, memory_order order,
396+ memory_scope scope);
397+double __ovld atomic_fetch_sub_explicit(volatile __global atomic_double *object,
398+ double operand, memory_order order,
399+ memory_scope scope);
400+#endif // defined(__opencl_c_ext_fp64_global_atomic_add)
401+
402+#if defined(__opencl_c_ext_fp64_local_atomic_add)
403+double __ovld atomic_fetch_add(volatile __local atomic_double *object,
404+ double operand);
405+double __ovld atomic_fetch_sub(volatile __local atomic_double *object,
406+ double operand);
407+double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *object,
408+ double operand, memory_order order);
409+double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *object,
410+ double operand, memory_order order);
411+double __ovld atomic_fetch_add_explicit(volatile __local atomic_double *object,
412+ double operand, memory_order order,
413+ memory_scope scope);
414+double __ovld atomic_fetch_sub_explicit(volatile __local atomic_double *object,
415+ double operand, memory_order order,
416+ memory_scope scope);
417+#endif // defined(__opencl_c_ext_fp64_local_atomic_add)
418+
419+#if defined(__opencl_c_ext_fp64_global_atomic_add) && \
420+ defined(__opencl_c_ext_fp64_local_atomic_add)
421+double __ovld atomic_fetch_add(volatile atomic_double *object, double operand);
422+double __ovld atomic_fetch_sub(volatile atomic_double *object, double operand);
423+double __ovld atomic_fetch_add_explicit(volatile atomic_double *object,
424+ double operand, memory_order order);
425+double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object,
426+ double operand, memory_order order);
427+double __ovld atomic_fetch_add_explicit(volatile atomic_double *object,
428+ double operand, memory_order order,
429+ memory_scope scope);
430+double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object,
431+ double operand, memory_order order,
432+ memory_scope scope);
433+#endif // defined(__opencl_c_ext_fp64_global_atomic_add) && \
434+ defined(__opencl_c_ext_fp64_local_atomic_add)
435+#endif // defined(cl_khr_int64_base_atomics) &&
436+ // defined(cl_khr_int64_extended_atomics)
437+
438+#endif // cl_ext_float_atomics
439+
440 // atomic_store()
441
442 void __ovld atomic_store(volatile atomic_int *object, int desired);
443diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
444index 450f9c020f7f..a91291c7af38 100644
445--- a/clang/lib/Sema/Sema.cpp
446+++ b/clang/lib/Sema/Sema.cpp
447@@ -313,6 +313,9 @@ void Sema::Initialize() {
448 addImplicitTypedef("atomic_long", AtomicLongT);
449 auto AtomicULongT = Context.getAtomicType(Context.UnsignedLongTy);
450 addImplicitTypedef("atomic_ulong", AtomicULongT);
451+ auto AtomicHalfT = Context.getAtomicType(Context.HalfTy);
452+ addImplicitTypedef("atomic_half", AtomicHalfT);
453+ setOpenCLExtensionForType(AtomicHalfT, "cl_khr_fp16");
454 addImplicitTypedef("atomic_float",
455 Context.getAtomicType(Context.FloatTy));
456 auto AtomicDoubleT = Context.getAtomicType(Context.DoubleTy);
457diff --git a/clang/test/Headers/opencl-c-header.cl b/clang/test/Headers/opencl-c-header.cl
458index 13a3b62481ec..443f682c711a 100644
459--- a/clang/test/Headers/opencl-c-header.cl
460+++ b/clang/test/Headers/opencl-c-header.cl
461@@ -124,6 +124,48 @@ global atomic_int z = ATOMIC_VAR_INIT(99);
462 #if cl_khr_subgroup_clustered_reduce != 1
463 #error "Incorrectly defined cl_khr_subgroup_clustered_reduce"
464 #endif
465+#if __opencl_c_ext_fp16_global_atomic_load_store != 1
466+#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_load_store"
467+#endif
468+#if __opencl_c_ext_fp16_local_atomic_load_store != 1
469+#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_load_store"
470+#endif
471+#if __opencl_c_ext_fp16_global_atomic_add != 1
472+#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_add"
473+#endif
474+#if __opencl_c_ext_fp32_global_atomic_add != 1
475+#error "Incorrectly defined __opencl_c_ext_fp32_global_atomic_add"
476+#endif
477+#if __opencl_c_ext_fp64_global_atomic_add != 1
478+#error "Incorrectly defined __opencl_c_ext_fp64_global_atomic_add"
479+#endif
480+#if __opencl_c_ext_fp16_local_atomic_add != 1
481+#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_add"
482+#endif
483+#if __opencl_c_ext_fp32_local_atomic_add != 1
484+#error "Incorrectly defined __opencl_c_ext_fp32_local_atomic_add"
485+#endif
486+#if __opencl_c_ext_fp64_local_atomic_add != 1
487+#error "Incorrectly defined __opencl_c_ext_fp64_local_atomic_add"
488+#endif
489+#if __opencl_c_ext_fp16_global_atomic_min_max != 1
490+#error "Incorrectly defined __opencl_c_ext_fp16_global_atomic_min_max"
491+#endif
492+#if __opencl_c_ext_fp32_global_atomic_min_max != 1
493+#error "Incorrectly defined __opencl_c_ext_fp32_global_atomic_min_max"
494+#endif
495+#if __opencl_c_ext_fp64_global_atomic_min_max != 1
496+#error "Incorrectly defined __opencl_c_ext_fp64_global_atomic_min_max"
497+#endif
498+#if __opencl_c_ext_fp16_local_atomic_min_max != 1
499+#error "Incorrectly defined __opencl_c_ext_fp16_local_atomic_min_max"
500+#endif
501+#if __opencl_c_ext_fp32_local_atomic_min_max != 1
502+#error "Incorrectly defined __opencl_c_ext_fp32_local_atomic_min_max"
503+#endif
504+#if __opencl_c_ext_fp64_local_atomic_min_max != 1
505+#error "Incorrectly defined __opencl_c_ext_fp64_local_atomic_min_max"
506+#endif
507
508 #else
509
510@@ -148,6 +190,48 @@ global atomic_int z = ATOMIC_VAR_INIT(99);
511 #ifdef cl_khr_subgroup_clustered_reduce
512 #error "Incorrect cl_khr_subgroup_clustered_reduce define"
513 #endif
514+#ifdef __opencl_c_ext_fp16_global_atomic_load_store
515+#error "Incorrectly __opencl_c_ext_fp16_global_atomic_load_store defined"
516+#endif
517+#ifdef __opencl_c_ext_fp16_local_atomic_load_store
518+#error "Incorrectly __opencl_c_ext_fp16_local_atomic_load_store defined"
519+#endif
520+#ifdef __opencl_c_ext_fp16_global_atomic_add
521+#error "Incorrectly __opencl_c_ext_fp16_global_atomic_add defined"
522+#endif
523+#ifdef __opencl_c_ext_fp32_global_atomic_add
524+#error "Incorrectly __opencl_c_ext_fp32_global_atomic_add defined"
525+#endif
526+#ifdef __opencl_c_ext_fp64_global_atomic_add
527+#error "Incorrectly __opencl_c_ext_fp64_global_atomic_add defined"
528+#endif
529+#ifdef __opencl_c_ext_fp16_local_atomic_add
530+#error "Incorrectly __opencl_c_ext_fp16_local_atomic_add defined"
531+#endif
532+#ifdef __opencl_c_ext_fp32_local_atomic_add
533+#error "Incorrectly __opencl_c_ext_fp32_local_atomic_add defined"
534+#endif
535+#ifdef __opencl_c_ext_fp64_local_atomic_add
536+#error "Incorrectly __opencl_c_ext_fp64_local_atomic_add defined"
537+#endif
538+#ifdef __opencl_c_ext_fp16_global_atomic_min_max
539+#error "Incorrectly __opencl_c_ext_fp16_global_atomic_min_max defined"
540+#endif
541+#ifdef __opencl_c_ext_fp32_global_atomic_min_max
542+#error "Incorrectly __opencl_c_ext_fp32_global_atomic_min_max defined"
543+#endif
544+#ifdef __opencl_c_ext_fp64_global_atomic_min_max
545+#error "Incorrectly __opencl_c_ext_fp64_global_atomic_min_max defined"
546+#endif
547+#ifdef __opencl_c_ext_fp16_local_atomic_min_max
548+#error "Incorrectly __opencl_c_ext_fp16_local_atomic_min_max defined"
549+#endif
550+#ifdef __opencl_c_ext_fp32_local_atomic_min_max
551+#error "Incorrectly __opencl_c_ext_fp32_local_atomic_min_max defined"
552+#endif
553+#ifdef __opencl_c_ext_fp64_local_atomic_min_max
554+#error "Incorrectly __opencl_c_ext_fp64_local_atomic_min_max defined"
555+#endif
556
557 #endif //(defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
558
559--
5602.29.2
561
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0004-ispc-12_0_disable-A-B-A-B-and-BSWAP-in-InstCombine.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0004-ispc-12_0_disable-A-B-A-B-and-BSWAP-in-InstCombine.patch
deleted file mode 100644
index fb15d19c..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0004-ispc-12_0_disable-A-B-A-B-and-BSWAP-in-InstCombine.patch
+++ /dev/null
@@ -1,67 +0,0 @@
1From 0c4ba4947d1630f2e13fc260399f0892b2c9b323 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Fri, 27 Aug 2021 10:55:13 +0800
4Subject: [PATCH 1/2] This patch is needed for ISPC for Gen only
5
61. Transformation of add to or is not safe for VC backend.
72. bswap intrinsics is not supported in VC backend yet.
8
9Upstream-Status: Backport [Taken from ispc, https://github.com/ispc/ispc/blob/v1.16.1/llvm_patches/12_0_disable-A-B-A-B-and-BSWAP-in-InstCombine.patch]
10
11Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
12---
13 llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp | 10 +++++++---
14 .../lib/Transforms/InstCombine/InstCombineAndOrXor.cpp | 9 ++++++---
15 2 files changed, 13 insertions(+), 6 deletions(-)
16
17diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
18index bacb8689892a..f3d0120db256 100644
19--- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
20+++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
21@@ -15,6 +15,7 @@
22 #include "llvm/ADT/APInt.h"
23 #include "llvm/ADT/STLExtras.h"
24 #include "llvm/ADT/SmallVector.h"
25+#include "llvm/ADT/Triple.h"
26 #include "llvm/Analysis/InstructionSimplify.h"
27 #include "llvm/Analysis/ValueTracking.h"
28 #include "llvm/IR/Constant.h"
29@@ -1363,9 +1364,12 @@ Instruction *InstCombinerImpl::visitAdd(BinaryOperator &I) {
30 }
31 }
32
33- // A+B --> A|B iff A and B have no bits set in common.
34- if (haveNoCommonBitsSet(LHS, RHS, DL, &AC, &I, &DT))
35- return BinaryOperator::CreateOr(LHS, RHS);
36+ // Disable this transformation for ISPC SPIR-V
37+ if (!Triple(I.getModule()->getTargetTriple()).isSPIR()) {
38+ // A+B --> A|B iff A and B have no bits set in common.
39+ if (haveNoCommonBitsSet(LHS, RHS, DL, &AC, &I, &DT))
40+ return BinaryOperator::CreateOr(LHS, RHS);
41+ }
42
43 // add (select X 0 (sub n A)) A --> select X A n
44 {
45diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
46index 68c4156af2c4..b145b863ca84 100644
47--- a/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
48+++ b/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
49@@ -2584,9 +2584,12 @@ Instruction *InstCombinerImpl::visitOr(BinaryOperator &I) {
50 if (Instruction *FoldedLogic = foldBinOpIntoSelectOrPhi(I))
51 return FoldedLogic;
52
53- if (Instruction *BSwap = matchBSwapOrBitReverse(I, /*MatchBSwaps*/ true,
54- /*MatchBitReversals*/ false))
55- return BSwap;
56+ // Disable this transformation for ISPC SPIR-V
57+ if (!Triple(I.getModule()->getTargetTriple()).isSPIR()) {
58+ if (Instruction *BSwap = matchBSwapOrBitReverse(I, /*MatchBSwaps*/ true,
59+ /*MatchBitReversals*/ false))
60+ return BSwap;
61+ }
62
63 if (Instruction *Funnel = matchFunnelShift(I, *this))
64 return Funnel;
65--
662.17.1
67
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0005-ispc-12_0_fix_for_2111.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0005-ispc-12_0_fix_for_2111.patch
deleted file mode 100644
index 4951a63d..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0005-ispc-12_0_fix_for_2111.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From 913e07ea5acf2148e3748b45ddfe3fac3b2d051c Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Fri, 27 Aug 2021 10:56:57 +0800
4Subject: [PATCH 2/2] This patch is a fix for #2111
5
6It ensures that shuffle is lowered for this particular case correctly.
7
8Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/9ab99f773fec7da4183495a3fdc655a797d3bea2]
9
10Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
11---
12 llvm/lib/Target/X86/X86ISelLowering.cpp | 7 ++++---
13 1 file changed, 4 insertions(+), 3 deletions(-)
14
15diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
16index 6b816c710f98..3121b0e818ac 100644
17--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
18+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
19@@ -43192,9 +43192,10 @@ static SDValue combineHorizOpWithShuffle(SDNode *N, SelectionDAG &DAG,
20 ShuffleVectorSDNode::commuteMask(ShuffleMask1);
21 }
22 if ((Op00 == Op10) && (Op01 == Op11)) {
23- SmallVector<int, 4> ShuffleMask;
24- ShuffleMask.append(ShuffleMask0.begin(), ShuffleMask0.end());
25- ShuffleMask.append(ShuffleMask1.begin(), ShuffleMask1.end());
26+ const int Map[4] = {0, 2, 1, 3};
27+ SmallVector<int, 4> ShuffleMask(
28+ {Map[ShuffleMask0[0]], Map[ShuffleMask1[0]], Map[ShuffleMask0[1]],
29+ Map[ShuffleMask1[1]]});
30 SDLoc DL(N);
31 MVT ShufVT = VT.isFloatingPoint() ? MVT::v4f64 : MVT::v4i64;
32 SDValue Res = DAG.getNode(Opcode, DL, VT, Op00, Op01);
33--
342.17.1
35
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0006-OpenCL-Add-cl_khr_integer_dot_product.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0006-OpenCL-Add-cl_khr_integer_dot_product.patch
deleted file mode 100644
index 25174047..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0006-OpenCL-Add-cl_khr_integer_dot_product.patch
+++ /dev/null
@@ -1,146 +0,0 @@
1From 54802abece1e4742050795162e3a773f0e143aa3 Mon Sep 17 00:00:00 2001
2From: haonanya <haonan.yang@intel.com>
3Date: Fri, 24 Dec 2021 15:27:46 +0800
4Subject: [PATCH] [OpenCL] Add cl_khr_integer_dot_product
5
6This is backporting of https://reviews.llvm.org/D106434
7Add the builtins defined by Section 42 "Integer dot product" in the OpenCL
8Extension Specification.
9
10See https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_Ext.html#cl_khr_integer_dot_product
11
12Signed-off-by: haonanya <haonan.yang@intel.com>
13
14Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/989bedec7a6ae95a0db865f23677047f78dc9257]
15Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
16---
17 clang/lib/Headers/opencl-c-base.h | 3 +++
18 clang/lib/Headers/opencl-c.h | 24 ++++++++++++++++++++++++
19 clang/lib/Sema/OpenCLBuiltins.td | 25 +++++++++++++++++++++++++
20 clang/test/Headers/opencl-c-header.cl | 18 ++++++++++++++++++
21 4 files changed, 70 insertions(+)
22
23diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
24index d94d64372dbb..b55d9601a452 100644
25--- a/clang/lib/Headers/opencl-c-base.h
26+++ b/clang/lib/Headers/opencl-c-base.h
27@@ -40,6 +40,9 @@
28 #define __opencl_c_ext_fp32_local_atomic_add 1
29 #define __opencl_c_ext_fp32_global_atomic_min_max 1
30 #define __opencl_c_ext_fp32_local_atomic_min_max 1
31+#define cl_khr_integer_dot_product 1
32+#define __opencl_c_integer_dot_product_input_4x8bit 1
33+#define __opencl_c_integer_dot_product_input_4x8bit_packed 1
34 #endif // defined(__SPIR__)
35 #endif // (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
36
37diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
38index 501a04f6e82b..50dcc03955cb 100644
39--- a/clang/lib/Headers/opencl-c.h
40+++ b/clang/lib/Headers/opencl-c.h
41@@ -16362,6 +16362,30 @@ double __ovld sub_group_clustered_reduce_max( double value, uint clustersize );
42
43 #endif // cl_khr_subgroup_clustered_reduce
44
45+#if defined(__opencl_c_integer_dot_product_input_4x8bit)
46+uint __ovld __cnfn dot(uchar4, uchar4);
47+int __ovld __cnfn dot(char4, char4);
48+int __ovld __cnfn dot(uchar4, char4);
49+int __ovld __cnfn dot(char4, uchar4);
50+
51+uint __ovld __cnfn dot_acc_sat(uchar4, uchar4, uint);
52+int __ovld __cnfn dot_acc_sat(char4, char4, int);
53+int __ovld __cnfn dot_acc_sat(uchar4, char4, int);
54+int __ovld __cnfn dot_acc_sat(char4, uchar4, int);
55+#endif // __opencl_c_integer_dot_product_input_4x8bit
56+
57+#if defined(__opencl_c_integer_dot_product_input_4x8bit_packed)
58+uint __ovld __cnfn dot_4x8packed_uu_uint(uint, uint);
59+int __ovld __cnfn dot_4x8packed_ss_int(uint, uint);
60+int __ovld __cnfn dot_4x8packed_us_int(uint, uint);
61+int __ovld __cnfn dot_4x8packed_su_int(uint, uint);
62+
63+uint __ovld __cnfn dot_acc_sat_4x8packed_uu_uint(uint, uint, uint);
64+int __ovld __cnfn dot_acc_sat_4x8packed_ss_int(uint, uint, int);
65+int __ovld __cnfn dot_acc_sat_4x8packed_us_int(uint, uint, int);
66+int __ovld __cnfn dot_acc_sat_4x8packed_su_int(uint, uint, int);
67+#endif // __opencl_c_integer_dot_product_input_4x8bit_packed
68+
69 #if defined(cl_intel_subgroups)
70 // Intel-Specific Sub Group Functions
71 float __ovld __conv intel_sub_group_shuffle( float x, uint c );
72diff --git a/clang/lib/Sema/OpenCLBuiltins.td b/clang/lib/Sema/OpenCLBuiltins.td
73index 745363a6b43f..3c5f8821063d 100644
74--- a/clang/lib/Sema/OpenCLBuiltins.td
75+++ b/clang/lib/Sema/OpenCLBuiltins.td
76@@ -1482,6 +1482,31 @@ let Extension = FuncExtKhrSubgroups in {
77 }
78 }
79
80+// Section 42.3 - cl_khr_integer_dot_product
81+let Extension = FunctionExtension<"__opencl_c_integer_dot_product_input_4x8bit"> in {
82+ def : Builtin<"dot", [UInt, VectorType<UChar, 4>, VectorType<UChar, 4>], Attr.Const>;
83+ def : Builtin<"dot", [Int, VectorType<Char, 4>, VectorType<Char, 4>], Attr.Const>;
84+ def : Builtin<"dot", [Int, VectorType<UChar, 4>, VectorType<Char, 4>], Attr.Const>;
85+ def : Builtin<"dot", [Int, VectorType<Char, 4>, VectorType<UChar, 4>], Attr.Const>;
86+
87+ def : Builtin<"dot_acc_sat", [UInt, VectorType<UChar, 4>, VectorType<UChar, 4>, UInt], Attr.Const>;
88+ def : Builtin<"dot_acc_sat", [Int, VectorType<Char, 4>, VectorType<Char, 4>, Int], Attr.Const>;
89+ def : Builtin<"dot_acc_sat", [Int, VectorType<UChar, 4>, VectorType<Char, 4>, Int], Attr.Const>;
90+ def : Builtin<"dot_acc_sat", [Int, VectorType<Char, 4>, VectorType<UChar, 4>, Int], Attr.Const>;
91+}
92+
93+let Extension = FunctionExtension<"__opencl_c_integer_dot_product_input_4x8bit_packed"> in {
94+ def : Builtin<"dot_4x8packed_uu_uint", [UInt, UInt, UInt], Attr.Const>;
95+ def : Builtin<"dot_4x8packed_ss_int", [Int, UInt, UInt], Attr.Const>;
96+ def : Builtin<"dot_4x8packed_us_int", [Int, UInt, UInt], Attr.Const>;
97+ def : Builtin<"dot_4x8packed_su_int", [Int, UInt, UInt], Attr.Const>;
98+
99+ def : Builtin<"dot_acc_sat_4x8packed_uu_uint", [UInt, UInt, UInt, UInt], Attr.Const>;
100+ def : Builtin<"dot_acc_sat_4x8packed_ss_int", [Int, UInt, UInt, Int], Attr.Const>;
101+ def : Builtin<"dot_acc_sat_4x8packed_us_int", [Int, UInt, UInt, Int], Attr.Const>;
102+ def : Builtin<"dot_acc_sat_4x8packed_su_int", [Int, UInt, UInt, Int], Attr.Const>;
103+}
104+
105 //--------------------------------------------------------------------
106 // Arm extensions.
107 let Extension = ArmIntegerDotProductInt8 in {
108diff --git a/clang/test/Headers/opencl-c-header.cl b/clang/test/Headers/opencl-c-header.cl
109index 443f682c711a..184eefd9f9c3 100644
110--- a/clang/test/Headers/opencl-c-header.cl
111+++ b/clang/test/Headers/opencl-c-header.cl
112@@ -166,6 +166,15 @@ global atomic_int z = ATOMIC_VAR_INIT(99);
113 #if __opencl_c_ext_fp64_local_atomic_min_max != 1
114 #error "Incorrectly defined __opencl_c_ext_fp64_local_atomic_min_max"
115 #endif
116+#if cl_khr_integer_dot_product != 1
117+#error "Incorrectly defined cl_khr_integer_dot_product"
118+#endif
119+#if __opencl_c_integer_dot_product_input_4x8bit != 1
120+#error "Incorrectly defined __opencl_c_integer_dot_product_input_4x8bit"
121+#endif
122+#if __opencl_c_integer_dot_product_input_4x8bit_packed != 1
123+#error "Incorrectly defined __opencl_c_integer_dot_product_input_4x8bit_packed"
124+#endif
125
126 #else
127
128@@ -232,6 +241,15 @@ global atomic_int z = ATOMIC_VAR_INIT(99);
129 #ifdef __opencl_c_ext_fp64_local_atomic_min_max
130 #error "Incorrectly __opencl_c_ext_fp64_local_atomic_min_max defined"
131 #endif
132+#ifdef cl_khr_integer_dot_product
133+#error "Incorrect cl_khr_integer_dot_product define"
134+#endif
135+#ifdef __opencl_c_integer_dot_product_input_4x8bit
136+#error "Incorrect __opencl_c_integer_dot_product_input_4x8bit define"
137+#endif
138+#ifdef __opencl_c_integer_dot_product_input_4x8bit_packed
139+#error "Incorrect __opencl_c_integer_dot_product_input_4x8bit_packed define"
140+#endif
141
142 #endif //(defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
143
144--
1452.17.1
146
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0007-OpenCL-3.0-support.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0007-OpenCL-3.0-support.patch
deleted file mode 100644
index 567db40d..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/llvm12-0007-OpenCL-3.0-support.patch
+++ /dev/null
@@ -1,4628 +0,0 @@
1From cc23dafd55bfe102e490c719f8b088e6b2a52561 Mon Sep 17 00:00:00 2001
2From: Haonan Yang <haonan.yang@intel.com>
3Date: Fri, 15 Apr 2022 15:52:37 +0800
4Subject: [PATCH] OpenCL 3.0 support
5
6Signed-off-by: Haonan Yang <haonan.yang@intel.com>
7
8Upstream-Status: Submitted
9Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
10---
11 clang/docs/OpenCLSupport.rst | 19 +-
12 .../clang/Basic/DiagnosticCommonKinds.td | 10 +
13 clang/include/clang/Basic/DiagnosticGroups.td | 2 +
14 .../clang/Basic/DiagnosticParseKinds.td | 5 +-
15 .../clang/Basic/DiagnosticSemaKinds.td | 13 +-
16 clang/include/clang/Basic/LangOptions.def | 2 +
17 .../include/clang/Basic/OpenCLExtensions.def | 82 +--
18 clang/include/clang/Basic/OpenCLOptions.h | 71 ++-
19 clang/include/clang/Basic/TargetInfo.h | 18 +-
20 clang/include/clang/Sema/Overload.h | 3 -
21 clang/include/clang/Sema/Sema.h | 82 ---
22 clang/include/clang/Serialization/ASTWriter.h | 2 -
23 clang/lib/Basic/OpenCLOptions.cpp | 103 +++-
24 clang/lib/Basic/TargetInfo.cpp | 26 +
25 clang/lib/Basic/Targets.cpp | 43 +-
26 clang/lib/Basic/Targets/AMDGPU.h | 6 +-
27 clang/lib/Basic/Targets/NVPTX.h | 1 +
28 clang/lib/Basic/Targets/X86.cpp | 10 +-
29 clang/lib/Frontend/CompilerInstance.cpp | 5 +
30 clang/lib/Frontend/CompilerInvocation.cpp | 3 +
31 clang/lib/Frontend/InitPreprocessor.cpp | 25 +-
32 clang/lib/Headers/opencl-c-base.h | 15 +
33 clang/lib/Headers/opencl-c.h | 493 ++++++++++--------
34 clang/lib/Parse/ParseDecl.cpp | 16 +-
35 clang/lib/Parse/ParsePragma.cpp | 17 +-
36 clang/lib/Parse/Parser.cpp | 2 -
37 clang/lib/Sema/DeclSpec.cpp | 3 +-
38 clang/lib/Sema/Sema.cpp | 185 ++-----
39 clang/lib/Sema/SemaCast.cpp | 4 +-
40 clang/lib/Sema/SemaChecking.cpp | 3 +-
41 clang/lib/Sema/SemaDecl.cpp | 36 +-
42 clang/lib/Sema/SemaDeclAttr.cpp | 17 +-
43 clang/lib/Sema/SemaExpr.cpp | 26 +-
44 clang/lib/Sema/SemaInit.cpp | 8 +-
45 clang/lib/Sema/SemaLookup.cpp | 22 +-
46 clang/lib/Sema/SemaOverload.cpp | 17 -
47 clang/lib/Sema/SemaType.cpp | 56 +-
48 clang/lib/Serialization/ASTReader.cpp | 27 +-
49 clang/lib/Serialization/ASTWriter.cpp | 71 +--
50 .../CodeGenOpenCL/addr-space-struct-arg.cl | 6 +-
51 .../address-spaces-conversions.cl | 2 +
52 .../CodeGenOpenCL/address-spaces-mangling.cl | 6 +-
53 clang/test/CodeGenOpenCL/address-spaces.cl | 4 +
54 .../CodeGenOpenCL/amdgpu-sizeof-alignof.cl | 21 +-
55 .../CodeGenOpenCL/arm-integer-dot-product.cl | 11 +-
56 clang/test/CodeGenOpenCL/extension-begin.cl | 25 -
57 clang/test/CodeGenOpenCL/overload.cl | 1 +
58 clang/test/CodeGenOpenCL/printf.cl | 6 +-
59 clang/test/Headers/opencl-c-header.cl | 84 +++
60 clang/test/Misc/nvptx.unsupported_core.cl | 7 +
61 clang/test/Misc/warning-flags.c | 2 +-
62 clang/test/Parser/opencl-atomics-cl20.cl | 104 ++--
63 clang/test/SemaOpenCL/access-qualifier.cl | 40 +-
64 .../address-spaces-conversions-cl2.0.cl | 3 +
65 clang/test/SemaOpenCL/address-spaces.cl | 1 +
66 .../SemaOpenCL/arm-integer-dot-product.cl | 42 +-
67 .../SemaOpenCL/cl20-device-side-enqueue.cl | 4 +-
68 clang/test/SemaOpenCL/extension-begin.cl | 28 +-
69 clang/test/SemaOpenCL/extension-begin.h | 9 +-
70 clang/test/SemaOpenCL/extension-version.cl | 62 ++-
71 clang/test/SemaOpenCL/extensions.cl | 71 ++-
72 .../SemaOpenCL/fdeclare-opencl-builtins.cl | 27 +-
73 clang/test/SemaOpenCL/features.cl | 48 ++
74 .../intel-subgroup-avc-ext-types.cl | 69 ++-
75 clang/test/SemaOpenCL/storageclass.cl | 234 ++++++++-
76 clang/test/SemaOpenCL/unsupported-image.cl | 69 +++
77 66 files changed, 1502 insertions(+), 1033 deletions(-)
78 delete mode 100644 clang/test/CodeGenOpenCL/extension-begin.cl
79 create mode 100644 clang/test/Misc/nvptx.unsupported_core.cl
80 create mode 100644 clang/test/SemaOpenCL/features.cl
81 create mode 100644 clang/test/SemaOpenCL/unsupported-image.cl
82
83diff --git a/clang/docs/OpenCLSupport.rst b/clang/docs/OpenCLSupport.rst
84index 0eaf0f300ee4..cba2539a6d11 100644
85--- a/clang/docs/OpenCLSupport.rst
86+++ b/clang/docs/OpenCLSupport.rst
87@@ -61,7 +61,24 @@ Missing features or with limited support
88
89 .. _opencl_300:
90
91-OpenCL 3.0 Implementation Status
92+OpenCL C 3.0 Usage
93+================================
94+
95+OpenCL C 3.0 language standard makes most OpenCL C 2.0 features optional. Optional
96+functionality in OpenCL C 3.0 is indicated with the presence of feature-test macros
97+(list of feature-test macros is `here <https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_C.html#features>`_).
98+Command-line flag :ref:`-cl-ext <opencl_cl_ext>` can be used to override features supported by a target.
99+
100+For cases when there is an associated extension for a specific feature (fp64 and 3d image writes)
101+user should specify both (extension and feature) in command-line flag:
102+
103+ .. code-block:: console
104+
105+ $ clang -cc1 -cl-std=CL3.0 -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 ...
106+ $ clang -cc1 -cl-std=CL3.0 -cl-ext=-cl_khr_fp64,-__opencl_c_fp64 ...
107+
108+
109+OpenCL C 3.0 Implementation Status
110 ================================
111
112 The following table provides an overview of features in OpenCL C 3.0 and their
113diff --git a/clang/include/clang/Basic/DiagnosticCommonKinds.td b/clang/include/clang/Basic/DiagnosticCommonKinds.td
114index a4f96a97991e..734701ce9d9d 100644
115--- a/clang/include/clang/Basic/DiagnosticCommonKinds.td
116+++ b/clang/include/clang/Basic/DiagnosticCommonKinds.td
117@@ -347,4 +347,14 @@ def note_suggest_disabling_all_checkers : Note<
118 def warn_poison_system_directories : Warning <
119 "include location '%0' is unsafe for cross-compilation">,
120 InGroup<DiagGroup<"poison-system-directories">>, DefaultIgnore;
121+
122+def warn_opencl_unsupported_core_feature : Warning<
123+ "%0 is a core feature in %select{OpenCL C|C++ for OpenCL}1 version %2 but not supported on this target">,
124+ InGroup<OpenCLCoreFeaturesDiagGroup>, DefaultIgnore;
125+
126+def err_opencl_extension_and_feature_differs : Error<
127+ "options %0 and %1 are set to different values">;
128+
129+def err_opencl_feature_requires : Error<
130+ "feature %0 requires support of %1 feature">;
131 }
132diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td
133index 04ba89aa457e..93099dd19a80 100644
134--- a/clang/include/clang/Basic/DiagnosticGroups.td
135+++ b/clang/include/clang/Basic/DiagnosticGroups.td
136@@ -1247,3 +1247,5 @@ in addition with the pragmas or -fmax-tokens flag to get any warnings.
137 def WebAssemblyExceptionSpec : DiagGroup<"wasm-exception-spec">;
138
139 def RTTI : DiagGroup<"rtti">;
140+
141+def OpenCLCoreFeaturesDiagGroup : DiagGroup<"pedantic-core-features">;
142diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td
143index 0ed80a481e78..5887cc81e32a 100644
144--- a/clang/include/clang/Basic/DiagnosticParseKinds.td
145+++ b/clang/include/clang/Basic/DiagnosticParseKinds.td
146@@ -1228,14 +1228,13 @@ def warn_pragma_expected_colon : Warning<
147 "missing ':' after %0 - ignoring">, InGroup<IgnoredPragmas>;
148 def warn_pragma_expected_predicate : Warning<
149 "expected %select{'enable', 'disable', 'begin' or 'end'|'disable'}0 - ignoring">, InGroup<IgnoredPragmas>;
150-def warn_pragma_begin_end_mismatch : Warning<
151- "OpenCL extension end directive mismatches begin directive - ignoring">, InGroup<IgnoredPragmas>;
152 def warn_pragma_unknown_extension : Warning<
153 "unknown OpenCL extension %0 - ignoring">, InGroup<IgnoredPragmas>;
154 def warn_pragma_unsupported_extension : Warning<
155 "unsupported OpenCL extension %0 - ignoring">, InGroup<IgnoredPragmas>;
156 def warn_pragma_extension_is_core : Warning<
157- "OpenCL extension %0 is core feature or supported optional core feature - ignoring">, InGroup<DiagGroup<"pedantic-core-features">>, DefaultIgnore;
158+ "OpenCL extension %0 is core feature or supported optional core feature - ignoring">,
159+ InGroup<OpenCLCoreFeaturesDiagGroup>, DefaultIgnore;
160
161 // OpenCL errors.
162 def err_opencl_taking_function_address_parser : Error<
163diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
164index 67c59f3ca09a..7d45654f5ea2 100644
165--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
166+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
167@@ -118,7 +118,8 @@ def warn_float_underflow : Warning<
168 "magnitude of floating-point constant too small for type %0; minimum is %1">,
169 InGroup<LiteralRange>;
170 def warn_double_const_requires_fp64 : Warning<
171- "double precision constant requires cl_khr_fp64, casting to single precision">;
172+ "double precision constant requires %select{cl_khr_fp64|cl_khr_fp64 and __opencl_c_fp64}0, "
173+ "casting to single precision">;
174 def err_half_const_requires_fp16 : Error<
175 "half precision constant requires cl_khr_fp16">;
176
177@@ -4279,8 +4280,6 @@ def warn_diagnose_if_succeeded : Warning<"%0">, InGroup<UserDefinedWarnings>,
178 ShowInSystemHeader;
179 def note_ovl_candidate_disabled_by_function_cond_attr : Note<
180 "candidate disabled: %0">;
181-def note_ovl_candidate_disabled_by_extension : Note<
182- "candidate unavailable as it requires OpenCL extension '%0' to be enabled">;
183 def err_addrof_function_disabled_by_enable_if_attr : Error<
184 "cannot take address of function %0 because it has one or more "
185 "non-tautological enable_if conditions">;
186@@ -9892,7 +9891,10 @@ def warn_opencl_attr_deprecated_ignored : Warning <
187 def err_opencl_variadic_function : Error<
188 "invalid prototype, variadic arguments are not allowed in OpenCL">;
189 def err_opencl_requires_extension : Error<
190- "use of %select{type|declaration}0 %1 requires %2 extension to be enabled">;
191+ "use of %select{type|declaration}0 %1 requires %2 support">;
192+def ext_opencl_double_without_pragma : Extension<
193+ "Clang permits use of type 'double' regardless pragma if 'cl_khr_fp64' is"
194+ " supported">;
195 def warn_opencl_generic_address_space_arg : Warning<
196 "passing non-generic address space pointer to %0"
197 " may cause dynamic conversion affecting performance">,
198@@ -9912,7 +9914,8 @@ def err_opencl_builtin_pipe_invalid_access_modifier : Error<
199 def err_opencl_invalid_access_qualifier : Error<
200 "access qualifier can only be used for pipe and image type">;
201 def err_opencl_invalid_read_write : Error<
202- "access qualifier %0 can not be used for %1 %select{|prior to OpenCL version 2.0}2">;
203+ "access qualifier %0 can not be used for %1 %select{|prior to OpenCL C version 2.0 or in version 3.0 "
204+ "and without __opencl_c_read_write_images feature}2">;
205 def err_opencl_multiple_access_qualifiers : Error<
206 "multiple access qualifiers">;
207 def note_opencl_typedef_access_qualifier : Note<
208diff --git a/clang/include/clang/Basic/LangOptions.def b/clang/include/clang/Basic/LangOptions.def
209index c01f0cca9c9c..d41ef34ad5df 100644
210--- a/clang/include/clang/Basic/LangOptions.def
211+++ b/clang/include/clang/Basic/LangOptions.def
212@@ -215,6 +215,8 @@ LANGOPT(OpenCL , 1, 0, "OpenCL")
213 LANGOPT(OpenCLVersion , 32, 0, "OpenCL C version")
214 LANGOPT(OpenCLCPlusPlus , 1, 0, "C++ for OpenCL")
215 LANGOPT(OpenCLCPlusPlusVersion , 32, 0, "C++ for OpenCL version")
216+LANGOPT(OpenCLPipe , 1, 0, "OpenCL pipe keyword")
217+LANGOPT(OpenCLGenericAddressSpace, 1, 0, "OpenCL generic keyword")
218 LANGOPT(NativeHalfType , 1, 0, "Native half type support")
219 LANGOPT(NativeHalfArgsAndReturns, 1, 0, "Native half args and returns")
220 LANGOPT(HalfArgsAndReturns, 1, 0, "half args and returns")
221diff --git a/clang/include/clang/Basic/OpenCLExtensions.def b/clang/include/clang/Basic/OpenCLExtensions.def
222index 801916c3ab94..c5352dadc0de 100644
223--- a/clang/include/clang/Basic/OpenCLExtensions.def
224+++ b/clang/include/clang/Basic/OpenCLExtensions.def
225@@ -16,8 +16,12 @@
226 // If extensions are to be enumerated with information about whether
227 // an extension is core or optional core and minimum OpenCL version
228 // when an extension becomes available,
229-// define OPENCL_GENERIC_EXTENSION(ext, avail, core, opt) where
230+// define OPENCL_GENERIC_EXTENSION(ext, pragma, avail, core, opt) where
231 // ext - name of the extension or optional core feature.
232+// pragma - true if extension needs pragmas or false otherwise.
233+// NOTE: extension pragma without any documentation detailing
234+// its behavior explicitly is deprecated. Therefore the default
235+// value is false.
236 // avail - minimum OpenCL version supporting it.
237 // core - OpenCL versions mask when the extension becomes core feature.
238 // 0U indicates not a core feature.
239@@ -50,55 +54,67 @@
240 #endif // OPENCL_GENERIC_EXTENSION
241
242 // Declaration helpers
243-#define OPENCL_EXTENSION(ext, avail) OPENCL_GENERIC_EXTENSION(ext, avail, 0U, 0U)
244-#define OPENCL_COREFEATURE(ext, avail, core) OPENCL_GENERIC_EXTENSION(ext, avail, core, 0U)
245-#define OPENCL_OPTIONALCOREFEATURE(ext, avail, opt) OPENCL_GENERIC_EXTENSION(ext, avail, 0U, opt)
246+#define OPENCL_EXTENSION(ext, pragma, avail) OPENCL_GENERIC_EXTENSION(ext, pragma, avail, 0U, 0U)
247+#define OPENCL_COREFEATURE(ext, pragma, avail, core) OPENCL_GENERIC_EXTENSION(ext, pragma, avail, core, 0U)
248+#define OPENCL_OPTIONALCOREFEATURE(ext, pragma, avail, opt) OPENCL_GENERIC_EXTENSION(ext, pragma, avail, 0U, opt)
249
250 // OpenCL 1.0.
251-OPENCL_COREFEATURE(cl_khr_byte_addressable_store, 100, OCL_C_11P)
252-OPENCL_COREFEATURE(cl_khr_global_int32_base_atomics, 100, OCL_C_11P)
253-OPENCL_COREFEATURE(cl_khr_global_int32_extended_atomics, 100, OCL_C_11P)
254-OPENCL_COREFEATURE(cl_khr_local_int32_base_atomics, 100, OCL_C_11P)
255-OPENCL_COREFEATURE(cl_khr_local_int32_extended_atomics, 100, OCL_C_11P)
256-OPENCL_OPTIONALCOREFEATURE(cl_khr_fp64, 100, OCL_C_12P)
257-OPENCL_EXTENSION(cl_khr_fp16, 100)
258-OPENCL_EXTENSION(cl_khr_int64_base_atomics, 100)
259-OPENCL_EXTENSION(cl_khr_int64_extended_atomics, 100)
260-OPENCL_GENERIC_EXTENSION(cl_khr_3d_image_writes, 100, OCL_C_20, OCL_C_30)
261+OPENCL_COREFEATURE(cl_khr_byte_addressable_store, true, 100, OCL_C_11P)
262+OPENCL_COREFEATURE(cl_khr_global_int32_base_atomics, true, 100, OCL_C_11P)
263+OPENCL_COREFEATURE(cl_khr_global_int32_extended_atomics, true, 100, OCL_C_11P)
264+OPENCL_COREFEATURE(cl_khr_local_int32_base_atomics, true, 100, OCL_C_11P)
265+OPENCL_COREFEATURE(cl_khr_local_int32_extended_atomics, true, 100, OCL_C_11P)
266+OPENCL_OPTIONALCOREFEATURE(cl_khr_fp64, true, 100, OCL_C_12P)
267+OPENCL_EXTENSION(cl_khr_fp16, true, 100)
268+OPENCL_EXTENSION(cl_khr_int64_base_atomics, true, 100)
269+OPENCL_EXTENSION(cl_khr_int64_extended_atomics, true, 100)
270+OPENCL_COREFEATURE(cl_khr_3d_image_writes, true, 100, OCL_C_20)
271
272 // EMBEDDED_PROFILE
273-OPENCL_EXTENSION(cles_khr_int64, 110)
274+OPENCL_EXTENSION(cles_khr_int64, true, 110)
275
276 // OpenCL 1.2.
277-OPENCL_EXTENSION(cl_khr_depth_images, 120)
278-OPENCL_EXTENSION(cl_khr_gl_msaa_sharing, 120)
279+OPENCL_EXTENSION(cl_khr_depth_images, true, 120)
280+OPENCL_EXTENSION(cl_khr_gl_msaa_sharing,true, 120)
281
282 // OpenCL 2.0.
283-OPENCL_EXTENSION(cl_khr_mipmap_image, 200)
284-OPENCL_EXTENSION(cl_khr_mipmap_image_writes, 200)
285-OPENCL_EXTENSION(cl_khr_srgb_image_writes, 200)
286-OPENCL_EXTENSION(cl_khr_subgroups, 200)
287+OPENCL_EXTENSION(cl_khr_mipmap_image, true, 200)
288+OPENCL_EXTENSION(cl_khr_mipmap_image_writes, true, 200)
289+OPENCL_EXTENSION(cl_khr_srgb_image_writes, true, 200)
290+OPENCL_EXTENSION(cl_khr_subgroups, true, 200)
291
292 // Clang Extensions.
293-OPENCL_EXTENSION(cl_clang_storage_class_specifiers, 100)
294-OPENCL_EXTENSION(__cl_clang_function_pointers, 100)
295-OPENCL_EXTENSION(__cl_clang_variadic_functions, 100)
296+OPENCL_EXTENSION(cl_clang_storage_class_specifiers, true, 100)
297+OPENCL_EXTENSION(__cl_clang_function_pointers, true, 100)
298+OPENCL_EXTENSION(__cl_clang_variadic_functions, true, 100)
299
300 // AMD OpenCL extensions
301-OPENCL_EXTENSION(cl_amd_media_ops, 100)
302-OPENCL_EXTENSION(cl_amd_media_ops2, 100)
303+OPENCL_EXTENSION(cl_amd_media_ops, true, 100)
304+OPENCL_EXTENSION(cl_amd_media_ops2, true, 100)
305
306 // ARM OpenCL extensions
307-OPENCL_EXTENSION(cl_arm_integer_dot_product_int8, 120)
308-OPENCL_EXTENSION(cl_arm_integer_dot_product_accumulate_int8, 120)
309-OPENCL_EXTENSION(cl_arm_integer_dot_product_accumulate_int16, 120)
310-OPENCL_EXTENSION(cl_arm_integer_dot_product_accumulate_saturate_int8, 120)
311+OPENCL_EXTENSION(cl_arm_integer_dot_product_int8, true, 120)
312+OPENCL_EXTENSION(cl_arm_integer_dot_product_accumulate_int8, true, 120)
313+OPENCL_EXTENSION(cl_arm_integer_dot_product_accumulate_int16, true, 120)
314+OPENCL_EXTENSION(cl_arm_integer_dot_product_accumulate_saturate_int8, true, 120)
315
316 // Intel OpenCL extensions
317-OPENCL_EXTENSION(cl_intel_subgroups, 120)
318-OPENCL_EXTENSION(cl_intel_subgroups_short, 120)
319-OPENCL_EXTENSION(cl_intel_device_side_avc_motion_estimation, 120)
320+OPENCL_EXTENSION(cl_intel_subgroups, true, 120)
321+OPENCL_EXTENSION(cl_intel_subgroups_short, true, 120)
322+OPENCL_EXTENSION(cl_intel_device_side_avc_motion_estimation, true, 120)
323
324+// OpenCL C 3.0 features (6.2.1. Features)
325+OPENCL_OPTIONALCOREFEATURE(__opencl_c_pipes, false, 300, OCL_C_30)
326+OPENCL_OPTIONALCOREFEATURE(__opencl_c_generic_address_space, false, 300, OCL_C_30)
327+OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_order_acq_rel, false, 300, OCL_C_30)
328+OPENCL_OPTIONALCOREFEATURE(__opencl_c_atomic_order_seq_cst, false, 300, OCL_C_30)
329+OPENCL_OPTIONALCOREFEATURE(__opencl_c_subgroups, false, 300, OCL_C_30)
330+OPENCL_OPTIONALCOREFEATURE(__opencl_c_3d_image_writes, false, 300, OCL_C_30)
331+OPENCL_OPTIONALCOREFEATURE(__opencl_c_device_enqueue, false, 300, OCL_C_30)
332+OPENCL_OPTIONALCOREFEATURE(__opencl_c_read_write_images, false, 300, OCL_C_30)
333+OPENCL_OPTIONALCOREFEATURE(__opencl_c_program_scope_global_variables, false, 300, OCL_C_30)
334+OPENCL_OPTIONALCOREFEATURE(__opencl_c_fp64, false, 300, OCL_C_30)
335+OPENCL_OPTIONALCOREFEATURE(__opencl_c_images, false, 300, OCL_C_30)
336
337 #undef OPENCL_OPTIONALCOREFEATURE
338 #undef OPENCL_COREFEATURE
339diff --git a/clang/include/clang/Basic/OpenCLOptions.h b/clang/include/clang/Basic/OpenCLOptions.h
340index fe27ef19d4d5..4779ad4d6507 100644
341--- a/clang/include/clang/Basic/OpenCLOptions.h
342+++ b/clang/include/clang/Basic/OpenCLOptions.h
343@@ -19,6 +19,9 @@
344
345 namespace clang {
346
347+class DiagnosticsEngine;
348+class TargetInfo;
349+
350 namespace {
351 // This enum maps OpenCL version(s) into value. These values are used as
352 // a mask to indicate in which OpenCL version(s) extension is a core or
353@@ -64,15 +67,33 @@ static inline bool isOpenCLVersionIsContainedInMask(const LangOptions &LO,
354 /// OpenCL supported extensions and optional core features
355 class OpenCLOptions {
356 public:
357+ // OpenCL C v1.2 s6.5 - All program scope variables must be declared in the
358+ // __constant address space.
359+ // OpenCL C v2.0 s6.5.1 - Variables defined at program scope and static
360+ // variables inside a function can also be declared in the global
361+ // address space.
362+ // OpenCL C v3.0 s6.7.1 - Variables at program scope or static or extern
363+ // variables inside functions can be declared in global address space if
364+ // the __opencl_c_program_scope_global_variables feature is supported
365+ // C++ for OpenCL inherits rule from OpenCL C v2.0.
366+ bool areProgramScopeVariablesSupported(const LangOptions &Opts) const {
367+ return Opts.OpenCLCPlusPlus || Opts.OpenCLVersion == 200 ||
368+ (Opts.OpenCLVersion == 300 &&
369+ isSupported("__opencl_c_program_scope_global_variables", Opts));
370+ }
371+
372 struct OpenCLOptionInfo {
373+ // Does this option have pragma.
374+ bool WithPragma = false;
375+
376 // Option starts to be available in this OpenCL version
377- unsigned Avail;
378+ unsigned Avail = 100U;
379
380 // Option becomes core feature in this OpenCL versions
381- unsigned Core;
382+ unsigned Core = 0U;
383
384 // Option becomes optional core feature in this OpenCL versions
385- unsigned Opt;
386+ unsigned Opt = 0U;
387
388 // Is this option supported
389 bool Supported = false;
390@@ -80,8 +101,10 @@ public:
391 // Is this option enabled
392 bool Enabled = false;
393
394- OpenCLOptionInfo(unsigned A = 100, unsigned C = 0U, unsigned O = 0U)
395- : Avail(A), Core(C), Opt(O) {}
396+ OpenCLOptionInfo() = default;
397+ OpenCLOptionInfo(bool Pragma, unsigned AvailV, unsigned CoreV,
398+ unsigned OptV)
399+ : WithPragma(Pragma), Avail(AvailV), Core(CoreV), Opt(OptV) {}
400
401 bool isCore() const { return Core != 0U; }
402
403@@ -107,7 +130,12 @@ public:
404
405 bool isKnown(llvm::StringRef Ext) const;
406
407- bool isEnabled(llvm::StringRef Ext) const;
408+ // For core or optional core feature check that it is supported
409+ // by a target, for any other option (extension) check that it is
410+ // enabled via pragma
411+ bool isAvailableOption(llvm::StringRef Ext, const LangOptions &LO) const;
412+
413+ bool isWithPragma(llvm::StringRef Ext) const;
414
415 // Is supported as either an extension or an (optional) core feature for
416 // OpenCL version \p LO.
417@@ -131,6 +159,11 @@ public:
418 // For supported core or optional core feature, return false.
419 bool isSupportedExtension(llvm::StringRef Ext, const LangOptions &LO) const;
420
421+ // FIXME: Whether extension should accept pragma should not
422+ // be reset dynamically. But it currently required when
423+ // registering new extensions via pragmas.
424+ void acceptsPragma(llvm::StringRef Ext, bool V = true);
425+
426 void enable(llvm::StringRef Ext, bool V = true);
427
428 /// Enable or disable support for OpenCL extensions
429@@ -148,15 +181,35 @@ public:
430 // Disable all extensions
431 void disableAll();
432
433- // Enable supported core and optional core features
434- void enableSupportedCore(const LangOptions &LO);
435-
436 friend class ASTWriter;
437 friend class ASTReader;
438
439 using OpenCLOptionInfoMap = llvm::StringMap<OpenCLOptionInfo>;
440
441+ template <typename... Args>
442+ static bool isOpenCLOptionCoreIn(const LangOptions &LO, Args &&... args) {
443+ return OpenCLOptionInfo(std::forward<Args>(args)...).isCoreIn(LO);
444+ }
445+
446+ template <typename... Args>
447+ static bool isOpenCLOptionAvailableIn(const LangOptions &LO,
448+ Args &&... args) {
449+ return OpenCLOptionInfo(std::forward<Args>(args)...).isAvailableIn(LO);
450+ }
451+
452+ // Diagnose feature dependencies for OpenCL C 3.0. Return false if target
453+ // doesn't follow these requirements.
454+ static bool diagnoseUnsupportedFeatureDependencies(const TargetInfo &TI,
455+ DiagnosticsEngine &Diags);
456+
457+ // Diagnose that features and equivalent extension are set to same values.
458+ // Return false if target doesn't follow these requirements.
459+ static bool diagnoseFeatureExtensionDifferences(const TargetInfo &TI,
460+ DiagnosticsEngine &Diags);
461+
462 private:
463+ // Option is enabled via pragma
464+ bool isEnabled(llvm::StringRef Ext) const;
465 OpenCLOptionInfoMap OptMap;
466 };
467
468diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h
469index b782172d93a3..ec51758a35d4 100644
470--- a/clang/include/clang/Basic/TargetInfo.h
471+++ b/clang/include/clang/Basic/TargetInfo.h
472@@ -1192,6 +1192,12 @@ public:
473 return false;
474 }
475
476+ /// Check if target has a given feature enabled
477+ virtual bool hasFeatureEnabled(const llvm::StringMap<bool> &Features,
478+ StringRef Name) const {
479+ return Features.lookup(Name);
480+ }
481+
482 /// Enable or disable a specific target feature;
483 /// the feature name must be valid.
484 virtual void setFeatureEnabled(llvm::StringMap<bool> &Features,
485@@ -1439,7 +1445,8 @@ public:
486 virtual void setSupportedOpenCLOpts() {}
487
488 virtual void supportAllOpenCLOpts(bool V = true) {
489-#define OPENCLEXTNAME(Ext) getTargetOpts().OpenCLFeaturesMap[#Ext] = V;
490+#define OPENCLEXTNAME(Ext) \
491+ setFeatureEnabled(getTargetOpts().OpenCLFeaturesMap, #Ext, V);
492 #include "clang/Basic/OpenCLExtensions.def"
493 }
494
495@@ -1459,10 +1466,6 @@ public:
496 }
497 }
498
499- /// Define OpenCL macros based on target settings and language version
500- void getOpenCLFeatureDefines(const LangOptions &Opts,
501- MacroBuilder &Builder) const;
502-
503 /// Get supported OpenCL extensions and optional core features.
504 llvm::StringMap<bool> &getSupportedOpenCLOpts() {
505 return getTargetOpts().OpenCLFeaturesMap;
506@@ -1502,6 +1505,11 @@ public:
507 return true;
508 }
509
510+ /// Check that OpenCL target has valid options setting based on OpenCL
511+ /// version.
512+ virtual bool validateOpenCLTarget(const LangOptions &Opts,
513+ DiagnosticsEngine &Diags) const;
514+
515 virtual void setAuxTarget(const TargetInfo *Aux) {}
516
517 /// Whether target allows debuginfo types for decl only variables.
518diff --git a/clang/include/clang/Sema/Overload.h b/clang/include/clang/Sema/Overload.h
519index 5be6a618711c..699c3e808872 100644
520--- a/clang/include/clang/Sema/Overload.h
521+++ b/clang/include/clang/Sema/Overload.h
522@@ -760,9 +760,6 @@ class Sema;
523 /// This candidate was not viable because its address could not be taken.
524 ovl_fail_addr_not_available,
525
526- /// This candidate was not viable because its OpenCL extension is disabled.
527- ovl_fail_ext_disabled,
528-
529 /// This inherited constructor is not viable because it would slice the
530 /// argument.
531 ovl_fail_inhctor_slice,
532diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
533index 2530a2776373..7e7348d6de2a 100644
534--- a/clang/include/clang/Sema/Sema.h
535+++ b/clang/include/clang/Sema/Sema.h
536@@ -10106,73 +10106,6 @@ public:
537 /// potentially-throwing.
538 bool checkFinalSuspendNoThrow(const Stmt *FinalSuspend);
539
540- //===--------------------------------------------------------------------===//
541- // OpenCL extensions.
542- //
543-private:
544- std::string CurrOpenCLExtension;
545- /// Extensions required by an OpenCL type.
546- llvm::DenseMap<const Type*, std::set<std::string>> OpenCLTypeExtMap;
547- /// Extensions required by an OpenCL declaration.
548- llvm::DenseMap<const Decl*, std::set<std::string>> OpenCLDeclExtMap;
549-public:
550- llvm::StringRef getCurrentOpenCLExtension() const {
551- return CurrOpenCLExtension;
552- }
553-
554- /// Check if a function declaration \p FD associates with any
555- /// extensions present in OpenCLDeclExtMap and if so return the
556- /// extension(s) name(s).
557- std::string getOpenCLExtensionsFromDeclExtMap(FunctionDecl *FD);
558-
559- /// Check if a function type \p FT associates with any
560- /// extensions present in OpenCLTypeExtMap and if so return the
561- /// extension(s) name(s).
562- std::string getOpenCLExtensionsFromTypeExtMap(FunctionType *FT);
563-
564- /// Find an extension in an appropriate extension map and return its name
565- template<typename T, typename MapT>
566- std::string getOpenCLExtensionsFromExtMap(T* FT, MapT &Map);
567-
568- void setCurrentOpenCLExtension(llvm::StringRef Ext) {
569- CurrOpenCLExtension = std::string(Ext);
570- }
571-
572- /// Set OpenCL extensions for a type which can only be used when these
573- /// OpenCL extensions are enabled. If \p Exts is empty, do nothing.
574- /// \param Exts A space separated list of OpenCL extensions.
575- void setOpenCLExtensionForType(QualType T, llvm::StringRef Exts);
576-
577- /// Set OpenCL extensions for a declaration which can only be
578- /// used when these OpenCL extensions are enabled. If \p Exts is empty, do
579- /// nothing.
580- /// \param Exts A space separated list of OpenCL extensions.
581- void setOpenCLExtensionForDecl(Decl *FD, llvm::StringRef Exts);
582-
583- /// Set current OpenCL extensions for a type which can only be used
584- /// when these OpenCL extensions are enabled. If current OpenCL extension is
585- /// empty, do nothing.
586- void setCurrentOpenCLExtensionForType(QualType T);
587-
588- /// Set current OpenCL extensions for a declaration which
589- /// can only be used when these OpenCL extensions are enabled. If current
590- /// OpenCL extension is empty, do nothing.
591- void setCurrentOpenCLExtensionForDecl(Decl *FD);
592-
593- bool isOpenCLDisabledDecl(Decl *FD);
594-
595- /// Check if type \p T corresponding to declaration specifier \p DS
596- /// is disabled due to required OpenCL extensions being disabled. If so,
597- /// emit diagnostics.
598- /// \return true if type is disabled.
599- bool checkOpenCLDisabledTypeDeclSpec(const DeclSpec &DS, QualType T);
600-
601- /// Check if declaration \p D used by expression \p E
602- /// is disabled due to required OpenCL extensions being disabled. If so,
603- /// emit diagnostics.
604- /// \return true if type is disabled.
605- bool checkOpenCLDisabledDecl(const NamedDecl &D, const Expr &E);
606-
607 //===--------------------------------------------------------------------===//
608 // OpenMP directives and clauses.
609 //
610@@ -10203,21 +10136,6 @@ private:
611 /// Pop OpenMP function region for non-capturing function.
612 void popOpenMPFunctionRegion(const sema::FunctionScopeInfo *OldFSI);
613
614- /// Checks if a type or a declaration is disabled due to the owning extension
615- /// being disabled, and emits diagnostic messages if it is disabled.
616- /// \param D type or declaration to be checked.
617- /// \param DiagLoc source location for the diagnostic message.
618- /// \param DiagInfo information to be emitted for the diagnostic message.
619- /// \param SrcRange source range of the declaration.
620- /// \param Map maps type or declaration to the extensions.
621- /// \param Selector selects diagnostic message: 0 for type and 1 for
622- /// declaration.
623- /// \return true if the type or declaration is disabled.
624- template <typename T, typename DiagLocT, typename DiagInfoT, typename MapT>
625- bool checkOpenCLDisabledTypeOrDecl(T D, DiagLocT DiagLoc, DiagInfoT DiagInfo,
626- MapT &Map, unsigned Selector = 0,
627- SourceRange SrcRange = SourceRange());
628-
629 /// Helper to keep information about the current `omp begin/end declare
630 /// variant` nesting.
631 struct OMPDeclareVariantScope {
632diff --git a/clang/include/clang/Serialization/ASTWriter.h b/clang/include/clang/Serialization/ASTWriter.h
633index 12073a38a77a..176badf7a0d1 100644
634--- a/clang/include/clang/Serialization/ASTWriter.h
635+++ b/clang/include/clang/Serialization/ASTWriter.h
636@@ -510,8 +510,6 @@ private:
637 void WriteDeclContextVisibleUpdate(const DeclContext *DC);
638 void WriteFPPragmaOptions(const FPOptionsOverride &Opts);
639 void WriteOpenCLExtensions(Sema &SemaRef);
640- void WriteOpenCLExtensionTypes(Sema &SemaRef);
641- void WriteOpenCLExtensionDecls(Sema &SemaRef);
642 void WriteCUDAPragmas(Sema &SemaRef);
643 void WriteObjCCategories();
644 void WriteLateParsedTemplates(Sema &SemaRef);
645diff --git a/clang/lib/Basic/OpenCLOptions.cpp b/clang/lib/Basic/OpenCLOptions.cpp
646index 266acc5fe477..d7729ffb09ce 100644
647--- a/clang/lib/Basic/OpenCLOptions.cpp
648+++ b/clang/lib/Basic/OpenCLOptions.cpp
649@@ -7,6 +7,8 @@
650 //===----------------------------------------------------------------------===//
651
652 #include "clang/Basic/OpenCLOptions.h"
653+#include "clang/Basic/Diagnostic.h"
654+#include "clang/Basic/TargetInfo.h"
655
656 namespace clang {
657
658@@ -14,9 +16,26 @@ bool OpenCLOptions::isKnown(llvm::StringRef Ext) const {
659 return OptMap.find(Ext) != OptMap.end();
660 }
661
662+bool OpenCLOptions::isAvailableOption(llvm::StringRef Ext,
663+ const LangOptions &LO) const {
664+ if (!isKnown(Ext))
665+ return false;
666+
667+ auto &OptInfo = OptMap.find(Ext)->getValue();
668+ if (OptInfo.isCoreIn(LO) || OptInfo.isOptionalCoreIn(LO))
669+ return isSupported(Ext, LO);
670+
671+ return isEnabled(Ext);
672+}
673+
674 bool OpenCLOptions::isEnabled(llvm::StringRef Ext) const {
675+ auto I = OptMap.find(Ext);
676+ return I != OptMap.end() && I->getValue().Enabled;
677+}
678+
679+bool OpenCLOptions::isWithPragma(llvm::StringRef Ext) const {
680 auto E = OptMap.find(Ext);
681- return E != OptMap.end() && E->second.Enabled;
682+ return E != OptMap.end() && E->second.WithPragma;
683 }
684
685 bool OpenCLOptions::isSupported(llvm::StringRef Ext,
686@@ -31,22 +50,16 @@ bool OpenCLOptions::isSupported(llvm::StringRef Ext,
687
688 bool OpenCLOptions::isSupportedCore(llvm::StringRef Ext,
689 const LangOptions &LO) const {
690- auto E = OptMap.find(Ext);
691- if (E == OptMap.end()) {
692- return false;
693- }
694- auto I = OptMap.find(Ext)->getValue();
695- return I.Supported && I.isCoreIn(LO);
696+ auto I = OptMap.find(Ext);
697+ return I != OptMap.end() && I->getValue().Supported &&
698+ I->getValue().isCoreIn(LO);
699 }
700
701 bool OpenCLOptions::isSupportedOptionalCore(llvm::StringRef Ext,
702 const LangOptions &LO) const {
703- auto E = OptMap.find(Ext);
704- if (E == OptMap.end()) {
705- return false;
706- }
707- auto I = OptMap.find(Ext)->getValue();
708- return I.Supported && I.isOptionalCoreIn(LO);
709+ auto I = OptMap.find(Ext);
710+ return I != OptMap.end() && I->getValue().Supported &&
711+ I->getValue().isOptionalCoreIn(LO);
712 }
713
714 bool OpenCLOptions::isSupportedCoreOrOptionalCore(llvm::StringRef Ext,
715@@ -56,12 +69,9 @@ bool OpenCLOptions::isSupportedCoreOrOptionalCore(llvm::StringRef Ext,
716
717 bool OpenCLOptions::isSupportedExtension(llvm::StringRef Ext,
718 const LangOptions &LO) const {
719- auto E = OptMap.find(Ext);
720- if (E == OptMap.end()) {
721- return false;
722- }
723- auto I = OptMap.find(Ext)->getValue();
724- return I.Supported && I.isAvailableIn(LO) &&
725+ auto I = OptMap.find(Ext);
726+ return I != OptMap.end() && I->getValue().Supported &&
727+ I->getValue().isAvailableIn(LO) &&
728 !isSupportedCoreOrOptionalCore(Ext, LO);
729 }
730
731@@ -69,6 +79,10 @@ void OpenCLOptions::enable(llvm::StringRef Ext, bool V) {
732 OptMap[Ext].Enabled = V;
733 }
734
735+void OpenCLOptions::acceptsPragma(llvm::StringRef Ext, bool V) {
736+ OptMap[Ext].WithPragma = V;
737+}
738+
739 void OpenCLOptions::support(llvm::StringRef Ext, bool V) {
740 assert(!Ext.empty() && "Extension is empty.");
741 assert(Ext[0] != '+' && Ext[0] != '-');
742@@ -76,11 +90,9 @@ void OpenCLOptions::support(llvm::StringRef Ext, bool V) {
743 }
744
745 OpenCLOptions::OpenCLOptions() {
746-#define OPENCL_GENERIC_EXTENSION(Ext, AvailVer, CoreVer, OptVer) \
747- OptMap[#Ext].Avail = AvailVer; \
748- OptMap[#Ext].Core = CoreVer; \
749- OptMap[#Ext].Opt = OptVer;
750-#include "clang/Basic/OpenCLExtensions.def"
751+#define OPENCL_GENERIC_EXTENSION(Ext, ...) \
752+ OptMap.insert_or_assign(#Ext, OpenCLOptionInfo{__VA_ARGS__});
753+ #include "clang/Basic/OpenCLExtensions.def"
754 }
755
756 void OpenCLOptions::addSupport(const llvm::StringMap<bool> &FeaturesMap,
757@@ -97,10 +109,45 @@ void OpenCLOptions::disableAll() {
758 Opt.getValue().Enabled = false;
759 }
760
761-void OpenCLOptions::enableSupportedCore(const LangOptions &LO) {
762- for (auto &Opt : OptMap)
763- if (isSupportedCoreOrOptionalCore(Opt.getKey(), LO))
764- Opt.getValue().Enabled = true;
765+bool OpenCLOptions::diagnoseUnsupportedFeatureDependencies(
766+ const TargetInfo &TI, DiagnosticsEngine &Diags) {
767+ // Feature pairs. First feature in a pair requires the second one to be
768+ // supported.
769+ static const llvm::StringMap<llvm::StringRef> DependentFeaturesMap = {
770+ {"__opencl_c_read_write_images", "__opencl_c_images"},
771+ {"__opencl_c_3d_image_writes", "__opencl_c_images"}};
772+
773+ auto OpenCLFeaturesMap = TI.getSupportedOpenCLOpts();
774+
775+ bool IsValid = true;
776+ for (auto &FeaturePair : DependentFeaturesMap)
777+ if (TI.hasFeatureEnabled(OpenCLFeaturesMap, FeaturePair.getKey()) &&
778+ !TI.hasFeatureEnabled(OpenCLFeaturesMap, FeaturePair.getValue())) {
779+ IsValid = false;
780+ Diags.Report(diag::err_opencl_feature_requires)
781+ << FeaturePair.getKey() << FeaturePair.getValue();
782+ }
783+ return IsValid;
784+}
785+
786+bool OpenCLOptions::diagnoseFeatureExtensionDifferences(
787+ const TargetInfo &TI, DiagnosticsEngine &Diags) {
788+ // Extensions and equivalent feature pairs.
789+ static const llvm::StringMap<llvm::StringRef> FeatureExtensionMap = {
790+ {"cl_khr_fp64", "__opencl_c_fp64"},
791+ {"cl_khr_3d_image_writes", "__opencl_c_3d_image_writes"}};
792+
793+ auto OpenCLFeaturesMap = TI.getSupportedOpenCLOpts();
794+
795+ bool IsValid = true;
796+ for (auto &ExtAndFeat : FeatureExtensionMap)
797+ if (TI.hasFeatureEnabled(OpenCLFeaturesMap, ExtAndFeat.getKey()) !=
798+ TI.hasFeatureEnabled(OpenCLFeaturesMap, ExtAndFeat.getValue())) {
799+ IsValid = false;
800+ Diags.Report(diag::err_opencl_extension_and_feature_differs)
801+ << ExtAndFeat.getKey() << ExtAndFeat.getValue();
802+ }
803+ return IsValid;
804 }
805
806 } // end namespace clang
807diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp
808index 642ee753d224..61cfd59ccf28 100644
809--- a/clang/lib/Basic/TargetInfo.cpp
810+++ b/clang/lib/Basic/TargetInfo.cpp
811@@ -366,6 +366,19 @@ void TargetInfo::adjust(LangOptions &Opts) {
812 HalfWidth = HalfAlign = 16;
813 FloatWidth = FloatAlign = 32;
814
815+ // OpenCL C v3.0 s6.7.5 - The generic address space requires support for
816+ // OpenCL C 2.0 or OpenCL C 3.0 with the __opencl_c_generic_address_space
817+ // feature
818+ // FIXME: OpenCLGenericAddressSpace is also defined in setLangDefaults()
819+ // for OpenCL C 2.0 but with no access to target capabilities. Target
820+ // should be immutable once created and thus this language option needs
821+ // to be defined only once.
822+ if (Opts.OpenCLVersion >= 300) {
823+ const auto &OpenCLFeaturesMap = getSupportedOpenCLOpts();
824+ Opts.OpenCLGenericAddressSpace = hasFeatureEnabled(
825+ OpenCLFeaturesMap, "__opencl_c_generic_address_space");
826+ }
827+
828 // Embedded 32-bit targets (OpenCL EP) might have double C type
829 // defined as float. Let's not override this as it might lead
830 // to generating illegal code that uses 64bit doubles.
831@@ -388,6 +401,19 @@ void TargetInfo::adjust(LangOptions &Opts) {
832 HalfFormat = &llvm::APFloat::IEEEhalf();
833 FloatFormat = &llvm::APFloat::IEEEsingle();
834 LongDoubleFormat = &llvm::APFloat::IEEEquad();
835+
836+ // OpenCL C v3.0 s6.7.5 - The generic address space requires support for
837+ // OpenCL C 2.0 or OpenCL C 3.0 with the __opencl_c_generic_address_space
838+ // feature
839+ // FIXME: OpenCLGenericAddressSpace is also defined in setLangDefaults()
840+ // for OpenCL C 2.0 but with no access to target capabilities. Target
841+ // should be immutable once created and thus this language option needs
842+ // to be defined only once.
843+ if (Opts.OpenCLVersion >= 300) {
844+ const auto &OpenCLFeaturesMap = getSupportedOpenCLOpts();
845+ Opts.OpenCLGenericAddressSpace = hasFeatureEnabled(
846+ OpenCLFeaturesMap, "__opencl_c_generic_address_space");
847+ }
848 }
849
850 if (Opts.DoubleSize) {
851diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
852index 90a67d03b7b2..c171d2ed7c95 100644
853--- a/clang/lib/Basic/Targets.cpp
854+++ b/clang/lib/Basic/Targets.cpp
855@@ -715,29 +715,28 @@ TargetInfo::CreateTargetInfo(DiagnosticsEngine &Diags,
856
857 return Target.release();
858 }
859-
860-/// getOpenCLFeatureDefines - Define OpenCL macros based on target settings
861-/// and language version
862-void TargetInfo::getOpenCLFeatureDefines(const LangOptions &Opts,
863- MacroBuilder &Builder) const {
864-
865- auto defineOpenCLExtMacro = [&](llvm::StringRef Name, unsigned AvailVer,
866- unsigned CoreVersions,
867- unsigned OptionalVersions) {
868- // Check if extension is supported by target and is available in this
869- // OpenCL version
870- auto It = getTargetOpts().OpenCLFeaturesMap.find(Name);
871- if ((It != getTargetOpts().OpenCLFeaturesMap.end()) && It->getValue() &&
872- OpenCLOptions::OpenCLOptionInfo(AvailVer, CoreVersions,
873- OptionalVersions)
874- .isAvailableIn(Opts))
875- Builder.defineMacro(Name);
876+/// validateOpenCLTarget - Check that OpenCL target has valid
877+/// options setting based on OpenCL version.
878+bool TargetInfo::validateOpenCLTarget(const LangOptions &Opts,
879+ DiagnosticsEngine &Diags) const {
880+ const llvm::StringMap<bool> &OpenCLFeaturesMap = getSupportedOpenCLOpts();
881+
882+ auto diagnoseNotSupportedCore = [&](llvm::StringRef Name, auto... OptArgs) {
883+ if (OpenCLOptions::isOpenCLOptionCoreIn(Opts, OptArgs...) &&
884+ !hasFeatureEnabled(OpenCLFeaturesMap, Name))
885+ Diags.Report(diag::warn_opencl_unsupported_core_feature)
886+ << Name << Opts.OpenCLCPlusPlus
887+ << Opts.getOpenCLVersionTuple().getAsString();
888 };
889-#define OPENCL_GENERIC_EXTENSION(Ext, Avail, Core, Opt) \
890- defineOpenCLExtMacro(#Ext, Avail, Core, Opt);
891+#define OPENCL_GENERIC_EXTENSION(Ext, ...) \
892+ diagnoseNotSupportedCore(#Ext, __VA_ARGS__);
893 #include "clang/Basic/OpenCLExtensions.def"
894
895- // FIXME: OpenCL options which affect language semantics/syntax
896- // should be moved into LangOptions, thus macro definitions of
897- // such options is better to be done in clang::InitializePreprocessor
898+ // Validate that feature macros are set properly for OpenCL C 3.0.
899+ // In other cases assume that target is always valid.
900+ if (Opts.OpenCLCPlusPlus || Opts.OpenCLVersion < 300)
901+ return true;
902+
903+ return OpenCLOptions::diagnoseUnsupportedFeatureDependencies(*this, Diags) &&
904+ OpenCLOptions::diagnoseFeatureExtensionDifferences(*this, Diags);
905 }
906diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
907index 8ee0ca30d305..b11fe212c3a2 100644
908--- a/clang/lib/Basic/Targets/AMDGPU.h
909+++ b/clang/lib/Basic/Targets/AMDGPU.h
910@@ -291,6 +291,7 @@ public:
911 bool IsAMDGCN = isAMDGCN(getTriple());
912
913 Opts["cl_khr_fp64"] = hasFP64();
914+ Opts["__opencl_c_fp64"] = hasFP64();
915
916 if (IsAMDGCN || GPUKind >= llvm::AMDGPU::GK_CEDAR) {
917 Opts["cl_khr_byte_addressable_store"] = true;
918@@ -307,9 +308,12 @@ public:
919 Opts["cl_khr_mipmap_image"] = true;
920 Opts["cl_khr_mipmap_image_writes"] = true;
921 Opts["cl_khr_subgroups"] = true;
922- Opts["cl_khr_3d_image_writes"] = true;
923 Opts["cl_amd_media_ops"] = true;
924 Opts["cl_amd_media_ops2"] = true;
925+
926+ Opts["__opencl_c_images"] = true;
927+ Opts["__opencl_c_3d_image_writes"] = true;
928+ Opts["cl_khr_3d_image_writes"] = true;
929 }
930 }
931
932diff --git a/clang/lib/Basic/Targets/NVPTX.h b/clang/lib/Basic/Targets/NVPTX.h
933index 038dec4a28bd..010e640804bf 100644
934--- a/clang/lib/Basic/Targets/NVPTX.h
935+++ b/clang/lib/Basic/Targets/NVPTX.h
936@@ -132,6 +132,7 @@ public:
937 Opts["__cl_clang_variadic_functions"] = true;
938
939 Opts["cl_khr_fp64"] = true;
940+ Opts["__opencl_c_fp64"] = true;
941 Opts["cl_khr_byte_addressable_store"] = true;
942 Opts["cl_khr_global_int32_base_atomics"] = true;
943 Opts["cl_khr_global_int32_extended_atomics"] = true;
944diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp
945index c5ad1c7d2c2e..701b03c868d1 100644
946--- a/clang/lib/Basic/Targets/X86.cpp
947+++ b/clang/lib/Basic/Targets/X86.cpp
948@@ -1397,13 +1397,13 @@ bool X86TargetInfo::validateOperandSize(const llvm::StringMap<bool> &FeatureMap,
949 return Size <= 64;
950 case 'z':
951 // XMM0/YMM/ZMM0
952- if (FeatureMap.lookup("avx512f"))
953+ if (hasFeatureEnabled(FeatureMap, "avx512f"))
954 // ZMM0 can be used if target supports AVX512F.
955 return Size <= 512U;
956- else if (FeatureMap.lookup("avx"))
957+ else if (hasFeatureEnabled(FeatureMap, "avx"))
958 // YMM0 can be used if target supports AVX.
959 return Size <= 256U;
960- else if (FeatureMap.lookup("sse"))
961+ else if (hasFeatureEnabled(FeatureMap, "sse"))
962 return Size <= 128U;
963 return false;
964 case 'i':
965@@ -1417,10 +1417,10 @@ bool X86TargetInfo::validateOperandSize(const llvm::StringMap<bool> &FeatureMap,
966 break;
967 case 'v':
968 case 'x':
969- if (FeatureMap.lookup("avx512f"))
970+ if (hasFeatureEnabled(FeatureMap, "avx512f"))
971 // 512-bit zmm registers can be used if target supports AVX512F.
972 return Size <= 512U;
973- else if (FeatureMap.lookup("avx"))
974+ else if (hasFeatureEnabled(FeatureMap, "avx"))
975 // 256-bit ymm registers can be used if target supports AVX.
976 return Size <= 256U;
977 return Size <= 128U;
978diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
979index 956877d34680..3e5c07538662 100644
980--- a/clang/lib/Frontend/CompilerInstance.cpp
981+++ b/clang/lib/Frontend/CompilerInstance.cpp
982@@ -910,6 +910,11 @@ bool CompilerInstance::ExecuteAction(FrontendAction &Act) {
983 }
984 // FIXME: can we disable FEnvAccess?
985 }
986+ // We should do it here because target knows nothing about
987+ // language options when it's being created.
988+ if (getLangOpts().OpenCL &&
989+ !getTarget().validateOpenCLTarget(getLangOpts(), getDiagnostics()))
990+ return false;
991
992 // Inform the target of the language options.
993 //
994diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
995index 5c5cf46150e2..e1580b60dd89 100644
996--- a/clang/lib/Frontend/CompilerInvocation.cpp
997+++ b/clang/lib/Frontend/CompilerInvocation.cpp
998@@ -2041,6 +2041,9 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
999 Opts.ZVector = 0;
1000 Opts.setDefaultFPContractMode(LangOptions::FPM_On);
1001 Opts.OpenCLCPlusPlus = Opts.CPlusPlus;
1002+ Opts.OpenCLPipe = Opts.OpenCLCPlusPlus || Opts.OpenCLVersion == 200;
1003+ Opts.OpenCLGenericAddressSpace =
1004+ Opts.OpenCLCPlusPlus || Opts.OpenCLVersion == 200;
1005
1006 // Include default header file for OpenCL.
1007 if (Opts.IncludeDefaultHeader) {
1008diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp
1009index c60972c96e5d..faa02c608540 100644
1010--- a/clang/lib/Frontend/InitPreprocessor.cpp
1011+++ b/clang/lib/Frontend/InitPreprocessor.cpp
1012@@ -598,6 +598,29 @@ static void InitializeCPlusPlusFeatureTestMacros(const LangOptions &LangOpts,
1013 Builder.defineMacro("__cpp_coroutines", "201703L");
1014 }
1015
1016+/// InitializeOpenCLFeatureTestMacros - Define OpenCL macros based on target
1017+/// settings and language version
1018+void InitializeOpenCLFeatureTestMacros(const TargetInfo &TI,
1019+ const LangOptions &Opts,
1020+ MacroBuilder &Builder) {
1021+ const llvm::StringMap<bool> &OpenCLFeaturesMap = TI.getSupportedOpenCLOpts();
1022+ // FIXME: OpenCL options which affect language semantics/syntax
1023+ // should be moved into LangOptions.
1024+ auto defineOpenCLExtMacro = [&](llvm::StringRef Name, auto... OptArgs) {
1025+ // Check if extension is supported by target and is available in this
1026+ // OpenCL version
1027+ if (TI.hasFeatureEnabled(OpenCLFeaturesMap, Name) &&
1028+ OpenCLOptions::isOpenCLOptionAvailableIn(Opts, OptArgs...))
1029+ Builder.defineMacro(Name);
1030+ };
1031+#define OPENCL_GENERIC_EXTENSION(Ext, ...) \
1032+ defineOpenCLExtMacro(#Ext, __VA_ARGS__);
1033+#include "clang/Basic/OpenCLExtensions.def"
1034+
1035+ // Assume compiling for FULL profile
1036+ Builder.defineMacro("__opencl_c_int64");
1037+}
1038+
1039 static void InitializePredefinedMacros(const TargetInfo &TI,
1040 const LangOptions &LangOpts,
1041 const FrontendOptions &FEOpts,
1042@@ -1120,7 +1143,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
1043
1044 // OpenCL definitions.
1045 if (LangOpts.OpenCL) {
1046- TI.getOpenCLFeatureDefines(LangOpts, Builder);
1047+ InitializeOpenCLFeatureTestMacros(TI, LangOpts, Builder);
1048 }
1049
1050 if (TI.hasInt128Type() && LangOpts.CPlusPlus && LangOpts.GNUMode) {
1051diff --git a/clang/lib/Headers/opencl-c-base.h b/clang/lib/Headers/opencl-c-base.h
1052index b55d9601a452..e8f293a0301b 100644
1053--- a/clang/lib/Headers/opencl-c-base.h
1054+++ b/clang/lib/Headers/opencl-c-base.h
1055@@ -46,6 +46,21 @@
1056 #endif // defined(__SPIR__)
1057 #endif // (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
1058
1059+// Define feature macros for OpenCL C 2.0
1060+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ == 200)
1061+#define __opencl_c_pipes 1
1062+#define __opencl_c_generic_address_space 1
1063+#define __opencl_c_work_group_collective_functions 1
1064+#define __opencl_c_atomic_order_acq_rel 1
1065+#define __opencl_c_atomic_order_seq_cst 1
1066+#define __opencl_c_atomic_scope_device 1
1067+#define __opencl_c_atomic_scope_all_devices 1
1068+#define __opencl_c_device_enqueue 1
1069+#define __opencl_c_read_write_images 1
1070+#define __opencl_c_program_scope_global_variables 1
1071+#define __opencl_c_images 1
1072+#endif
1073+
1074 // built-in scalar data types:
1075
1076 /**
1077diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h
1078index 80d318b16f57..62ff0aab1d40 100644
1079--- a/clang/lib/Headers/opencl-c.h
1080+++ b/clang/lib/Headers/opencl-c.h
1081@@ -11,11 +11,11 @@
1082
1083 #include "opencl-c-base.h"
1084
1085-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1086+#if defined(__opencl_c_images)
1087 #ifndef cl_khr_depth_images
1088 #define cl_khr_depth_images
1089 #endif //cl_khr_depth_images
1090-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1091+#endif //defined(__opencl_c_images)
1092
1093 #if __OPENCL_C_VERSION__ < CL_VERSION_2_0
1094 #ifdef cl_khr_3d_image_writes
1095@@ -7354,7 +7354,7 @@ half16 __ovld __cnfn fmod(half16 x, half16 y);
1096 * Returns fmin(x - floor (x), 0x1.fffffep-1f ).
1097 * floor(x) is returned in iptr.
1098 */
1099-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1100+#if defined(__opencl_c_generic_address_space)
1101 float __ovld fract(float x, float *iptr);
1102 float2 __ovld fract(float2 x, float2 *iptr);
1103 float3 __ovld fract(float3 x, float3 *iptr);
1104@@ -7444,7 +7444,7 @@ half16 __ovld fract(half16 x, __private half16 *iptr);
1105 * magnitude in the interval [1/2, 1) or 0. Each
1106 * component of x equals mantissa returned * 2^exp.
1107 */
1108-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1109+#if defined(__opencl_c_generic_address_space)
1110 float __ovld frexp(float x, int *exp);
1111 float2 __ovld frexp(float2 x, int2 *exp);
1112 float3 __ovld frexp(float3 x, int3 *exp);
1113@@ -7651,7 +7651,7 @@ half8 __ovld __cnfn lgamma(half8 x);
1114 half16 __ovld __cnfn lgamma(half16 x);
1115 #endif //cl_khr_fp16
1116
1117-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1118+#if defined(__opencl_c_generic_address_space)
1119 float __ovld lgamma_r(float x, int *signp);
1120 float2 __ovld lgamma_r(float2 x, int2 *signp);
1121 float3 __ovld lgamma_r(float3 x, int3 *signp);
1122@@ -7957,7 +7957,7 @@ half16 __ovld __cnfn minmag(half16 x, half16 y);
1123 * the argument. It stores the integral part in the object
1124 * pointed to by iptr.
1125 */
1126-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1127+#if defined(__opencl_c_generic_address_space)
1128 float __ovld modf(float x, float *iptr);
1129 float2 __ovld modf(float2 x, float2 *iptr);
1130 float3 __ovld modf(float3 x, float3 *iptr);
1131@@ -8217,7 +8217,7 @@ half16 __ovld __cnfn remainder(half16 x, half16 y);
1132 * sign as x/y. It stores this signed value in the object
1133 * pointed to by quo.
1134 */
1135-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1136+#if defined(__opencl_c_generic_address_space)
1137 float __ovld remquo(float x, float y, int *quo);
1138 float2 __ovld remquo(float2 x, float2 y, int2 *quo);
1139 float3 __ovld remquo(float3 x, float3 y, int3 *quo);
1140@@ -8441,7 +8441,7 @@ half16 __ovld __cnfn sin(half16);
1141 * is the return value and computed cosine is returned
1142 * in cosval.
1143 */
1144-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1145+#if defined(__opencl_c_generic_address_space)
1146 float __ovld sincos(float x, float *cosval);
1147 float2 __ovld sincos(float2 x, float2 *cosval);
1148 float3 __ovld sincos(float3 x, float3 *cosval);
1149@@ -11342,7 +11342,7 @@ half8 __ovld vload8(size_t offset, const __constant half *p);
1150 half16 __ovld vload16(size_t offset, const __constant half *p);
1151 #endif //cl_khr_fp16
1152
1153-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1154+#if defined(__opencl_c_generic_address_space)
1155 char2 __ovld vload2(size_t offset, const char *p);
1156 uchar2 __ovld vload2(size_t offset, const uchar *p);
1157 short2 __ovld vload2(size_t offset, const short *p);
1158@@ -11582,7 +11582,7 @@ half16 __ovld vload16(size_t offset, const __private half *p);
1159 #endif //cl_khr_fp16
1160 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1161
1162-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1163+#if defined(__opencl_c_generic_address_space)
1164 void __ovld vstore2(char2 data, size_t offset, char *p);
1165 void __ovld vstore2(uchar2 data, size_t offset, uchar *p);
1166 void __ovld vstore2(short2 data, size_t offset, short *p);
1167@@ -11827,7 +11827,7 @@ void __ovld vstore16(half16 data, size_t offset, __private half *p);
1168 * must be 16-bit aligned.
1169 */
1170 float __ovld vload_half(size_t offset, const __constant half *p);
1171-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1172+#if defined(__opencl_c_generic_address_space)
1173 float __ovld vload_half(size_t offset, const half *p);
1174 #else
1175 float __ovld vload_half(size_t offset, const __global half *p);
1176@@ -11848,7 +11848,7 @@ float3 __ovld vload_half3(size_t offset, const __constant half *p);
1177 float4 __ovld vload_half4(size_t offset, const __constant half *p);
1178 float8 __ovld vload_half8(size_t offset, const __constant half *p);
1179 float16 __ovld vload_half16(size_t offset, const __constant half *p);
1180-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1181+#if defined(__opencl_c_generic_address_space)
1182 float2 __ovld vload_half2(size_t offset, const half *p);
1183 float3 __ovld vload_half3(size_t offset, const half *p);
1184 float4 __ovld vload_half4(size_t offset, const half *p);
1185@@ -11883,7 +11883,7 @@ float16 __ovld vload_half16(size_t offset, const __private half *p);
1186 * The default current rounding mode is round to
1187 * nearest even.
1188 */
1189-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1190+#if defined(__opencl_c_generic_address_space)
1191 void __ovld vstore_half(float data, size_t offset, half *p);
1192 void __ovld vstore_half_rte(float data, size_t offset, half *p);
1193 void __ovld vstore_half_rtz(float data, size_t offset, half *p);
1194@@ -11942,7 +11942,7 @@ void __ovld vstore_half_rtn(double data, size_t offset, __private half *p);
1195 * The default current rounding mode is round to
1196 * nearest even.
1197 */
1198-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1199+#if defined(__opencl_c_generic_address_space)
1200 void __ovld vstore_half2(float2 data, size_t offset, half *p);
1201 void __ovld vstore_half3(float3 data, size_t offset, half *p);
1202 void __ovld vstore_half4(float4 data, size_t offset, half *p);
1203@@ -12169,7 +12169,7 @@ float3 __ovld vloada_half3(size_t offset, const __constant half *p);
1204 float4 __ovld vloada_half4(size_t offset, const __constant half *p);
1205 float8 __ovld vloada_half8(size_t offset, const __constant half *p);
1206 float16 __ovld vloada_half16(size_t offset, const __constant half *p);
1207-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1208+#if defined(__opencl_c_generic_address_space)
1209 float __ovld vloada_half(size_t offset, const half *p);
1210 float2 __ovld vloada_half2(size_t offset, const half *p);
1211 float3 __ovld vloada_half3(size_t offset, const half *p);
1212@@ -12213,7 +12213,7 @@ float16 __ovld vloada_half16(size_t offset, const __private half *p);
1213 * mode. The default current rounding mode is
1214 * round to nearest even.
1215 */
1216-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1217+#if defined(__opencl_c_generic_address_space)
1218 void __ovld vstorea_half(float data, size_t offset, half *p);
1219 void __ovld vstorea_half2(float2 data, size_t offset, half *p);
1220 void __ovld vstorea_half3(float3 data, size_t offset, half *p);
1221@@ -12582,7 +12582,7 @@ void __ovld write_mem_fence(cl_mem_fence_flags flags);
1222
1223 // OpenCL v2.0 s6.13.9 - Address Space Qualifier Functions
1224
1225-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1226+#if defined(__opencl_c_generic_address_space)
1227 cl_mem_fence_flags __ovld get_fence(const void *ptr);
1228 cl_mem_fence_flags __ovld get_fence(void *ptr);
1229
1230@@ -13397,138 +13397,113 @@ void __ovld atomic_init(volatile atomic_double *object, double value);
1231 void __ovld atomic_work_item_fence(cl_mem_fence_flags flags, memory_order order, memory_scope scope);
1232
1233 // atomic_fetch()
1234+// OpenCL v2.0 s6.13.11.7.5:
1235+// add/sub: atomic type argument can be uintptr_t/intptr_t, value type argument can be ptrdiff_t.
1236
1237+#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
1238 int __ovld atomic_fetch_add(volatile atomic_int *object, int operand);
1239-int __ovld atomic_fetch_add_explicit(volatile atomic_int *object, int operand, memory_order order);
1240-int __ovld atomic_fetch_add_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1241 uint __ovld atomic_fetch_add(volatile atomic_uint *object, uint operand);
1242-uint __ovld atomic_fetch_add_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1243-uint __ovld atomic_fetch_add_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1244 int __ovld atomic_fetch_sub(volatile atomic_int *object, int operand);
1245-int __ovld atomic_fetch_sub_explicit(volatile atomic_int *object, int operand, memory_order order);
1246-int __ovld atomic_fetch_sub_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1247 uint __ovld atomic_fetch_sub(volatile atomic_uint *object, uint operand);
1248-uint __ovld atomic_fetch_sub_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1249-uint __ovld atomic_fetch_sub_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1250 int __ovld atomic_fetch_or(volatile atomic_int *object, int operand);
1251-int __ovld atomic_fetch_or_explicit(volatile atomic_int *object, int operand, memory_order order);
1252-int __ovld atomic_fetch_or_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1253 uint __ovld atomic_fetch_or(volatile atomic_uint *object, uint operand);
1254-uint __ovld atomic_fetch_or_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1255-uint __ovld atomic_fetch_or_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1256 int __ovld atomic_fetch_xor(volatile atomic_int *object, int operand);
1257-int __ovld atomic_fetch_xor_explicit(volatile atomic_int *object, int operand, memory_order order);
1258-int __ovld atomic_fetch_xor_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1259 uint __ovld atomic_fetch_xor(volatile atomic_uint *object, uint operand);
1260-uint __ovld atomic_fetch_xor_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1261-uint __ovld atomic_fetch_xor_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1262 int __ovld atomic_fetch_and(volatile atomic_int *object, int operand);
1263-int __ovld atomic_fetch_and_explicit(volatile atomic_int *object, int operand, memory_order order);
1264-int __ovld atomic_fetch_and_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1265 uint __ovld atomic_fetch_and(volatile atomic_uint *object, uint operand);
1266-uint __ovld atomic_fetch_and_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1267-uint __ovld atomic_fetch_and_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1268 int __ovld atomic_fetch_min(volatile atomic_int *object, int operand);
1269-int __ovld atomic_fetch_min_explicit(volatile atomic_int *object, int operand, memory_order order);
1270-int __ovld atomic_fetch_min_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1271 uint __ovld atomic_fetch_min(volatile atomic_uint *object, uint operand);
1272-uint __ovld atomic_fetch_min_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1273-uint __ovld atomic_fetch_min_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1274 int __ovld atomic_fetch_max(volatile atomic_int *object, int operand);
1275-int __ovld atomic_fetch_max_explicit(volatile atomic_int *object, int operand, memory_order order);
1276-int __ovld atomic_fetch_max_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1277 uint __ovld atomic_fetch_max(volatile atomic_uint *object, uint operand);
1278-uint __ovld atomic_fetch_max_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1279-uint __ovld atomic_fetch_max_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1280
1281 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1282 long __ovld atomic_fetch_add(volatile atomic_long *object, long operand);
1283-long __ovld atomic_fetch_add_explicit(volatile atomic_long *object, long operand, memory_order order);
1284-long __ovld atomic_fetch_add_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1285 ulong __ovld atomic_fetch_add(volatile atomic_ulong *object, ulong operand);
1286-ulong __ovld atomic_fetch_add_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1287-ulong __ovld atomic_fetch_add_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1288 long __ovld atomic_fetch_sub(volatile atomic_long *object, long operand);
1289-long __ovld atomic_fetch_sub_explicit(volatile atomic_long *object, long operand, memory_order order);
1290-long __ovld atomic_fetch_sub_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1291 ulong __ovld atomic_fetch_sub(volatile atomic_ulong *object, ulong operand);
1292-ulong __ovld atomic_fetch_sub_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1293-ulong __ovld atomic_fetch_sub_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1294 long __ovld atomic_fetch_or(volatile atomic_long *object, long operand);
1295-long __ovld atomic_fetch_or_explicit(volatile atomic_long *object, long operand, memory_order order);
1296-long __ovld atomic_fetch_or_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1297 ulong __ovld atomic_fetch_or(volatile atomic_ulong *object, ulong operand);
1298-ulong __ovld atomic_fetch_or_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1299-ulong __ovld atomic_fetch_or_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1300 long __ovld atomic_fetch_xor(volatile atomic_long *object, long operand);
1301-long __ovld atomic_fetch_xor_explicit(volatile atomic_long *object, long operand, memory_order order);
1302-long __ovld atomic_fetch_xor_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1303 ulong __ovld atomic_fetch_xor(volatile atomic_ulong *object, ulong operand);
1304-ulong __ovld atomic_fetch_xor_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1305-ulong __ovld atomic_fetch_xor_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1306 long __ovld atomic_fetch_and(volatile atomic_long *object, long operand);
1307-long __ovld atomic_fetch_and_explicit(volatile atomic_long *object, long operand, memory_order order);
1308-long __ovld atomic_fetch_and_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1309 ulong __ovld atomic_fetch_and(volatile atomic_ulong *object, ulong operand);
1310-ulong __ovld atomic_fetch_and_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1311-ulong __ovld atomic_fetch_and_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1312 long __ovld atomic_fetch_min(volatile atomic_long *object, long operand);
1313-long __ovld atomic_fetch_min_explicit(volatile atomic_long *object, long operand, memory_order order);
1314-long __ovld atomic_fetch_min_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1315 ulong __ovld atomic_fetch_min(volatile atomic_ulong *object, ulong operand);
1316-ulong __ovld atomic_fetch_min_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1317-ulong __ovld atomic_fetch_min_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1318 long __ovld atomic_fetch_max(volatile atomic_long *object, long operand);
1319-long __ovld atomic_fetch_max_explicit(volatile atomic_long *object, long operand, memory_order order);
1320-long __ovld atomic_fetch_max_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1321 ulong __ovld atomic_fetch_max(volatile atomic_ulong *object, ulong operand);
1322-ulong __ovld atomic_fetch_max_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1323-ulong __ovld atomic_fetch_max_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1324+uintptr_t __ovld atomic_fetch_add(volatile atomic_uintptr_t *object, ptrdiff_t operand);
1325+uintptr_t __ovld atomic_fetch_sub(volatile atomic_uintptr_t *object, ptrdiff_t operand);
1326 #endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1327+#endif
1328
1329-// OpenCL v2.0 s6.13.11.7.5:
1330-// add/sub: atomic type argument can be uintptr_t/intptr_t, value type argument can be ptrdiff_t.
1331-// or/xor/and/min/max: atomic type argument can be intptr_t/uintptr_t, value type argument can be intptr_t/uintptr_t.
1332-
1333+#if defined(__opencl_c_atomic_scope_device)
1334+int __ovld atomic_fetch_add_explicit(volatile atomic_int *object, int operand, memory_order order);
1335+uint __ovld atomic_fetch_add_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1336+int __ovld atomic_fetch_sub_explicit(volatile atomic_int *object, int operand, memory_order order);
1337+uint __ovld atomic_fetch_sub_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1338+int __ovld atomic_fetch_or_explicit(volatile atomic_int *object, int operand, memory_order order);
1339+uint __ovld atomic_fetch_or_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1340+int __ovld atomic_fetch_xor_explicit(volatile atomic_int *object, int operand, memory_order order);
1341+uint __ovld atomic_fetch_xor_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1342+int __ovld atomic_fetch_and_explicit(volatile atomic_int *object, int operand, memory_order order);
1343+uint __ovld atomic_fetch_and_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1344+int __ovld atomic_fetch_min_explicit(volatile atomic_int *object, int operand, memory_order order);
1345+uint __ovld atomic_fetch_min_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1346+int __ovld atomic_fetch_max_explicit(volatile atomic_int *object, int operand, memory_order order);
1347+uint __ovld atomic_fetch_max_explicit(volatile atomic_uint *object, uint operand, memory_order order);
1348 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1349-uintptr_t __ovld atomic_fetch_add(volatile atomic_uintptr_t *object, ptrdiff_t operand);
1350+long __ovld atomic_fetch_add_explicit(volatile atomic_long *object, long operand, memory_order order);
1351+ulong __ovld atomic_fetch_add_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1352+long __ovld atomic_fetch_sub_explicit(volatile atomic_long *object, long operand, memory_order order);
1353+ulong __ovld atomic_fetch_sub_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1354+long __ovld atomic_fetch_or_explicit(volatile atomic_long *object, long operand, memory_order order);
1355+ulong __ovld atomic_fetch_or_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1356+long __ovld atomic_fetch_xor_explicit(volatile atomic_long *object, long operand, memory_order order);
1357+ulong __ovld atomic_fetch_xor_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1358+long __ovld atomic_fetch_and_explicit(volatile atomic_long *object, long operand, memory_order order);
1359+ulong __ovld atomic_fetch_and_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1360+long __ovld atomic_fetch_min_explicit(volatile atomic_long *object, long operand, memory_order order);
1361+ulong __ovld atomic_fetch_min_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1362+long __ovld atomic_fetch_max_explicit(volatile atomic_long *object, long operand, memory_order order);
1363+ulong __ovld atomic_fetch_max_explicit(volatile atomic_ulong *object, ulong operand, memory_order order);
1364 uintptr_t __ovld atomic_fetch_add_explicit(volatile atomic_uintptr_t *object, ptrdiff_t operand, memory_order order);
1365-uintptr_t __ovld atomic_fetch_add_explicit(volatile atomic_uintptr_t *object, ptrdiff_t operand, memory_order order, memory_scope scope);
1366-uintptr_t __ovld atomic_fetch_sub(volatile atomic_uintptr_t *object, ptrdiff_t operand);
1367 uintptr_t __ovld atomic_fetch_sub_explicit(volatile atomic_uintptr_t *object, ptrdiff_t operand, memory_order order);
1368-uintptr_t __ovld atomic_fetch_sub_explicit(volatile atomic_uintptr_t *object, ptrdiff_t operand, memory_order order, memory_scope scope);
1369+#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1370+#endif
1371
1372-uintptr_t __ovld atomic_fetch_or(volatile atomic_uintptr_t *object, intptr_t operand);
1373-uintptr_t __ovld atomic_fetch_or_explicit(volatile atomic_uintptr_t *object, intptr_t operand, memory_order order);
1374-uintptr_t __ovld atomic_fetch_or_explicit(volatile atomic_uintptr_t *object, intptr_t operand, memory_order order, memory_scope scope);
1375-uintptr_t __ovld atomic_fetch_xor(volatile atomic_uintptr_t *object, intptr_t operand);
1376-uintptr_t __ovld atomic_fetch_xor_explicit(volatile atomic_uintptr_t *object, intptr_t operand, memory_order order);
1377-uintptr_t __ovld atomic_fetch_xor_explicit(volatile atomic_uintptr_t *object, intptr_t operand, memory_order order, memory_scope scope);
1378-uintptr_t __ovld atomic_fetch_and(volatile atomic_uintptr_t *object, intptr_t operand);
1379-uintptr_t __ovld atomic_fetch_and_explicit(volatile atomic_uintptr_t *object, intptr_t operand, memory_order order);
1380-uintptr_t __ovld atomic_fetch_and_explicit(volatile atomic_uintptr_t *object, intptr_t operand, memory_order order, memory_scope scope);
1381-uintptr_t __ovld atomic_fetch_min(volatile atomic_uintptr_t *object, intptr_t opermax);
1382-uintptr_t __ovld atomic_fetch_min_explicit(volatile atomic_uintptr_t *object, intptr_t opermax, memory_order minder);
1383-uintptr_t __ovld atomic_fetch_min_explicit(volatile atomic_uintptr_t *object, intptr_t opermax, memory_order minder, memory_scope scope);
1384-uintptr_t __ovld atomic_fetch_max(volatile atomic_uintptr_t *object, intptr_t opermax);
1385-uintptr_t __ovld atomic_fetch_max_explicit(volatile atomic_uintptr_t *object, intptr_t opermax, memory_order minder);
1386-uintptr_t __ovld atomic_fetch_max_explicit(volatile atomic_uintptr_t *object, intptr_t opermax, memory_order minder, memory_scope scope);
1387-
1388-intptr_t __ovld atomic_fetch_or(volatile atomic_intptr_t *object, uintptr_t operand);
1389-intptr_t __ovld atomic_fetch_or_explicit(volatile atomic_intptr_t *object, uintptr_t operand, memory_order order);
1390-intptr_t __ovld atomic_fetch_or_explicit(volatile atomic_intptr_t *object, uintptr_t operand, memory_order order, memory_scope scope);
1391-intptr_t __ovld atomic_fetch_xor(volatile atomic_intptr_t *object, uintptr_t operand);
1392-intptr_t __ovld atomic_fetch_xor_explicit(volatile atomic_intptr_t *object, uintptr_t operand, memory_order order);
1393-intptr_t __ovld atomic_fetch_xor_explicit(volatile atomic_intptr_t *object, uintptr_t operand, memory_order order, memory_scope scope);
1394-intptr_t __ovld atomic_fetch_and(volatile atomic_intptr_t *object, uintptr_t operand);
1395-intptr_t __ovld atomic_fetch_and_explicit(volatile atomic_intptr_t *object, uintptr_t operand, memory_order order);
1396-intptr_t __ovld atomic_fetch_and_explicit(volatile atomic_intptr_t *object, uintptr_t operand, memory_order order, memory_scope scope);
1397-intptr_t __ovld atomic_fetch_min(volatile atomic_intptr_t *object, uintptr_t opermax);
1398-intptr_t __ovld atomic_fetch_min_explicit(volatile atomic_intptr_t *object, uintptr_t opermax, memory_order minder);
1399-intptr_t __ovld atomic_fetch_min_explicit(volatile atomic_intptr_t *object, uintptr_t opermax, memory_order minder, memory_scope scope);
1400-intptr_t __ovld atomic_fetch_max(volatile atomic_intptr_t *object, uintptr_t opermax);
1401-intptr_t __ovld atomic_fetch_max_explicit(volatile atomic_intptr_t *object, uintptr_t opermax, memory_order minder);
1402-intptr_t __ovld atomic_fetch_max_explicit(volatile atomic_intptr_t *object, uintptr_t opermax, memory_order minder, memory_scope scope);
1403+int __ovld atomic_fetch_add_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1404+uint __ovld atomic_fetch_add_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1405+int __ovld atomic_fetch_sub_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1406+uint __ovld atomic_fetch_sub_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1407+int __ovld atomic_fetch_or_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1408+uint __ovld atomic_fetch_or_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1409+int __ovld atomic_fetch_xor_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1410+uint __ovld atomic_fetch_xor_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1411+int __ovld atomic_fetch_and_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1412+uint __ovld atomic_fetch_and_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1413+int __ovld atomic_fetch_min_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1414+uint __ovld atomic_fetch_min_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1415+int __ovld atomic_fetch_max_explicit(volatile atomic_int *object, int operand, memory_order order, memory_scope scope);
1416+uint __ovld atomic_fetch_max_explicit(volatile atomic_uint *object, uint operand, memory_order order, memory_scope scope);
1417+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1418+long __ovld atomic_fetch_add_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1419+ulong __ovld atomic_fetch_add_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1420+long __ovld atomic_fetch_sub_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1421+ulong __ovld atomic_fetch_sub_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1422+long __ovld atomic_fetch_or_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1423+ulong __ovld atomic_fetch_or_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1424+long __ovld atomic_fetch_xor_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1425+ulong __ovld atomic_fetch_xor_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1426+long __ovld atomic_fetch_and_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1427+ulong __ovld atomic_fetch_and_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1428+long __ovld atomic_fetch_min_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1429+ulong __ovld atomic_fetch_min_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1430+long __ovld atomic_fetch_max_explicit(volatile atomic_long *object, long operand, memory_order order, memory_scope scope);
1431+ulong __ovld atomic_fetch_max_explicit(volatile atomic_ulong *object, ulong operand, memory_order order, memory_scope scope);
1432+#endif //defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1433+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1434+uintptr_t __ovld atomic_fetch_add_explicit(volatile atomic_uintptr_t *object, ptrdiff_t operand, memory_order order, memory_scope scope);
1435+uintptr_t __ovld atomic_fetch_sub_explicit(volatile atomic_uintptr_t *object, ptrdiff_t operand, memory_order order, memory_scope scope);
1436 #endif
1437
1438 // The functionality added by cl_ext_float_atomics extension
1439@@ -13911,155 +13886,213 @@ double __ovld atomic_fetch_sub_explicit(volatile atomic_double *object,
1440
1441 // atomic_store()
1442
1443+#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
1444 void __ovld atomic_store(volatile atomic_int *object, int desired);
1445-void __ovld atomic_store_explicit(volatile atomic_int *object, int desired, memory_order order);
1446-void __ovld atomic_store_explicit(volatile atomic_int *object, int desired, memory_order order, memory_scope scope);
1447 void __ovld atomic_store(volatile atomic_uint *object, uint desired);
1448-void __ovld atomic_store_explicit(volatile atomic_uint *object, uint desired, memory_order order);
1449-void __ovld atomic_store_explicit(volatile atomic_uint *object, uint desired, memory_order order, memory_scope scope);
1450 void __ovld atomic_store(volatile atomic_float *object, float desired);
1451-void __ovld atomic_store_explicit(volatile atomic_float *object, float desired, memory_order order);
1452-void __ovld atomic_store_explicit(volatile atomic_float *object, float desired, memory_order order, memory_scope scope);
1453+
1454 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1455 #ifdef cl_khr_fp64
1456 void __ovld atomic_store(volatile atomic_double *object, double desired);
1457-void __ovld atomic_store_explicit(volatile atomic_double *object, double desired, memory_order order);
1458-void __ovld atomic_store_explicit(volatile atomic_double *object, double desired, memory_order order, memory_scope scope);
1459 #endif //cl_khr_fp64
1460 void __ovld atomic_store(volatile atomic_long *object, long desired);
1461-void __ovld atomic_store_explicit(volatile atomic_long *object, long desired, memory_order order);
1462-void __ovld atomic_store_explicit(volatile atomic_long *object, long desired, memory_order order, memory_scope scope);
1463 void __ovld atomic_store(volatile atomic_ulong *object, ulong desired);
1464+#endif
1465+#endif
1466+
1467+#if defined(__opencl_c_atomic_scope_device)
1468+void __ovld atomic_store_explicit(volatile atomic_int *object, int desired, memory_order order);
1469+void __ovld atomic_store_explicit(volatile atomic_uint *object, uint desired, memory_order order);
1470+void __ovld atomic_store_explicit(volatile atomic_float *object, float desired, memory_order order);
1471+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1472+#ifdef cl_khr_fp64
1473+void __ovld atomic_store_explicit(volatile atomic_double *object, double desired, memory_order order);
1474+#endif //cl_khr_fp64
1475+void __ovld atomic_store_explicit(volatile atomic_long *object, long desired, memory_order order);
1476 void __ovld atomic_store_explicit(volatile atomic_ulong *object, ulong desired, memory_order order);
1477+#endif
1478+#endif
1479+
1480+void __ovld atomic_store_explicit(volatile atomic_int *object, int desired, memory_order order, memory_scope scope);
1481+void __ovld atomic_store_explicit(volatile atomic_uint *object, uint desired, memory_order order, memory_scope scope);
1482+void __ovld atomic_store_explicit(volatile atomic_float *object, float desired, memory_order order, memory_scope scope);
1483+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1484+#ifdef cl_khr_fp64
1485+void __ovld atomic_store_explicit(volatile atomic_double *object, double desired, memory_order order, memory_scope scope);
1486+#endif //cl_khr_fp64
1487+void __ovld atomic_store_explicit(volatile atomic_long *object, long desired, memory_order order, memory_scope scope);
1488 void __ovld atomic_store_explicit(volatile atomic_ulong *object, ulong desired, memory_order order, memory_scope scope);
1489 #endif
1490
1491 // atomic_load()
1492-
1493+#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
1494 int __ovld atomic_load(volatile atomic_int *object);
1495-int __ovld atomic_load_explicit(volatile atomic_int *object, memory_order order);
1496-int __ovld atomic_load_explicit(volatile atomic_int *object, memory_order order, memory_scope scope);
1497 uint __ovld atomic_load(volatile atomic_uint *object);
1498-uint __ovld atomic_load_explicit(volatile atomic_uint *object, memory_order order);
1499-uint __ovld atomic_load_explicit(volatile atomic_uint *object, memory_order order, memory_scope scope);
1500 float __ovld atomic_load(volatile atomic_float *object);
1501-float __ovld atomic_load_explicit(volatile atomic_float *object, memory_order order);
1502-float __ovld atomic_load_explicit(volatile atomic_float *object, memory_order order, memory_scope scope);
1503 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1504 #ifdef cl_khr_fp64
1505 double __ovld atomic_load(volatile atomic_double *object);
1506-double __ovld atomic_load_explicit(volatile atomic_double *object, memory_order order);
1507-double __ovld atomic_load_explicit(volatile atomic_double *object, memory_order order, memory_scope scope);
1508 #endif //cl_khr_fp64
1509 long __ovld atomic_load(volatile atomic_long *object);
1510-long __ovld atomic_load_explicit(volatile atomic_long *object, memory_order order);
1511-long __ovld atomic_load_explicit(volatile atomic_long *object, memory_order order, memory_scope scope);
1512 ulong __ovld atomic_load(volatile atomic_ulong *object);
1513+#endif
1514+#endif
1515+
1516+#if defined(__opencl_c_atomic_scope_device)
1517+int __ovld atomic_load_explicit(volatile atomic_int *object, memory_order order);
1518+uint __ovld atomic_load_explicit(volatile atomic_uint *object, memory_order order);
1519+float __ovld atomic_load_explicit(volatile atomic_float *object, memory_order order);
1520+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1521+#ifdef cl_khr_fp64
1522+double __ovld atomic_load_explicit(volatile atomic_double *object, memory_order order);
1523+#endif //cl_khr_fp64
1524+long __ovld atomic_load_explicit(volatile atomic_long *object, memory_order order);
1525 ulong __ovld atomic_load_explicit(volatile atomic_ulong *object, memory_order order);
1526+#endif
1527+#endif
1528+
1529+int __ovld atomic_load_explicit(volatile atomic_int *object, memory_order order, memory_scope scope);
1530+uint __ovld atomic_load_explicit(volatile atomic_uint *object, memory_order order, memory_scope scope);
1531+float __ovld atomic_load_explicit(volatile atomic_float *object, memory_order order, memory_scope scope);
1532+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1533+#ifdef cl_khr_fp64
1534+double __ovld atomic_load_explicit(volatile atomic_double *object, memory_order order, memory_scope scope);
1535+#endif //cl_khr_fp64
1536+long __ovld atomic_load_explicit(volatile atomic_long *object, memory_order order, memory_scope scope);
1537 ulong __ovld atomic_load_explicit(volatile atomic_ulong *object, memory_order order, memory_scope scope);
1538 #endif
1539
1540 // atomic_exchange()
1541
1542+#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
1543 int __ovld atomic_exchange(volatile atomic_int *object, int desired);
1544-int __ovld atomic_exchange_explicit(volatile atomic_int *object, int desired, memory_order order);
1545-int __ovld atomic_exchange_explicit(volatile atomic_int *object, int desired, memory_order order, memory_scope scope);
1546 uint __ovld atomic_exchange(volatile atomic_uint *object, uint desired);
1547-uint __ovld atomic_exchange_explicit(volatile atomic_uint *object, uint desired, memory_order order);
1548-uint __ovld atomic_exchange_explicit(volatile atomic_uint *object, uint desired, memory_order order, memory_scope scope);
1549 float __ovld atomic_exchange(volatile atomic_float *object, float desired);
1550-float __ovld atomic_exchange_explicit(volatile atomic_float *object, float desired, memory_order order);
1551-float __ovld atomic_exchange_explicit(volatile atomic_float *object, float desired, memory_order order, memory_scope scope);
1552 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1553 #ifdef cl_khr_fp64
1554 double __ovld atomic_exchange(volatile atomic_double *object, double desired);
1555-double __ovld atomic_exchange_explicit(volatile atomic_double *object, double desired, memory_order order);
1556-double __ovld atomic_exchange_explicit(volatile atomic_double *object, double desired, memory_order order, memory_scope scope);
1557 #endif //cl_khr_fp64
1558 long __ovld atomic_exchange(volatile atomic_long *object, long desired);
1559-long __ovld atomic_exchange_explicit(volatile atomic_long *object, long desired, memory_order order);
1560-long __ovld atomic_exchange_explicit(volatile atomic_long *object, long desired, memory_order order, memory_scope scope);
1561 ulong __ovld atomic_exchange(volatile atomic_ulong *object, ulong desired);
1562+#endif
1563+#endif
1564+
1565+#if defined(__opencl_c_atomic_scope_device)
1566+int __ovld atomic_exchange_explicit(volatile atomic_int *object, int desired, memory_order order);
1567+uint __ovld atomic_exchange_explicit(volatile atomic_uint *object, uint desired, memory_order order);
1568+float __ovld atomic_exchange_explicit(volatile atomic_float *object, float desired, memory_order order);
1569+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1570+#ifdef cl_khr_fp64
1571+double __ovld atomic_exchange_explicit(volatile atomic_double *object, double desired, memory_order order);
1572+#endif //cl_khr_fp64
1573+long __ovld atomic_exchange_explicit(volatile atomic_long *object, long desired, memory_order order);
1574 ulong __ovld atomic_exchange_explicit(volatile atomic_ulong *object, ulong desired, memory_order order);
1575+#endif
1576+#endif
1577+
1578+int __ovld atomic_exchange_explicit(volatile atomic_int *object, int desired, memory_order order, memory_scope scope);
1579+uint __ovld atomic_exchange_explicit(volatile atomic_uint *object, uint desired, memory_order order, memory_scope scope);
1580+float __ovld atomic_exchange_explicit(volatile atomic_float *object, float desired, memory_order order, memory_scope scope);
1581+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1582+#ifdef cl_khr_fp64
1583+double __ovld atomic_exchange_explicit(volatile atomic_double *object, double desired, memory_order order, memory_scope scope);
1584+#endif //cl_khr_fp64
1585+long __ovld atomic_exchange_explicit(volatile atomic_long *object, long desired, memory_order order, memory_scope scope);
1586 ulong __ovld atomic_exchange_explicit(volatile atomic_ulong *object, ulong desired, memory_order order, memory_scope scope);
1587 #endif
1588
1589 // atomic_compare_exchange_strong() and atomic_compare_exchange_weak()
1590-
1591+#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
1592 bool __ovld atomic_compare_exchange_strong(volatile atomic_int *object, int *expected, int desired);
1593+bool __ovld atomic_compare_exchange_strong(volatile atomic_uint *object, uint *expected, uint desired);
1594+bool __ovld atomic_compare_exchange_weak(volatile atomic_int *object, int *expected, int desired);
1595+bool __ovld atomic_compare_exchange_weak(volatile atomic_uint *object, uint *expected, uint desired);
1596+bool __ovld atomic_compare_exchange_strong(volatile atomic_float *object, float *expected, float desired);
1597+bool __ovld atomic_compare_exchange_weak(volatile atomic_float *object, float *expected, float desired);
1598+
1599+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1600+#ifdef cl_khr_fp64
1601+bool __ovld atomic_compare_exchange_strong(volatile atomic_double *object, double *expected, double desired);
1602+bool __ovld atomic_compare_exchange_weak(volatile atomic_double *object, double *expected, double desired);
1603+#endif //cl_khr_fp64
1604+bool __ovld atomic_compare_exchange_strong(volatile atomic_long *object, long *expected, long desired);
1605+bool __ovld atomic_compare_exchange_weak(volatile atomic_long *object, long *expected, long desired);
1606+bool __ovld atomic_compare_exchange_strong(volatile atomic_ulong *object, ulong *expected, ulong desired);
1607+bool __ovld atomic_compare_exchange_weak(volatile atomic_ulong *object, ulong *expected, ulong desired);
1608+#endif
1609+#endif
1610+
1611 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_int *object, int *expected,
1612 int desired, memory_order success, memory_order failure);
1613-bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_int *object, int *expected,
1614- int desired, memory_order success, memory_order failure, memory_scope scope);
1615-bool __ovld atomic_compare_exchange_strong(volatile atomic_uint *object, uint *expected, uint desired);
1616 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_uint *object, uint *expected,
1617 uint desired, memory_order success, memory_order failure);
1618-bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_uint *object, uint *expected,
1619- uint desired, memory_order success, memory_order failure, memory_scope scope);
1620-bool __ovld atomic_compare_exchange_weak(volatile atomic_int *object, int *expected, int desired);
1621 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_int *object, int *expected,
1622 int desired, memory_order success, memory_order failure);
1623-bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_int *object, int *expected,
1624- int desired, memory_order success, memory_order failure, memory_scope scope);
1625-bool __ovld atomic_compare_exchange_weak(volatile atomic_uint *object, uint *expected, uint desired);
1626 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_uint *object, uint *expected,
1627 uint desired, memory_order success, memory_order failure);
1628-bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_uint *object, uint *expected,
1629- uint desired, memory_order success, memory_order failure, memory_scope scope);
1630-bool __ovld atomic_compare_exchange_strong(volatile atomic_float *object, float *expected, float desired);
1631 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_float *object, float *expected,
1632 float desired, memory_order success, memory_order failure);
1633-bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_float *object, float *expected,
1634- float desired, memory_order success, memory_order failure, memory_scope scope);
1635-bool __ovld atomic_compare_exchange_weak(volatile atomic_float *object, float *expected, float desired);
1636 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_float *object, float *expected,
1637 float desired, memory_order success, memory_order failure);
1638-bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_float *object, float *expected,
1639- float desired, memory_order success, memory_order failure, memory_scope scope);
1640 #if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1641 #ifdef cl_khr_fp64
1642-bool __ovld atomic_compare_exchange_strong(volatile atomic_double *object, double *expected, double desired);
1643 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_double *object, double *expected,
1644 double desired, memory_order success, memory_order failure);
1645-bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_double *object, double *expected,
1646- double desired, memory_order success, memory_order failure, memory_scope scope);
1647-bool __ovld atomic_compare_exchange_weak(volatile atomic_double *object, double *expected, double desired);
1648 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_double *object, double *expected,
1649 double desired, memory_order success, memory_order failure);
1650-bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_double *object, double *expected,
1651- double desired, memory_order success, memory_order failure, memory_scope scope);
1652 #endif //cl_khr_fp64
1653-bool __ovld atomic_compare_exchange_strong(volatile atomic_long *object, long *expected, long desired);
1654 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_long *object, long *expected,
1655 long desired, memory_order success, memory_order failure);
1656-bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_long *object, long *expected,
1657- long desired, memory_order success, memory_order failure, memory_scope scope);
1658-bool __ovld atomic_compare_exchange_weak(volatile atomic_long *object, long *expected, long desired);
1659 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_long *object, long *expected,
1660 long desired, memory_order success, memory_order failure);
1661-bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_long *object, long *expected,
1662- long desired, memory_order success, memory_order failure, memory_scope scope);
1663-bool __ovld atomic_compare_exchange_strong(volatile atomic_ulong *object, ulong *expected, ulong desired);
1664 bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_ulong *object, ulong *expected,
1665 ulong desired, memory_order success, memory_order failure);
1666-bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_ulong *object, ulong *expected,
1667- ulong desired, memory_order success, memory_order failure, memory_scope scope);
1668-bool __ovld atomic_compare_exchange_weak(volatile atomic_ulong *object, ulong *expected, ulong desired);
1669 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_ulong *object, ulong *expected,
1670 ulong desired, memory_order success, memory_order failure);
1671+#endif
1672+
1673+bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_int *object, int *expected,
1674+ int desired, memory_order success, memory_order failure, memory_scope scope);
1675+bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_uint *object, uint *expected,
1676+ uint desired, memory_order success, memory_order failure, memory_scope scope);
1677+bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_int *object, int *expected,
1678+ int desired, memory_order success, memory_order failure, memory_scope scope);
1679+bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_uint *object, uint *expected,
1680+ uint desired, memory_order success, memory_order failure, memory_scope scope);
1681+bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_float *object, float *expected,
1682+ float desired, memory_order success, memory_order failure, memory_scope scope);
1683+bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_float *object, float *expected,
1684+ float desired, memory_order success, memory_order failure, memory_scope scope);
1685+#if defined(cl_khr_int64_base_atomics) && defined(cl_khr_int64_extended_atomics)
1686+#ifdef cl_khr_fp64
1687+bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_double *object, double *expected,
1688+ double desired, memory_order success, memory_order failure, memory_scope scope);
1689+bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_double *object, double *expected,
1690+ double desired, memory_order success, memory_order failure, memory_scope scope);
1691+#endif //cl_khr_fp64
1692+bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_long *object, long *expected,
1693+ long desired, memory_order success, memory_order failure, memory_scope scope);
1694+bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_long *object, long *expected,
1695+ long desired, memory_order success, memory_order failure, memory_scope scope);
1696+bool __ovld atomic_compare_exchange_strong_explicit(volatile atomic_ulong *object, ulong *expected,
1697+ ulong desired, memory_order success, memory_order failure, memory_scope scope);
1698 bool __ovld atomic_compare_exchange_weak_explicit(volatile atomic_ulong *object, ulong *expected,
1699 ulong desired, memory_order success, memory_order failure, memory_scope scope);
1700 #endif
1701
1702 // atomic_flag_test_and_set() and atomic_flag_clear()
1703-
1704+#if defined(__opencl_c_atomic_order_seq_cst) && defined(__opencl_c_atomic_scope_device)
1705 bool __ovld atomic_flag_test_and_set(volatile atomic_flag *object);
1706-bool __ovld atomic_flag_test_and_set_explicit(volatile atomic_flag *object, memory_order order);
1707-bool __ovld atomic_flag_test_and_set_explicit(volatile atomic_flag *object, memory_order order, memory_scope scope);
1708 void __ovld atomic_flag_clear(volatile atomic_flag *object);
1709+#endif
1710+
1711+#if defined(__opencl_c_atomic_scope_device)
1712+bool __ovld atomic_flag_test_and_set_explicit(volatile atomic_flag *object, memory_order order);
1713 void __ovld atomic_flag_clear_explicit(volatile atomic_flag *object, memory_order order);
1714-void __ovld atomic_flag_clear_explicit(volatile atomic_flag *object, memory_order order, memory_scope scope);
1715+#endif
1716
1717+bool __ovld atomic_flag_test_and_set_explicit(volatile atomic_flag *object, memory_order order, memory_scope scope);
1718+void __ovld atomic_flag_clear_explicit(volatile atomic_flag *object, memory_order order, memory_scope scope);
1719 #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1720
1721 // OpenCL v1.1 s6.11.12, v1.2 s6.12.12, v2.0 s6.13.12 - Miscellaneous Vector Functions
1722@@ -14843,7 +14876,7 @@ half4 __purefn __ovld read_imageh(read_only image1d_buffer_t image, int coord);
1723 #endif //cl_khr_fp16
1724
1725 // Image read functions for read_write images
1726-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1727+#if defined(__opencl_c_read_write_images)
1728 float4 __purefn __ovld read_imagef(read_write image1d_t image, int coord);
1729 int4 __purefn __ovld read_imagei(read_write image1d_t image, int coord);
1730 uint4 __purefn __ovld read_imageui(read_write image1d_t image, int coord);
1731@@ -14886,7 +14919,6 @@ float __purefn __ovld read_imagef(read_write image2d_msaa_depth_t image, int2 co
1732 float __purefn __ovld read_imagef(read_write image2d_array_msaa_depth_t image, int4 coord, int sample);
1733 #endif //cl_khr_gl_msaa_sharing
1734
1735-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1736 #ifdef cl_khr_mipmap_image
1737 float4 __purefn __ovld read_imagef(read_write image1d_t image, sampler_t sampler, float coord, float lod);
1738 int4 __purefn __ovld read_imagei(read_write image1d_t image, sampler_t sampler, float coord, float lod);
1739@@ -14937,7 +14969,6 @@ int4 __purefn __ovld read_imagei(read_write image3d_t image, sampler_t sampler,
1740 uint4 __purefn __ovld read_imageui(read_write image3d_t image, sampler_t sampler, float4 coord, float4 gradientX, float4 gradientY);
1741
1742 #endif //cl_khr_mipmap_image
1743-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1744
1745 // Image read functions returning half4 type
1746 #ifdef cl_khr_fp16
1747@@ -14948,7 +14979,7 @@ half4 __purefn __ovld read_imageh(read_write image1d_array_t image, int2 coord);
1748 half4 __purefn __ovld read_imageh(read_write image2d_array_t image, int4 coord);
1749 half4 __purefn __ovld read_imageh(read_write image1d_buffer_t image, int coord);
1750 #endif //cl_khr_fp16
1751-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1752+#endif //defined(__opencl_c_read_write_images
1753
1754 /**
1755 * Write color value to location specified by coordinate
1756@@ -15092,7 +15123,7 @@ void __ovld write_imageh(write_only image1d_buffer_t image, int coord, half4 col
1757 #endif //cl_khr_fp16
1758
1759 // Image write functions for read_write images
1760-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1761+#if defined(__opencl_c_read_write_images)
1762 void __ovld write_imagef(read_write image2d_t image, int2 coord, float4 color);
1763 void __ovld write_imagei(read_write image2d_t image, int2 coord, int4 color);
1764 void __ovld write_imageui(read_write image2d_t image, int2 coord, uint4 color);
1765@@ -15124,7 +15155,6 @@ void __ovld write_imagef(read_write image2d_depth_t image, int2 coord, float col
1766 void __ovld write_imagef(read_write image2d_array_depth_t image, int4 coord, float color);
1767 #endif //cl_khr_depth_images
1768
1769-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1770 #if defined(cl_khr_mipmap_image_writes)
1771 void __ovld write_imagef(read_write image1d_t image, int coord, int lod, float4 color);
1772 void __ovld write_imagei(read_write image1d_t image, int coord, int lod, int4 color);
1773@@ -15152,7 +15182,6 @@ void __ovld write_imageui(read_write image3d_t image, int4 coord, int lod, uint4
1774 #endif //cl_khr_3d_image_writes
1775
1776 #endif //cl_khr_mipmap_image_writes
1777-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1778
1779 // Image write functions for half4 type
1780 #ifdef cl_khr_fp16
1781@@ -15165,7 +15194,7 @@ void __ovld write_imageh(read_write image1d_array_t image, int2 coord, half4 col
1782 void __ovld write_imageh(read_write image2d_array_t image, int4 coord, half4 color);
1783 void __ovld write_imageh(read_write image1d_buffer_t image, int coord, half4 color);
1784 #endif //cl_khr_fp16
1785-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1786+#endif //defined(__opencl_c_read_write_images)
1787
1788 // Note: In OpenCL v1.0/1.1/1.2, image argument of image query builtin functions does not have
1789 // access qualifier, which by default assume read_only access qualifier. Image query builtin
1790@@ -15213,7 +15242,7 @@ int __ovld __cnfn get_image_width(write_only image2d_array_msaa_t image);
1791 int __ovld __cnfn get_image_width(write_only image2d_array_msaa_depth_t image);
1792 #endif //cl_khr_gl_msaa_sharing
1793
1794-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1795+#if defined(__opencl_c_read_write_images)
1796 int __ovld __cnfn get_image_width(read_write image1d_t image);
1797 int __ovld __cnfn get_image_width(read_write image1d_buffer_t image);
1798 int __ovld __cnfn get_image_width(read_write image2d_t image);
1799@@ -15230,7 +15259,7 @@ int __ovld __cnfn get_image_width(read_write image2d_msaa_depth_t image);
1800 int __ovld __cnfn get_image_width(read_write image2d_array_msaa_t image);
1801 int __ovld __cnfn get_image_width(read_write image2d_array_msaa_depth_t image);
1802 #endif //cl_khr_gl_msaa_sharing
1803-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1804+#endif //defined(__opencl_c_read_write_images)
1805
1806 /**
1807 * Return the image height in pixels.
1808@@ -15265,7 +15294,7 @@ int __ovld __cnfn get_image_height(write_only image2d_array_msaa_t image);
1809 int __ovld __cnfn get_image_height(write_only image2d_array_msaa_depth_t image);
1810 #endif //cl_khr_gl_msaa_sharing
1811
1812-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1813+#if defined(__opencl_c_read_write_images)
1814 int __ovld __cnfn get_image_height(read_write image2d_t image);
1815 int __ovld __cnfn get_image_height(read_write image3d_t image);
1816 int __ovld __cnfn get_image_height(read_write image2d_array_t image);
1817@@ -15279,7 +15308,7 @@ int __ovld __cnfn get_image_height(read_write image2d_msaa_depth_t image);
1818 int __ovld __cnfn get_image_height(read_write image2d_array_msaa_t image);
1819 int __ovld __cnfn get_image_height(read_write image2d_array_msaa_depth_t image);
1820 #endif //cl_khr_gl_msaa_sharing
1821-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1822+#endif //defined(__opencl_c_read_write_images)
1823
1824 /**
1825 * Return the image depth in pixels.
1826@@ -15290,9 +15319,9 @@ int __ovld __cnfn get_image_depth(read_only image3d_t image);
1827 int __ovld __cnfn get_image_depth(write_only image3d_t image);
1828 #endif
1829
1830-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1831+#if defined(__opencl_c_read_write_images)
1832 int __ovld __cnfn get_image_depth(read_write image3d_t image);
1833-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1834+#endif //defined(__opencl_c_read_write_images)
1835
1836 // OpenCL Extension v2.0 s9.18 - Mipmaps
1837 #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1838@@ -15388,7 +15417,7 @@ int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_msaa_t im
1839 int __ovld __cnfn get_image_channel_data_type(write_only image2d_array_msaa_depth_t image);
1840 #endif //cl_khr_gl_msaa_sharing
1841
1842-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1843+#if defined(__opencl_c_read_write_images)
1844 int __ovld __cnfn get_image_channel_data_type(read_write image1d_t image);
1845 int __ovld __cnfn get_image_channel_data_type(read_write image1d_buffer_t image);
1846 int __ovld __cnfn get_image_channel_data_type(read_write image2d_t image);
1847@@ -15405,7 +15434,7 @@ int __ovld __cnfn get_image_channel_data_type(read_write image2d_msaa_depth_t im
1848 int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_msaa_t image);
1849 int __ovld __cnfn get_image_channel_data_type(read_write image2d_array_msaa_depth_t image);
1850 #endif //cl_khr_gl_msaa_sharing
1851-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1852+#endif //defined(__opencl_c_read_write_images)
1853
1854 /**
1855 * Return the image channel order. Valid values are:
1856@@ -15460,7 +15489,7 @@ int __ovld __cnfn get_image_channel_order(write_only image2d_array_msaa_t image)
1857 int __ovld __cnfn get_image_channel_order(write_only image2d_array_msaa_depth_t image);
1858 #endif //cl_khr_gl_msaa_sharing
1859
1860-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1861+#if defined(__opencl_c_read_write_images)
1862 int __ovld __cnfn get_image_channel_order(read_write image1d_t image);
1863 int __ovld __cnfn get_image_channel_order(read_write image1d_buffer_t image);
1864 int __ovld __cnfn get_image_channel_order(read_write image2d_t image);
1865@@ -15477,7 +15506,7 @@ int __ovld __cnfn get_image_channel_order(read_write image2d_msaa_depth_t image)
1866 int __ovld __cnfn get_image_channel_order(read_write image2d_array_msaa_t image);
1867 int __ovld __cnfn get_image_channel_order(read_write image2d_array_msaa_depth_t image);
1868 #endif //cl_khr_gl_msaa_sharing
1869-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1870+#endif //defined(__opencl_c_read_write_images)
1871
1872 /**
1873 * Return the 2D image width and height as an int2
1874@@ -15510,7 +15539,7 @@ int2 __ovld __cnfn get_image_dim(write_only image2d_array_msaa_t image);
1875 int2 __ovld __cnfn get_image_dim(write_only image2d_array_msaa_depth_t image);
1876 #endif //cl_khr_gl_msaa_sharing
1877
1878-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1879+#if defined(__opencl_c_read_write_images)
1880 int2 __ovld __cnfn get_image_dim(read_write image2d_t image);
1881 int2 __ovld __cnfn get_image_dim(read_write image2d_array_t image);
1882 #ifdef cl_khr_depth_images
1883@@ -15523,7 +15552,7 @@ int2 __ovld __cnfn get_image_dim(read_write image2d_msaa_depth_t image);
1884 int2 __ovld __cnfn get_image_dim(read_write image2d_array_msaa_t image);
1885 int2 __ovld __cnfn get_image_dim(read_write image2d_array_msaa_depth_t image);
1886 #endif //cl_khr_gl_msaa_sharing
1887-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1888+#endif //defined(__opencl_c_read_write_images)
1889
1890 /**
1891 * Return the 3D image width, height, and depth as an
1892@@ -15535,9 +15564,9 @@ int4 __ovld __cnfn get_image_dim(read_only image3d_t image);
1893 #ifdef cl_khr_3d_image_writes
1894 int4 __ovld __cnfn get_image_dim(write_only image3d_t image);
1895 #endif
1896-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1897+#if defined(__opencl_c_read_write_images)
1898 int4 __ovld __cnfn get_image_dim(read_write image3d_t image);
1899-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1900+#endif //defined(__opencl_c_read_write_images)
1901
1902 /**
1903 * Return the image array size.
1904@@ -15563,7 +15592,7 @@ size_t __ovld __cnfn get_image_array_size(write_only image2d_array_msaa_t image_
1905 size_t __ovld __cnfn get_image_array_size(write_only image2d_array_msaa_depth_t image_array);
1906 #endif //cl_khr_gl_msaa_sharing
1907
1908-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1909+#if defined(__opencl_c_read_write_images)
1910 size_t __ovld __cnfn get_image_array_size(read_write image1d_array_t image_array);
1911 size_t __ovld __cnfn get_image_array_size(read_write image2d_array_t image_array);
1912 #ifdef cl_khr_depth_images
1913@@ -15573,7 +15602,7 @@ size_t __ovld __cnfn get_image_array_size(read_write image2d_array_depth_t image
1914 size_t __ovld __cnfn get_image_array_size(read_write image2d_array_msaa_t image_array);
1915 size_t __ovld __cnfn get_image_array_size(read_write image2d_array_msaa_depth_t image_array);
1916 #endif //cl_khr_gl_msaa_sharing
1917-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1918+#endif //defined(__opencl_c_read_write_images)
1919
1920 /**
1921 * Return the number of samples associated with image
1922@@ -15589,12 +15618,12 @@ int __ovld get_image_num_samples(write_only image2d_msaa_depth_t image);
1923 int __ovld get_image_num_samples(write_only image2d_array_msaa_t image);
1924 int __ovld get_image_num_samples(write_only image2d_array_msaa_depth_t image);
1925
1926-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1927+#if defined(__opencl_c_read_write_images)
1928 int __ovld get_image_num_samples(read_write image2d_msaa_t image);
1929 int __ovld get_image_num_samples(read_write image2d_msaa_depth_t image);
1930 int __ovld get_image_num_samples(read_write image2d_array_msaa_t image);
1931 int __ovld get_image_num_samples(read_write image2d_array_msaa_depth_t image);
1932-#endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1933+#endif //defined(__opencl_c_read_write_images)
1934 #endif
1935
1936 // OpenCL v2.0 s6.13.15 - Work-group Functions
1937@@ -16630,34 +16659,38 @@ uint16 __ovld __conv intel_sub_group_shuffle_xor( uint16 x, uint c );
1938 long __ovld __conv intel_sub_group_shuffle_xor( long x, uint c );
1939 ulong __ovld __conv intel_sub_group_shuffle_xor( ulong x, uint c );
1940
1941+#if defined(__opencl_c_images)
1942 uint __ovld __conv intel_sub_group_block_read( read_only image2d_t image, int2 coord );
1943 uint2 __ovld __conv intel_sub_group_block_read2( read_only image2d_t image, int2 coord );
1944 uint4 __ovld __conv intel_sub_group_block_read4( read_only image2d_t image, int2 coord );
1945 uint8 __ovld __conv intel_sub_group_block_read8( read_only image2d_t image, int2 coord );
1946+#endif
1947
1948-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1949+#if defined(__opencl_c_read_write_images)
1950 uint __ovld __conv intel_sub_group_block_read(read_write image2d_t image, int2 coord);
1951 uint2 __ovld __conv intel_sub_group_block_read2(read_write image2d_t image, int2 coord);
1952 uint4 __ovld __conv intel_sub_group_block_read4(read_write image2d_t image, int2 coord);
1953 uint8 __ovld __conv intel_sub_group_block_read8(read_write image2d_t image, int2 coord);
1954-#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1955+#endif // defined(__opencl_c_read_write_images)
1956
1957 uint __ovld __conv intel_sub_group_block_read( const __global uint* p );
1958 uint2 __ovld __conv intel_sub_group_block_read2( const __global uint* p );
1959 uint4 __ovld __conv intel_sub_group_block_read4( const __global uint* p );
1960 uint8 __ovld __conv intel_sub_group_block_read8( const __global uint* p );
1961
1962+#if defined(__opencl_c_images)
1963 void __ovld __conv intel_sub_group_block_write(write_only image2d_t image, int2 coord, uint data);
1964 void __ovld __conv intel_sub_group_block_write2(write_only image2d_t image, int2 coord, uint2 data);
1965 void __ovld __conv intel_sub_group_block_write4(write_only image2d_t image, int2 coord, uint4 data);
1966 void __ovld __conv intel_sub_group_block_write8(write_only image2d_t image, int2 coord, uint8 data);
1967+#endif // defined(__opencl_c_images)
1968
1969-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1970+#if defined(__opencl_c_read_write_images)
1971 void __ovld __conv intel_sub_group_block_write(read_write image2d_t image, int2 coord, uint data);
1972 void __ovld __conv intel_sub_group_block_write2(read_write image2d_t image, int2 coord, uint2 data);
1973 void __ovld __conv intel_sub_group_block_write4(read_write image2d_t image, int2 coord, uint4 data);
1974 void __ovld __conv intel_sub_group_block_write8(read_write image2d_t image, int2 coord, uint8 data);
1975-#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1976+#endif // defined(__opencl_c_read_write_images)
1977
1978 void __ovld __conv intel_sub_group_block_write( __global uint* p, uint data );
1979 void __ovld __conv intel_sub_group_block_write2( __global uint* p, uint2 data );
1980@@ -16770,68 +16803,76 @@ ushort __ovld __conv intel_sub_group_scan_inclusive_min( ushort x );
1981 short __ovld __conv intel_sub_group_scan_inclusive_max( short x );
1982 ushort __ovld __conv intel_sub_group_scan_inclusive_max( ushort x );
1983
1984+#if defined(__opencl_c_images)
1985 uint __ovld __conv intel_sub_group_block_read_ui( read_only image2d_t image, int2 byte_coord );
1986 uint2 __ovld __conv intel_sub_group_block_read_ui2( read_only image2d_t image, int2 byte_coord );
1987 uint4 __ovld __conv intel_sub_group_block_read_ui4( read_only image2d_t image, int2 byte_coord );
1988 uint8 __ovld __conv intel_sub_group_block_read_ui8( read_only image2d_t image, int2 byte_coord );
1989+#endif // defined(__opencl_c_images)
1990
1991-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1992+#if defined(__opencl_c_read_write_images)
1993 uint __ovld __conv intel_sub_group_block_read_ui( read_write image2d_t image, int2 byte_coord );
1994 uint2 __ovld __conv intel_sub_group_block_read_ui2( read_write image2d_t image, int2 byte_coord );
1995 uint4 __ovld __conv intel_sub_group_block_read_ui4( read_write image2d_t image, int2 byte_coord );
1996 uint8 __ovld __conv intel_sub_group_block_read_ui8( read_write image2d_t image, int2 byte_coord );
1997-#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
1998+#endif // defined(__opencl_c_read_write_images)
1999
2000 uint __ovld __conv intel_sub_group_block_read_ui( const __global uint* p );
2001 uint2 __ovld __conv intel_sub_group_block_read_ui2( const __global uint* p );
2002 uint4 __ovld __conv intel_sub_group_block_read_ui4( const __global uint* p );
2003 uint8 __ovld __conv intel_sub_group_block_read_ui8( const __global uint* p );
2004
2005+#if defined(__opencl_c_images)
2006 void __ovld __conv intel_sub_group_block_write_ui( read_only image2d_t image, int2 byte_coord, uint data );
2007 void __ovld __conv intel_sub_group_block_write_ui2( read_only image2d_t image, int2 byte_coord, uint2 data );
2008 void __ovld __conv intel_sub_group_block_write_ui4( read_only image2d_t image, int2 byte_coord, uint4 data );
2009 void __ovld __conv intel_sub_group_block_write_ui8( read_only image2d_t image, int2 byte_coord, uint8 data );
2010+#endif //defined(__opencl_c_images)
2011
2012-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2013+#if defined(__opencl_c_read_write_images)
2014 void __ovld __conv intel_sub_group_block_write_ui( read_write image2d_t image, int2 byte_coord, uint data );
2015 void __ovld __conv intel_sub_group_block_write_ui2( read_write image2d_t image, int2 byte_coord, uint2 data );
2016 void __ovld __conv intel_sub_group_block_write_ui4( read_write image2d_t image, int2 byte_coord, uint4 data );
2017 void __ovld __conv intel_sub_group_block_write_ui8( read_write image2d_t image, int2 byte_coord, uint8 data );
2018-#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2019+#endif // defined(__opencl_c_read_write_images)
2020
2021 void __ovld __conv intel_sub_group_block_write_ui( __global uint* p, uint data );
2022 void __ovld __conv intel_sub_group_block_write_ui2( __global uint* p, uint2 data );
2023 void __ovld __conv intel_sub_group_block_write_ui4( __global uint* p, uint4 data );
2024 void __ovld __conv intel_sub_group_block_write_ui8( __global uint* p, uint8 data );
2025
2026+#if defined(__opencl_c_images)
2027 ushort __ovld __conv intel_sub_group_block_read_us( read_only image2d_t image, int2 coord );
2028 ushort2 __ovld __conv intel_sub_group_block_read_us2( read_only image2d_t image, int2 coord );
2029 ushort4 __ovld __conv intel_sub_group_block_read_us4( read_only image2d_t image, int2 coord );
2030 ushort8 __ovld __conv intel_sub_group_block_read_us8( read_only image2d_t image, int2 coord );
2031+#endif // defined(__opencl_c_images)
2032
2033-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2034+#if defined(__opencl_c_read_write_images)
2035 ushort __ovld __conv intel_sub_group_block_read_us(read_write image2d_t image, int2 coord);
2036 ushort2 __ovld __conv intel_sub_group_block_read_us2(read_write image2d_t image, int2 coord);
2037 ushort4 __ovld __conv intel_sub_group_block_read_us4(read_write image2d_t image, int2 coord);
2038 ushort8 __ovld __conv intel_sub_group_block_read_us8(read_write image2d_t image, int2 coord);
2039-#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2040+#endif // defined(__opencl_c_read_write_images)
2041
2042 ushort __ovld __conv intel_sub_group_block_read_us( const __global ushort* p );
2043 ushort2 __ovld __conv intel_sub_group_block_read_us2( const __global ushort* p );
2044 ushort4 __ovld __conv intel_sub_group_block_read_us4( const __global ushort* p );
2045 ushort8 __ovld __conv intel_sub_group_block_read_us8( const __global ushort* p );
2046
2047+#if defined(__opencl_c_images)
2048 void __ovld __conv intel_sub_group_block_write_us(write_only image2d_t image, int2 coord, ushort data);
2049 void __ovld __conv intel_sub_group_block_write_us2(write_only image2d_t image, int2 coord, ushort2 data);
2050 void __ovld __conv intel_sub_group_block_write_us4(write_only image2d_t image, int2 coord, ushort4 data);
2051 void __ovld __conv intel_sub_group_block_write_us8(write_only image2d_t image, int2 coord, ushort8 data);
2052+#endif // defined(__opencl_c_images)
2053
2054-#if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2055+#if defined(__opencl_c_read_write_images)
2056 void __ovld __conv intel_sub_group_block_write_us(read_write image2d_t image, int2 coord, ushort data);
2057 void __ovld __conv intel_sub_group_block_write_us2(read_write image2d_t image, int2 coord, ushort2 data);
2058 void __ovld __conv intel_sub_group_block_write_us4(read_write image2d_t image, int2 coord, ushort4 data);
2059 void __ovld __conv intel_sub_group_block_write_us8(read_write image2d_t image, int2 coord, ushort8 data);
2060-#endif // defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0)
2061+#endif // defined(__opencl_c_read_write_images)
2062
2063 void __ovld __conv intel_sub_group_block_write_us( __global ushort* p, ushort data );
2064 void __ovld __conv intel_sub_group_block_write_us2( __global ushort* p, ushort2 data );
2065@@ -16949,6 +16990,7 @@ short2 __ovld intel_sub_group_avc_ime_adjust_ref_offset(
2066 short2 ref_offset, ushort2 src_coord, ushort2 ref_window_size,
2067 ushort2 image_size);
2068
2069+#if defined(__opencl_c_images)
2070 intel_sub_group_avc_ime_result_t __ovld
2071 intel_sub_group_avc_ime_evaluate_with_single_reference(
2072 read_only image2d_t src_image, read_only image2d_t ref_image,
2073@@ -16989,6 +17031,7 @@ intel_sub_group_avc_ime_evaluate_with_dual_reference_streaminout(
2074 read_only image2d_t bwd_ref_image, sampler_t vme_media_sampler,
2075 intel_sub_group_avc_ime_payload_t payload,
2076 intel_sub_group_avc_ime_dual_reference_streamin_t streamin_components);
2077+#endif
2078
2079 intel_sub_group_avc_ime_single_reference_streamin_t __ovld
2080 intel_sub_group_avc_ime_get_single_reference_streamin(
2081@@ -17053,6 +17096,7 @@ intel_sub_group_avc_ref_payload_t __ovld
2082 intel_sub_group_avc_ref_set_bilinear_filter_enable(
2083 intel_sub_group_avc_ref_payload_t payload);
2084
2085+#if defined(__opencl_c_images)
2086 intel_sub_group_avc_ref_result_t __ovld
2087 intel_sub_group_avc_ref_evaluate_with_single_reference(
2088 read_only image2d_t src_image, read_only image2d_t ref_image,
2089@@ -17071,6 +17115,7 @@ intel_sub_group_avc_ref_evaluate_with_multi_reference(
2090 read_only image2d_t src_image, uint packed_reference_ids,
2091 uchar packed_reference_field_polarities, sampler_t vme_media_sampler,
2092 intel_sub_group_avc_ref_payload_t payload);
2093+#endif //defined(__opencl_c_images)
2094
2095 // SIC built-in functions
2096 intel_sub_group_avc_sic_payload_t __ovld
2097@@ -17121,6 +17166,7 @@ intel_sub_group_avc_sic_set_block_based_raw_skip_sad(
2098 uchar block_based_skip_type,
2099 intel_sub_group_avc_sic_payload_t payload);
2100
2101+#if defined(__opencl_c_images)
2102 intel_sub_group_avc_sic_result_t __ovld
2103 intel_sub_group_avc_sic_evaluate_ipe(
2104 read_only image2d_t src_image, sampler_t vme_media_sampler,
2105@@ -17143,6 +17189,7 @@ intel_sub_group_avc_sic_evaluate_with_multi_reference(
2106 read_only image2d_t src_image, uint packed_reference_ids,
2107 uchar packed_reference_field_polarities, sampler_t vme_media_sampler,
2108 intel_sub_group_avc_sic_payload_t payload);
2109+#endif //defined(__opencl_c_images)
2110
2111 uchar __ovld intel_sub_group_avc_sic_get_ipe_luma_shape(
2112 intel_sub_group_avc_sic_result_t result);
2113@@ -17529,31 +17576,23 @@ uint16 __ovld amd_sadw(uint16 src0, uint16 src1, uint16 src2);
2114 #endif // cl_amd_media_ops2
2115
2116 #if defined(cl_arm_integer_dot_product_int8)
2117-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_int8 : begin
2118 uint __ovld arm_dot(uchar4 a, uchar4 b);
2119 int __ovld arm_dot(char4 a, char4 b);
2120-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_int8 : end
2121 #endif // defined(cl_arm_integer_dot_product_int8)
2122
2123 #if defined(cl_arm_integer_dot_product_accumulate_int8)
2124-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int8 : begin
2125 uint __ovld arm_dot_acc(uchar4 a, uchar4 b, uint c);
2126 int __ovld arm_dot_acc(char4 a, char4 b, int c);
2127-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int8 : end
2128 #endif // defined(cl_arm_integer_dot_product_accumulate_int8)
2129
2130 #if defined(cl_arm_integer_dot_product_accumulate_int16)
2131-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int16 : begin
2132 uint __ovld arm_dot_acc(ushort2 a, ushort2 b, uint c);
2133 int __ovld arm_dot_acc(short2 a, short2 b, int c);
2134-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int16 : end
2135 #endif // defined(cl_arm_integer_dot_product_accumulate_int16)
2136
2137 #if defined(cl_arm_integer_dot_product_accumulate_saturate_int8)
2138-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_saturate_int8 : begin
2139 uint __ovld arm_dot_acc_sat(uchar4 a, uchar4 b, uint c);
2140 int __ovld arm_dot_acc_sat(char4 a, char4 b, int c);
2141-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_saturate_int8 : end
2142 #endif // defined(cl_arm_integer_dot_product_accumulate_saturate_int8)
2143
2144 // Disable any extensions we may have enabled previously.
2145diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp
2146index 347d992b1643..c489c8c75623 100644
2147--- a/clang/lib/Parse/ParseDecl.cpp
2148+++ b/clang/lib/Parse/ParseDecl.cpp
2149@@ -3631,8 +3631,8 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS,
2150 // C++ for OpenCL does not allow virtual function qualifier, to avoid
2151 // function pointers restricted in OpenCL v2.0 s6.9.a.
2152 if (getLangOpts().OpenCLCPlusPlus &&
2153- !getActions().getOpenCLOptions().isEnabled(
2154- "__cl_clang_function_pointers")) {
2155+ !getActions().getOpenCLOptions().isAvailableOption(
2156+ "__cl_clang_function_pointers", getLangOpts())) {
2157 DiagID = diag::err_openclcxx_virtual_function;
2158 PrevSpec = Tok.getIdentifierInfo()->getNameStart();
2159 isInvalid = true;
2160@@ -4002,8 +4002,9 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS,
2161 case tok::kw___generic:
2162 // generic address space is introduced only in OpenCL v2.0
2163 // see OpenCL C Spec v2.0 s6.5.5
2164- if (Actions.getLangOpts().OpenCLVersion < 200 &&
2165- !Actions.getLangOpts().OpenCLCPlusPlus) {
2166+ // OpenCL v3.0 introduces __opencl_c_generic_address_space
2167+ // feature macro to indicate if generic address space is supported
2168+ if (!Actions.getLangOpts().OpenCLGenericAddressSpace) {
2169 DiagID = diag::err_opencl_unknown_type_specifier;
2170 PrevSpec = Tok.getIdentifierInfo()->getNameStart();
2171 isInvalid = true;
2172@@ -5059,8 +5060,7 @@ bool Parser::isDeclarationSpecifier(bool DisambiguatingWithExpression) {
2173 default: return false;
2174
2175 case tok::kw_pipe:
2176- return (getLangOpts().OpenCL && getLangOpts().OpenCLVersion >= 200) ||
2177- getLangOpts().OpenCLCPlusPlus;
2178+ return getLangOpts().OpenCLPipe;
2179
2180 case tok::identifier: // foo::bar
2181 // Unfortunate hack to support "Class.factoryMethod" notation.
2182@@ -5587,9 +5587,7 @@ static bool isPtrOperatorToken(tok::TokenKind Kind, const LangOptions &Lang,
2183 DeclaratorContext TheContext) {
2184 if (Kind == tok::star || Kind == tok::caret)
2185 return true;
2186-
2187- if (Kind == tok::kw_pipe &&
2188- ((Lang.OpenCL && Lang.OpenCLVersion >= 200) || Lang.OpenCLCPlusPlus))
2189+ if (Kind == tok::kw_pipe && Lang.OpenCLPipe)
2190 return true;
2191
2192 if (!Lang.CPlusPlus)
2193diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp
2194index f9b852826775..948e04eafa41 100644
2195--- a/clang/lib/Parse/ParsePragma.cpp
2196+++ b/clang/lib/Parse/ParsePragma.cpp
2197@@ -771,22 +771,21 @@ void Parser::HandlePragmaOpenCLExtension() {
2198 // overriding all previously issued extension directives, but only if the
2199 // behavior is set to disable."
2200 if (Name == "all") {
2201- if (State == Disable) {
2202+ if (State == Disable)
2203 Opt.disableAll();
2204- Opt.enableSupportedCore(getLangOpts());
2205- } else {
2206+ else
2207 PP.Diag(NameLoc, diag::warn_pragma_expected_predicate) << 1;
2208- }
2209 } else if (State == Begin) {
2210 if (!Opt.isKnown(Name) || !Opt.isSupported(Name, getLangOpts())) {
2211 Opt.support(Name);
2212+ // FIXME: Default behavior of the extension pragma is not defined.
2213+ // Therefore, it should never be added by default.
2214+ Opt.acceptsPragma(Name);
2215 }
2216- Actions.setCurrentOpenCLExtension(Name);
2217 } else if (State == End) {
2218- if (Name != Actions.getCurrentOpenCLExtension())
2219- PP.Diag(NameLoc, diag::warn_pragma_begin_end_mismatch);
2220- Actions.setCurrentOpenCLExtension("");
2221- } else if (!Opt.isKnown(Name))
2222+ // There is no behavior for this directive. We only accept this for
2223+ // backward compatibility.
2224+ } else if (!Opt.isKnown(Name) || !Opt.isWithPragma(Name))
2225 PP.Diag(NameLoc, diag::warn_pragma_unknown_extension) << Ident;
2226 else if (Opt.isSupportedExtension(Name, getLangOpts()))
2227 Opt.enable(Name, State == Enable);
2228diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp
2229index 9b0f921b4269..b3b02f8d266a 100644
2230--- a/clang/lib/Parse/Parser.cpp
2231+++ b/clang/lib/Parse/Parser.cpp
2232@@ -1079,8 +1079,6 @@ Parser::ParseDeclOrFunctionDefInternal(ParsedAttributesWithRange &attrs,
2233 Decl *TheDecl = Actions.ParsedFreeStandingDeclSpec(getCurScope(), AS_none,
2234 DS, AnonRecord);
2235 DS.complete(TheDecl);
2236- if (getLangOpts().OpenCL)
2237- Actions.setCurrentOpenCLExtensionForDecl(TheDecl);
2238 if (AnonRecord) {
2239 Decl* decls[] = {AnonRecord, TheDecl};
2240 return Actions.BuildDeclaratorGroup(decls);
2241diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp
2242index da42db3e8f7b..f60708d7dc01 100644
2243--- a/clang/lib/Sema/DeclSpec.cpp
2244+++ b/clang/lib/Sema/DeclSpec.cpp
2245@@ -625,7 +625,8 @@ bool DeclSpec::SetStorageClassSpec(Sema &S, SCS SC, SourceLocation Loc,
2246 // OpenCL v1.2 s6.8 changes this to "The auto and register storage-class
2247 // specifiers are not supported."
2248 if (S.getLangOpts().OpenCL &&
2249- !S.getOpenCLOptions().isEnabled("cl_clang_storage_class_specifiers")) {
2250+ !S.getOpenCLOptions().isAvailableOption(
2251+ "cl_clang_storage_class_specifiers", S.getLangOpts())) {
2252 switch (SC) {
2253 case SCS_extern:
2254 case SCS_private_extern:
2255diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp
2256index a91291c7af38..95ba22ddf2a7 100644
2257--- a/clang/lib/Sema/Sema.cpp
2258+++ b/clang/lib/Sema/Sema.cpp
2259@@ -299,7 +299,6 @@ void Sema::Initialize() {
2260 if (getLangOpts().OpenCL) {
2261 getOpenCLOptions().addSupport(
2262 Context.getTargetInfo().getSupportedOpenCLOpts(), getLangOpts());
2263- getOpenCLOptions().enableSupportedCore(getLangOpts());
2264 addImplicitTypedef("sampler_t", Context.OCLSamplerTy);
2265 addImplicitTypedef("event_t", Context.OCLEventTy);
2266 if (getLangOpts().OpenCLCPlusPlus || getLangOpts().OpenCLVersion >= 200) {
2267@@ -309,28 +308,13 @@ void Sema::Initialize() {
2268 addImplicitTypedef("atomic_int", Context.getAtomicType(Context.IntTy));
2269 addImplicitTypedef("atomic_uint",
2270 Context.getAtomicType(Context.UnsignedIntTy));
2271- auto AtomicLongT = Context.getAtomicType(Context.LongTy);
2272- addImplicitTypedef("atomic_long", AtomicLongT);
2273- auto AtomicULongT = Context.getAtomicType(Context.UnsignedLongTy);
2274- addImplicitTypedef("atomic_ulong", AtomicULongT);
2275 auto AtomicHalfT = Context.getAtomicType(Context.HalfTy);
2276 addImplicitTypedef("atomic_half", AtomicHalfT);
2277- setOpenCLExtensionForType(AtomicHalfT, "cl_khr_fp16");
2278 addImplicitTypedef("atomic_float",
2279 Context.getAtomicType(Context.FloatTy));
2280- auto AtomicDoubleT = Context.getAtomicType(Context.DoubleTy);
2281- addImplicitTypedef("atomic_double", AtomicDoubleT);
2282 // OpenCLC v2.0, s6.13.11.6 requires that atomic_flag is implemented as
2283 // 32-bit integer and OpenCLC v2.0, s6.1.1 int is always 32-bit wide.
2284 addImplicitTypedef("atomic_flag", Context.getAtomicType(Context.IntTy));
2285- auto AtomicIntPtrT = Context.getAtomicType(Context.getIntPtrType());
2286- addImplicitTypedef("atomic_intptr_t", AtomicIntPtrT);
2287- auto AtomicUIntPtrT = Context.getAtomicType(Context.getUIntPtrType());
2288- addImplicitTypedef("atomic_uintptr_t", AtomicUIntPtrT);
2289- auto AtomicSizeT = Context.getAtomicType(Context.getSizeType());
2290- addImplicitTypedef("atomic_size_t", AtomicSizeT);
2291- auto AtomicPtrDiffT = Context.getAtomicType(Context.getPointerDiffType());
2292- addImplicitTypedef("atomic_ptrdiff_t", AtomicPtrDiffT);
2293
2294 // OpenCL v2.0 s6.13.11.6:
2295 // - The atomic_long and atomic_ulong types are supported if the
2296@@ -343,31 +327,47 @@ void Sema::Initialize() {
2297 // atomic_intptr_t, atomic_uintptr_t, atomic_size_t and
2298 // atomic_ptrdiff_t are supported if the cl_khr_int64_base_atomics and
2299 // cl_khr_int64_extended_atomics extensions are supported.
2300- std::vector<QualType> Atomic64BitTypes;
2301- Atomic64BitTypes.push_back(AtomicLongT);
2302- Atomic64BitTypes.push_back(AtomicULongT);
2303- Atomic64BitTypes.push_back(AtomicDoubleT);
2304- if (Context.getTypeSize(AtomicSizeT) == 64) {
2305- Atomic64BitTypes.push_back(AtomicSizeT);
2306- Atomic64BitTypes.push_back(AtomicIntPtrT);
2307- Atomic64BitTypes.push_back(AtomicUIntPtrT);
2308- Atomic64BitTypes.push_back(AtomicPtrDiffT);
2309+ auto AddPointerSizeDependentTypes = [&]() {
2310+ auto AtomicSizeT = Context.getAtomicType(Context.getSizeType());
2311+ auto AtomicIntPtrT = Context.getAtomicType(Context.getIntPtrType());
2312+ auto AtomicUIntPtrT = Context.getAtomicType(Context.getUIntPtrType());
2313+ auto AtomicPtrDiffT =
2314+ Context.getAtomicType(Context.getPointerDiffType());
2315+ addImplicitTypedef("atomic_size_t", AtomicSizeT);
2316+ addImplicitTypedef("atomic_intptr_t", AtomicIntPtrT);
2317+ addImplicitTypedef("atomic_uintptr_t", AtomicUIntPtrT);
2318+ addImplicitTypedef("atomic_ptrdiff_t", AtomicPtrDiffT);
2319+ };
2320+
2321+ if (Context.getTypeSize(Context.getSizeType()) == 32) {
2322+ AddPointerSizeDependentTypes();
2323 }
2324- for (auto &I : Atomic64BitTypes)
2325- setOpenCLExtensionForType(I,
2326- "cl_khr_int64_base_atomics cl_khr_int64_extended_atomics");
2327
2328- setOpenCLExtensionForType(AtomicDoubleT, "cl_khr_fp64");
2329+ std::vector<QualType> Atomic64BitTypes;
2330+ if (getOpenCLOptions().isSupported("cl_khr_int64_base_atomics",
2331+ getLangOpts()) &&
2332+ getOpenCLOptions().isSupported("cl_khr_int64_extended_atomics",
2333+ getLangOpts())) {
2334+ if (getOpenCLOptions().isSupported("cl_khr_fp64", getLangOpts())) {
2335+ auto AtomicDoubleT = Context.getAtomicType(Context.DoubleTy);
2336+ addImplicitTypedef("atomic_double", AtomicDoubleT);
2337+ Atomic64BitTypes.push_back(AtomicDoubleT);
2338+ }
2339+ auto AtomicLongT = Context.getAtomicType(Context.LongTy);
2340+ auto AtomicULongT = Context.getAtomicType(Context.UnsignedLongTy);
2341+
2342+ addImplicitTypedef("atomic_long", AtomicLongT);
2343+ addImplicitTypedef("atomic_ulong", AtomicULongT);
2344+ if (Context.getTypeSize(Context.getSizeType()) == 64) {
2345+ AddPointerSizeDependentTypes();
2346+ }
2347+ }
2348 }
2349
2350- setOpenCLExtensionForType(Context.DoubleTy, "cl_khr_fp64");
2351-
2352-#define GENERIC_IMAGE_TYPE_EXT(Type, Id, Ext) \
2353- setOpenCLExtensionForType(Context.Id, Ext);
2354-#include "clang/Basic/OpenCLImageTypes.def"
2355-#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \
2356- addImplicitTypedef(#ExtType, Context.Id##Ty); \
2357- setOpenCLExtensionForType(Context.Id##Ty, #Ext);
2358+#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \
2359+ if (getOpenCLOptions().isSupported(#Ext, getLangOpts())) { \
2360+ addImplicitTypedef(#ExtType, Context.Id##Ty); \
2361+ }
2362 #include "clang/Basic/OpenCLExtensionTypes.def"
2363 }
2364
2365@@ -2451,114 +2451,3 @@ const llvm::MapVector<FieldDecl *, Sema::DeleteLocs> &
2366 Sema::getMismatchingDeleteExpressions() const {
2367 return DeleteExprs;
2368 }
2369-
2370-void Sema::setOpenCLExtensionForType(QualType T, llvm::StringRef ExtStr) {
2371- if (ExtStr.empty())
2372- return;
2373- llvm::SmallVector<StringRef, 1> Exts;
2374- ExtStr.split(Exts, " ", /* limit */ -1, /* keep empty */ false);
2375- auto CanT = T.getCanonicalType().getTypePtr();
2376- for (auto &I : Exts)
2377- OpenCLTypeExtMap[CanT].insert(I.str());
2378-}
2379-
2380-void Sema::setOpenCLExtensionForDecl(Decl *FD, StringRef ExtStr) {
2381- llvm::SmallVector<StringRef, 1> Exts;
2382- ExtStr.split(Exts, " ", /* limit */ -1, /* keep empty */ false);
2383- if (Exts.empty())
2384- return;
2385- for (auto &I : Exts)
2386- OpenCLDeclExtMap[FD].insert(I.str());
2387-}
2388-
2389-void Sema::setCurrentOpenCLExtensionForType(QualType T) {
2390- if (CurrOpenCLExtension.empty())
2391- return;
2392- setOpenCLExtensionForType(T, CurrOpenCLExtension);
2393-}
2394-
2395-void Sema::setCurrentOpenCLExtensionForDecl(Decl *D) {
2396- if (CurrOpenCLExtension.empty())
2397- return;
2398- setOpenCLExtensionForDecl(D, CurrOpenCLExtension);
2399-}
2400-
2401-std::string Sema::getOpenCLExtensionsFromDeclExtMap(FunctionDecl *FD) {
2402- if (!OpenCLDeclExtMap.empty())
2403- return getOpenCLExtensionsFromExtMap(FD, OpenCLDeclExtMap);
2404-
2405- return "";
2406-}
2407-
2408-std::string Sema::getOpenCLExtensionsFromTypeExtMap(FunctionType *FT) {
2409- if (!OpenCLTypeExtMap.empty())
2410- return getOpenCLExtensionsFromExtMap(FT, OpenCLTypeExtMap);
2411-
2412- return "";
2413-}
2414-
2415-template <typename T, typename MapT>
2416-std::string Sema::getOpenCLExtensionsFromExtMap(T *FDT, MapT &Map) {
2417- auto Loc = Map.find(FDT);
2418- return llvm::join(Loc->second, " ");
2419-}
2420-
2421-bool Sema::isOpenCLDisabledDecl(Decl *FD) {
2422- auto Loc = OpenCLDeclExtMap.find(FD);
2423- if (Loc == OpenCLDeclExtMap.end())
2424- return false;
2425- for (auto &I : Loc->second) {
2426- if (!getOpenCLOptions().isEnabled(I))
2427- return true;
2428- }
2429- return false;
2430-}
2431-
2432-template <typename T, typename DiagLocT, typename DiagInfoT, typename MapT>
2433-bool Sema::checkOpenCLDisabledTypeOrDecl(T D, DiagLocT DiagLoc,
2434- DiagInfoT DiagInfo, MapT &Map,
2435- unsigned Selector,
2436- SourceRange SrcRange) {
2437- auto Loc = Map.find(D);
2438- if (Loc == Map.end())
2439- return false;
2440- bool Disabled = false;
2441- for (auto &I : Loc->second) {
2442- if (I != CurrOpenCLExtension && !getOpenCLOptions().isEnabled(I)) {
2443- Diag(DiagLoc, diag::err_opencl_requires_extension) << Selector << DiagInfo
2444- << I << SrcRange;
2445- Disabled = true;
2446- }
2447- }
2448- return Disabled;
2449-}
2450-
2451-bool Sema::checkOpenCLDisabledTypeDeclSpec(const DeclSpec &DS, QualType QT) {
2452- // Check extensions for declared types.
2453- Decl *Decl = nullptr;
2454- if (auto TypedefT = dyn_cast<TypedefType>(QT.getTypePtr()))
2455- Decl = TypedefT->getDecl();
2456- if (auto TagT = dyn_cast<TagType>(QT.getCanonicalType().getTypePtr()))
2457- Decl = TagT->getDecl();
2458- auto Loc = DS.getTypeSpecTypeLoc();
2459-
2460- // Check extensions for vector types.
2461- // e.g. double4 is not allowed when cl_khr_fp64 is absent.
2462- if (QT->isExtVectorType()) {
2463- auto TypePtr = QT->castAs<ExtVectorType>()->getElementType().getTypePtr();
2464- return checkOpenCLDisabledTypeOrDecl(TypePtr, Loc, QT, OpenCLTypeExtMap);
2465- }
2466-
2467- if (checkOpenCLDisabledTypeOrDecl(Decl, Loc, QT, OpenCLDeclExtMap))
2468- return true;
2469-
2470- // Check extensions for builtin types.
2471- return checkOpenCLDisabledTypeOrDecl(QT.getCanonicalType().getTypePtr(), Loc,
2472- QT, OpenCLTypeExtMap);
2473-}
2474-
2475-bool Sema::checkOpenCLDisabledDecl(const NamedDecl &D, const Expr &E) {
2476- IdentifierInfo *FnName = D.getIdentifier();
2477- return checkOpenCLDisabledTypeOrDecl(&D, E.getBeginLoc(), FnName,
2478- OpenCLDeclExtMap, 1, D.getSourceRange());
2479-}
2480diff --git a/clang/lib/Sema/SemaCast.cpp b/clang/lib/Sema/SemaCast.cpp
2481index 671820afd485..22ec2c7ed8bb 100644
2482--- a/clang/lib/Sema/SemaCast.cpp
2483+++ b/clang/lib/Sema/SemaCast.cpp
2484@@ -2916,8 +2916,8 @@ void CastOperation::CheckCStyleCast() {
2485 }
2486 }
2487
2488- if (Self.getLangOpts().OpenCL &&
2489- !Self.getOpenCLOptions().isEnabled("cl_khr_fp16")) {
2490+ if (Self.getLangOpts().OpenCL && !Self.getOpenCLOptions().isAvailableOption(
2491+ "cl_khr_fp16", Self.getLangOpts())) {
2492 if (DestType->isHalfType()) {
2493 Self.Diag(SrcExpr.get()->getBeginLoc(), diag::err_opencl_cast_to_half)
2494 << DestType << SrcExpr.get()->getSourceRange();
2495diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
2496index 2b55712d44c2..b35ac5af9d75 100644
2497--- a/clang/lib/Sema/SemaChecking.cpp
2498+++ b/clang/lib/Sema/SemaChecking.cpp
2499@@ -837,7 +837,8 @@ static bool checkOpenCLBlockArgs(Sema &S, Expr *BlockArg) {
2500 }
2501
2502 static bool checkOpenCLSubgroupExt(Sema &S, CallExpr *Call) {
2503- if (!S.getOpenCLOptions().isEnabled("cl_khr_subgroups")) {
2504+ if (!S.getOpenCLOptions().isAvailableOption("cl_khr_subgroups",
2505+ S.getLangOpts())) {
2506 S.Diag(Call->getBeginLoc(), diag::err_opencl_requires_extension)
2507 << 1 << Call->getDirectCallee() << "cl_khr_subgroups";
2508 return true;
2509diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
2510index 1f7ab49ccdd7..420ba7a5498f 100644
2511--- a/clang/lib/Sema/SemaDecl.cpp
2512+++ b/clang/lib/Sema/SemaDecl.cpp
2513@@ -5559,9 +5559,6 @@ Decl *Sema::ActOnDeclarator(Scope *S, Declarator &D) {
2514 Dcl && Dcl->getDeclContext()->isFileContext())
2515 Dcl->setTopLevelDeclInObjCContainer();
2516
2517- if (getLangOpts().OpenCL)
2518- setCurrentOpenCLExtensionForDecl(Dcl);
2519-
2520 return Dcl;
2521 }
2522
2523@@ -6341,7 +6338,11 @@ void Sema::deduceOpenCLAddressSpace(ValueDecl *Decl) {
2524 if (Type->isSamplerT() || Type->isVoidType())
2525 return;
2526 LangAS ImplAS = LangAS::opencl_private;
2527- if ((getLangOpts().OpenCLCPlusPlus || getLangOpts().OpenCLVersion >= 200) &&
2528+ // OpenCL C v3.0 s6.7.8 - For OpenCL C 2.0 or with the
2529+ // __opencl_c_program_scope_global_variables feature, the address space
2530+ // for a variable at program scope or a static or extern variable inside
2531+ // a function are inferred to be __global.
2532+ if (getOpenCLOptions().areProgramScopeVariablesSupported(getLangOpts()) &&
2533 Var->hasGlobalStorage())
2534 ImplAS = LangAS::opencl_global;
2535 // If the original type from a decayed type is an array type and that array
2536@@ -6757,7 +6758,8 @@ static bool diagnoseOpenCLTypes(Scope *S, Sema &Se, Declarator &D,
2537 }
2538
2539 // OpenCL v1.0 s6.8.a.3: Pointers to functions are not allowed.
2540- if (!Se.getOpenCLOptions().isEnabled("__cl_clang_function_pointers")) {
2541+ if (!Se.getOpenCLOptions().isAvailableOption("__cl_clang_function_pointers",
2542+ Se.getLangOpts())) {
2543 QualType NR = R;
2544 while (NR->isPointerType() || NR->isMemberFunctionPointerType()) {
2545 if (NR->isFunctionPointerType() || NR->isMemberFunctionPointerType()) {
2546@@ -6769,7 +6771,8 @@ static bool diagnoseOpenCLTypes(Scope *S, Sema &Se, Declarator &D,
2547 }
2548 }
2549
2550- if (!Se.getOpenCLOptions().isEnabled("cl_khr_fp16")) {
2551+ if (!Se.getOpenCLOptions().isAvailableOption("cl_khr_fp16",
2552+ Se.getLangOpts())) {
2553 // OpenCL v1.2 s6.1.1.1: reject declaring variables of the half and
2554 // half array type (unless the cl_khr_fp16 extension is enabled).
2555 if (Se.Context.getBaseElementType(R)->isHalfType()) {
2556@@ -7878,7 +7881,8 @@ void Sema::CheckVariableDeclarationType(VarDecl *NewVD) {
2557 // OpenCL v1.2 s6.8 - The static qualifier is valid only in program
2558 // scope.
2559 if (getLangOpts().OpenCLVersion == 120 &&
2560- !getOpenCLOptions().isEnabled("cl_clang_storage_class_specifiers") &&
2561+ !getOpenCLOptions().isAvailableOption("cl_clang_storage_class_specifiers",
2562+ getLangOpts()) &&
2563 NewVD->isStaticLocal()) {
2564 Diag(NewVD->getLocation(), diag::err_static_function_scope);
2565 NewVD->setInvalidDecl();
2566@@ -7907,23 +7911,16 @@ void Sema::CheckVariableDeclarationType(VarDecl *NewVD) {
2567 return;
2568 }
2569 }
2570- // OpenCL C v1.2 s6.5 - All program scope variables must be declared in the
2571- // __constant address space.
2572- // OpenCL C v2.0 s6.5.1 - Variables defined at program scope and static
2573- // variables inside a function can also be declared in the global
2574- // address space.
2575- // C++ for OpenCL inherits rule from OpenCL C v2.0.
2576 // FIXME: Adding local AS in C++ for OpenCL might make sense.
2577 if (NewVD->isFileVarDecl() || NewVD->isStaticLocal() ||
2578 NewVD->hasExternalStorage()) {
2579- if (!T->isSamplerT() &&
2580- !T->isDependentType() &&
2581+ if (!T->isSamplerT() && !T->isDependentType() &&
2582 !(T.getAddressSpace() == LangAS::opencl_constant ||
2583 (T.getAddressSpace() == LangAS::opencl_global &&
2584- (getLangOpts().OpenCLVersion == 200 ||
2585- getLangOpts().OpenCLCPlusPlus)))) {
2586+ getOpenCLOptions().areProgramScopeVariablesSupported(
2587+ getLangOpts())))) {
2588 int Scope = NewVD->isStaticLocal() | NewVD->hasExternalStorage() << 1;
2589- if (getLangOpts().OpenCLVersion == 200 || getLangOpts().OpenCLCPlusPlus)
2590+ if (getOpenCLOptions().areProgramScopeVariablesSupported(getLangOpts()))
2591 Diag(NewVD->getLocation(), diag::err_opencl_global_invalid_addr_space)
2592 << Scope << "global or constant";
2593 else
2594@@ -8650,7 +8647,8 @@ static OpenCLParamType getOpenCLKernelParameterType(Sema &S, QualType PT) {
2595 // OpenCL extension spec v1.2 s9.5:
2596 // This extension adds support for half scalar and vector types as built-in
2597 // types that can be used for arithmetic operations, conversions etc.
2598- if (!S.getOpenCLOptions().isEnabled("cl_khr_fp16") && PT->isHalfType())
2599+ if (!S.getOpenCLOptions().isAvailableOption("cl_khr_fp16", S.getLangOpts()) &&
2600+ PT->isHalfType())
2601 return InvalidKernelParam;
2602
2603 if (PT->isRecordType())
2604diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
2605index 30d08b3d4ac0..a06fcfb8cc22 100644
2606--- a/clang/lib/Sema/SemaDeclAttr.cpp
2607+++ b/clang/lib/Sema/SemaDeclAttr.cpp
2608@@ -7308,16 +7308,21 @@ static void handleOpenCLAccessAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
2609 }
2610 }
2611
2612- // OpenCL v2.0 s6.6 - read_write can be used for image types to specify that an
2613- // image object can be read and written.
2614- // OpenCL v2.0 s6.13.6 - A kernel cannot read from and write to the same pipe
2615- // object. Using the read_write (or __read_write) qualifier with the pipe
2616- // qualifier is a compilation error.
2617+ // OpenCL v2.0 s6.6 - read_write can be used for image types to specify that
2618+ // an image object can be read and written. OpenCL v2.0 s6.13.6 - A kernel
2619+ // cannot read from and write to the same pipe object. Using the read_write
2620+ // (or __read_write) qualifier with the pipe qualifier is a compilation error.
2621+ // OpenCL v3.0 s6.8 - For OpenCL C 2.0, or with the
2622+ // __opencl_c_read_write_images feature, image objects specified as arguments
2623+ // to a kernel can additionally be declared to be read-write.
2624 if (const auto *PDecl = dyn_cast<ParmVarDecl>(D)) {
2625 const Type *DeclTy = PDecl->getType().getCanonicalType().getTypePtr();
2626 if (AL.getAttrName()->getName().find("read_write") != StringRef::npos) {
2627 if ((!S.getLangOpts().OpenCLCPlusPlus &&
2628- S.getLangOpts().OpenCLVersion < 200) ||
2629+ (S.getLangOpts().OpenCLVersion < 200) ||
2630+ (S.getLangOpts().OpenCLVersion == 300 &&
2631+ !S.getOpenCLOptions().isSupported("__opencl_c_read_write_images",
2632+ S.getLangOpts()))) ||
2633 DeclTy->isPipeType()) {
2634 S.Diag(AL.getLoc(), diag::err_opencl_invalid_read_write)
2635 << AL << PDecl->getType() << DeclTy->isImageType();
2636diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
2637index ae8508d6c601..cc29938c5ea5 100644
2638--- a/clang/lib/Sema/SemaExpr.cpp
2639+++ b/clang/lib/Sema/SemaExpr.cpp
2640@@ -657,7 +657,8 @@ ExprResult Sema::DefaultLvalueConversion(Expr *E) {
2641 return E;
2642
2643 // OpenCL usually rejects direct accesses to values of 'half' type.
2644- if (getLangOpts().OpenCL && !getOpenCLOptions().isEnabled("cl_khr_fp16") &&
2645+ if (getLangOpts().OpenCL &&
2646+ !getOpenCLOptions().isAvailableOption("cl_khr_fp16", getLangOpts()) &&
2647 T->isHalfType()) {
2648 Diag(E->getExprLoc(), diag::err_opencl_half_load_store)
2649 << 0 << T;
2650@@ -829,10 +830,10 @@ ExprResult Sema::DefaultArgumentPromotion(Expr *E) {
2651 if (BTy && (BTy->getKind() == BuiltinType::Half ||
2652 BTy->getKind() == BuiltinType::Float)) {
2653 if (getLangOpts().OpenCL &&
2654- !getOpenCLOptions().isEnabled("cl_khr_fp64")) {
2655- if (BTy->getKind() == BuiltinType::Half) {
2656- E = ImpCastExprToType(E, Context.FloatTy, CK_FloatingCast).get();
2657- }
2658+ !getOpenCLOptions().isAvailableOption("cl_khr_fp64", getLangOpts())) {
2659+ if (BTy->getKind() == BuiltinType::Half) {
2660+ E = ImpCastExprToType(E, Context.FloatTy, CK_FloatingCast).get();
2661+ }
2662 } else {
2663 E = ImpCastExprToType(E, Context.DoubleTy, CK_FloatingCast).get();
2664 }
2665@@ -3819,7 +3820,7 @@ ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {
2666 } else if (Literal.isFloatingLiteral()) {
2667 QualType Ty;
2668 if (Literal.isHalf){
2669- if (getOpenCLOptions().isEnabled("cl_khr_fp16"))
2670+ if (getOpenCLOptions().isAvailableOption("cl_khr_fp16", getLangOpts()))
2671 Ty = Context.HalfTy;
2672 else {
2673 Diag(Tok.getLocation(), diag::err_half_const_requires_fp16);
2674@@ -3843,10 +3844,11 @@ ExprResult Sema::ActOnNumericConstant(const Token &Tok, Scope *UDLScope) {
2675 if (Ty->castAs<BuiltinType>()->getKind() != BuiltinType::Float) {
2676 Res = ImpCastExprToType(Res, Context.FloatTy, CK_FloatingCast).get();
2677 }
2678- } else if (getLangOpts().OpenCL &&
2679- !getOpenCLOptions().isEnabled("cl_khr_fp64")) {
2680+ } else if (getLangOpts().OpenCL && !getOpenCLOptions().isAvailableOption(
2681+ "cl_khr_fp64", getLangOpts())) {
2682 // Impose single-precision float type when cl_khr_fp64 is not enabled.
2683- Diag(Tok.getLocation(), diag::warn_double_const_requires_fp64);
2684+ Diag(Tok.getLocation(), diag::warn_double_const_requires_fp64)
2685+ << (getLangOpts().OpenCLVersion >= 300);
2686 Res = ImpCastExprToType(Res, Context.FloatTy, CK_FloatingCast).get();
2687 }
2688 }
2689@@ -6468,9 +6470,6 @@ ExprResult Sema::BuildCallExpr(Scope *Scope, Expr *Fn, SourceLocation LParenLoc,
2690 FD, /*Complain=*/true, Fn->getBeginLoc()))
2691 return ExprError();
2692
2693- if (getLangOpts().OpenCL && checkOpenCLDisabledDecl(*FD, *Fn))
2694- return ExprError();
2695-
2696 checkDirectCallValidity(*this, Fn, FD, ArgExprs);
2697 }
2698
2699@@ -12900,7 +12899,8 @@ QualType Sema::CheckAssignmentOperands(Expr *LHSExpr, ExprResult &RHS,
2700 // OpenCL v1.2 s6.1.1.1 p2:
2701 // The half data type can only be used to declare a pointer to a buffer that
2702 // contains half values
2703- if (getLangOpts().OpenCL && !getOpenCLOptions().isEnabled("cl_khr_fp16") &&
2704+ if (getLangOpts().OpenCL &&
2705+ !getOpenCLOptions().isAvailableOption("cl_khr_fp16", getLangOpts()) &&
2706 LHSType->isHalfType()) {
2707 Diag(Loc, diag::err_opencl_half_load_store) << 1
2708 << LHSType.getUnqualifiedType();
2709diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
2710index f4493d84238d..0e4259bfce09 100644
2711--- a/clang/lib/Sema/SemaInit.cpp
2712+++ b/clang/lib/Sema/SemaInit.cpp
2713@@ -5572,8 +5572,8 @@ static bool TryOCLZeroOpaqueTypeInitialization(Sema &S,
2714 // We should allow zero initialization for all types defined in the
2715 // cl_intel_device_side_avc_motion_estimation extension, except
2716 // intel_sub_group_avc_mce_payload_t and intel_sub_group_avc_mce_result_t.
2717- if (S.getOpenCLOptions().isEnabled(
2718- "cl_intel_device_side_avc_motion_estimation") &&
2719+ if (S.getOpenCLOptions().isAvailableOption(
2720+ "cl_intel_device_side_avc_motion_estimation", S.getLangOpts()) &&
2721 DestType->isOCLIntelSubgroupAVCType()) {
2722 if (DestType->isOCLIntelSubgroupAVCMcePayloadType() ||
2723 DestType->isOCLIntelSubgroupAVCMceResultType())
2724@@ -8758,8 +8758,8 @@ ExprResult InitializationSequence::Perform(Sema &S,
2725 unsigned AddressingMode = (0x0E & SamplerValue) >> 1;
2726 unsigned FilterMode = (0x30 & SamplerValue) >> 4;
2727 if (FilterMode != 1 && FilterMode != 2 &&
2728- !S.getOpenCLOptions().isEnabled(
2729- "cl_intel_device_side_avc_motion_estimation"))
2730+ !S.getOpenCLOptions().isAvailableOption(
2731+ "cl_intel_device_side_avc_motion_estimation", S.getLangOpts()))
2732 S.Diag(Kind.getLocation(),
2733 diag::warn_sampler_initializer_invalid_bits)
2734 << "Filter Mode";
2735diff --git a/clang/lib/Sema/SemaLookup.cpp b/clang/lib/Sema/SemaLookup.cpp
2736index 29038ab9fe1c..12f58556c9dd 100644
2737--- a/clang/lib/Sema/SemaLookup.cpp
2738+++ b/clang/lib/Sema/SemaLookup.cpp
2739@@ -743,18 +743,6 @@ static void GetOpenCLBuiltinFctOverloads(
2740 }
2741 }
2742
2743-/// Add extensions to the function declaration.
2744-/// \param S (in/out) The Sema instance.
2745-/// \param BIDecl (in) Description of the builtin.
2746-/// \param FDecl (in/out) FunctionDecl instance.
2747-static void AddOpenCLExtensions(Sema &S, const OpenCLBuiltinStruct &BIDecl,
2748- FunctionDecl *FDecl) {
2749- // Fetch extension associated with a function prototype.
2750- StringRef E = FunctionExtensionTable[BIDecl.Extension];
2751- if (E != "")
2752- S.setOpenCLExtensionForDecl(FDecl, E);
2753-}
2754-
2755 /// When trying to resolve a function name, if isOpenCLBuiltin() returns a
2756 /// non-null <Index, Len> pair, then the name is referencing an OpenCL
2757 /// builtin function. Add all candidate signatures to the LookUpResult.
2758@@ -789,7 +777,13 @@ static void InsertOCLBuiltinDeclarationsFromTable(Sema &S, LookupResult &LR,
2759 if ((OpenCLBuiltin.MaxVersion != 0) &&
2760 (OpenCLVersion >= OpenCLBuiltin.MaxVersion))
2761 continue;
2762-
2763+
2764+ // Ignore this builtin function if it carries an extension macro that is
2765+ // not defined. This indicates that the extension is not supported by the
2766+ // target, so the builtin function should not be available.
2767+ StringRef Ext = FunctionExtensionTable[OpenCLBuiltin.Extension];
2768+ if (!Ext.empty() && !S.getPreprocessor().isMacroDefined(Ext))
2769+ continue;
2770 SmallVector<QualType, 1> RetTypes;
2771 SmallVector<SmallVector<QualType, 1>, 5> ArgTypes;
2772
2773@@ -843,8 +837,6 @@ static void InsertOCLBuiltinDeclarationsFromTable(Sema &S, LookupResult &LR,
2774 if (!S.getLangOpts().OpenCLCPlusPlus)
2775 NewOpenCLBuiltin->addAttr(OverloadableAttr::CreateImplicit(Context));
2776
2777- AddOpenCLExtensions(S, OpenCLBuiltin, NewOpenCLBuiltin);
2778-
2779 LR.addDecl(NewOpenCLBuiltin);
2780 }
2781 }
2782diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
2783index 7fe7466725fa..05815bb6e38d 100644
2784--- a/clang/lib/Sema/SemaOverload.cpp
2785+++ b/clang/lib/Sema/SemaOverload.cpp
2786@@ -6479,12 +6479,6 @@ void Sema::AddOverloadCandidate(
2787 Candidate.DeductionFailure.Data = FailedAttr;
2788 return;
2789 }
2790-
2791- if (LangOpts.OpenCL && isOpenCLDisabledDecl(Function)) {
2792- Candidate.Viable = false;
2793- Candidate.FailureKind = ovl_fail_ext_disabled;
2794- return;
2795- }
2796 }
2797
2798 ObjCMethodDecl *
2799@@ -11092,14 +11086,6 @@ static void DiagnoseFailedExplicitSpec(Sema &S, OverloadCandidate *Cand) {
2800 << (ES.getExpr() ? ES.getExpr()->getSourceRange() : SourceRange());
2801 }
2802
2803-static void DiagnoseOpenCLExtensionDisabled(Sema &S, OverloadCandidate *Cand) {
2804- FunctionDecl *Callee = Cand->Function;
2805-
2806- S.Diag(Callee->getLocation(),
2807- diag::note_ovl_candidate_disabled_by_extension)
2808- << S.getOpenCLExtensionsFromDeclExtMap(Callee);
2809-}
2810-
2811 /// Generates a 'note' diagnostic for an overload candidate. We've
2812 /// already generated a primary error at the call site.
2813 ///
2814@@ -11195,9 +11181,6 @@ static void NoteFunctionCandidate(Sema &S, OverloadCandidate *Cand,
2815 case ovl_fail_explicit:
2816 return DiagnoseFailedExplicitSpec(S, Cand);
2817
2818- case ovl_fail_ext_disabled:
2819- return DiagnoseOpenCLExtensionDisabled(S, Cand);
2820-
2821 case ovl_fail_inhctor_slice:
2822 // It's generally not interesting to note copy/move constructors here.
2823 if (cast<CXXConstructorDecl>(Fn)->isCopyOrMoveConstructor())
2824diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp
2825index 4178024d1264..e44a25c6aead 100644
2826--- a/clang/lib/Sema/SemaType.cpp
2827+++ b/clang/lib/Sema/SemaType.cpp
2828@@ -1548,6 +1548,16 @@ static QualType ConvertDeclSpecToType(TypeProcessingState &state) {
2829 Result = Context.LongDoubleTy;
2830 else
2831 Result = Context.DoubleTy;
2832+ if (S.getLangOpts().OpenCL) {
2833+ if (!S.getOpenCLOptions().isSupported("cl_khr_fp64", S.getLangOpts()))
2834+ S.Diag(DS.getTypeSpecTypeLoc(), diag::err_opencl_requires_extension)
2835+ << 0 << Result
2836+ << (S.getLangOpts().OpenCLVersion == 300
2837+ ? "cl_khr_fp64 and __opencl_c_fp64"
2838+ : "cl_khr_fp64");
2839+ else if (!S.getOpenCLOptions().isAvailableOption("cl_khr_fp64", S.getLangOpts()))
2840+ S.Diag(DS.getTypeSpecTypeLoc(), diag::ext_opencl_double_without_pragma);
2841+ }
2842 break;
2843 case DeclSpec::TST_float128:
2844 if (!S.Context.getTargetInfo().hasFloat128Type() &&
2845@@ -1723,10 +1733,33 @@ static QualType ConvertDeclSpecToType(TypeProcessingState &state) {
2846 if (Result->containsErrors())
2847 declarator.setInvalidType();
2848
2849- if (S.getLangOpts().OpenCL &&
2850- S.checkOpenCLDisabledTypeDeclSpec(DS, Result))
2851- declarator.setInvalidType(true);
2852-
2853+ if (S.getLangOpts().OpenCL) {
2854+ const auto &OpenCLOptions = S.getOpenCLOptions();
2855+ bool IsOpenCLC30 = (S.getLangOpts().OpenCLVersion == 300);
2856+ // OpenCL C v3.0 s6.3.3 - OpenCL image types require __opencl_c_images
2857+ // support.
2858+ // OpenCL C v3.0 s6.2.1 - OpenCL 3d image write types requires support
2859+ // for OpenCL C 2.0, or OpenCL C 3.0 or newer and the
2860+ // __opencl_c_3d_image_writes feature. OpenCL C v3.0 API s4.2 - For devices
2861+ // that support OpenCL 3.0, cl_khr_3d_image_writes must be returned when and
2862+ // only when the optional feature is supported
2863+ if ((Result->isImageType() || Result->isSamplerT()) &&
2864+ (IsOpenCLC30 &&
2865+ !OpenCLOptions.isSupported("__opencl_c_images", S.getLangOpts()))) {
2866+ S.Diag(DS.getTypeSpecTypeLoc(), diag::err_opencl_requires_extension)
2867+ << 0 << Result << "__opencl_c_images";
2868+ declarator.setInvalidType();
2869+ } else if (Result->isOCLImage3dWOType() &&
2870+ !OpenCLOptions.isSupported("cl_khr_3d_image_writes",
2871+ S.getLangOpts())) {
2872+ S.Diag(DS.getTypeSpecTypeLoc(), diag::err_opencl_requires_extension)
2873+ << 0 << Result
2874+ << (IsOpenCLC30
2875+ ? "cl_khr_3d_image_writes and __opencl_c_3d_image_writes"
2876+ : "cl_khr_3d_image_writes");
2877+ declarator.setInvalidType();
2878+ }
2879+ }
2880 bool IsFixedPointType = DS.getTypeSpecType() == DeclSpec::TST_accum ||
2881 DS.getTypeSpecType() == DeclSpec::TST_fract;
2882
2883@@ -2060,8 +2093,7 @@ static QualType deduceOpenCLPointeeAddrSpace(Sema &S, QualType PointeeType) {
2884 !PointeeType->isSamplerT() &&
2885 !PointeeType.hasAddressSpace())
2886 PointeeType = S.getASTContext().getAddrSpaceQualType(
2887- PointeeType,
2888- S.getLangOpts().OpenCLCPlusPlus || S.getLangOpts().OpenCLVersion == 200
2889+ PointeeType, S.getLangOpts().OpenCLGenericAddressSpace
2890 ? LangAS::opencl_generic
2891 : LangAS::opencl_private);
2892 return PointeeType;
2893@@ -2090,7 +2122,8 @@ QualType Sema::BuildPointerType(QualType T,
2894 }
2895
2896 if (T->isFunctionType() && getLangOpts().OpenCL &&
2897- !getOpenCLOptions().isEnabled("__cl_clang_function_pointers")) {
2898+ !getOpenCLOptions().isAvailableOption("__cl_clang_function_pointers",
2899+ getLangOpts())) {
2900 Diag(Loc, diag::err_opencl_function_pointer);
2901 return QualType();
2902 }
2903@@ -4994,7 +5027,8 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
2904 // FIXME: This really should be in BuildFunctionType.
2905 if (T->isHalfType()) {
2906 if (S.getLangOpts().OpenCL) {
2907- if (!S.getOpenCLOptions().isEnabled("cl_khr_fp16")) {
2908+ if (!S.getOpenCLOptions().isAvailableOption("cl_khr_fp16",
2909+ S.getLangOpts())) {
2910 S.Diag(D.getIdentifierLoc(), diag::err_opencl_invalid_return)
2911 << T << 0 /*pointer hint*/;
2912 D.setInvalidType(true);
2913@@ -5019,7 +5053,8 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
2914 // (s6.9.e and s6.12.5 OpenCL v2.0) except for printf.
2915 // We also allow here any toolchain reserved identifiers.
2916 if (FTI.isVariadic &&
2917- !S.getOpenCLOptions().isEnabled("__cl_clang_variadic_functions") &&
2918+ !S.getOpenCLOptions().isAvailableOption(
2919+ "__cl_clang_variadic_functions", S.getLangOpts()) &&
2920 !(D.getIdentifier() &&
2921 ((D.getIdentifier()->getName() == "printf" &&
2922 (LangOpts.OpenCLCPlusPlus || LangOpts.OpenCLVersion >= 120)) ||
2923@@ -5214,7 +5249,8 @@ static TypeSourceInfo *GetFullTypeForDeclarator(TypeProcessingState &state,
2924 // Disallow half FP parameters.
2925 // FIXME: This really should be in BuildFunctionType.
2926 if (S.getLangOpts().OpenCL) {
2927- if (!S.getOpenCLOptions().isEnabled("cl_khr_fp16")) {
2928+ if (!S.getOpenCLOptions().isAvailableOption("cl_khr_fp16",
2929+ S.getLangOpts())) {
2930 S.Diag(Param->getLocation(), diag::err_opencl_invalid_param)
2931 << ParamTy << 0;
2932 D.setInvalidType();
2933diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
2934index 1f68f6bc3e38..aa5eaf7fe2dc 100644
2935--- a/clang/lib/Serialization/ASTReader.cpp
2936+++ b/clang/lib/Serialization/ASTReader.cpp
2937@@ -3611,36 +3611,13 @@ ASTReader::ReadASTBlock(ModuleFile &F, unsigned ClientLoadCapabilities) {
2938 auto &OptInfo = OpenCLExtensions.OptMap[Name];
2939 OptInfo.Supported = Record[I++] != 0;
2940 OptInfo.Enabled = Record[I++] != 0;
2941+ OptInfo.WithPragma = Record[I++] != 0;
2942 OptInfo.Avail = Record[I++];
2943 OptInfo.Core = Record[I++];
2944 OptInfo.Opt = Record[I++];
2945 }
2946 break;
2947
2948- case OPENCL_EXTENSION_TYPES:
2949- for (unsigned I = 0, E = Record.size(); I != E;) {
2950- auto TypeID = static_cast<::TypeID>(Record[I++]);
2951- auto *Type = GetType(TypeID).getTypePtr();
2952- auto NumExt = static_cast<unsigned>(Record[I++]);
2953- for (unsigned II = 0; II != NumExt; ++II) {
2954- auto Ext = ReadString(Record, I);
2955- OpenCLTypeExtMap[Type].insert(Ext);
2956- }
2957- }
2958- break;
2959-
2960- case OPENCL_EXTENSION_DECLS:
2961- for (unsigned I = 0, E = Record.size(); I != E;) {
2962- auto DeclID = static_cast<::DeclID>(Record[I++]);
2963- auto *Decl = GetDecl(DeclID);
2964- auto NumExt = static_cast<unsigned>(Record[I++]);
2965- for (unsigned II = 0; II != NumExt; ++II) {
2966- auto Ext = ReadString(Record, I);
2967- OpenCLDeclExtMap[Decl].insert(Ext);
2968- }
2969- }
2970- break;
2971-
2972 case TENTATIVE_DEFINITIONS:
2973 for (unsigned I = 0, N = Record.size(); I != N; ++I)
2974 TentativeDefinitions.push_back(getGlobalDeclID(F, Record[I]));
2975@@ -7869,8 +7846,6 @@ void ASTReader::InitializeSema(Sema &S) {
2976 }
2977
2978 SemaObj->OpenCLFeatures = OpenCLExtensions;
2979- SemaObj->OpenCLTypeExtMap = OpenCLTypeExtMap;
2980- SemaObj->OpenCLDeclExtMap = OpenCLDeclExtMap;
2981
2982 UpdateSema();
2983 }
2984diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
2985index 40900af6f9e0..d6e5269d24fd 100644
2986--- a/clang/lib/Serialization/ASTWriter.cpp
2987+++ b/clang/lib/Serialization/ASTWriter.cpp
2988@@ -3976,6 +3976,7 @@ void ASTWriter::WriteOpenCLExtensions(Sema &SemaRef) {
2989 auto V = I.getValue();
2990 Record.push_back(V.Supported ? 1 : 0);
2991 Record.push_back(V.Enabled ? 1 : 0);
2992+ Record.push_back(V.WithPragma ? 1 : 0);
2993 Record.push_back(V.Avail);
2994 Record.push_back(V.Core);
2995 Record.push_back(V.Opt);
2996@@ -3983,71 +3984,6 @@ void ASTWriter::WriteOpenCLExtensions(Sema &SemaRef) {
2997 Stream.EmitRecord(OPENCL_EXTENSIONS, Record);
2998 }
2999
3000-void ASTWriter::WriteOpenCLExtensionTypes(Sema &SemaRef) {
3001- if (!SemaRef.Context.getLangOpts().OpenCL)
3002- return;
3003-
3004- // Sort the elements of the map OpenCLTypeExtMap by TypeIDs,
3005- // without copying them.
3006- const llvm::DenseMap<const Type *, std::set<std::string>> &OpenCLTypeExtMap =
3007- SemaRef.OpenCLTypeExtMap;
3008- using ElementTy = std::pair<TypeID, const std::set<std::string> *>;
3009- llvm::SmallVector<ElementTy, 8> StableOpenCLTypeExtMap;
3010- StableOpenCLTypeExtMap.reserve(OpenCLTypeExtMap.size());
3011-
3012- for (const auto &I : OpenCLTypeExtMap)
3013- StableOpenCLTypeExtMap.emplace_back(
3014- getTypeID(I.first->getCanonicalTypeInternal()), &I.second);
3015-
3016- auto CompareByTypeID = [](const ElementTy &E1, const ElementTy &E2) -> bool {
3017- return E1.first < E2.first;
3018- };
3019- llvm::sort(StableOpenCLTypeExtMap, CompareByTypeID);
3020-
3021- RecordData Record;
3022- for (const ElementTy &E : StableOpenCLTypeExtMap) {
3023- Record.push_back(E.first); // TypeID
3024- const std::set<std::string> *ExtSet = E.second;
3025- Record.push_back(static_cast<unsigned>(ExtSet->size()));
3026- for (const std::string &Ext : *ExtSet)
3027- AddString(Ext, Record);
3028- }
3029-
3030- Stream.EmitRecord(OPENCL_EXTENSION_TYPES, Record);
3031-}
3032-
3033-void ASTWriter::WriteOpenCLExtensionDecls(Sema &SemaRef) {
3034- if (!SemaRef.Context.getLangOpts().OpenCL)
3035- return;
3036-
3037- // Sort the elements of the map OpenCLDeclExtMap by DeclIDs,
3038- // without copying them.
3039- const llvm::DenseMap<const Decl *, std::set<std::string>> &OpenCLDeclExtMap =
3040- SemaRef.OpenCLDeclExtMap;
3041- using ElementTy = std::pair<DeclID, const std::set<std::string> *>;
3042- llvm::SmallVector<ElementTy, 8> StableOpenCLDeclExtMap;
3043- StableOpenCLDeclExtMap.reserve(OpenCLDeclExtMap.size());
3044-
3045- for (const auto &I : OpenCLDeclExtMap)
3046- StableOpenCLDeclExtMap.emplace_back(getDeclID(I.first), &I.second);
3047-
3048- auto CompareByDeclID = [](const ElementTy &E1, const ElementTy &E2) -> bool {
3049- return E1.first < E2.first;
3050- };
3051- llvm::sort(StableOpenCLDeclExtMap, CompareByDeclID);
3052-
3053- RecordData Record;
3054- for (const ElementTy &E : StableOpenCLDeclExtMap) {
3055- Record.push_back(E.first); // DeclID
3056- const std::set<std::string> *ExtSet = E.second;
3057- Record.push_back(static_cast<unsigned>(ExtSet->size()));
3058- for (const std::string &Ext : *ExtSet)
3059- AddString(Ext, Record);
3060- }
3061-
3062- Stream.EmitRecord(OPENCL_EXTENSION_DECLS, Record);
3063-}
3064-
3065 void ASTWriter::WriteCUDAPragmas(Sema &SemaRef) {
3066 if (SemaRef.ForceCUDAHostDeviceDepth > 0) {
3067 RecordData::value_type Record[] = {SemaRef.ForceCUDAHostDeviceDepth};
3068@@ -4792,17 +4728,12 @@ ASTFileSignature ASTWriter::WriteASTCore(Sema &SemaRef, StringRef isysroot,
3069 WriteIdentifierTable(PP, SemaRef.IdResolver, isModule);
3070 WriteFPPragmaOptions(SemaRef.CurFPFeatureOverrides());
3071 WriteOpenCLExtensions(SemaRef);
3072- WriteOpenCLExtensionTypes(SemaRef);
3073 WriteCUDAPragmas(SemaRef);
3074
3075 // If we're emitting a module, write out the submodule information.
3076 if (WritingModule)
3077 WriteSubmodules(WritingModule);
3078
3079- // We need to have information about submodules to correctly deserialize
3080- // decls from OpenCLExtensionDecls block
3081- WriteOpenCLExtensionDecls(SemaRef);
3082-
3083 Stream.EmitRecord(SPECIAL_TYPES, SpecialTypes);
3084
3085 // Write the record containing external, unnamed definitions.
3086diff --git a/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl b/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl
3087index 21e0f2b05747..d24c9c5f85a4 100644
3088--- a/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl
3089+++ b/clang/test/CodeGenOpenCL/addr-space-struct-arg.cl
3090@@ -2,6 +2,8 @@
3091 // RUN: %clang_cc1 %s -emit-llvm -o - -O0 -triple amdgcn | FileCheck -enable-var-scope -check-prefixes=ALL,AMDGCN %s
3092 // RUN: %clang_cc1 %s -emit-llvm -o - -cl-std=CL2.0 -O0 -triple amdgcn | FileCheck -enable-var-scope -check-prefixes=ALL,AMDGCN,AMDGCN20 %s
3093 // RUN: %clang_cc1 %s -emit-llvm -o - -cl-std=CL1.2 -O0 -triple spir-unknown-unknown-unknown | FileCheck -enable-var-scope -check-prefixes=SPIR %s
3094+// RUN: %clang_cc1 %s -emit-llvm -o - -cl-std=CL3.0 -O0 -triple amdgcn -cl-ext=+__opencl_c_program_scope_global_variables | FileCheck -enable-var-scope -check-prefixes=ALL,AMDGCN,AMDGCN20 %s
3095+// RUN: %clang_cc1 %s -emit-llvm -o - -cl-std=CL3.0 -O0 -triple amdgcn | FileCheck -enable-var-scope -check-prefixes=ALL,AMDGCN %s
3096
3097 typedef int int2 __attribute__((ext_vector_type(2)));
3098
3099@@ -39,7 +41,7 @@ struct LargeStructTwoMember {
3100 int2 y[20];
3101 };
3102
3103-#if __OPENCL_C_VERSION__ >= 200
3104+#if (__OPENCL_C_VERSION__ == 200) || (__OPENCL_C_VERSION__ >= 300 && defined(__opencl_c_program_scope_global_variables))
3105 struct LargeStructOneMember g_s;
3106 #endif
3107
3108@@ -98,7 +100,7 @@ void FuncOneLargeMember(struct LargeStructOneMember u) {
3109 // AMDGCN20: %[[r0:.*]] = bitcast %struct.LargeStructOneMember addrspace(5)* %[[byval_temp]] to i8 addrspace(5)*
3110 // AMDGCN20: call void @llvm.memcpy.p5i8.p1i8.i64(i8 addrspace(5)* align 8 %[[r0]], i8 addrspace(1)* align 8 bitcast (%struct.LargeStructOneMember addrspace(1)* @g_s to i8 addrspace(1)*), i64 800, i1 false)
3111 // AMDGCN20: call void @FuncOneLargeMember(%struct.LargeStructOneMember addrspace(5)* byval(%struct.LargeStructOneMember) align 8 %[[byval_temp]])
3112-#if __OPENCL_C_VERSION__ >= 200
3113+#if (__OPENCL_C_VERSION__ == 200) || (__OPENCL_C_VERSION__ >= 300 && defined(__opencl_c_program_scope_global_variables))
3114 void test_indirect_arg_globl(void) {
3115 FuncOneLargeMember(g_s);
3116 }
3117diff --git a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
3118index cd3099e0a1a4..8fdb46184bed 100644
3119--- a/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
3120+++ b/clang/test/CodeGenOpenCL/address-spaces-conversions.cl
3121@@ -1,5 +1,7 @@
3122 // RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -ffake-address-space-map -cl-std=CL2.0 -emit-llvm -o - | FileCheck %s
3123+// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -ffake-address-space-map -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -emit-llvm -o - | FileCheck %s
3124 // RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -cl-std=CL2.0 -emit-llvm -o - | FileCheck --check-prefix=CHECK-NOFAKE %s
3125+// RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -O0 -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -emit-llvm -o - | FileCheck --check-prefix=CHECK-NOFAKE %s
3126 // When -ffake-address-space-map is not used, all addr space mapped to 0 for x86_64.
3127
3128 // test that we generate address space casts everywhere we need conversions of
3129diff --git a/clang/test/CodeGenOpenCL/address-spaces-mangling.cl b/clang/test/CodeGenOpenCL/address-spaces-mangling.cl
3130index 50622f099143..b46834c2a678 100644
3131--- a/clang/test/CodeGenOpenCL/address-spaces-mangling.cl
3132+++ b/clang/test/CodeGenOpenCL/address-spaces-mangling.cl
3133@@ -2,10 +2,14 @@
3134 // RUN: %clang_cc1 %s -cl-std=CL2.0 -ffake-address-space-map -faddress-space-map-mangling=yes -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="ASMANG,ASMANG20" %s
3135 // RUN: %clang_cc1 %s -ffake-address-space-map -faddress-space-map-mangling=no -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="NOASMANG,NOASMANG10" %s
3136 // RUN: %clang_cc1 %s -cl-std=CL2.0 -ffake-address-space-map -faddress-space-map-mangling=no -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="NOASMANG,NOASMANG20" %s
3137+// RUN: %clang_cc1 %s -cl-std=CL3.0 -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -ffake-address-space-map -faddress-space-map-mangling=no -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="NOASMANG,NOASMANG20" %s
3138+// RUN: %clang_cc1 %s -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -ffake-address-space-map -faddress-space-map-mangling=yes -triple %itanium_abi_triple -emit-llvm -o - | FileCheck -check-prefixes="ASMANG,ASMANG20" %s
3139
3140 // We check that the address spaces are mangled the same in both version of OpenCL
3141 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL2.0 -emit-llvm -o - | FileCheck -check-prefix=OCL-20 %s
3142 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL1.2 -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
3143+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -emit-llvm -o - | FileCheck -check-prefix=OCL-20 %s
3144+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL3.0 -cl-ext=-__opencl_c_generic_address_space -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
3145
3146 // We can't name this f as private is equivalent to default
3147 // no specifier given address space so we get multiple definition
3148@@ -47,7 +51,7 @@ void f(constant int *arg) { }
3149 // OCL-20-DAG: @_Z1fPU3AS2i
3150 // OCL-12-DAG: @_Z1fPU3AS2i
3151
3152-#if __OPENCL_C_VERSION__ >= 200
3153+#if (__OPENCL_C_VERSION__ == 200) || defined(__opencl_c_generic_address_space)
3154 __attribute__((overloadable))
3155 void f(generic int *arg) { }
3156 // ASMANG20: @_Z1fPU3AS4i
3157diff --git a/clang/test/CodeGenOpenCL/address-spaces.cl b/clang/test/CodeGenOpenCL/address-spaces.cl
3158index ebd227a6a9c7..be131c7820f9 100644
3159--- a/clang/test/CodeGenOpenCL/address-spaces.cl
3160+++ b/clang/test/CodeGenOpenCL/address-spaces.cl
3161@@ -1,9 +1,13 @@
3162 // RUN: %clang_cc1 %s -O0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,SPIR
3163+// RUN: %clang_cc1 %s -O0 -cl-std=CL3.0 -cl-ext=-__opencl_c_generic_address_space -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,SPIR
3164 // RUN: %clang_cc1 %s -O0 -DCL20 -cl-std=CL2.0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20SPIR
3165 // RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa -emit-llvm -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
3166+// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa -cl-std=CL3.0 -emit-llvm -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
3167 // RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa -DCL20 -cl-std=CL2.0 -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20AMDGCN
3168 // RUN: %clang_cc1 %s -O0 -triple amdgcn-mesa-mesa3d -emit-llvm -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
3169+// RUN: %clang_cc1 %s -O0 -triple amdgcn-mesa-mesa3d -cl-std=CL3.0 -emit-llvm -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
3170 // RUN: %clang_cc1 %s -O0 -triple r600-- -emit-llvm -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
3171+// RUN: %clang_cc1 %s -O0 -triple r600-- -emit-llvm -cl-std=CL3.0 -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
3172
3173 // SPIR: %struct.S = type { i32, i32, i32* }
3174 // CL20SPIR: %struct.S = type { i32, i32, i32 addrspace(4)* }
3175diff --git a/clang/test/CodeGenOpenCL/amdgpu-sizeof-alignof.cl b/clang/test/CodeGenOpenCL/amdgpu-sizeof-alignof.cl
3176index a5d438933fa4..3bd395da6d45 100644
3177--- a/clang/test/CodeGenOpenCL/amdgpu-sizeof-alignof.cl
3178+++ b/clang/test/CodeGenOpenCL/amdgpu-sizeof-alignof.cl
3179@@ -5,6 +5,18 @@
3180 // RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-std=CL1.2 %s -emit-llvm -o - | FileCheck %s
3181 // RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-std=CL2.0 %s -emit-llvm -o - | FileCheck %s
3182
3183+// RUN: %clang_cc1 -triple r600 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3184+// RUN: %clang_cc1 -triple amdgcn-mesa-mesa3d -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3185+// RUN: %clang_cc1 -triple amdgcn---opencl -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3186+// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3187+// RUN: %clang_cc1 -triple amdgcn-mesa-mesa3d -cl-ext=+__opencl_c_generic_address_space -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3188+// RUN: %clang_cc1 -triple amdgcn---opencl -cl-ext=+__opencl_c_generic_address_space -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3189+// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-ext=+__opencl_c_generic_address_space -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3190+// RUN: %clang_cc1 -triple r600 -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3191+// RUN: %clang_cc1 -triple amdgcn-mesa-mesa3d -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3192+// RUN: %clang_cc1 -triple amdgcn---opencl -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3193+// RUN: %clang_cc1 -triple amdgcn---amdgizcl -cl-ext=+cl_khr_fp64,+__opencl_c_fp64 -cl-std=CL3.0 %s -emit-llvm -o - | FileCheck %s
3194+
3195 #ifdef __AMDGCN__
3196 #define PTSIZE 8
3197 #else
3198@@ -58,9 +70,12 @@ void test() {
3199 check(sizeof(double) == 8);
3200 check(__alignof__(double) == 8);
3201 #endif
3202-
3203- check(sizeof(void*) == (__OPENCL_C_VERSION__ >= 200 ? 8 : 4));
3204- check(__alignof__(void*) == (__OPENCL_C_VERSION__ >= 200 ? 8 : 4));
3205+ check(sizeof(private void*) == 4);
3206+ check(__alignof__(private void*) == 4);
3207+#if (__OPENCL_C_VERSION__ == 200) || defined(__opencl_c_generic_address_space)
3208+ check(sizeof(generic void*) == 8);
3209+ check(__alignof__(generic void*) == 8);
3210+#endif
3211 check(sizeof(global_ptr_t) == PTSIZE);
3212 check(__alignof__(global_ptr_t) == PTSIZE);
3213 check(sizeof(constant_ptr_t) == PTSIZE);
3214diff --git a/clang/test/CodeGenOpenCL/arm-integer-dot-product.cl b/clang/test/CodeGenOpenCL/arm-integer-dot-product.cl
3215index d1ab6aceac5c..cc62d1df4275 100644
3216--- a/clang/test/CodeGenOpenCL/arm-integer-dot-product.cl
3217+++ b/clang/test/CodeGenOpenCL/arm-integer-dot-product.cl
3218@@ -1,38 +1,39 @@
3219 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -finclude-default-header -cl-std=CL1.2 -emit-llvm -o - -O0 | FileCheck %s
3220
3221+// Pragmas are only accepted for backward compatibility.
3222+
3223 #pragma OPENCL EXTENSION cl_arm_integer_dot_product_int8 : enable
3224+#pragma OPENCL EXTENSION cl_arm_integer_dot_product_int8 : disable
3225 void test_int8(uchar4 ua, uchar4 ub, char4 sa, char4 sb) {
3226 uint ur = arm_dot(ua, ub);
3227 // CHECK: call spir_func i32 @_Z7arm_dotDv4_hS_
3228 int sr = arm_dot(sa, sb);
3229 // CHECK: call spir_func i32 @_Z7arm_dotDv4_cS_
3230 }
3231-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_int8 : disable
3232
3233 #pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int8 : enable
3234+#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int8 : disable
3235 void test_accumulate_int8(uchar4 ua, uchar4 ub, uint uc, char4 sa, char4 sb, int c) {
3236 uint ur = arm_dot_acc(ua, ub, uc);
3237 // CHECK: call spir_func i32 @_Z11arm_dot_accDv4_hS_j
3238 int sr = arm_dot_acc(sa, sb, c);
3239 // CHECK: call spir_func i32 @_Z11arm_dot_accDv4_cS_i
3240 }
3241-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int8 : disable
3242
3243 #pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int16 : enable
3244+#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int16 : disable
3245 void test_accumulate_int16(ushort2 ua, ushort2 ub, uint uc, short2 sa, short2 sb, int c) {
3246 uint ur = arm_dot_acc(ua, ub, uc);
3247 // CHECK: call spir_func i32 @_Z11arm_dot_accDv2_tS_j
3248 int sr = arm_dot_acc(sa, sb, c);
3249 // CHECK: call spir_func i32 @_Z11arm_dot_accDv2_sS_i
3250 }
3251-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_int16 : disable
3252
3253 #pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_saturate_int8 : enable
3254+#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_saturate_int8 : disable
3255 void test_accumulate_saturate_int8(uchar4 ua, uchar4 ub, uint uc, char4 sa, char4 sb, int c) {
3256 uint ur = arm_dot_acc_sat(ua, ub, uc);
3257 // CHECK: call spir_func i32 @_Z15arm_dot_acc_satDv4_hS_j
3258 int sr = arm_dot_acc_sat(sa, sb, c);
3259 // CHECK: call spir_func i32 @_Z15arm_dot_acc_satDv4_cS_i
3260 }
3261-#pragma OPENCL EXTENSION cl_arm_integer_dot_product_accumulate_saturate_int8 : disable
3262-
3263diff --git a/clang/test/CodeGenOpenCL/extension-begin.cl b/clang/test/CodeGenOpenCL/extension-begin.cl
3264deleted file mode 100644
3265index 89b4256b2b11..000000000000
3266--- a/clang/test/CodeGenOpenCL/extension-begin.cl
3267+++ /dev/null
3268@@ -1,25 +0,0 @@
3269-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -emit-llvm -o - | FileCheck %s
3270-
3271-__attribute__((overloadable)) void f(int x);
3272-
3273-#pragma OPENCL EXTENSION my_ext : begin
3274-
3275-__attribute__((overloadable)) void f(long x);
3276-
3277-#pragma OPENCL EXTENSION my_ext : end
3278-
3279-#pragma OPENCL EXTENSION my_ext : enable
3280-
3281-//CHECK: define{{.*}} spir_func void @test_f1(i64 %x)
3282-//CHECK: call spir_func void @_Z1fl(i64 %{{.*}})
3283-void test_f1(long x) {
3284- f(x);
3285-}
3286-
3287-#pragma OPENCL EXTENSION my_ext : disable
3288-
3289-//CHECK: define{{.*}} spir_func void @test_f2(i64 %x)
3290-//CHECK: call spir_func void @_Z1fi(i32 %{{.*}})
3291-void test_f2(long x) {
3292- f(x);
3293-}
3294diff --git a/clang/test/CodeGenOpenCL/overload.cl b/clang/test/CodeGenOpenCL/overload.cl
3295index f182cb5fd2af..bc844595a59a 100644
3296--- a/clang/test/CodeGenOpenCL/overload.cl
3297+++ b/clang/test/CodeGenOpenCL/overload.cl
3298@@ -1,4 +1,5 @@
3299 // RUN: %clang_cc1 -cl-std=CL2.0 -emit-llvm -o - -triple spir-unknown-unknown %s | FileCheck %s
3300+// RUN: %clang_cc1 -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -emit-llvm -o - -triple spir-unknown-unknown %s | FileCheck %s
3301
3302 typedef short short4 __attribute__((ext_vector_type(4)));
3303
3304diff --git a/clang/test/CodeGenOpenCL/printf.cl b/clang/test/CodeGenOpenCL/printf.cl
3305index fc139d776db6..c68c43bcc286 100644
3306--- a/clang/test/CodeGenOpenCL/printf.cl
3307+++ b/clang/test/CodeGenOpenCL/printf.cl
3308@@ -1,10 +1,12 @@
3309 // RUN: %clang_cc1 -cl-std=CL1.2 -cl-ext=-+cl_khr_fp64 -triple spir-unknown-unknown -disable-llvm-passes -emit-llvm -o - %s | FileCheck -check-prefixes=FP64,ALL %s
3310 // RUN: %clang_cc1 -cl-std=CL1.2 -cl-ext=-cl_khr_fp64 -triple spir-unknown-unknown -disable-llvm-passes -emit-llvm -o - %s | FileCheck -check-prefixes=NOFP64,ALL %s
3311+// RUN: %clang_cc1 -cl-std=CL3.0 -cl-ext=+__opencl_c_fp64,+cl_khr_fp64 -triple spir-unknown-unknown -disable-llvm-passes -emit-llvm -o - %s | FileCheck -check-prefixes=FP64,ALL %s
3312+// RUN: %clang_cc1 -cl-std=CL3.0 -cl-ext=-__opencl_c_fp64,-cl_khr_fp64 -triple spir-unknown-unknown -disable-llvm-passes -emit-llvm -o - %s | FileCheck -check-prefixes=NOFP64,ALL %s
3313
3314 typedef __attribute__((ext_vector_type(2))) float float2;
3315 typedef __attribute__((ext_vector_type(2))) half half2;
3316
3317-#ifdef cl_khr_fp64
3318+#if defined(cl_khr_fp64) || defined(__opencl_c_fp64)
3319 typedef __attribute__((ext_vector_type(2))) double double2;
3320 #endif
3321
3322@@ -28,7 +30,7 @@ kernel void test_printf_half2(half2 arg) {
3323 printf("%v2hf", arg);
3324 }
3325
3326-#ifdef cl_khr_fp64
3327+#if defined(cl_khr_fp64) || defined(__opencl_c_fp64)
3328 // FP64-LABEL: @test_printf_double2(
3329 // FP64: call spir_func i32 (i8 addrspace(2)*, ...) @printf(i8 addrspace(2)* getelementptr inbounds ([6 x i8], [6 x i8] addrspace(2)* @.str.2, i32 0, i32 0), <2 x double> %0)
3330 kernel void test_printf_double2(double2 arg) {
3331diff --git a/clang/test/Headers/opencl-c-header.cl b/clang/test/Headers/opencl-c-header.cl
3332index 184eefd9f9c3..1c671acb174e 100644
3333--- a/clang/test/Headers/opencl-c-header.cl
3334+++ b/clang/test/Headers/opencl-c-header.cl
3335@@ -253,4 +253,88 @@ global atomic_int z = ATOMIC_VAR_INIT(99);
3336
3337 #endif //(defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200)
3338
3339+// OpenCL C features.
3340+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ == 200)
3341+
3342+#ifndef __opencl_c_pipes
3343+#error "Feature macro __opencl_c_pipes should be defined"
3344+#endif
3345+#ifndef __opencl_c_generic_address_space
3346+#error "Feature macro __opencl_c_generic_address_space should be defined"
3347+#endif
3348+#ifndef __opencl_c_work_group_collective_functions
3349+#error "Feature macro __opencl_c_work_group_collective_functions should be defined"
3350+#endif
3351+#ifndef __opencl_c_atomic_order_acq_rel
3352+#error "Feature macro __opencl_c_atomic_order_acq_rel should be defined"
3353+#endif
3354+#ifndef __opencl_c_atomic_order_seq_cst
3355+#error "Feature macro __opencl_c_atomic_order_seq_cst should be defined"
3356+#endif
3357+#ifndef __opencl_c_atomic_scope_device
3358+#error "Feature macro __opencl_c_atomic_scope_device should be defined"
3359+#endif
3360+#ifndef __opencl_c_atomic_scope_all_devices
3361+#error "Feature macro __opencl_c_atomic_scope_all_devices should be defined"
3362+#endif
3363+#ifndef __opencl_c_device_enqueue
3364+#error "Feature macro __opencl_c_device_enqueue should be defined"
3365+#endif
3366+#ifndef __opencl_c_read_write_images
3367+#error "Feature macro __opencl_c_read_write_images should be defined"
3368+#endif
3369+#ifndef __opencl_c_program_scope_global_variables
3370+#error "Feature macro __opencl_c_program_scope_global_variables should be defined"
3371+#endif
3372+#ifndef __opencl_c_images
3373+#error "Feature macro __opencl_c_images should be defined"
3374+#endif
3375+
3376+#elif (__OPENCL_C_VERSION__ < 200)
3377+
3378+#ifdef __opencl_c_pipes
3379+#error "Incorret feature macro __opencl_c_pipes define"
3380+#endif
3381+#ifdef __opencl_c_generic_address_space
3382+#error "Incorret feature macro __opencl_c_generic_address_space define"
3383+#endif
3384+#ifdef __opencl_c_work_group_collective_functions
3385+#error "Incorret feature macro __opencl_c_work_group_collective_functions define"
3386+#endif
3387+#ifdef __opencl_c_atomic_order_acq_rel
3388+#error "Incorret feature macro __opencl_c_atomic_order_acq_rel define"
3389+#endif
3390+#ifdef __opencl_c_atomic_order_seq_cst
3391+#error "Incorret feature macro __opencl_c_atomic_order_seq_cst define"
3392+#endif
3393+#ifdef __opencl_c_atomic_scope_device
3394+#error "Incorret feature macro __opencl_c_atomic_scope_device define"
3395+#endif
3396+#ifdef __opencl_c_atomic_scope_all_devices
3397+#error "Incorret feature macro __opencl_c_atomic_scope_all_devices define"
3398+#endif
3399+#ifdef __opencl_c_device_enqueue
3400+#error "Incorret feature macro __opencl_c_device_enqueue define"
3401+#endif
3402+#ifdef __opencl_c_read_write_images
3403+#error "Incorret feature macro __opencl_c_read_write_images define"
3404+#endif
3405+#ifdef __opencl_c_program_scope_global_variables
3406+#error "Incorret feature macro __opencl_c_program_scope_global_variables define"
3407+#endif
3408+#ifdef __opencl_c_images
3409+#error "Incorret feature macro __opencl_c_images define"
3410+#endif
3411+#ifdef __opencl_c_3d_image_writes
3412+#error "Incorret feature macro __opencl_c_3d_image_writes define"
3413+#endif
3414+#ifdef __opencl_c_fp64
3415+#error "Incorret feature macro __opencl_c_fp64 define"
3416+#endif
3417+#ifdef __opencl_c_subgroups
3418+#error "Incorret feature macro __opencl_c_subgroups define"
3419+#endif
3420+
3421+#endif //(defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ == 200)
3422+
3423 #endif // defined(__SPIR__)
3424diff --git a/clang/test/Misc/nvptx.unsupported_core.cl b/clang/test/Misc/nvptx.unsupported_core.cl
3425new file mode 100644
3426index 000000000000..b56a4828914e
3427--- /dev/null
3428+++ b/clang/test/Misc/nvptx.unsupported_core.cl
3429@@ -0,0 +1,7 @@
3430+// RUN: %clang_cc1 -cl-std=CL2.0 -triple nvptx-unknown-unknown -Wpedantic-core-features %s 2> %t
3431+// RUN: FileCheck --check-prefixes=CHECK-C < %t %s
3432+// RUN: %clang_cc1 -cl-std=CLC++ -triple nvptx-unknown-unknown -Wpedantic-core-features %s 2> %t
3433+// RUN: FileCheck --check-prefixes=CHECK-CPP < %t %s
3434+
3435+// CHECK-C: cl_khr_3d_image_writes is a core feature in OpenCL C version 2.0 but not supported on this target
3436+// CHECK-CPP: cl_khr_3d_image_writes is a core feature in C++ for OpenCL version 1.0 but not supported on this target
3437diff --git a/clang/test/Misc/warning-flags.c b/clang/test/Misc/warning-flags.c
3438index 54e36e1e0884..e4f9069b88c8 100644
3439--- a/clang/test/Misc/warning-flags.c
3440+++ b/clang/test/Misc/warning-flags.c
3441@@ -91,4 +91,4 @@ CHECK-NEXT: warn_weak_import
3442
3443 The list of warnings in -Wpedantic should NEVER grow.
3444
3445-CHECK: Number in -Wpedantic (not covered by other -W flags): 26
3446+CHECK: Number in -Wpedantic (not covered by other -W flags): 27
3447diff --git a/clang/test/Parser/opencl-atomics-cl20.cl b/clang/test/Parser/opencl-atomics-cl20.cl
3448index 844902e847f7..c3f86b6a44c4 100644
3449--- a/clang/test/Parser/opencl-atomics-cl20.cl
3450+++ b/clang/test/Parser/opencl-atomics-cl20.cl
3451@@ -1,66 +1,78 @@
3452 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only
3453-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -fsyntax-only -cl-std=CL2.0 -DCL20
3454-// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -verify -fsyntax-only -cl-std=CL2.0 -DCL20
3455-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -fsyntax-only -cl-std=CL2.0 -DCL20 -DEXT -Wpedantic-core-features
3456+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -fsyntax-only -cl-std=CL2.0 -cl-ext=-cl_khr_int64_base_atomics
3457+// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -verify -fsyntax-only -cl-std=CL2.0
3458+// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -verify -fsyntax-only -cl-std=CLC++
3459+// RUN: %clang_cc1 %s -triple spir64-unknown-unknown -verify -fsyntax-only -cl-std=CL2.0 -cl-ext=-cl_khr_int64_base_atomics
3460
3461-#ifdef EXT
3462-#pragma OPENCL EXTENSION cl_khr_int64_base_atomics:enable
3463-#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics:enable
3464-#pragma OPENCL EXTENSION cl_khr_fp64:enable
3465-#if __OPENCL_C_VERSION__ >= CL_VERSION_1_2
3466-// expected-warning@-2{{OpenCL extension 'cl_khr_fp64' is core feature or supported optional core feature - ignoring}}
3467-#endif
3468+#if defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= CL_VERSION_1_2
3469+#define LANG_VER_OK
3470 #endif
3471
3472 void atomic_types_test() {
3473 // OpenCL v2.0 s6.13.11.6 defines supported atomic types.
3474+
3475+// Non-optional types
3476 atomic_int i;
3477 atomic_uint ui;
3478+ atomic_float f;
3479+ atomic_flag fl;
3480+#if !defined(LANG_VER_OK)
3481+// expected-error@-5 {{use of undeclared identifier 'atomic_int'}}
3482+// expected-error@-5 {{use of undeclared identifier 'atomic_uint'}}
3483+// expected-error@-5 {{use of undeclared identifier 'atomic_float'}}
3484+// expected-error@-5 {{use of undeclared identifier 'atomic_flag'}}
3485+#endif
3486+
3487+// Optional types
3488 atomic_long l;
3489 atomic_ulong ul;
3490- atomic_float f;
3491 atomic_double d;
3492- atomic_flag fl;
3493+ atomic_size_t s;
3494 atomic_intptr_t ip;
3495 atomic_uintptr_t uip;
3496- atomic_size_t s;
3497 atomic_ptrdiff_t pd;
3498-// OpenCL v2.0 s6.13.11.8, _Atomic type specifier and _Atomic type qualifier
3499-// are not supported by OpenCL.
3500- _Atomic int i; // expected-error {{use of undeclared identifier '_Atomic'}}
3501-}
3502-#ifndef CL20
3503-// expected-error@-16 {{use of undeclared identifier 'atomic_int'}}
3504-// expected-error@-16 {{use of undeclared identifier 'atomic_uint'}}
3505-// expected-error@-16 {{use of undeclared identifier 'atomic_long'}}
3506-// expected-error@-16 {{use of undeclared identifier 'atomic_ulong'}}
3507-// expected-error@-16 {{use of undeclared identifier 'atomic_float'}}
3508-// expected-error@-16 {{use of undeclared identifier 'atomic_double'}}
3509-// expected-error@-16 {{use of undeclared identifier 'atomic_flag'}}
3510-// expected-error@-16 {{use of undeclared identifier 'atomic_intptr_t'}}
3511-// expected-error@-16 {{use of undeclared identifier 'atomic_uintptr_t'}}
3512-// expected-error@-16 {{use of undeclared identifier 'atomic_size_t'}}
3513+// Optional type identifiers are not added in earlier version or if at least
3514+// one of the extensions is not supported. Here we check with
3515+// `cl_khr_int64_base_atomics` only.
3516+#if !defined(LANG_VER_OK) || !defined(cl_khr_int64_base_atomics)
3517+// expected-error@-11 {{use of undeclared identifier 'atomic_long'}}
3518+// expected-error@-11 {{use of undeclared identifier 'atomic_ulong'}}
3519+// expected-error@-11 {{use of undeclared identifier 'atomic_double'}}
3520+#if defined(LANG_VER_OK)
3521+// expected-error@-15 {{expected ';' after expression}}
3522+// expected-error@-16 {{use of undeclared identifier 'l'}}
3523+// expected-error@-16 {{expected ';' after expression}}
3524+// expected-error@-17 {{use of undeclared identifier 'ul'}}
3525+#endif
3526+#if !defined(LANG_VER_OK) || defined(__SPIR64__)
3527+// expected-error@-18 {{use of undeclared identifier 'atomic_size_t'}}
3528 // expected-error@-16 {{use of undeclared identifier 'atomic_ptrdiff_t'}}
3529-#elif !EXT
3530-// expected-error@-26 {{use of type 'atomic_long' (aka '_Atomic(long)') requires cl_khr_int64_base_atomics extension to be enabled}}
3531-// expected-error@-27 {{use of type 'atomic_long' (aka '_Atomic(long)') requires cl_khr_int64_extended_atomics extension to be enabled}}
3532-// expected-error@-27 {{use of type 'atomic_ulong' (aka '_Atomic(unsigned long)') requires cl_khr_int64_base_atomics extension to be enabled}}
3533-// expected-error@-28 {{use of type 'atomic_ulong' (aka '_Atomic(unsigned long)') requires cl_khr_int64_extended_atomics extension to be enabled}}
3534-// expected-error@-27 {{use of type 'atomic_double' (aka '_Atomic(double)') requires cl_khr_int64_base_atomics extension to be enabled}}
3535-// expected-error@-28 {{use of type 'atomic_double' (aka '_Atomic(double)') requires cl_khr_int64_extended_atomics extension to be enabled}}
3536-#if __LP64__
3537-// expected-error-re@-28 {{use of type 'atomic_intptr_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension to be enabled}}
3538-// expected-error-re@-29 {{use of type 'atomic_intptr_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension to be enabled}}
3539-// expected-error-re@-29 {{use of type 'atomic_uintptr_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension to be enabled}}
3540-// expected-error-re@-30 {{use of type 'atomic_uintptr_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension to be enabled}}
3541-// expected-error-re@-30 {{use of type 'atomic_size_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension to be enabled}}
3542-// expected-error-re@-31 {{use of type 'atomic_size_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension to be enabled}}
3543-// expected-error-re@-31 {{use of type 'atomic_ptrdiff_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_base_atomics extension to be enabled}}
3544-// expected-error-re@-32 {{use of type 'atomic_ptrdiff_t' (aka '_Atomic({{.+}})') requires cl_khr_int64_extended_atomics extension to be enabled}}
3545+#if !defined(LANG_VER_OK)
3546+// expected-error@-20 {{use of undeclared identifier 'atomic_intptr_t'}}
3547+// expected-error@-20 {{use of undeclared identifier 'atomic_uintptr_t'}}
3548+#else
3549+// expected-error@-24 {{expected ';' after expression}}
3550+// expected-error@-25 {{use of undeclared identifier 's'}}
3551+// expected-error@-25 {{unknown type name 'atomic_intptr_t'; did you mean 'atomic_int'?}}
3552+// expected-note@* {{'atomic_int' declared here}}
3553+// expected-error@-26 {{unknown type name 'atomic_uintptr_t'; did you mean 'atomic_uint'?}}
3554+// expected-note@* {{'atomic_uint' declared here}}
3555+#endif
3556 #endif
3557 #endif
3558
3559-#ifdef CL20
3560+// OpenCL v2.0 s6.13.11.8, _Atomic type specifier and _Atomic type qualifier
3561+// are not supported by OpenCL.
3562+ _Atomic int i;
3563+#ifdef __OPENCL_C_VERSION__
3564+// expected-error@-2 {{use of undeclared identifier '_Atomic'}}
3565+#else
3566+ // expected-error@-4 {{unknown type name '_Atomic'}}
3567+#endif
3568+}
3569+
3570+#if defined(LANG_VER_OK)
3571+int atomic_uint; //expected-error{{redefinition of 'atomic_uint' as different kind of symbol}}
3572 void foo(atomic_int * ptr) {}
3573 void atomic_ops_test() {
3574 atomic_int i;
3575@@ -71,4 +83,6 @@ void atomic_ops_test() {
3576 i += 1; // expected-error {{invalid operands to binary expression ('__private atomic_int' (aka '__private _Atomic(int)') and 'int')}}
3577 i = i + i; // expected-error {{invalid operands to binary expression ('__private atomic_int' (aka '__private _Atomic(int)') and '__private atomic_int')}}
3578 }
3579+#else
3580+__constant int atomic_uint = 1;
3581 #endif
3582diff --git a/clang/test/SemaOpenCL/access-qualifier.cl b/clang/test/SemaOpenCL/access-qualifier.cl
3583index a5e1b65daf70..c538e73253ce 100644
3584--- a/clang/test/SemaOpenCL/access-qualifier.cl
3585+++ b/clang/test/SemaOpenCL/access-qualifier.cl
3586@@ -1,12 +1,14 @@
3587-// RUN: %clang_cc1 -verify -pedantic -fsyntax-only -cl-std=CL1.2 %s
3588-// RUN: %clang_cc1 -verify -pedantic -fsyntax-only -cl-std=CL2.0 %s
3589+// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL1.2 %s -cl-ext=-cl_khr_3d_image_writes
3590+// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL2.0 %s
3591+// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL3.0 %s
3592+// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL3.0 %s -cl-ext=-__opencl_c_read_write_images
3593
3594 typedef image1d_t img1d_ro_default; // expected-note {{previously declared 'read_only' here}}
3595
3596 typedef write_only image1d_t img1d_wo; // expected-note {{previously declared 'write_only' here}}
3597 typedef read_only image1d_t img1d_ro;
3598
3599-#if __OPENCL_C_VERSION__ >= 200
3600+#if (__OPENCL_C_VERSION__ == 200) || (__OPENCL_C_VERSION__ == 300 && defined(__opencl_c_read_write_images))
3601 typedef read_write image1d_t img1d_rw;
3602 #endif
3603
3604@@ -17,10 +19,10 @@ typedef read_only int IntRO; // expected-error {{access qualifier can only be us
3605 void myWrite(write_only image1d_t); // expected-note {{passing argument to parameter here}} expected-note {{passing argument to parameter here}}
3606 void myRead(read_only image1d_t); // expected-note {{passing argument to parameter here}}
3607
3608-#if __OPENCL_C_VERSION__ >= 200
3609+#if (__OPENCL_C_VERSION__ == 200) || (__OPENCL_C_VERSION__ == 300 && defined(__opencl_c_read_write_images))
3610 void myReadWrite(read_write image1d_t);
3611 #else
3612-void myReadWrite(read_write image1d_t); // expected-error {{access qualifier 'read_write' can not be used for '__read_write image1d_t' prior to OpenCL version 2.0}}
3613+void myReadWrite(read_write image1d_t); // expected-error {{access qualifier 'read_write' can not be used for '__read_write image1d_t' prior to OpenCL C version 2.0 or in version 3.0 and without __opencl_c_read_write_images feature}}
3614 #endif
3615
3616
3617@@ -36,7 +38,7 @@ kernel void k3(img1d_wo img) {
3618 myWrite(img);
3619 }
3620
3621-#if __OPENCL_C_VERSION__ >= 200
3622+#if (__OPENCL_C_VERSION__ == 200) || (__OPENCL_C_VERSION__ == 300 && defined(__opencl_c_read_write_images))
3623 kernel void k4(img1d_rw img) {
3624 myReadWrite(img);
3625 }
3626@@ -62,26 +64,26 @@ kernel void k11(read_only write_only image1d_t i){} // expected-error{{multiple
3627
3628 kernel void k12(read_only read_only image1d_t i){} // expected-warning {{duplicate 'read_only' declaration specifier}}
3629
3630-#if __OPENCL_C_VERSION__ >= 200
3631+#if (__OPENCL_C_VERSION__ == 200) || (__OPENCL_C_VERSION__ == 300 && defined(__opencl_c_read_write_images))
3632 kernel void k13(read_write pipe int i){} // expected-error{{access qualifier 'read_write' can not be used for 'read_only pipe int'}}
3633 #else
3634-kernel void k13(__read_write image1d_t i){} // expected-error{{access qualifier '__read_write' can not be used for '__read_write image1d_t' prior to OpenCL version 2.0}}
3635-#endif
3636-
3637-#if __OPENCL_C_VERSION__ >= 200
3638-void myPipeWrite(write_only pipe int); // expected-note {{passing argument to parameter here}}
3639-kernel void k14(read_only pipe int p) {
3640- myPipeWrite(p); // expected-error {{passing '__private read_only pipe int' to parameter of incompatible type 'write_only pipe int'}}
3641-}
3642+kernel void k13(__read_write image1d_t i){} // expected-error{{access qualifier '__read_write' can not be used for '__read_write image1d_t' prior to OpenCL C version 2.0 or in version 3.0 and without __opencl_c_read_write_images feature}}
3643 #endif
3644
3645 #if __OPENCL_C_VERSION__ < 200
3646-kernel void test_image3d_wo(write_only image3d_t img) {} // expected-error {{use of type '__write_only image3d_t' requires cl_khr_3d_image_writes extension to be enabled}}
3647+kernel void test_image3d_wo(write_only image3d_t img) {} // expected-error {{use of type '__write_only image3d_t' requires cl_khr_3d_image_writes support}}
3648 #endif
3649
3650-#if __OPENCL_C_VERSION__ >= 200
3651+#if (__OPENCL_C_VERSION__ == 200) || (__OPENCL_C_VERSION__ == 300 && defined(__opencl_c_read_write_images))
3652 kernel void read_write_twice_typedef(read_write img1d_rw i){} // expected-warning {{duplicate 'read_write' declaration specifier}}
3653-// expected-note@-74 {{previously declared 'read_write' here}}
3654+// expected-note@-67 {{previously declared 'read_write' here}}
3655+#endif
3656+
3657+#if OPENCL_C_VERSION__ >= 200
3658+void myPipeWrite(write_only pipe int); // expected-note {{passing argument to parameter here}}
3659+kernel void k14(read_only pipe int p) {
3660+ myPipeWrite(p); // expected-error {{passing '__private read_only pipe int' to parameter of incompatible type 'write_only pipe int'}}
3661+}
3662
3663 kernel void pipe_ro_twice(read_only read_only pipe int i){} // expected-warning{{duplicate 'read_only' declaration specifier}}
3664 // Conflicting access qualifiers
3665@@ -94,7 +96,7 @@ kernel void pipe_ro_twice_typedef(read_only ROPipeInt i){} // expected-warning{{
3666
3667 kernel void pass_ro_typedef_to_wo(ROPipeInt p) {
3668 myPipeWrite(p); // expected-error {{passing '__private ROPipeInt' (aka '__private read_only pipe int') to parameter of incompatible type 'write_only pipe int'}}
3669- // expected-note@-25 {{passing argument to parameter here}}
3670+ // expected-note@-16 {{passing argument to parameter here}}
3671 }
3672 #endif
3673
3674diff --git a/clang/test/SemaOpenCL/address-spaces-conversions-cl2.0.cl b/clang/test/SemaOpenCL/address-spaces-conversions-cl2.0.cl
3675index a5a838241347..daedce8459aa 100644
3676--- a/clang/test/SemaOpenCL/address-spaces-conversions-cl2.0.cl
3677+++ b/clang/test/SemaOpenCL/address-spaces-conversions-cl2.0.cl
3678@@ -4,6 +4,9 @@
3679 // RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -DCONSTANT -cl-std=clc++
3680 // RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -DGLOBAL -cl-std=clc++
3681 // RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -DGENERIC -cl-std=clc++
3682+// RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -DCONSTANT -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space
3683+// RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -DGLOBAL -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space
3684+// RUN: %clang_cc1 %s -ffake-address-space-map -verify -pedantic -fsyntax-only -DGENERIC -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space
3685
3686 /* OpenCLC v2.0 adds a set of restrictions for conversions between pointers to
3687 * different address spaces, mainly described in Sections 6.5.5 and 6.5.6.
3688diff --git a/clang/test/SemaOpenCL/address-spaces.cl b/clang/test/SemaOpenCL/address-spaces.cl
3689index 2c4f0fdec524..98b9a39e78ea 100644
3690--- a/clang/test/SemaOpenCL/address-spaces.cl
3691+++ b/clang/test/SemaOpenCL/address-spaces.cl
3692@@ -1,5 +1,6 @@
3693 // RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only
3694 // RUN: %clang_cc1 %s -cl-std=CL2.0 -verify -pedantic -fsyntax-only
3695+// RUN: %clang_cc1 %s -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -verify -pedantic -fsyntax-only
3696 // RUN: %clang_cc1 %s -cl-std=clc++ -verify -pedantic -fsyntax-only
3697
3698 __constant int ci = 1;
3699diff --git a/clang/test/SemaOpenCL/arm-integer-dot-product.cl b/clang/test/SemaOpenCL/arm-integer-dot-product.cl
3700index d7219d7402a9..5552f7777954 100644
3701--- a/clang/test/SemaOpenCL/arm-integer-dot-product.cl
3702+++ b/clang/test/SemaOpenCL/arm-integer-dot-product.cl
3703@@ -1,4 +1,4 @@
3704-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -finclude-default-header -verify -cl-std=CL1.2 -emit-llvm -o - -O0
3705+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -finclude-default-header -fdeclare-opencl-builtins -verify -cl-std=CL1.2 -emit-llvm -o - -cl-ext=-all
3706
3707 void test_negative() {
3708 uchar4 ua8, ub8;
3709@@ -7,37 +7,13 @@ void test_negative() {
3710 short2 sa16, sb16;
3711 uint ur;
3712 int sr;
3713- ur = arm_dot(ua8, ub8); // expected-error{{no matching function for call to 'arm_dot'}}
3714- // expected-note@opencl-c.h:* {{candidate function not viable}}
3715- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_int8' to be enabled}}
3716- sr = arm_dot(sa8, sb8); // expected-error{{no matching function for call to 'arm_dot'}}
3717- // expected-note@opencl-c.h:* {{candidate function not viable}}
3718- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_int8' to be enabled}}
3719- ur = arm_dot_acc(ua8, ub8, ur); // expected-error{{no matching function for call to 'arm_dot_acc'}}
3720- // expected-note@opencl-c.h:* {{candidate function not viable}}
3721- // expected-note@opencl-c.h:* {{candidate function not viable}}
3722- // expected-note@opencl-c.h:* {{candidate function not viable}}
3723- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_accumulate_int8' to be enabled}}
3724- sr = arm_dot_acc(sa8, sb8, sr); // expected-error{{no matching function for call to 'arm_dot_acc'}}
3725- // expected-note@opencl-c.h:* {{candidate function not viable}}
3726- // expected-note@opencl-c.h:* {{candidate function not viable}}
3727- // expected-note@opencl-c.h:* {{candidate function not viable}}
3728- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_accumulate_int8' to be enabled}}
3729- ur = arm_dot_acc(ua16, ub16, ur); // expected-error{{no matching function for call to 'arm_dot_acc'}}
3730- // expected-note@opencl-c.h:* {{candidate function not viable}}
3731- // expected-note@opencl-c.h:* {{candidate function not viable}}
3732- // expected-note@opencl-c.h:* {{candidate function not viable}}
3733- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_accumulate_int16' to be enabled}}
3734- sr = arm_dot_acc(sa16, sb16, sr); // expected-error{{no matching function for call to 'arm_dot_acc'}}
3735- // expected-note@opencl-c.h:* {{candidate function not viable}}
3736- // expected-note@opencl-c.h:* {{candidate function not viable}}
3737- // expected-note@opencl-c.h:* {{candidate function not viable}}
3738- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_accumulate_int16' to be enabled}}
3739- ur = arm_dot_acc_sat(ua8, ub8, ur); // expected-error{{no matching function for call to 'arm_dot_acc_sat'}}
3740- // expected-note@opencl-c.h:* {{candidate function not viable}}
3741- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_accumulate_saturate_int8' to be enabled}}
3742- sr = arm_dot_acc_sat(sa8, sb8, sr); // expected-error{{no matching function for call to 'arm_dot_acc_sat'}}
3743- // expected-note@opencl-c.h:* {{candidate function not viable}}
3744- // expected-note@opencl-c.h:* {{candidate unavailable as it requires OpenCL extension 'cl_arm_integer_dot_product_accumulate_saturate_int8' to be enabled}}
3745+ ur = arm_dot(ua8, ub8); // expected-error{{implicit declaration of function 'arm_dot' is invalid in OpenCL}}
3746+ sr = arm_dot(sa8, sb8);
3747+ ur = arm_dot_acc(ua8, ub8, ur); // expected-error{{implicit declaration of function 'arm_dot_acc' is invalid in OpenCL}} //expected-note{{'arm_dot_acc' declared here}}
3748+ sr = arm_dot_acc(sa8, sb8, sr);
3749+ ur = arm_dot_acc(ua16, ub16, ur);
3750+ sr = arm_dot_acc(sa16, sb16, sr);
3751+ ur = arm_dot_acc_sat(ua8, ub8, ur); // expected-error{{implicit declaration of function 'arm_dot_acc_sat' is invalid in OpenCL}} //expected-note{{did you mean 'arm_dot_acc'?}}
3752+ sr = arm_dot_acc_sat(sa8, sb8, sr);
3753 }
3754
3755diff --git a/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl b/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl
3756index f63e2913c749..d25a03504c03 100644
3757--- a/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl
3758+++ b/clang/test/SemaOpenCL/cl20-device-side-enqueue.cl
3759@@ -235,11 +235,11 @@ kernel void bar(global unsigned int *buf)
3760 kernel void foo1(global unsigned int *buf)
3761 {
3762 ndrange_t n;
3763- buf[0] = get_kernel_max_sub_group_size_for_ndrange(n, ^(){}); // expected-error {{use of declaration 'get_kernel_max_sub_group_size_for_ndrange' requires cl_khr_subgroups extension to be enabled}}
3764+ buf[0] = get_kernel_max_sub_group_size_for_ndrange(n, ^(){}); // expected-error {{use of declaration 'get_kernel_max_sub_group_size_for_ndrange' requires cl_khr_subgroups support}}
3765 }
3766
3767 kernel void bar1(global unsigned int *buf)
3768 {
3769 ndrange_t n;
3770- buf[0] = get_kernel_sub_group_count_for_ndrange(n, ^(){}); // expected-error {{use of declaration 'get_kernel_sub_group_count_for_ndrange' requires cl_khr_subgroups extension to be enabled}}
3771+ buf[0] = get_kernel_sub_group_count_for_ndrange(n, ^(){}); // expected-error {{use of declaration 'get_kernel_sub_group_count_for_ndrange' requires cl_khr_subgroups support}}
3772 }
3773diff --git a/clang/test/SemaOpenCL/extension-begin.cl b/clang/test/SemaOpenCL/extension-begin.cl
3774index fdb481f8e092..9124ceba4e2a 100644
3775--- a/clang/test/SemaOpenCL/extension-begin.cl
3776+++ b/clang/test/SemaOpenCL/extension-begin.cl
3777@@ -29,25 +29,23 @@
3778 #ifndef USE_PCH
3779 // expected-warning@extension-begin.h:4 {{expected 'disable' - ignoring}}
3780 // expected-warning@extension-begin.h:5 {{expected 'disable' - ignoring}}
3781-// expected-warning@extension-begin.h:21 {{OpenCL extension end directive mismatches begin directive - ignoring}}
3782 #endif // USE_PCH
3783
3784+#if defined(IMPLICIT_INCLUDE) && defined(USE_PCH)
3785+//expected-no-diagnostics
3786+#endif
3787+
3788+// Tests that the pragmas are accepted for backward compatibility.
3789 #pragma OPENCL EXTENSION my_ext : enable
3790-void test_f1(void) {
3791+#pragma OPENCL EXTENSION my_ext : disable
3792+
3793+#ifndef my_ext
3794+#error "Missing my_ext macro"
3795+#endif
3796+
3797+// When extension is supported its functionality can be used freely.
3798+void test(void) {
3799 struct A test_A1;
3800 f();
3801 g(0);
3802 }
3803-
3804-#pragma OPENCL EXTENSION my_ext : disable
3805-void test_f2(void) {
3806- struct A test_A2; // expected-error {{use of type 'struct A' requires my_ext extension to be enabled}}
3807- const struct A test_A_local; // expected-error {{use of type 'struct A' requires my_ext extension to be enabled}}
3808- TypedefOfA test_typedef_A; // expected-error {{use of type 'TypedefOfA' (aka 'struct A') requires my_ext extension to be enabled}}
3809- PointerOfA test_A_pointer; // expected-error {{use of type 'PointerOfA' (aka 'const __private struct A *') requires my_ext extension to be enabled}}
3810- f(); // expected-error {{use of declaration 'f' requires my_ext extension to be enabled}}
3811- g(0); // expected-error {{no matching function for call to 'g'}}
3812- // expected-note@extension-begin.h:18 {{candidate unavailable as it requires OpenCL extension 'my_ext' to be enabled}}
3813- // expected-note@extension-begin.h:23 {{candidate function not viable: requires 0 arguments, but 1 was provided}}
3814-}
3815-
3816diff --git a/clang/test/SemaOpenCL/extension-begin.h b/clang/test/SemaOpenCL/extension-begin.h
3817index d9865ba0b33a..0e262e4adb93 100644
3818--- a/clang/test/SemaOpenCL/extension-begin.h
3819+++ b/clang/test/SemaOpenCL/extension-begin.h
3820@@ -5,10 +5,13 @@
3821 #pragma OPENCL EXTENSION all : end
3822
3823 #pragma OPENCL EXTENSION my_ext : begin
3824-
3825 struct A {
3826 int a;
3827 };
3828+#pragma OPENCL EXTENSION my_ext : end
3829+#pragma OPENCL EXTENSION my_ext : end
3830+
3831+#define my_ext
3832
3833 typedef struct A TypedefOfA;
3834 typedef const __private TypedefOfA* PointerOfA;
3835@@ -17,10 +20,8 @@ void f(void);
3836
3837 __attribute__((overloadable)) void g(long x);
3838
3839-#pragma OPENCL EXTENSION my_ext : end
3840-#pragma OPENCL EXTENSION my_ext : end
3841+
3842
3843 __attribute__((overloadable)) void g(void);
3844
3845 #endif // INCLUDED
3846-
3847diff --git a/clang/test/SemaOpenCL/extension-version.cl b/clang/test/SemaOpenCL/extension-version.cl
3848index b997a00145ef..6f26a23c4192 100644
3849--- a/clang/test/SemaOpenCL/extension-version.cl
3850+++ b/clang/test/SemaOpenCL/extension-version.cl
3851@@ -3,15 +3,13 @@
3852 // RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple spir-unknown-unknown
3853 // RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple spir-unknown-unknown
3854 // RUN: %clang_cc1 -x cl -cl-std=clc++ %s -verify -triple spir-unknown-unknown
3855+// RUN: %clang_cc1 -x cl -cl-std=CL3.0 %s -verify -triple spir-unknown-unknown
3856 // RUN: %clang_cc1 -x cl -cl-std=CL %s -verify -triple spir-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES
3857 // RUN: %clang_cc1 -x cl -cl-std=CL1.1 %s -verify -triple spir-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES
3858 // RUN: %clang_cc1 -x cl -cl-std=CL1.2 %s -verify -triple spir-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES
3859 // RUN: %clang_cc1 -x cl -cl-std=CL2.0 %s -verify -triple spir-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES
3860 // RUN: %clang_cc1 -x cl -cl-std=clc++ %s -verify -triple spir-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES
3861-
3862-#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) && !defined(TEST_CORE_FEATURES)
3863-// expected-no-diagnostics
3864-#endif
3865+// RUN: %clang_cc1 -x cl -cl-std=CL3.0 %s -verify -triple spir-unknown-unknown -Wpedantic-core-features -DTEST_CORE_FEATURES
3866
3867 // Extensions in all versions
3868 #ifndef cl_clang_storage_class_specifiers
3869@@ -95,12 +93,12 @@
3870 // expected-warning@-2{{OpenCL extension 'cl_khr_fp64' is core feature or supported optional core feature - ignoring}}
3871 #endif
3872
3873-//Core feature in CL 2.0
3874+//Core feature in CL 2.0, optional core feature in CL 3.0
3875 #ifndef cl_khr_3d_image_writes
3876 #error "Missing cl_khr_3d_image_writes define"
3877 #endif
3878 #pragma OPENCL EXTENSION cl_khr_3d_image_writes : enable
3879-#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ >= 200) && defined TEST_CORE_FEATURES
3880+#if (defined(__OPENCL_CPP_VERSION__) || __OPENCL_C_VERSION__ == 200) && defined TEST_CORE_FEATURES
3881 // expected-warning@-2{{OpenCL extension 'cl_khr_3d_image_writes' is core feature or supported optional core feature - ignoring}}
3882 #endif
3883
3884@@ -215,3 +213,55 @@
3885 // expected-warning@+2{{unsupported OpenCL extension 'cl_intel_device_side_avc_motion_estimation' - ignoring}}
3886 #endif
3887 #pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : enable
3888+
3889+// Check that pragmas for the OpenCL 3.0 features are rejected.
3890+
3891+#pragma OPENCL EXTENSION __opencl_c_int64 : disable
3892+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_int64' - ignoring}}
3893+#pragma OPENCL EXTENSION __opencl_c_3d_image_writes : disable
3894+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_3d_image_writes' - ignoring}}
3895+#pragma OPENCL EXTENSION __opencl_c_atomic_order_acq_rel : disable
3896+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_atomic_order_acq_rel' - ignoring}}
3897+#pragma OPENCL EXTENSION __opencl_c_atomic_order_seq_cst : disable
3898+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_atomic_order_seq_cst' - ignoring}}
3899+#pragma OPENCL EXTENSION __opencl_c_device_enqueue : disable
3900+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_device_enqueue' - ignoring}}
3901+#pragma OPENCL EXTENSION __opencl_c_fp64 : disable
3902+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_fp64' - ignoring}}
3903+#pragma OPENCL EXTENSION __opencl_c_generic_address_space : disable
3904+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_generic_address_space' - ignoring}}
3905+#pragma OPENCL EXTENSION __opencl_c_images : disable
3906+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_images' - ignoring}}
3907+#pragma OPENCL EXTENSION __opencl_c_pipes : disable
3908+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_pipes' - ignoring}}
3909+#pragma OPENCL EXTENSION __opencl_c_program_scope_global_variables : disable
3910+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_program_scope_global_variables' - ignoring}}
3911+#pragma OPENCL EXTENSION __opencl_c_read_write_images : disable
3912+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_read_write_images' - ignoring}}
3913+#pragma OPENCL EXTENSION __opencl_c_subgroups : disable
3914+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_subgroups' - ignoring}}
3915+
3916+#pragma OPENCL EXTENSION __opencl_c_int64 : enable
3917+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_int64' - ignoring}}
3918+#pragma OPENCL EXTENSION __opencl_c_3d_image_writes : enable
3919+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_3d_image_writes' - ignoring}}
3920+#pragma OPENCL EXTENSION __opencl_c_atomic_order_acq_rel : enable
3921+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_atomic_order_acq_rel' - ignoring}}
3922+#pragma OPENCL EXTENSION __opencl_c_atomic_order_seq_cst : enable
3923+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_atomic_order_seq_cst' - ignoring}}
3924+#pragma OPENCL EXTENSION __opencl_c_device_enqueue : enable
3925+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_device_enqueue' - ignoring}}
3926+#pragma OPENCL EXTENSION __opencl_c_fp64 : enable
3927+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_fp64' - ignoring}}
3928+#pragma OPENCL EXTENSION __opencl_c_generic_address_space : enable
3929+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_generic_address_space' - ignoring}}
3930+#pragma OPENCL EXTENSION __opencl_c_images : enable
3931+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_images' - ignoring}}
3932+#pragma OPENCL EXTENSION __opencl_c_pipes : enable
3933+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_pipes' - ignoring}}
3934+#pragma OPENCL EXTENSION __opencl_c_program_scope_global_variables : enable
3935+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_program_scope_global_variables' - ignoring}}
3936+#pragma OPENCL EXTENSION __opencl_c_read_write_images : enable
3937+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_read_write_images' - ignoring}}
3938+#pragma OPENCL EXTENSION __opencl_c_subgroups : enable
3939+//expected-warning@-1{{unknown OpenCL extension '__opencl_c_subgroups' - ignoring}}
3940diff --git a/clang/test/SemaOpenCL/extensions.cl b/clang/test/SemaOpenCL/extensions.cl
3941index 55dbd1d5eede..d43cdcece2e4 100644
3942--- a/clang/test/SemaOpenCL/extensions.cl
3943+++ b/clang/test/SemaOpenCL/extensions.cl
3944@@ -1,26 +1,34 @@
3945-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only
3946+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL1.0
3947 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL1.1
3948+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -fsyntax-only -cl-std=CL1.1 -DNOPEDANTIC
3949 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-std=CL1.2 -DFP64
3950
3951 // Test with a target not supporting fp64.
3952-// RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -DNOFP64 -DNOFP16
3953+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -DNOFP64 -DNOFP16
3954+// RUN: %clang_cc1 -cl-std=CL3.0 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -DNOFP64 -DNOFP16
3955
3956 // Test with some extensions enabled or disabled by cmd-line args
3957 //
3958 // Target does not support fp64 and fp16 - override it
3959-// RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+cl_khr_fp64,+cl_khr_fp16
3960+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+cl_khr_fp64,+cl_khr_fp16
3961 //
3962 // Disable or enable all extensions
3963-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-all -DNOFP64 -DNOFP16
3964-// RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+all
3965-// RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+all,-cl_khr_fp64 -DNOFP64
3966-// RUN: %clang_cc1 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=-all,+cl_khr_fp64 -DNOFP16
3967+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-all -DNOFP64 -DNOFP16
3968+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+all
3969+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+all,-cl_khr_fp64 -DNOFP64
3970+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=-all,+cl_khr_fp64 -DNOFP16
3971+// RUN: %clang_cc1 -cl-std=CL3.0 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-all -DNOFP64 -DNOFP16
3972+// RUN: %clang_cc1 -cl-std=CL3.0 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+all -DFP64
3973+// RUN: %clang_cc1 -cl-std=CL3.0 %s -triple r600-unknown-unknown -target-cpu r600 -verify -pedantic -fsyntax-only -cl-ext=+all,-__opencl_c_fp64,-cl_khr_fp64 -DNOFP64
3974 //
3975 // Concatenating
3976-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-cl_khr_fp64 -cl-ext=+cl_khr_fp64
3977-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-cl_khr_fp64,+cl_khr_fp64
3978-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-all -cl-ext=+cl_khr_fp64 -cl-ext=+cl_khr_fp16 -cl-ext=-cl_khr_fp64 -DNOFP64
3979+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-cl_khr_fp64 -cl-ext=+cl_khr_fp64
3980+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-cl_khr_fp64,+cl_khr_fp64
3981+// RUN: %clang_cc1 %s -cl-std=CL1.0 -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-all -cl-ext=+cl_khr_fp64 -cl-ext=+cl_khr_fp16 -cl-ext=-cl_khr_fp64 -DNOFP64
3982 // RUN: %clang_cc1 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-all -cl-ext=+cl_khr_fp64,-cl_khr_fp64,+cl_khr_fp16 -DNOFP64
3983+// RUN: %clang_cc1 -cl-std=CL3.0 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-__opencl_c_fp64,-cl_khr_fp64 -cl-ext=+__opencl_c_fp64,+cl_khr_fp64 -DFP64
3984+// RUN: %clang_cc1 -cl-std=CL3.0 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-__opencl_c_fp64,+__opencl_c_fp64,+cl_khr_fp64 -DFP64
3985+// RUN: %clang_cc1 -cl-std=CL3.0 %s -triple spir-unknown-unknown -verify -pedantic -fsyntax-only -cl-ext=-__opencl_c_fp64,-cl_khr_fp64 -DNOFP64
3986
3987 // Test with -finclude-default-header, which includes opencl-c.h. opencl-c.h
3988 // disables all extensions by default, but supported core extensions for a
3989@@ -43,8 +51,20 @@
3990 #endif
3991
3992 #if (defined(__OPENCL_C_VERSION__) && __OPENCL_C_VERSION__ < 120)
3993-void f1(double da) { // expected-error {{type 'double' requires cl_khr_fp64 extension}}
3994- double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}}
3995+void f1(double da) {
3996+#ifdef NOFP64
3997+// expected-error@-2 {{type 'double' requires cl_khr_fp64 support}}
3998+#elif !defined(NOPEDANTIC)
3999+// expected-warning@-4{{Clang permits use of type 'double' regardless pragma if 'cl_khr_fp64' is supported}}
4000+#endif
4001+ double d;
4002+#ifdef NOFP64
4003+// expected-error@-2 {{type 'double' requires cl_khr_fp64 support}}
4004+#elif !defined(NOPEDANTIC)
4005+// expected-warning@-4{{Clang permits use of type 'double' regardless pragma if 'cl_khr_fp64' is supported}}
4006+#endif
4007+ // FIXME: this diagnostic depends on the extension pragma in the earlier versions.
4008+ // There is no indication that this behavior is expected.
4009 (void) 1.0; // expected-warning {{double precision constant requires cl_khr_fp64}}
4010 }
4011 #endif
4012@@ -72,20 +92,30 @@ int isfinite(float x) {
4013 void f2(void) {
4014 double d;
4015 #ifdef NOFP64
4016-// expected-error@-2{{use of type 'double' requires cl_khr_fp64 extension to be enabled}}
4017+#if (defined(__OPENCL_C_VERSION__) && __OPENCL_C_VERSION__ >= 300)
4018+// expected-error@-3{{use of type 'double' requires cl_khr_fp64 and __opencl_c_fp64 support}}
4019+#else
4020+// expected-error@-5{{use of type 'double' requires cl_khr_fp64 support}}
4021+#endif
4022 #endif
4023
4024 typedef double double4 __attribute__((ext_vector_type(4)));
4025 double4 d4 = {0.0f, 2.0f, 3.0f, 1.0f};
4026 #ifdef NOFP64
4027-// expected-error@-3 {{use of type 'double' requires cl_khr_fp64 extension to be enabled}}
4028-// expected-error@-3 {{use of type 'double4' (vector of 4 'double' values) requires cl_khr_fp64 extension to be enabled}}
4029+#if (defined(__OPENCL_C_VERSION__) && __OPENCL_C_VERSION__ >= 300)
4030+// expected-error@-4 {{use of type 'double' requires cl_khr_fp64 and __opencl_c_fp64 support}}
4031+#else
4032+// expected-error@-6 {{use of type 'double' requires cl_khr_fp64 support}}
4033+#endif
4034 #endif
4035
4036 (void) 1.0;
4037-
4038 #ifdef NOFP64
4039-// expected-warning@-3{{double precision constant requires cl_khr_fp64, casting to single precision}}
4040+#if (defined(__OPENCL_C_VERSION__) && __OPENCL_C_VERSION__ >= 300)
4041+// expected-warning@-3{{double precision constant requires cl_khr_fp64 and __opencl_c_fp64, casting to single precision}}
4042+#else
4043+// expected-warning@-5{{double precision constant requires cl_khr_fp64, casting to single precision}}
4044+#endif
4045 #endif
4046 }
4047
4048@@ -96,6 +126,11 @@ void f2(void) {
4049
4050 #if (defined(__OPENCL_C_VERSION__) && __OPENCL_C_VERSION__ < 120)
4051 void f3(void) {
4052- double d; // expected-error {{type 'double' requires cl_khr_fp64 extension}}
4053+ double d;
4054+#ifdef NOFP64
4055+// expected-error@-2 {{type 'double' requires cl_khr_fp64 support}}
4056+#elif !defined(NOPEDANTIC)
4057+// expected-warning@-4 {{Clang permits use of type 'double' regardless pragma if 'cl_khr_fp64' is supported}}
4058+#endif
4059 }
4060 #endif
4061diff --git a/clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl b/clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl
4062index d1dcdfe8cb35..2db651836cb1 100644
4063--- a/clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl
4064+++ b/clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl
4065@@ -39,26 +39,7 @@ kernel void test_pointers(volatile global void *global_p, global const int4 *a)
4066 prefetch(a, 2);
4067
4068 atom_add((volatile __global int *)global_p, i);
4069-#if !defined(__OPENCL_CPP_VERSION__) && __OPENCL_C_VERSION__ < CL_VERSION_1_1
4070-// expected-error@-2{{no matching function for call to 'atom_add'}}
4071-
4072-// There are two potential definitions of the function "atom_add", both are
4073-// currently disabled because the associated extension is disabled.
4074-// expected-note@-6{{candidate function not viable: cannot pass pointer to address space '__global' as a pointer to address space '__local' in 1st argument}}
4075-// expected-note@-7{{candidate function not viable: no known conversion}}
4076-// expected-note@-8{{candidate function not viable: no known conversion}}
4077-// expected-note@-9{{candidate function not viable: no known conversion}}
4078-// expected-note@-10{{candidate unavailable as it requires OpenCL extension 'cl_khr_global_int32_base_atomics' to be enabled}}
4079-// expected-note@-11{{candidate unavailable as it requires OpenCL extension 'cl_khr_global_int32_base_atomics' to be enabled}}
4080-// expected-note@-12{{candidate unavailable as it requires OpenCL extension 'cl_khr_int64_base_atomics' to be enabled}}
4081-// expected-note@-13{{candidate unavailable as it requires OpenCL extension 'cl_khr_int64_base_atomics' to be enabled}}
4082-#endif
4083-
4084-#if __OPENCL_C_VERSION__ < CL_VERSION_1_1
4085-#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
4086-#endif
4087
4088- atom_add((volatile __global int *)global_p, i);
4089 atom_cmpxchg((volatile __global unsigned int *)global_p, ui, ui);
4090 }
4091
4092@@ -140,11 +121,9 @@ kernel void basic_image_writeonly(write_only image1d_buffer_t image_write_only_i
4093
4094 kernel void basic_subgroup(global uint *out) {
4095 out[0] = get_sub_group_size();
4096-#if defined(__OPENCL_CPP_VERSION__)
4097- // expected-error@-2{{no matching function for call to 'get_sub_group_size'}}
4098- // expected-note@-3{{candidate unavailable as it requires OpenCL extension 'cl_khr_subgroups' to be enabled}}
4099-#else
4100- // expected-error@-5{{use of declaration 'get_sub_group_size' requires cl_khr_subgroups extension to be enabled}}
4101+#if __OPENCL_C_VERSION__ <= CL_VERSION_1_2 && !defined(__OPENCL_CPP_VERSION__)
4102+ // expected-error@-2{{implicit declaration of function 'get_sub_group_size' is invalid in OpenCL}}
4103+ // expected-error@-3{{implicit conversion changes signedness}}
4104 #endif
4105 }
4106
4107diff --git a/clang/test/SemaOpenCL/features.cl b/clang/test/SemaOpenCL/features.cl
4108new file mode 100644
4109index 000000000000..57c52694b685
4110--- /dev/null
4111+++ b/clang/test/SemaOpenCL/features.cl
4112@@ -0,0 +1,48 @@
4113+// RUN: %clang_cc1 -triple spir-unknown-unknown %s -E -dM -o - -x cl -cl-std=CL3.0 -cl-ext=-all \
4114+// RUN: | FileCheck -match-full-lines %s --check-prefix=NO-FEATURES
4115+// RUN: %clang_cc1 -triple spir-unknown-unknown %s -E -dM -o - -x cl -cl-std=CL3.0 -cl-ext=+all \
4116+// RUN: | FileCheck -match-full-lines %s --check-prefix=FEATURES
4117+// RUN: %clang_cc1 -triple r600-unknown-unknown %s -E -dM -o - -x cl -cl-std=CL3.0 \
4118+// RUN: | FileCheck -match-full-lines %s --check-prefix=NO-FEATURES
4119+// RUN: %clang_cc1 -triple r600-unknown-unknown %s -E -dM -o - -x cl -cl-std=CL3.0 -cl-ext=+all \
4120+// RUN: | FileCheck -match-full-lines %s --check-prefix=FEATURES
4121+
4122+// For OpenCL C 2.0 feature macros are defined only in header, so test that earlier OpenCL
4123+// versions don't define feature macros accidentally and CL2.0 don't define them without header
4124+// RUN: %clang_cc1 -triple spir-unknown-unknown %s -E -dM -o - -x cl -cl-std=CL1.1 \
4125+// RUN: | FileCheck -match-full-lines %s --check-prefix=NO-FEATURES
4126+// RUN: %clang_cc1 -triple spir-unknown-unknown %s -E -dM -o - -x cl -cl-std=CL1.2 \
4127+// RUN: | FileCheck -match-full-lines %s --check-prefix=NO-FEATURES
4128+// RUN: %clang_cc1 -triple spir-unknown-unknown %s -E -dM -o - -x cl -cl-std=CL2.0 \
4129+// RUN: | FileCheck -match-full-lines %s --check-prefix=NO-FEATURES
4130+// RUN: %clang_cc1 -triple spir-unknown-unknown %s -E -dM -o - -x cl -cl-std=CLC++ \
4131+// RUN: | FileCheck -match-full-lines %s --check-prefix=NO-FEATURES
4132+
4133+// Note that __opencl_c_int64 is always defined assuming
4134+// always compiling for FULL OpenCL profile
4135+
4136+// FEATURES: #define __opencl_c_3d_image_writes 1
4137+// FEATURES: #define __opencl_c_atomic_order_acq_rel 1
4138+// FEATURES: #define __opencl_c_atomic_order_seq_cst 1
4139+// FEATURES: #define __opencl_c_device_enqueue 1
4140+// FEATURES: #define __opencl_c_fp64 1
4141+// FEATURES: #define __opencl_c_generic_address_space 1
4142+// FEATURES: #define __opencl_c_images 1
4143+// FEATURES: #define __opencl_c_int64 1
4144+// FEATURES: #define __opencl_c_pipes 1
4145+// FEATURES: #define __opencl_c_program_scope_global_variables 1
4146+// FEATURES: #define __opencl_c_read_write_images 1
4147+// FEATURES: #define __opencl_c_subgroups 1
4148+
4149+// NO-FEATURES: #define __opencl_c_int64 1
4150+// NO-FEATURES-NOT: __opencl_c_3d_image_writes
4151+// NO-FEATURES-NOT: __opencl_c_atomic_order_acq_rel
4152+// NO-FEATURES-NOT: __opencl_c_atomic_order_seq_cst
4153+// NO-FEATURES-NOT: __opencl_c_device_enqueue
4154+// NO-FEATURES-NOT: __opencl_c_fp64
4155+// NO-FEATURES-NOT: __opencl_c_generic_address_space
4156+// NO-FEATURES-NOT: __opencl_c_images
4157+// NO-FEATURES-NOT: __opencl_c_pipes
4158+// NO-FEATURES-NOT: __opencl_c_program_scope_global_variables
4159+// NO-FEATURES-NOT: __opencl_c_read_write_images
4160+// NO-FEATURES-NOT: __opencl_c_subgroups
4161diff --git a/clang/test/SemaOpenCL/intel-subgroup-avc-ext-types.cl b/clang/test/SemaOpenCL/intel-subgroup-avc-ext-types.cl
4162index e76d54763016..48ed4c0594d6 100644
4163--- a/clang/test/SemaOpenCL/intel-subgroup-avc-ext-types.cl
4164+++ b/clang/test/SemaOpenCL/intel-subgroup-avc-ext-types.cl
4165@@ -1,6 +1,9 @@
4166-// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL1.2 -cl-ext=+cl_intel_device_side_avc_motion_estimation -fsyntax-only -verify %s
4167+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL1.2 -cl-ext=+cl_intel_device_side_avc_motion_estimation -fsyntax-only -verify -DEXT %s
4168+// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL1.2 -cl-ext=-cl_intel_device_side_avc_motion_estimation -fsyntax-only -verify %s
4169
4170+#ifdef cl_intel_device_side_avc_motion_estimation
4171 #pragma OPENCL EXTENSION cl_intel_device_side_avc_motion_estimation : enable
4172+#endif
4173
4174 // All intel_sub_group_avc_* types can only be used as argument or return value
4175 // of built-in functions defined in the extension.
4176@@ -16,55 +19,77 @@ struct st{};
4177 // negative test cases for initializers
4178 void foo(char c, float f, void* v, struct st ss) {
4179 intel_sub_group_avc_mce_payload_t payload_mce = 0; // No zero initializer for mce types
4180- // expected-error@-1 {{initializing '__private intel_sub_group_avc_mce_payload_t' with an expression of incompatible type 'int'}}
4181 intel_sub_group_avc_ime_payload_t payload_ime = 1; // No literal initializer for *payload_t types
4182- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ime_payload_t' with an expression of incompatible type 'int'}}
4183 intel_sub_group_avc_ref_payload_t payload_ref = f;
4184- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ref_payload_t' with an expression of incompatible type '__private float'}}
4185 intel_sub_group_avc_sic_payload_t payload_sic = ss;
4186- // expected-error@-1 {{initializing '__private intel_sub_group_avc_sic_payload_t' with an expression of incompatible type '__private struct st'}}
4187-
4188 intel_sub_group_avc_mce_result_t result_mce = 0; // No zero initializer for mce types
4189- // expected-error@-1 {{initializing '__private intel_sub_group_avc_mce_result_t' with an expression of incompatible type 'int'}}
4190 intel_sub_group_avc_ime_result_t result_ime = 1; // No literal initializer for *result_t types
4191- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ime_result_t' with an expression of incompatible type 'int'}}
4192 intel_sub_group_avc_ref_result_t result_ref = f;
4193- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ref_result_t' with an expression of incompatible type '__private float'}}
4194 intel_sub_group_avc_sic_result_t result_sic = ss;
4195- // expected-error@-1 {{initializing '__private intel_sub_group_avc_sic_result_t' with an expression of incompatible type '__private struct st'}}
4196-
4197 intel_sub_group_avc_ime_result_single_reference_streamout_t sstreamout = v;
4198- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ime_result_single_reference_streamout_t' with an expression of incompatible type '__private void *__private'}}
4199-
4200 intel_sub_group_avc_ime_result_dual_reference_streamout_t dstreamin_list = {0x0, 0x1};
4201- // expected-warning@-1 {{excess elements in struct initializer}}
4202 intel_sub_group_avc_ime_dual_reference_streamin_t dstreamin_list2 = {};
4203- // expected-error@-1 {{scalar initializer cannot be empty}}
4204 intel_sub_group_avc_ime_single_reference_streamin_t dstreamin_list3 = {c};
4205- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ime_single_reference_streamin_t' with an expression of incompatible type '__private char'}}
4206 intel_sub_group_avc_ime_dual_reference_streamin_t dstreamin_list4 = {1};
4207- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ime_dual_reference_streamin_t' with an expression of incompatible type 'int'}}
4208+#ifdef EXT
4209+// expected-error@-14 {{initializing '__private intel_sub_group_avc_mce_payload_t' with an expression of incompatible type 'int'}}
4210+// expected-error@-14 {{initializing '__private intel_sub_group_avc_ime_payload_t' with an expression of incompatible type 'int'}}
4211+// expected-error@-14 {{initializing '__private intel_sub_group_avc_ref_payload_t' with an expression of incompatible type '__private float'}}
4212+// expected-error@-14 {{initializing '__private intel_sub_group_avc_sic_payload_t' with an expression of incompatible type '__private struct st'}}
4213+// expected-error@-14 {{initializing '__private intel_sub_group_avc_mce_result_t' with an expression of incompatible type 'int'}}
4214+// expected-error@-14 {{initializing '__private intel_sub_group_avc_ime_result_t' with an expression of incompatible type 'int'}}
4215+// expected-error@-14 {{initializing '__private intel_sub_group_avc_ref_result_t' with an expression of incompatible type '__private float'}}
4216+// expected-error@-14 {{initializing '__private intel_sub_group_avc_sic_result_t' with an expression of incompatible type '__private struct st'}}
4217+// expected-error@-14 {{initializing '__private intel_sub_group_avc_ime_result_single_reference_streamout_t' with an expression of incompatible type '__private void *__private'}}
4218+// expected-warning@-14 {{excess elements in struct initializer}}
4219+// expected-error@-14 {{scalar initializer cannot be empty}}
4220+// expected-error@-14 {{initializing '__private intel_sub_group_avc_ime_single_reference_streamin_t' with an expression of incompatible type '__private char'}}
4221+// expected-error@-14 {{initializing '__private intel_sub_group_avc_ime_dual_reference_streamin_t' with an expression of incompatible type 'int'}}
4222+#else
4223+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_mce_payload_t'}}
4224+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ime_payload_t'}}
4225+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ref_payload_t'}}
4226+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_sic_payload_t'}}
4227+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_mce_result_t'}}
4228+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ime_result_t'}}
4229+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ref_result_t'}}
4230+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_sic_result_t'}}
4231+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ime_result_single_reference_streamout_t'}}
4232+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ime_result_dual_reference_streamout_t'}}
4233+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ime_dual_reference_streamin_t'}}
4234+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ime_single_reference_streamin_t'}}
4235+// expected-error@-28 {{use of undeclared identifier 'intel_sub_group_avc_ime_dual_reference_streamin_t'}}
4236+#endif
4237 }
4238
4239 // negative tests for initializers and assignment
4240 void far() {
4241 intel_sub_group_avc_mce_payload_t payload_mce;
4242 intel_sub_group_avc_mce_payload_t payload_mce2 = payload_mce;
4243-
4244 intel_sub_group_avc_ime_payload_t payload_ime;
4245 intel_sub_group_avc_ref_payload_t payload_ref = payload_ime;
4246- // expected-error@-1 {{initializing '__private intel_sub_group_avc_ref_payload_t' with an expression of incompatible type '__private intel_sub_group_avc_ime_payload_t'}}
4247-
4248 intel_sub_group_avc_sic_result_t result_sic;
4249 intel_sub_group_avc_ime_result_t result_ime;
4250 result_sic = result_ime;
4251- // expected-error@-1 {{assigning to '__private intel_sub_group_avc_sic_result_t' from incompatible type '__private intel_sub_group_avc_ime_result_t'}}
4252+#ifdef EXT
4253+// expected-error@-5 {{initializing '__private intel_sub_group_avc_ref_payload_t' with an expression of incompatible type '__private intel_sub_group_avc_ime_payload_t'}}
4254+// expected-error@-3 {{assigning to '__private intel_sub_group_avc_sic_result_t' from incompatible type '__private intel_sub_group_avc_ime_result_t'}}
4255+#else
4256+// expected-error@-11 {{use of undeclared identifier 'intel_sub_group_avc_mce_payload_t'}}
4257+// expected-error@-11 {{use of undeclared identifier 'intel_sub_group_avc_mce_payload_t'}}
4258+// expected-error@-11 {{use of undeclared identifier 'intel_sub_group_avc_ime_payload_t'}}
4259+// expected-error@-11 {{use of undeclared identifier 'intel_sub_group_avc_ref_payload_t'}}
4260+// expected-error@-11 {{use of undeclared identifier 'intel_sub_group_avc_sic_result_t'}}
4261+// expected-error@-11 {{use of undeclared identifier 'intel_sub_group_avc_ime_result_t'}}
4262+// expected-error@-11 {{use of undeclared identifier 'result_sic'}} expected-error@-11 {{use of undeclared identifier 'result_ime'}}
4263+#endif
4264 }
4265
4266 // Using 0x0 directly allows us not to include opencl-c.h header and not to
4267 // redefine all of these CLK_AVC_*_INTITIALIZE_INTEL macro. '0x0' value must
4268 // be in sync with ones defined in opencl-c.h
4269
4270+#ifdef EXT
4271 // positive test cases
4272 void bar() {
4273 const sampler_t vme_sampler = 0x0;
4274@@ -102,4 +127,4 @@ void bar() {
4275 intel_sub_group_avc_ime_single_reference_streamin_t sstreamin_list = {0};
4276 intel_sub_group_avc_ime_dual_reference_streamin_t dstreamin_list = {0};
4277 }
4278-
4279+#endif //EXT
4280diff --git a/clang/test/SemaOpenCL/storageclass.cl b/clang/test/SemaOpenCL/storageclass.cl
4281index f35ab9c2e08c..060aff2354d1 100644
4282--- a/clang/test/SemaOpenCL/storageclass.cl
4283+++ b/clang/test/SemaOpenCL/storageclass.cl
4284@@ -1,28 +1,118 @@
4285 // RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.2
4286-
4287+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=-__opencl_c_program_scope_global_variables,-__opencl_c_generic_address_space
4288+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=+__opencl_c_program_scope_global_variables,-__opencl_c_generic_address_space
4289+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=-__opencl_c_program_scope_global_variables,+__opencl_c_generic_address_space
4290+// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=+__opencl_c_program_scope_global_variables,+__opencl_c_generic_address_space
4291 static constant int G1 = 0;
4292 constant int G2 = 0;
4293-int G3 = 0; // expected-error{{program scope variable must reside in constant address space}}
4294-global int G4 = 0; // expected-error{{program scope variable must reside in constant address space}}
4295
4296-static float g_implicit_static_var = 0; // expected-error {{program scope variable must reside in constant address space}}
4297+int G3 = 0;
4298+#ifndef __opencl_c_program_scope_global_variables
4299+// expected-error@-2 {{program scope variable must reside in constant address space}}
4300+#endif
4301+
4302+global int G4 = 0;
4303+#ifndef __opencl_c_program_scope_global_variables
4304+// expected-error@-2 {{program scope variable must reside in constant address space}}
4305+#endif
4306+
4307+static float g_implicit_static_var = 0;
4308+#ifndef __opencl_c_program_scope_global_variables
4309+// expected-error@-2 {{program scope variable must reside in constant address space}}
4310+#endif
4311+
4312 static constant float g_constant_static_var = 0;
4313-static global float g_global_static_var = 0; // expected-error {{program scope variable must reside in constant address space}}
4314-static local float g_local_static_var = 0; // expected-error {{program scope variable must reside in constant address space}}
4315-static private float g_private_static_var = 0; // expected-error {{program scope variable must reside in constant address space}}
4316-static generic float g_generic_static_var = 0; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{program scope variable must reside in constant address space}}
4317
4318-extern float g_implicit_extern_var; // expected-error {{extern variable must reside in constant address space}}
4319+static global float g_global_static_var = 0;
4320+#ifndef __opencl_c_program_scope_global_variables
4321+// expected-error@-2 {{program scope variable must reside in constant address space}}
4322+#endif
4323+
4324+static local float g_local_static_var = 0;
4325+#ifndef __opencl_c_program_scope_global_variables
4326+// expected-error@-2 {{program scope variable must reside in constant address space}}
4327+#else
4328+// expected-error@-4 {{program scope variable must reside in global or constant address space}}
4329+#endif
4330+
4331+static private float g_private_static_var = 0;
4332+#ifndef __opencl_c_program_scope_global_variables
4333+// expected-error@-2 {{program scope variable must reside in constant address space}}
4334+#else
4335+// expected-error@-4 {{program scope variable must reside in global or constant address space}}
4336+#endif
4337+
4338+static generic float g_generic_static_var = 0;
4339+#if (__OPENCL_C_VERSION__ < 300)
4340+// expected-error@-2 {{OpenCL C version 1.2 does not support the 'generic' type qualifier}}
4341+// expected-error@-3 {{program scope variable must reside in constant address space}}
4342+#elif (__OPENCL_C_VERSION__ == 300)
4343+ #if !defined(__opencl_c_generic_address_space)
4344+// expected-error@-6 {{OpenCL C version 3.0 does not support the 'generic' type qualifier}}
4345+ #endif
4346+ #if !defined(__opencl_c_program_scope_global_variables)
4347+// expected-error@-9 {{program scope variable must reside in constant address space}}
4348+ #endif
4349+ #if defined(__opencl_c_generic_address_space) && defined(__opencl_c_program_scope_global_variables)
4350+// expected-error@-12 {{program scope variable must reside in global or constant address space}}
4351+ #endif
4352+#endif
4353+
4354+extern float g_implicit_extern_var;
4355+#ifndef __opencl_c_program_scope_global_variables
4356+// expected-error@-2 {{extern variable must reside in constant address space}}
4357+#endif
4358+
4359 extern constant float g_constant_extern_var;
4360-extern global float g_global_extern_var; // expected-error {{extern variable must reside in constant address space}}
4361-extern local float g_local_extern_var; // expected-error {{extern variable must reside in constant address space}}
4362-extern private float g_private_extern_var; // expected-error {{extern variable must reside in constant address space}}
4363-extern generic float g_generic_extern_var; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{extern variable must reside in constant address space}}
4364+
4365+extern global float g_global_extern_var;
4366+#ifndef __opencl_c_program_scope_global_variables
4367+// expected-error@-2 {{extern variable must reside in constant address space}}
4368+#endif
4369+
4370+extern local float g_local_extern_var;
4371+#ifndef __opencl_c_program_scope_global_variables
4372+// expected-error@-2 {{extern variable must reside in constant address space}}
4373+#else
4374+// expected-error@-4 {{extern variable must reside in global or constant address space}}
4375+#endif
4376+
4377+extern private float g_private_extern_var;
4378+#ifndef __opencl_c_program_scope_global_variables
4379+// expected-error@-2 {{extern variable must reside in constant address space}}
4380+#else
4381+// expected-error@-4 {{extern variable must reside in global or constant address space}}
4382+#endif
4383+
4384+extern generic float g_generic_extern_var;
4385+#if (__OPENCL_C_VERSION__ < 300)
4386+// expected-error@-2 {{OpenCL C version 1.2 does not support the 'generic' type qualifier}}
4387+// expected-error@-3 {{extern variable must reside in constant address space}}
4388+#elif (__OPENCL_C_VERSION__ == 300)
4389+ #if !defined(__opencl_c_generic_address_space)
4390+// expected-error@-6 {{OpenCL C version 3.0 does not support the 'generic' type qualifier}}
4391+ #endif
4392+ #if !defined(__opencl_c_program_scope_global_variables)
4393+// expected-error@-9 {{extern variable must reside in constant address space}}
4394+ #endif
4395+ #if defined(__opencl_c_generic_address_space) && defined(__opencl_c_program_scope_global_variables)
4396+// expected-error@-12 {{extern variable must reside in global or constant address space}}
4397+ #endif
4398+#endif
4399
4400 void kernel foo(int x) {
4401 // static is not allowed at local scope before CL2.0
4402- static int S1 = 5; // expected-error{{variables in function scope cannot be declared static}}
4403- static constant int S2 = 5; // expected-error{{variables in function scope cannot be declared static}}
4404+ static int S1 = 5;
4405+#if __OPENCL_C_VERSION__ < 300
4406+// expected-error@-2 {{variables in function scope cannot be declared static}}
4407+#elif !defined(__opencl_c_program_scope_global_variables)
4408+// expected-error@-4 {{static local variable must reside in constant address space}}
4409+#endif
4410+
4411+ static constant int S2 = 5;
4412+#if __OPENCL_C_VERSION__ < 300
4413+// expected-error@-2 {{variables in function scope cannot be declared static}}
4414+#endif
4415
4416 constant int L1 = 0;
4417 local int L2;
4418@@ -32,12 +122,13 @@ void kernel foo(int x) {
4419 constant int L1 = 42; // expected-error {{variables in the constant address space can only be declared in the outermost scope of a kernel function}}
4420 }
4421
4422- auto int L3 = 7; // expected-error{{OpenCL C version 1.2 does not support the 'auto' storage class specifier}}
4423+ auto int L3 = 7; // expected-error-re{{OpenCL C version {{1.2|3.0}} does not support the 'auto' storage class specifier}}
4424 global int L4; // expected-error{{function scope variable cannot be declared in global address space}}
4425 __attribute__((address_space(100))) int L5; // expected-error{{automatic variable qualified with an invalid address space}}
4426
4427 constant int L6 = x; // expected-error {{initializer element is not a compile-time constant}}
4428 global int *constant L7 = &G4;
4429+
4430 private int *constant L8 = &x; // expected-error {{initializer element is not a compile-time constant}}
4431 constant int *constant L9 = &L1;
4432 local int *constant L10 = &L2; // expected-error {{initializer element is not a compile-time constant}}
4433@@ -59,17 +150,106 @@ void f() {
4434 __attribute__((address_space(100))) int L4; // expected-error{{automatic variable qualified with an invalid address space}}
4435 }
4436
4437- static float l_implicit_static_var = 0; // expected-error {{variables in function scope cannot be declared static}}
4438- static constant float l_constant_static_var = 0; // expected-error {{variables in function scope cannot be declared static}}
4439- static global float l_global_static_var = 0; // expected-error {{variables in function scope cannot be declared static}}
4440- static local float l_local_static_var = 0; // expected-error {{variables in function scope cannot be declared static}}
4441- static private float l_private_static_var = 0; // expected-error {{variables in function scope cannot be declared static}}
4442- static generic float l_generic_static_var = 0; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{variables in function scope cannot be declared static}}
4443+ static float l_implicit_static_var = 0;
4444+#if __OPENCL_C_VERSION__ < 300
4445+// expected-error@-2 {{variables in function scope cannot be declared static}}
4446+#elif !defined(__opencl_c_program_scope_global_variables)
4447+// expected-error@-4 {{static local variable must reside in constant address space}}
4448+#endif
4449+
4450+ static constant float l_constant_static_var = 0;
4451+#if __OPENCL_C_VERSION__ < 300
4452+// expected-error@-2 {{variables in function scope cannot be declared static}}
4453+#endif
4454+
4455+ static global float l_global_static_var = 0;
4456+#if __OPENCL_C_VERSION__ < 300
4457+// expected-error@-2 {{variables in function scope cannot be declared static}}
4458+#elif !defined(__opencl_c_program_scope_global_variables)
4459+// expected-error@-4 {{static local variable must reside in constant address space}}
4460+#endif
4461+
4462+ static local float l_local_static_var = 0;
4463+#if __OPENCL_C_VERSION__ < 300
4464+// expected-error@-2 {{variables in function scope cannot be declared static}}
4465+#elif !defined(__opencl_c_program_scope_global_variables)
4466+// expected-error@-4 {{static local variable must reside in constant address space}}
4467+#elif defined(__opencl_c_program_scope_global_variables)
4468+// expected-error@-6 {{static local variable must reside in global or constant address space}}
4469+#endif
4470+
4471+ static private float l_private_static_var = 0;
4472+#if __OPENCL_C_VERSION__ < 300
4473+// expected-error@-2 {{variables in function scope cannot be declared static}}
4474+#elif !defined(__opencl_c_program_scope_global_variables)
4475+// expected-error@-4 {{static local variable must reside in constant address space}}
4476+#elif defined(__opencl_c_program_scope_global_variables)
4477+// expected-error@-6 {{static local variable must reside in global or constant address space}}
4478+#endif
4479+
4480+ static generic float l_generic_static_var = 0;
4481+#if (__OPENCL_C_VERSION__ < 300)
4482+// expected-error@-2 {{OpenCL C version 1.2 does not support the 'generic' type qualifier}}
4483+// expected-error@-3 {{variables in function scope cannot be declared static}}
4484+#elif (__OPENCL_C_VERSION__ == 300)
4485+ #if !defined(__opencl_c_generic_address_space)
4486+// expected-error@-6 {{OpenCL C version 3.0 does not support the 'generic' type qualifier}}
4487+ #endif
4488+ #if !defined(__opencl_c_program_scope_global_variables)
4489+// expected-error@-9 {{static local variable must reside in constant address space}}
4490+ #endif
4491+ #if defined(__opencl_c_generic_address_space) && defined(__opencl_c_program_scope_global_variables)
4492+// expected-error@-12 {{static local variable must reside in global or constant address space}}
4493+ #endif
4494+#endif
4495+
4496+ extern float l_implicit_extern_var;
4497+#if __OPENCL_C_VERSION__ < 300
4498+// expected-error@-2 {{extern variable must reside in constant address space}}
4499+#elif !defined(__opencl_c_program_scope_global_variables)
4500+// expected-error@-4 {{extern variable must reside in constant address space}}
4501+#endif
4502
4503- extern float l_implicit_extern_var; // expected-error {{extern variable must reside in constant address space}}
4504 extern constant float l_constant_extern_var;
4505- extern global float l_global_extern_var; // expected-error {{extern variable must reside in constant address space}}
4506- extern local float l_local_extern_var; // expected-error {{extern variable must reside in constant address space}}
4507- extern private float l_private_extern_var; // expected-error {{extern variable must reside in constant address space}}
4508- extern generic float l_generic_extern_var; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{extern variable must reside in constant address space}}
4509+
4510+ extern global float l_global_extern_var;
4511+#if __OPENCL_C_VERSION__ < 300
4512+// expected-error@-2 {{extern variable must reside in constant address space}}
4513+#elif !defined(__opencl_c_program_scope_global_variables)
4514+// expected-error@-4 {{extern variable must reside in constant address space}}
4515+#endif
4516+
4517+ extern local float l_local_extern_var;
4518+#if __OPENCL_C_VERSION__ < 300
4519+// expected-error@-2 {{extern variable must reside in constant address space}}
4520+#elif !defined(__opencl_c_program_scope_global_variables)
4521+// expected-error@-4 {{extern variable must reside in constant address space}}
4522+#elif defined(__opencl_c_program_scope_global_variables)
4523+// expected-error@-6 {{extern variable must reside in global or constant address space}}
4524+#endif
4525+
4526+ extern private float l_private_extern_var;
4527+#if __OPENCL_C_VERSION__ < 300
4528+// expected-error@-2 {{extern variable must reside in constant address space}}
4529+#elif !defined(__opencl_c_program_scope_global_variables)
4530+// expected-error@-4 {{extern variable must reside in constant address space}}
4531+#elif defined(__opencl_c_program_scope_global_variables)
4532+// expected-error@-6 {{extern variable must reside in global or constant address space}}
4533+#endif
4534+
4535+ extern generic float l_generic_extern_var;
4536+#if (__OPENCL_C_VERSION__ < 300)
4537+// expected-error@-2 {{OpenCL C version 1.2 does not support the 'generic' type qualifier}}
4538+// expected-error@-3 {{extern variable must reside in constant address space}}
4539+#elif (__OPENCL_C_VERSION__ == 300)
4540+ #if !defined(__opencl_c_generic_address_space)
4541+// expected-error@-6 {{OpenCL C version 3.0 does not support the 'generic' type qualifier}}
4542+ #endif
4543+ #if !defined(__opencl_c_program_scope_global_variables)
4544+// expected-error@-9 {{extern variable must reside in constant address space}}
4545+ #endif
4546+ #if defined(__opencl_c_generic_address_space) && defined(__opencl_c_program_scope_global_variables)
4547+// expected-error@-12 {{extern variable must reside in global or constant address space}}
4548+ #endif
4549+#endif
4550 }
4551diff --git a/clang/test/SemaOpenCL/unsupported-image.cl b/clang/test/SemaOpenCL/unsupported-image.cl
4552new file mode 100644
4553index 000000000000..40772460e54d
4554--- /dev/null
4555+++ b/clang/test/SemaOpenCL/unsupported-image.cl
4556@@ -0,0 +1,69 @@
4557+// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -cl-std=CL3.0 -cl-ext=-__opencl_c_images,-__opencl_c_read_write_images,-cl_khr_3d_image_writes,-__opencl_c_3d_image_writes %s
4558+// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -cl-std=CL3.0 -cl-ext=+__opencl_c_images,+__opencl_c_read_write_images,+cl_khr_3d_image_writes,+__opencl_c_3d_image_writes %s
4559+// RUN: %clang_cc1 -triple spir-unknown-unknown -verify -cl-std=CL3.0 -cl-ext=+__opencl_c_images,+__opencl_c_read_write_images,-cl_khr_3d_image_writes,-__opencl_c_3d_image_writes %s
4560+
4561+#if defined(__opencl_c_images) && defined(__opencl_c_3d_image_writes)
4562+//expected-no-diagnostics
4563+#endif
4564+
4565+void test1(image1d_t i) {}
4566+#if !defined(__opencl_c_images)
4567+// expected-error@-2{{use of type '__read_only image1d_t' requires __opencl_c_images support}}
4568+#endif
4569+
4570+void test2(image2d_t i) {}
4571+#if !defined(__opencl_c_images)
4572+// expected-error@-2{{use of type '__read_only image2d_t' requires __opencl_c_images support}}
4573+#endif
4574+
4575+void test3(image1d_array_t i) {}
4576+#if !defined(__opencl_c_images)
4577+// expected-error@-2{{use of type '__read_only image1d_array_t' requires __opencl_c_images support}}
4578+#endif
4579+
4580+void test4(image2d_array_t i) {}
4581+#if !defined(__opencl_c_images)
4582+// expected-error@-2{{use of type '__read_only image2d_array_t' requires __opencl_c_images support}}
4583+#endif
4584+
4585+void test5(image2d_depth_t i) {}
4586+#if !defined(__opencl_c_images)
4587+// expected-error@-2{{use of type '__read_only image2d_depth_t' requires __opencl_c_images support}}
4588+#endif
4589+
4590+void test6(image1d_buffer_t i) {}
4591+#if !defined(__opencl_c_images)
4592+// expected-error@-2{{use of type '__read_only image1d_buffer_t' requires __opencl_c_images support}}
4593+#endif
4594+
4595+void test7(image2d_msaa_t i) {}
4596+#if !defined(__opencl_c_images)
4597+// expected-error@-2{{use of type '__read_only image2d_msaa_t' requires __opencl_c_images support}}
4598+#endif
4599+
4600+void test8(image2d_array_msaa_t i) {}
4601+#if !defined(__opencl_c_images)
4602+// expected-error@-2{{use of type '__read_only image2d_array_msaa_t' requires __opencl_c_images support}}
4603+#endif
4604+
4605+void test9(image2d_msaa_depth_t i) {}
4606+#if !defined(__opencl_c_images)
4607+// expected-error@-2{{use of type '__read_only image2d_msaa_depth_t' requires __opencl_c_images support}}
4608+#endif
4609+
4610+void test10(image2d_array_msaa_depth_t i) {}
4611+#if !defined(__opencl_c_images)
4612+// expected-error@-2{{use of type '__read_only image2d_array_msaa_depth_t' requires __opencl_c_images support}}
4613+#endif
4614+
4615+void test11(sampler_t s) {}
4616+#if !defined(__opencl_c_images)
4617+// expected-error@-2{{use of type 'sampler_t' requires __opencl_c_images support}}
4618+#endif
4619+
4620+void test12(write_only image3d_t i) {}
4621+#if !defined(__opencl_c_images)
4622+// expected-error@-2{{use of type '__write_only image3d_t' requires __opencl_c_images support}}
4623+#elif !defined(__opencl_c_3d_image_writes)
4624+// expected-error@-4{{use of type '__write_only image3d_t' requires cl_khr_3d_image_writes and __opencl_c_3d_image_writes support}}
4625+#endif
4626--
46272.18.1
4628
diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend b/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend
deleted file mode 100644
index e3fd054b..00000000
--- a/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend
+++ /dev/null
@@ -1,13 +0,0 @@
1FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/files:"
2
3SRC_URI_LLVM12_PATCHES = " \
4 file://llvm12-0001-Remove-__IMAGE_SUPPORT__-macro-for-SPIR-since-SPIR-d.patch \
5 file://llvm12-0002-Avoid-calling-ParseCommandLineOptions-in-BackendUtil.patch \
6 file://llvm12-0003-Support-cl_ext_float_atomics.patch \
7 file://llvm12-0004-ispc-12_0_disable-A-B-A-B-and-BSWAP-in-InstCombine.patch \
8 file://llvm12-0005-ispc-12_0_fix_for_2111.patch \
9 file://llvm12-0006-OpenCL-Add-cl_khr_integer_dot_product.patch \
10 file://llvm12-0007-OpenCL-3.0-support.patch \
11 "
12
13SRC_URI:append:intel-x86-common = "${@bb.utils.contains('LLVMVERSION', '12.0.0', ' ${SRC_URI_LLVM12_PATCHES} ', '', d)}"
diff --git a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/allow-to-find-cpp-generation-tool.patch b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/allow-to-find-cpp-generation-tool.patch
index 4646856d..265fcfa2 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/allow-to-find-cpp-generation-tool.patch
+++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/allow-to-find-cpp-generation-tool.patch
@@ -1,4 +1,4 @@
1From 40e9344d37d62158e6c9f72919f0595ef5fde61a Mon Sep 17 00:00:00 2001 1From a6361d635e5f3046853883f3ac06fb175116933c Mon Sep 17 00:00:00 2001
2From: Dongwon Kim <dongwon.kim@intel.com> 2From: Dongwon Kim <dongwon.kim@intel.com>
3Date: Sat, 21 Aug 2021 16:09:39 -0700 3Date: Sat, 21 Aug 2021 16:09:39 -0700
4Subject: [PATCH] Build not able to locate cpp_generation_tool. 4Subject: [PATCH] Build not able to locate cpp_generation_tool.
@@ -7,28 +7,27 @@ Upstream-Status: Inappropriate [oe specific]
7 7
8Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> 8Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
9Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> 9Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
10
11--- 10---
12 shared/source/built_ins/kernels/CMakeLists.txt | 8 ++++---- 11 shared/source/built_ins/kernels/CMakeLists.txt | 10 +++++-----
13 1 file changed, 4 insertions(+), 4 deletions(-) 12 1 file changed, 5 insertions(+), 5 deletions(-)
14 13
15diff --git a/shared/source/built_ins/kernels/CMakeLists.txt b/shared/source/built_ins/kernels/CMakeLists.txt 14diff --git a/shared/source/built_ins/kernels/CMakeLists.txt b/shared/source/built_ins/kernels/CMakeLists.txt
16index 769e2a100..eef25747e 100644 15index ed85a37c52..f7c9e79137 100644
17--- a/shared/source/built_ins/kernels/CMakeLists.txt 16--- a/shared/source/built_ins/kernels/CMakeLists.txt
18+++ b/shared/source/built_ins/kernels/CMakeLists.txt 17+++ b/shared/source/built_ins/kernels/CMakeLists.txt
19@@ -94,9 +94,9 @@ function(compile_builtin core_type platform_type builtin bits builtin_options mo 18@@ -107,9 +107,9 @@ function(compile_builtin core_type platform_it builtin bits builtin_options mode
20 ) 19 )
21 add_custom_command( 20 add_custom_command(
22 OUTPUT ${OUTPUT_FILE_CPP} 21 OUTPUT ${OUTPUT_FILE_CPP}
23- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${BINARY_OUTPUT}.gen --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --platform ${family_name_with_type} --revision_id ${REVISION_ID} 22- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${BINARY_OUTPUT}.bin --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --device ${RELEASE_FILENAME}
24+ COMMAND cpp_generate_tool --file ${BINARY_OUTPUT}.gen --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --platform ${family_name_with_type} --revision_id ${REVISION_ID} 23+ COMMAND cpp_generate_tool --file ${BINARY_OUTPUT}.bin --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --device ${RELEASE_FILENAME}
25 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 24 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
26- DEPENDS ${OUTPUT_FILES_BINARIES} $<TARGET_FILE:cpp_generate_tool> 25- DEPENDS ${OUTPUT_FILES_BINARIES} $<TARGET_FILE:cpp_generate_tool>
27+ DEPENDS ${OUTPUT_FILES_BINARIES} cpp_generate_tool 26+ DEPENDS ${OUTPUT_FILES_BINARIES} cpp_generate_tool
28 ) 27 )
29 list(APPEND BUILTINS_COMMANDS "${OUTPUT_FILE_CPP}") 28 list(APPEND BUILTINS_COMMANDS "${OUTPUT_FILE_CPP}")
30 else() 29 else()
31@@ -147,9 +147,9 @@ function(generate_cpp_spirv builtin) 30@@ -159,9 +159,9 @@ function(generate_cpp_spirv builtin)
32 ) 31 )
33 add_custom_command( 32 add_custom_command(
34 OUTPUT ${OUTPUT_FILE_CPP} 33 OUTPUT ${OUTPUT_FILE_CPP}
@@ -40,3 +39,13 @@ index 769e2a100..eef25747e 100644
40 ) 39 )
41 set(OUTPUT_LIST_CPP_FILES ${OUTPUT_LIST_CPP_FILES} ${OUTPUT_FILE_CPP} PARENT_SCOPE) 40 set(OUTPUT_LIST_CPP_FILES ${OUTPUT_LIST_CPP_FILES} ${OUTPUT_FILE_CPP} PARENT_SCOPE)
42 else() 41 else()
42@@ -277,4 +277,4 @@ if(NOT "${OUTPUT_LIST_CPP_FILES}" STREQUAL "")
43 )
44 endif()
45
46-apply_macro_for_each_core_type("SUPPORTED")
47\ No newline at end of file
48+apply_macro_for_each_core_type("SUPPORTED")
49--
502.43.2
51
diff --git a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/disable-werror.patch b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/disable-werror.patch
new file mode 100644
index 00000000..20d9b847
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/disable-werror.patch
@@ -0,0 +1,16 @@
1Upstream-Status: Inappropriate
2Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
3
4diff --git a/CMakeLists.txt b/CMakeLists.txt
5index d52e089778..bc0cf35014 100644
6--- a/CMakeLists.txt
7+++ b/CMakeLists.txt
8@@ -727,7 +727,7 @@ if(NOT MSVC)
9 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-noexcept-type") # Added for gtest
10 endif()
11 endif()
12- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Werror=vla")
13+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=vla")
14
15 if(USE_SANITIZE_UB)
16 check_cxx_compiler_flag(-fsanitize=undefined COMPILER_SUPPORTS_UNDEFINED_BEHAVIOR_SANITIZER)
diff --git a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/external-ocloc.patch b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/external-ocloc.patch
index 9ee8c96a..5f93b7b6 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/external-ocloc.patch
+++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/external-ocloc.patch
@@ -1,4 +1,4 @@
1From 1189028d9f77265edf6258a66f8ecadf3aad556a Mon Sep 17 00:00:00 2001 1From 1f58c22992ddea4167b01b44448528de427f50d5 Mon Sep 17 00:00:00 2001
2From: Dongwon Kim <dongwon.kim@intel.com> 2From: Dongwon Kim <dongwon.kim@intel.com>
3Date: Wed, 2 Mar 2022 15:52:45 -0800 3Date: Wed, 2 Mar 2022 15:52:45 -0800
4Subject: [PATCH] external ocloc 4Subject: [PATCH] external ocloc
@@ -11,7 +11,7 @@ Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
11 1 file changed, 8 insertions(+), 6 deletions(-) 11 1 file changed, 8 insertions(+), 6 deletions(-)
12 12
13diff --git a/cmake/ocloc_cmd_prefix.cmake b/cmake/ocloc_cmd_prefix.cmake 13diff --git a/cmake/ocloc_cmd_prefix.cmake b/cmake/ocloc_cmd_prefix.cmake
14index 9b6bd3cd3..0aba48709 100644 14index 2b44330831..03067c9df0 100644
15--- a/cmake/ocloc_cmd_prefix.cmake 15--- a/cmake/ocloc_cmd_prefix.cmake
16+++ b/cmake/ocloc_cmd_prefix.cmake 16+++ b/cmake/ocloc_cmd_prefix.cmake
17@@ -4,12 +4,14 @@ 17@@ -4,12 +4,14 @@
@@ -22,19 +22,19 @@ index 9b6bd3cd3..0aba48709 100644
22- set(ocloc_cmd_prefix ocloc) 22- set(ocloc_cmd_prefix ocloc)
23-else() 23-else()
24- if(DEFINED NEO__IGC_LIBRARY_PATH) 24- if(DEFINED NEO__IGC_LIBRARY_PATH)
25- set(ocloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>) 25- set(ocloc_cmd_prefix ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NEO__IGC_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib>" $<TARGET_FILE:ocloc>)
26+if(NOT DEFINED ocloc_cmd_prefix) 26+if(NOT DEFINED ocloc_cmd_prefix)
27+ if(WIN32) 27+ if(WIN32)
28+ set(ocloc_cmd_prefix ocloc) 28+ set(ocloc_cmd_prefix ocloc)
29 else() 29 else()
30- set(ocloc_cmd_prefix LD_LIBRARY_PATH=$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>) 30- set(ocloc_cmd_prefix ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib>" $<TARGET_FILE:ocloc>)
31+ if(DEFINED NEO__IGC_LIBRARY_PATH) 31+ if(DEFINED NEO__IGC_LIBRARY_PATH)
32+ set(ocloc_cmd_prefix LD_LIBRARY_PATH=${NEO__IGC_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>) 32+ set(ocloc_cmd_prefix LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NEO__IGC_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>)
33+ else() 33+ else()
34+ set(ocloc_cmd_prefix LD_LIBRARY_PATH=$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>) 34+ set(ocloc_cmd_prefix LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>)
35+ endif() 35+ endif()
36 endif() 36 endif()
37 endif() 37 endif()
38-- 38--
392.20.1 392.37.3
40 40
diff --git a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_22.23.23405.bb b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_24.05.28454.6.bb
index dae08cff..60125171 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_22.23.23405.bb
+++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_24.05.28454.6.bb
@@ -4,27 +4,25 @@ is an open source project to converge Intel's development efforts \
4on OpenCL(TM) compute stacks supporting the GEN graphics hardware \ 4on OpenCL(TM) compute stacks supporting the GEN graphics hardware \
5architecture." 5architecture."
6 6
7LICENSE = "MIT" 7LICENSE = "MIT & Apache-2.0"
8LIC_FILES_CHKSUM = "file://LICENSE.md;md5=9280143b568466d8fbe385f838078b93 \ 8LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eca6ec6997e18db166db7109cdbe611c \
9 file://third_party/opencl_headers/LICENSE;md5=dcefc90f4c3c689ec0c2489064e7273b" 9 file://third_party/opencl_headers/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
10 10
11SRC_URI = "git://github.com/intel/compute-runtime.git;protocol=https;branch=master \ 11SRC_URI = "git://github.com/intel/compute-runtime.git;protocol=https;branch=releases/24.05 \
12 " 12 file://disable-werror.patch \
13 file://allow-to-find-cpp-generation-tool.patch \
14 file://external-ocloc.patch \
15 "
13 16
14SRC_URI:append:class-target = "file://allow-to-find-cpp-generation-tool.patch \ 17SRCREV = "23a9725e62c8181193c90e5e5207507a1f136587"
15 file://external-ocloc.patch \
16 "
17
18SRCREV = "325db6a99c6a21f6610633d43bf57553ba8554ac"
19 18
20S = "${WORKDIR}/git" 19S = "${WORKDIR}/git"
21 20
22DEPENDS += " intel-graphics-compiler gmmlib" 21DEPENDS += " intel-graphics-compiler gmmlib libva qemu-native"
23DEPENDS:append:class-target = " intel-compute-runtime-native libva"
24 22
25RDEPENDS:${PN} += " intel-graphics-compiler gmmlib" 23RDEPENDS:${PN} += " intel-graphics-compiler gmmlib"
26 24
27inherit cmake pkgconfig 25inherit cmake pkgconfig qemu
28 26
29COMPATIBLE_HOST = '(x86_64).*-linux' 27COMPATIBLE_HOST = '(x86_64).*-linux'
30COMPATIBLE_HOST:libc-musl = "null" 28COMPATIBLE_HOST:libc-musl = "null"
@@ -40,14 +38,20 @@ EXTRA_OECMAKE = " \
40 38
41EXTRA_OECMAKE:append:class-target = " \ 39EXTRA_OECMAKE:append:class-target = " \
42 -Docloc_cmd_prefix=ocloc \ 40 -Docloc_cmd_prefix=ocloc \
43 " 41 -DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \
42 "
44 43
45PACKAGECONFIG ??= "" 44PACKAGECONFIG ??= ""
46PACKAGECONFIG[levelzero] = "-DBUILD_WITH_L0=ON, -DBUILD_WITH_L0=OFF, level-zero" 45PACKAGECONFIG[levelzero] = "-DBUILD_WITH_L0=ON, -DBUILD_WITH_L0=OFF, level-zero"
47 46
48do_install:append:class-native() { 47do_configure:prepend:class-target () {
49 install -d ${D}${bindir} 48 # Write out a qemu wrapper that will be used by cmake.
50 install ${B}/bin/cpp_generate_tool ${D}${bindir}/ 49 qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${B}/bin'),d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
50 cat > ${WORKDIR}/qemuwrapper << EOF
51#!/bin/sh
52$qemu_binary "\$@"
53EOF
54 chmod +x ${WORKDIR}/qemuwrapper
51} 55}
52 56
53FILES:${PN} += " \ 57FILES:${PN} += " \
@@ -57,6 +61,4 @@ FILES:${PN} += " \
57 61
58FILES:${PN}-dev = "${includedir}" 62FILES:${PN}-dev = "${includedir}"
59 63
60BBCLASSEXTEND = "native nativesdk"
61
62UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)" 64UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch
index 0dd75537..377081fd 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch
@@ -1,4 +1,4 @@
1From 16fb6c022380bbb3c48f21372fcb1da7f30d3903 Mon Sep 17 00:00:00 2001 1From 3d71670f8ad5b54d434c2f5f71713bb1d5433ae4 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com> 2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Tue, 12 Oct 2021 23:46:42 +0800 3Date: Tue, 12 Oct 2021 23:46:42 +0800
4Subject: [PATCH] BiF/CMakeLists.txt: remove opt from DEPENDS 4Subject: [PATCH] BiF/CMakeLists.txt: remove opt from DEPENDS
@@ -14,22 +14,22 @@ Upstream-Status: Inappropriate
14 14
15Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> 15Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
16--- 16---
17 IGC/VectorCompiler/lib/BiF/CMakeLists.txt | 2 +- 17 IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake | 2 +-
18 1 file changed, 1 insertion(+), 1 deletion(-) 18 1 file changed, 1 insertion(+), 1 deletion(-)
19 19
20diff --git a/IGC/VectorCompiler/lib/BiF/CMakeLists.txt b/IGC/VectorCompiler/lib/BiF/CMakeLists.txt 20diff --git a/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake b/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake
21index be8e5557e..07ab40382 100644 21index d20d7f887..882e09fea 100644
22--- a/IGC/VectorCompiler/lib/BiF/CMakeLists.txt 22--- a/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake
23+++ b/IGC/VectorCompiler/lib/BiF/CMakeLists.txt 23+++ b/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake
24@@ -112,7 +112,7 @@ function(vc_build_bif RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE) 24@@ -109,7 +109,7 @@ function(vc_build_bif TARGET RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE)
25 add_custom_command(OUTPUT ${BIF_OPT_BC_PATH} 25 COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME}"
26 COMMAND ${LLVM_OPT_EXE} --O2 -o ${BIF_OPT_BC_NAME} ${BIF_CMCL_BC_NAME} 26 COMMAND CMCLTranslatorTool -o ${BIF_CMCL_BC_NAME} ${BIF_CLANG_BC_NAME_FINAL}
27 COMMENT "vc_build_bif: running opt with O2: ${BIF_CMCL_BC_NAME} -> ${BIF_OPT_BC_NAME}" 27 COMMAND ${LLVM_OPT_EXE} ${IGC_LLVM_DEPENDENT_OPT_FLAGS} --O2 -o ${BIF_OPT_BC_NAME} ${BIF_CMCL_BC_NAME}
28- DEPENDS opt ${BIF_CMCL_BC_PATH}) 28- DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${BIF_CLANG_BC_PATH_FINAL}
29+ DEPENDS ${BIF_CMCL_BC_PATH}) 29+ DEPENDS CMCLTranslatorTool ${BIF_CLANG_BC_PATH_FINAL}
30 BYPRODUCTS ${BIF_OPT_BC_PATH}
31 SOURCES ${CMCL_SRC_PATH})
30 set(${RES_FILE} ${BIF_OPT_BC_NAME} PARENT_SCOPE) 32 set(${RES_FILE} ${BIF_OPT_BC_NAME} PARENT_SCOPE)
31 endfunction()
32
33-- 33--
342.35.3 342.43.2
35 35
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch
new file mode 100644
index 00000000..dca75e22
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch
@@ -0,0 +1,31 @@
1From e69a3181482e5f442756a61c7b683914072884f1 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Mon, 9 Jan 2023 11:43:05 +0800
4Subject: [PATCH] external/SPIRV-Tools: change path to tools and headers
5
6We clone the SPIRV headers and tools in a different directory to ensure
7file path substitutions take place.
8
9Upstream-Status: Inappropriate
10
11Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
12
13---
14 external/SPIRV-Tools/CMakeLists.txt | 4 ++--
15 1 file changed, 2 insertions(+), 2 deletions(-)
16
17diff --git a/external/SPIRV-Tools/CMakeLists.txt b/external/SPIRV-Tools/CMakeLists.txt
18index 9afa5746c..7ca24d5dc 100644
19--- a/external/SPIRV-Tools/CMakeLists.txt
20+++ b/external/SPIRV-Tools/CMakeLists.txt
21@@ -43,8 +43,8 @@ else() #By default use build from sources
22 message(STATUS "[SPIRV-Tools] : Building from source")
23 message(STATUS "[SPIRV-Tools] : Current source dir: ${CMAKE_CURRENT_SOURCE_DIR}")
24
25- set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Headers") # used in subdirectory
26- set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Tools")
27+ set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Headers") # used in subdirectory
28+ set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Tools")
29
30 set(SPIRV-Tools_OUTPUT_DIR "${IGC_OPTION__OUTPUT_DIR}/external/SPIRV-Tools/build")
31 set(IGC_BUILD__SPIRV-Headers_DIR "${SPIRV-Headers_SOURCE_DIR}")
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch
index 24367f19..39443931 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch
@@ -1,17 +1,19 @@
1From 5329f00de484b470152e2bd3a5ab6dac45668b13 Mon Sep 17 00:00:00 2001 1From 5648568e597acd0fed82aac3e6aef0f95a1b78d1 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com> 2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Thu, 19 May 2022 22:50:09 +0800 3Date: Thu, 19 May 2022 22:50:09 +0800
4Subject: [PATCH] fix tblgen 4Subject: [PATCH] fix tblgen
5 5
6Upstream-Status: Inappropriate [OE specific]
7
6--- 8---
7 IGC/cmake/igc_llvm.cmake | 2 +- 9 IGC/cmake/igc_llvm.cmake | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-) 10 1 file changed, 1 insertion(+), 1 deletion(-)
9 11
10diff --git a/IGC/cmake/igc_llvm.cmake b/IGC/cmake/igc_llvm.cmake 12diff --git a/IGC/cmake/igc_llvm.cmake b/IGC/cmake/igc_llvm.cmake
11index 89c03fc49..85be9ae08 100644 13index 10322533c..9020cb3c8 100644
12--- a/IGC/cmake/igc_llvm.cmake 14--- a/IGC/cmake/igc_llvm.cmake
13+++ b/IGC/cmake/igc_llvm.cmake 15+++ b/IGC/cmake/igc_llvm.cmake
14@@ -48,7 +48,7 @@ else() 16@@ -52,7 +52,7 @@ else()
15 set(LLVM_OPT_EXE "opt" CACHE STRING "") 17 set(LLVM_OPT_EXE "opt" CACHE STRING "")
16 18
17 set(LLVM_TABLEGEN_EXE "llvm-tblgen") 19 set(LLVM_TABLEGEN_EXE "llvm-tblgen")
@@ -20,6 +22,3 @@ index 89c03fc49..85be9ae08 100644
20 if(DEFINED LLVM_TABLEGEN) 22 if(DEFINED LLVM_TABLEGEN)
21 set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN}) 23 set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN})
22 else() 24 else()
23--
242.35.3
25
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch
index 7dd36aec..650130a8 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch
@@ -1,7 +1,7 @@
1From c2b7f30dd56568482b1b7c2f22bafdf68736fc88 Mon Sep 17 00:00:00 2001 1From 0559332abd04b6c8bc70171d201f43d2e4735336 Mon Sep 17 00:00:00 2001
2From: Lee Chee Yang <chee.yang.lee@intel.com> 2From: Lee Chee Yang <chee.yang.lee@intel.com>
3Date: Wed, 2 Sep 2020 08:28:35 +0800 3Date: Wed, 2 Sep 2020 08:28:35 +0800
4Subject: [PATCH 3/5] Improve Reproducibility for src package 4Subject: [PATCH] Improve Reproducibility for src package
5 5
6Improve reproducibility for intel-graphics-compiler-src package. 6Improve reproducibility for intel-graphics-compiler-src package.
7needs to pass build path as environment variable to the build. 7needs to pass build path as environment variable to the build.
@@ -9,12 +9,13 @@ this only works on bison 3.7 onward, hence check for bison version
9before adding the flags. 9before adding the flags.
10Upstream-Status: Inappropriate [applying --file-prefix-map in such way does not work for upstream] 10Upstream-Status: Inappropriate [applying --file-prefix-map in such way does not work for upstream]
11Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> 11Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com>
12
12--- 13---
13 visa/CMakeLists.txt | 7 +++++-- 14 visa/CMakeLists.txt | 7 +++++--
14 1 file changed, 5 insertions(+), 2 deletions(-) 15 1 file changed, 5 insertions(+), 2 deletions(-)
15 16
16diff --git a/visa/CMakeLists.txt b/visa/CMakeLists.txt 17diff --git a/visa/CMakeLists.txt b/visa/CMakeLists.txt
17index 65dbb4934..8cd607a69 100644 18index 6be467587..930c386a6 100644
18--- a/visa/CMakeLists.txt 19--- a/visa/CMakeLists.txt
19+++ b/visa/CMakeLists.txt 20+++ b/visa/CMakeLists.txt
20@@ -123,8 +123,11 @@ endif() 21@@ -123,8 +123,11 @@ endif()
@@ -31,6 +32,3 @@ index 65dbb4934..8cd607a69 100644
31 ADD_FLEX_BISON_DEPENDENCY(CISAScanner CISAParser) 32 ADD_FLEX_BISON_DEPENDENCY(CISAScanner CISAParser)
32 set(CISAScanner_dependencies) 33 set(CISAScanner_dependencies)
33 34
34--
352.20.1
36
diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.11378.bb b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.15985.7.bb
index f9654d32..96d828b6 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.11378.bb
+++ b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.15985.7.bb
@@ -8,20 +8,21 @@ LIC_FILES_CHKSUM = "file://IGC/BiFModule/Implementation/ExternalLibraries/libclc
8 file://LICENSE.md;md5=488d74376edf2765f6e78d271543dde3 \ 8 file://LICENSE.md;md5=488d74376edf2765f6e78d271543dde3 \
9 file://NOTICES.txt;md5=7f4fbc3eb2c34807465e63b1ec3c9d1a" 9 file://NOTICES.txt;md5=7f4fbc3eb2c34807465e63b1ec3c9d1a"
10 10
11SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https;name=igc;branch=master \ 11SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https;name=igc;branch=releases/igc-1.0.15985 \
12 git://github.com/intel/vc-intrinsics.git;protocol=https;destsuffix=git/vc-intrinsics;name=vc;branch=master \ 12 git://github.com/intel/vc-intrinsics.git;protocol=https;destsuffix=git/vc-intrinsics;name=vc;nobranch=1 \
13 git://github.com/KhronosGroup/SPIRV-Tools.git;protocol=https;destsuffix=SPIRV-Tools;name=spirv-tools;branch=sdk-1.3.204 \ 13 git://github.com/KhronosGroup/SPIRV-Tools.git;protocol=https;destsuffix=git/SPIRV-Tools;name=spirv-tools;branch=main \
14 git://github.com/KhronosGroup/SPIRV-Headers.git;protocol=https;destsuffix=SPIRV-Headers;name=spirv-headers;branch=master \ 14 git://github.com/KhronosGroup/SPIRV-Headers.git;protocol=https;destsuffix=git/SPIRV-Headers;name=spirv-headers;branch=main \
15 file://0003-Improve-Reproducibility-for-src-package.patch \ 15 file://0003-Improve-Reproducibility-for-src-package.patch \
16 file://0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch \ 16 file://0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch \
17 file://0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch \
17 " 18 "
18 19
19SRC_URI:append:class-native = " file://0001-fix-tblgen.patch" 20SRC_URI:append:class-native = " file://0001-fix-tblgen.patch"
20 21
21SRCREV_igc = "9a6528771ee9b41aa06bbaa0da90f50b94e170af" 22SRCREV_igc = "6cc111d262e1c3abcf4bc6b6d8a589ebf821a5c0"
22SRCREV_vc = "4ce354da51f219bbdfa9c4cd5d8f640e92e38511" 23SRCREV_vc = "da892e1982b6c25b9a133f85b4ac97142d8a3def"
23SRCREV_spirv-tools = "45dd184c790d6bfc78a5a74a10c37e888b1823fa" 24SRCREV_spirv-tools = "f0cc85efdbbe3a46eae90e0f915dc1509836d0fc"
24SRCREV_spirv-headers = "b42ba6d92faf6b4938e6f22ddd186dbdacc98d78" 25SRCREV_spirv-headers = "cca08c63cefa129d082abca0302adcb81610b465"
25 26
26SRCREV_FORMAT = "igc_vc_spirv-tools_spirv-headers" 27SRCREV_FORMAT = "igc_vc_spirv-tools_spirv-headers"
27 28
@@ -30,43 +31,45 @@ export B
30 31
31S = "${WORKDIR}/git" 32S = "${WORKDIR}/git"
32 33
33inherit cmake pkgconfig 34inherit cmake pkgconfig qemu python3native
34 35
35CXXFLAGS:append = " -Wno-error=nonnull" 36CXXFLAGS:append = " -Wno-error=nonnull"
36 37
37COMPATIBLE_HOST = '(x86_64).*-linux' 38COMPATIBLE_HOST = '(x86_64).*-linux'
38COMPATIBLE_HOST:libc-musl = "null" 39COMPATIBLE_HOST:libc-musl = "null"
39 40
40DEPENDS += " flex-native bison-native clang opencl-clang" 41DEPENDS += " flex-native bison-native clang clang-cross-x86_64 opencl-clang qemu-native python3-mako-native"
41DEPENDS:append:class-target = " clang-cross-x86_64 intel-graphics-compiler-native"
42 42
43RDEPENDS:${PN} += "opencl-clang" 43RDEPENDS:${PN} += "opencl-clang"
44 44
45PACKAGECONFIG ??= "vc" 45PACKAGECONFIG ??= "vc"
46PACKAGECONFIG[vc] = "-DIGC_BUILD__VC_ENABLED=ON -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR=ON -DIGC_OPTION__USE_KHRONOS_SPIRV_TRANSLATOR_IN_VC=ON -DIGC_OPTION__SPIRV_TRANSLATOR_MODE=Prebuilds,-DIGC_BUILD__VC_ENABLED=OFF," 46PACKAGECONFIG[vc] = "-DIGC_BUILD__VC_ENABLED=ON -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR=ON -DIGC_OPTION__SPIRV_TRANSLATOR_MODE=Prebuilds,-DIGC_BUILD__VC_ENABLED=OFF,"
47 47
48EXTRA_OECMAKE = " \ 48EXTRA_OECMAKE = " \
49 -DIGC_OPTION__LLVM_PREFERRED_VERSION=${LLVMVERSION} \ 49 -DIGC_OPTION__LLVM_PREFERRED_VERSION=${LLVMVERSION} \
50 -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3 \
51 -DVC_INTRINSICS_SRC="${S}/vc-intrinsics" \ 50 -DVC_INTRINSICS_SRC="${S}/vc-intrinsics" \
52 -DIGC_OPTION__LLVM_MODE=Prebuilds \ 51 -DIGC_OPTION__LLVM_MODE=Prebuilds \
53 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ 52 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
54 -DLLVM_LINK_EXE=${STAGING_BINDIR_NATIVE}/llvm-link \ 53 -DLLVM_LINK_EXE=${STAGING_BINDIR_NATIVE}/llvm-link \
54 -DCLANG_EXE=${STAGING_BINDIR_NATIVE}/clang \
55 -DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \
55 " 56 "
56 57
57do_install:append:class-native () { 58do_configure:prepend:class-target () {
58 install -d ${D}${bindir} 59 # Write out a qemu wrapper that will be used by cmake.
59 install ${B}/IGC/Release/elf_packager ${D}${bindir}/ 60 qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
60 if ${@bb.utils.contains('PACKAGECONFIG', 'vc', 'true', 'false', d)}; then 61 cat > ${WORKDIR}/qemuwrapper << EOF
61 install ${B}/IGC/Release/CMCLTranslatorTool ${D}${bindir}/ 62#!/bin/sh
62 install ${B}/IGC/Release/vcb ${D}${bindir}/ 63$qemu_binary "\$@"
63 fi 64EOF
65 chmod +x ${WORKDIR}/qemuwrapper
64} 66}
65 67
66BBCLASSEXTEND = "native nativesdk"
67
68UPSTREAM_CHECK_GITTAGREGEX = "^igc-(?P<pver>(?!19\..*)\d+(\.\d+)+)$" 68UPSTREAM_CHECK_GITTAGREGEX = "^igc-(?P<pver>(?!19\..*)\d+(\.\d+)+)$"
69 69
70FILES:${PN} += " \ 70FILES:${PN} += " \
71 ${libdir}/igc/NOTICES.txt \ 71 ${libdir}/igc/NOTICES.txt \
72 " 72 "
73
74# libigc.so contains buildpaths
75INSANE_SKIP:${PN} += "buildpaths"
diff --git a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-cl_headers-CMakeLists.txt-use-clang-from-native-sysr.patch b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-cl_headers-CMakeLists.txt-use-clang-from-native-sysr.patch
new file mode 100644
index 00000000..031a77c7
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-cl_headers-CMakeLists.txt-use-clang-from-native-sysr.patch
@@ -0,0 +1,49 @@
1From 5aea653e611b59c70e529a1bd71885a509831557 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Tue, 1 Aug 2023 11:15:31 +0800
4Subject: [PATCH] cl_headers/CMakeLists.txt: use clang from native sysroot
5
6Allow clang to be found in target sysroot for target builds and dont try
7to compile cross binaries, we do that ourselves.
8
9Upstream-Status: Inappropriate [oe-specific]
10Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
11---
12 CMakeLists.txt | 8 ++++----
13 cl_headers/CMakeLists.txt | 2 +-
14 2 files changed, 5 insertions(+), 5 deletions(-)
15
16diff --git a/CMakeLists.txt b/CMakeLists.txt
17index 5864009..60ba39e 100644
18--- a/CMakeLists.txt
19+++ b/CMakeLists.txt
20@@ -35,10 +35,10 @@ set(CMAKE_MODULE_PATH
21
22 include(CMakeFunctions)
23
24-if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL)
25- include(CrossCompile)
26- llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release)
27-endif()
28+#if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL)
29+# include(CrossCompile)
30+# llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release)
31+#endif()
32
33 if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
34 set(USE_PREBUILT_LLVM ON)
35diff --git a/cl_headers/CMakeLists.txt b/cl_headers/CMakeLists.txt
36index 16cabb7..4423536 100644
37--- a/cl_headers/CMakeLists.txt
38+++ b/cl_headers/CMakeLists.txt
39@@ -1,6 +1,6 @@
40 set(CL_HEADERS_LIB cl_headers)
41 if(USE_PREBUILT_LLVM)
42- find_program(CLANG_COMMAND clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
43+ find_program(CLANG_COMMAND clang PATHS ${LLVM_TOOLS_BINARY_DIR})
44 else()
45 set(CLANG_COMMAND $<TARGET_FILE:clang>)
46 endif()
47--
482.37.3
49
diff --git a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch
deleted file mode 100644
index 8df7e3ab..00000000
--- a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From f3ef79a6301bab0b3a447f07ceb94c39a95009df Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Thu, 2 Apr 2020 08:59:20 +0800
4Subject: [PATCH] don't redefine LLVM_TABLEGEN_EXE
5
6Use the value that has been passed by the user.
7
8Upstream-Status: Submitted
9Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
10---
11 CMakeLists.txt | 5 ++++-
12 1 file changed, 4 insertions(+), 1 deletion(-)
13
14diff --git a/CMakeLists.txt b/CMakeLists.txt
15index 6893e97..941b0ae 100644
16--- a/CMakeLists.txt
17+++ b/CMakeLists.txt
18@@ -137,7 +137,10 @@ endif(NOT USE_PREBUILT_LLVM)
19 set (COMPILE_OPTIONS_TD opencl_clang_options.td)
20 set (COMPILE_OPTIONS_INC opencl_clang_options.inc)
21
22-set(LLVM_TABLEGEN_EXE "llvm-tblgen")
23+if(NOT DEFINED LLVM_TABLEGEN_EXE)
24+ set(LLVM_TABLEGEN_EXE "llvm-tblgen")
25+endif()
26+
27 set(LLVM_TARGET_DEFINITIONS ${COMPILE_OPTIONS_TD})
28 if(USE_PREBUILT_LLVM)
29 set(TABLEGEN_ADDITIONAL -I ${LLVM_INCLUDE_DIRS})
30--
312.25.1
32
diff --git a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0002-Request-native-clang-only-when-cross-compiling-464.patch b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0002-Request-native-clang-only-when-cross-compiling-464.patch
new file mode 100644
index 00000000..2f1814f8
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/files/0002-Request-native-clang-only-when-cross-compiling-464.patch
@@ -0,0 +1,60 @@
1From 43c806ef321b1f677a49d28c89fb7ffecf539c2d Mon Sep 17 00:00:00 2001
2From: Tim Creech <timothy.m.creech@intel.com>
3Date: Wed, 28 Jun 2023 03:45:51 -0400
4Subject: [PATCH 2/2] Request native clang only when cross-compiling (#464)
5
6* Request native clang only when cross-compiling
7
8LLVM_USE_HOST_TOOLS may be set if LLVM is configured with
9LLVM_OPTIMIZED_TABLEGEN, which does not necessarily indicate
10cross-compilation or that clang will only execute on the target.
11
12By checking that CMAKE_CROSSCOMPILING is set, we ensure that we only
13build/use clang again if necessary for host execution.
14
15* fixup: CMAKE_CROSSCOMPILING implies LLVM_USE_HOST_TOOLS
16
17Co-authored-by: Wenju He <wenju.he@intel.com>
18
19* fixup: also use CMAKE_CROSSCOMPILING in top-level CMakeLists.txt
20
21---------
22
23Co-authored-by: Wenju He <wenju.he@intel.com>
24
25Upstream-Status: Backport [https://github.com/intel/opencl-clang/commit/53843eee13cfb2357919ee02714a43bef1af0f86]
26Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
27---
28 CMakeLists.txt | 2 +-
29 cl_headers/CMakeLists.txt | 2 +-
30 2 files changed, 2 insertions(+), 2 deletions(-)
31
32diff --git a/CMakeLists.txt b/CMakeLists.txt
33index e772de9..5864009 100644
34--- a/CMakeLists.txt
35+++ b/CMakeLists.txt
36@@ -35,7 +35,7 @@ set(CMAKE_MODULE_PATH
37
38 include(CMakeFunctions)
39
40-if(LLVM_USE_HOST_TOOLS AND OPENCL_CLANG_BUILD_EXTERNAL)
41+if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL)
42 include(CrossCompile)
43 llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release)
44 endif()
45diff --git a/cl_headers/CMakeLists.txt b/cl_headers/CMakeLists.txt
46index 18296c2..16cabb7 100644
47--- a/cl_headers/CMakeLists.txt
48+++ b/cl_headers/CMakeLists.txt
49@@ -4,7 +4,7 @@ if(USE_PREBUILT_LLVM)
50 else()
51 set(CLANG_COMMAND $<TARGET_FILE:clang>)
52 endif()
53-if(LLVM_USE_HOST_TOOLS AND NOT OPENCL_CLANG_BUILD_EXTERNAL)
54+if(CMAKE_CROSSCOMPILING AND NOT OPENCL_CLANG_BUILD_EXTERNAL)
55 build_native_tool(clang CLANG_COMMAND)
56 endif()
57
58--
592.37.3
60
diff --git a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang.inc b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang.inc
index 1d9b4d51..31a3fb21 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang.inc
+++ b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang.inc
@@ -6,6 +6,8 @@ LICENSE = "NCSA"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c" 6LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c"
7 7
8SRC_URI = "git://github.com/intel/opencl-clang.git;branch=${BRANCH};protocol=https \ 8SRC_URI = "git://github.com/intel/opencl-clang.git;branch=${BRANCH};protocol=https \
9 file://0002-Request-native-clang-only-when-cross-compiling-464.patch \
10 file://0001-cl_headers-CMakeLists.txt-use-clang-from-native-sysr.patch \
9 " 11 "
10S = "${WORKDIR}/git" 12S = "${WORKDIR}/git"
11 13
@@ -16,9 +18,17 @@ DEPENDS:append:class-target = " opencl-clang-native"
16COMPATIBLE_HOST = '(x86_64).*-linux' 18COMPATIBLE_HOST = '(x86_64).*-linux'
17COMPATIBLE_HOST:libc-musl = "null" 19COMPATIBLE_HOST:libc-musl = "null"
18 20
21DEPENDS += " spirv-llvm-translator"
22
23EXTRA_OECMAKE += "\
24 -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
25 -DCMAKE_SKIP_RPATH=TRUE \
26 -DPREFERRED_LLVM_VERSION=${LLVMVERSION} \
27 "
28
19do_install:append:class-native() { 29do_install:append:class-native() {
20 install -d ${D}${bindir} 30 install -d ${D}${bindir}
21 install -m 0755 ${B}/linux_linker/linux_resource_linker ${D}${bindir}/ 31 install -m 0755 ${B}/bin/linux_resource_linker ${D}${bindir}/
22} 32}
23 33
24BBCLASSEXTEND = "native nativesdk" 34BBCLASSEXTEND = "native nativesdk"
diff --git a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_12.0.0.bb b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_12.0.0.bb
deleted file mode 100644
index d0b2acfb..00000000
--- a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_12.0.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
1require opencl-clang.inc
2
3SRCREV = "8fc6b059248dc6c9c40c7cbe5fedcc6ebb951983"
4
5DEPENDS += " spirv-llvm-translator"
6
7BRANCH = "ocl-open-120"
8
9EXTRA_OECMAKE += "\
10 -DCMAKE_SKIP_RPATH=TRUE \
11 -DPREFERRED_LLVM_VERSION="12.0.0" \
12 "
diff --git a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_14.0.0.bb b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_14.0.0.bb
index 367ca7e9..7e56af75 100644
--- a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_14.0.0.bb
+++ b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_14.0.0.bb
@@ -1,15 +1,5 @@
1require opencl-clang.inc 1require opencl-clang.inc
2 2
3SRC_URI:append = " file://0001-don-t-redefine-LLVM_TABLEGEN_EXE.patch \ 3SRCREV = "980f1691c5babcf824ee10375a04a0d0c5d7d44a"
4 "
5SRCREV = "06c7c0d7f5cbd13810d79489a533fa6c5b6c7d9f"
6 4
7BRANCH = "ocl-open-140" 5BRANCH = "ocl-open-140"
8
9DEPENDS += " spirv-llvm-translator"
10
11EXTRA_OECMAKE += "\
12 -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
13 -DCMAKE_SKIP_RPATH=TRUE \
14 -DPREFERRED_LLVM_VERSION=${LLVMVERSION} \
15 "
diff --git a/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_15.0.0.bb b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_15.0.0.bb
new file mode 100644
index 00000000..e946c31c
--- /dev/null
+++ b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_15.0.0.bb
@@ -0,0 +1,5 @@
1require opencl-clang.inc
2
3SRCREV = "60fd799cc58755c16d951f9ebfde6d0f9b8554dd"
4
5BRANCH = "ocl-open-150"
diff --git a/dynamic-layers/clang-layer/recipes-opencl/vc-intrinsics/vc-intrinsics_0.1.0.bb b/dynamic-layers/clang-layer/recipes-opencl/vc-intrinsics/vc-intrinsics_0.1.0.bb
deleted file mode 100644
index dfdb4450..00000000
--- a/dynamic-layers/clang-layer/recipes-opencl/vc-intrinsics/vc-intrinsics_0.1.0.bb
+++ /dev/null
@@ -1,27 +0,0 @@
1SUMMARY = "VC Intrinsics"
2DESCRIPTION = "VC Intrinsics project contains a set of new intrinsics on \
3top of core LLVM IR instructions that represent SIMD semantics of a program \
4targeting GPU"
5
6LICENSE = "MIT"
7LIC_FILES_CHKSUM = "file://Readme.md;beginline=1;endline=7;md5=3b2db19c3b0877bb312b7adbcb815adc"
8
9SRC_URI = "git://github.com/intel/vc-intrinsics.git;protocol=https;branch=master \
10 "
11SRCREV = "99ac111c2604a47d865bd4d7996be8cfaf2af146"
12
13S = "${WORKDIR}/git"
14
15PE = "1"
16PV .= "+git${SRCPV}"
17
18inherit cmake
19
20COMPATIBLE_HOST = '(x86_64).*-linux'
21COMPATIBLE_HOST:libc-musl = "null"
22
23DEPENDS += " clang"
24
25EXTRA_OECMAKE = "-DLLVM_DIR=${STAGING_LIBDIR}"
26
27BBCLASSEXTEND = "native nativesdk"
diff --git a/dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2022.1.bb b/dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2024.0.0.bb
index c2e91eda..70177c28 100644
--- a/dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2022.1.bb
+++ b/dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2024.0.0.bb
@@ -5,9 +5,9 @@ environment, performs static model analysis, and adjusts deep \
5learning models for optimal execution on end-point target devices." 5learning models for optimal execution on end-point target devices."
6HOMEPAGE = "https://01.org/openvinotoolkit" 6HOMEPAGE = "https://01.org/openvinotoolkit"
7 7
8SRC_URI = "git://github.com/openvinotoolkit/openvino.git;protocol=https;branch=releases/2022/1;lfs=0 \ 8SRC_URI = "git://github.com/openvinotoolkit/openvino.git;protocol=https;branch=releases/2024/0;lfs=0 \
9 " 9 "
10SRCREV = "cdb9bec7210f8c24fde3e416c7ada820faaaa23e" 10SRCREV = "34caeefd07800b59065345d651949efbe8ab6649"
11 11
12LICENSE = "Apache-2.0" 12LICENSE = "Apache-2.0"
13LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" 13LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
@@ -20,13 +20,14 @@ inherit setuptools3
20SETUPTOOLS_SETUP_PATH = "${WORKDIR}/git/tools/mo" 20SETUPTOOLS_SETUP_PATH = "${WORKDIR}/git/tools/mo"
21 21
22RDEPENDS:${PN} += " \ 22RDEPENDS:${PN} += " \
23 python3-numpy \
24 python3-protobuf \
25 python3-defusedxml \ 23 python3-defusedxml \
24 python3-fastjsonschema \
26 python3-networkx \ 25 python3-networkx \
26 python3-numpy \
27 python3-protobuf \
27 python3-requests \ 28 python3-requests \
28 python3-urllib3 \ 29 python3-urllib3 \
29 bash \ 30 bash \
30 " 31 "
31 32
32UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" 33UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+\.\d+\.\d+))$"
diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2151.0.0.0.bb b/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2406.0.0.0.bb
index a573aca4..bdf32576 100644
--- a/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2151.0.0.0.bb
+++ b/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2406.0.0.0.bb
@@ -10,11 +10,9 @@ COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
10 10
11COMPATIBLE_HOST:libc-musl = "null" 11COMPATIBLE_HOST:libc-musl = "null"
12 12
13inherit cmake systemd features_check 13inherit cmake systemd features_check python3native
14 14
15DEPENDS = "metee ace xerces-c libnl libxml2 glib-2.0 glib-2.0-native pkgconfig-native" 15DEPENDS = "metee ace xerces-c libnl libxml2 glib-2.0 glib-2.0-native pkgconfig-native python3-packaging-native"
16
17EXTRA_OECMAKE += "-DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3"
18 16
19# Enable either connman or networkmanager or none but not both. 17# Enable either connman or networkmanager or none but not both.
20PACKAGECONFIG ??= "connman" 18PACKAGECONFIG ??= "connman"
@@ -31,9 +29,10 @@ SYSTEMD_SERVICE:${PN} = "lms.service"
31 29
32SRC_URI = "git://github.com/intel/lms.git;branch=master;protocol=https \ 30SRC_URI = "git://github.com/intel/lms.git;branch=master;protocol=https \
33 " 31 "
34SRCREV = "cda6a25e0f39b2a18f10415560ee6a2cfc5fbbcb" 32SRCREV = "388f115b2aeb3ea11499971c65f828daefd32c47"
35 33
36do_install:append() { 34do_install:append() {
35 install -d ${D}${sysconfdir}/lms
37 install -d ${D}${systemd_system_unitdir} 36 install -d ${D}${systemd_system_unitdir}
38 install -m 0644 ${B}/UNS/lms.service ${D}${systemd_system_unitdir} 37 install -m 0644 ${B}/UNS/lms.service ${D}${systemd_system_unitdir}
39 install -d ${D}${sysconfdir}/udev/rules.d 38 install -d ${D}${sysconfdir}/udev/rules.d
@@ -42,5 +41,4 @@ do_install:append() {
42 41
43RDEPENDS:${PN} += "ace" 42RDEPENDS:${PN} += "ace"
44 43
45# This CVE is for Lan Management System software and not this lms. 44CVE_STATUS[CVE-2018-1000535] = "cpe-incorrect: This CVE is for a different LMS - Lan Management System."
46CVE_CHECK_IGNORE += "CVE-2018-1000535"
diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/thermald/files/0001-Makefile-Fix-build-Issue.patch b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/files/0001-Makefile-Fix-build-Issue.patch
new file mode 100644
index 00000000..270cc84d
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/files/0001-Makefile-Fix-build-Issue.patch
@@ -0,0 +1,39 @@
1From c4c049481d48f33319b1d04cad56d622c4eed65f Mon Sep 17 00:00:00 2001
2From: Yogesh Tyagi <yogesh.tyagi@intel.com>
3Date: Mon, 11 Mar 2024 13:13:32 +0800
4Subject: [PATCH] Makefile: Fix build Issue
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9In case build directory is different from source, make sure make is able to find the correct input files.
10
11Fixes:
12| dbus-binding-tool --prefix=thd_dbus_interface --mode=glib-server --output=thd_dbus_interface.h ../git/src/thd_dbus_interface.xml
13| glib-compile-resources --generate-source thermald-resource.gresource.xml
14| Failed to open file “thermald-resource.gresource.xml”: No such file or directory
15
16
17Upstream-Status: Submitted
18https://github.com/intel/thermal_daemon/pull/436
19
20Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
21---
22 Makefile.am | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25diff --git a/Makefile.am b/Makefile.am
26index a0c051a..772e280 100644
27--- a/Makefile.am
28+++ b/Makefile.am
29@@ -95,6 +95,6 @@ thd_dbus_interface.h: $(top_srcdir)/src/thd_dbus_interface.xml
30 $(AM_V_GEN) dbus-binding-tool --prefix=thd_dbus_interface --mode=glib-server --output=$@ $<
31
32 thermald-resource.c: $(top_srcdir)/thermald-resource.gresource.xml
33- $(AM_V_GEN) glib-compile-resources --generate-source thermald-resource.gresource.xml
34+ $(AM_V_GEN) glib-compile-resources --generate-source --sourcedir=${top_srcdir} $<
35
36 CLEANFILES = $(BUILT_SOURCES)
37--
382.34.1
39
diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.4.9.bb b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.5.6.bb
index 7d516814..df242cdf 100644
--- a/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.4.9.bb
+++ b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.5.6.bb
@@ -7,13 +7,16 @@ compensation using available cooling methods."
7HOMEPAGE = "https://github.com/01org/thermal_daemon" 7HOMEPAGE = "https://github.com/01org/thermal_daemon"
8 8
9DEPENDS = "dbus dbus-glib dbus-glib-native libxml2 glib-2.0 glib-2.0-native upower libevdev" 9DEPENDS = "dbus dbus-glib dbus-glib-native libxml2 glib-2.0 glib-2.0-native upower libevdev"
10DEPENDS += "autoconf-archive-native"
11
10LICENSE = "GPL-2.0-only" 12LICENSE = "GPL-2.0-only"
11LIC_FILES_CHKSUM = "file://COPYING;md5=ea8831610e926e2e469075b52bf08848" 13LIC_FILES_CHKSUM = "file://COPYING;md5=ea8831610e926e2e469075b52bf08848"
12 14
13SRC_URI = "git://github.com/intel/thermal_daemon/;branch=master;protocol=https \ 15SRC_URI = "git://github.com/intel/thermal_daemon/;branch=master;protocol=https \
16 file://0001-Makefile-Fix-build-Issue.patch \
14 " 17 "
15 18
16SRCREV = "2c862048edd473182e66cd3aed98f78b746d64aa" 19SRCREV = "3990ce2391e5c07293758c056e09e4f2453691b4"
17S = "${WORKDIR}/git" 20S = "${WORKDIR}/git"
18 21
19inherit pkgconfig autotools systemd gtk-doc 22inherit pkgconfig autotools systemd gtk-doc
@@ -28,7 +31,7 @@ EXTRA_OECONF = " \
28 --with-systemdsystemunitdir=${systemd_system_unitdir} \ 31 --with-systemdsystemunitdir=${systemd_system_unitdir} \
29 " 32 "
30 33
31FILES:${PN} += "${datadir}/dbus-1/system-services/*.service" 34FILES:${PN} += "${datadir}/dbus-1"
32 35
33SYSTEMD_SERVICE:${PN} = "thermald.service" 36SYSTEMD_SERVICE:${PN} = "thermald.service"
34 37
diff --git a/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Add-print-function-to-print-test-run-status-in-ptest.patch b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Add-print-function-to-print-test-run-status-in-ptest.patch
new file mode 100644
index 00000000..4d583657
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Add-print-function-to-print-test-run-status-in-ptest.patch
@@ -0,0 +1,53 @@
1From deccc0c69c2c8759c52885be8bdda54d3cee481c Mon Sep 17 00:00:00 2001
2From: Yogesh Tyagi <yogesh.tyagi@intel.com>
3Date: Sun, 11 Dec 2022 22:34:15 +0800
4Subject: [PATCH] Add print function to print test run status in ptest format
5
6Upstream-Status: Inappropriate [OE ptest specific]
7
8Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
9---
10 run_tests.py | 16 ++++++++++++++++
11 1 file changed, 16 insertions(+)
12
13diff --git a/run_tests.py b/run_tests.py
14index 1cd796dd..e3ffd1ab 100755
15--- a/run_tests.py
16+++ b/run_tests.py
17@@ -327,6 +327,9 @@ def run_test(testname, host, target):
18 else:
19 ispc_exe_rel = add_prefix(host.ispc_cmd, host, target)
20
21+ # to reslove the error '.rodata' can not be used when making a PIE object
22+ ispc_exe_rel = ispc_exe_rel + " --pic"
23+
24 # is this a test to make sure an error is issued?
25 want_error = (filename.find("tests_errors") != -1)
26 if want_error == True:
27@@ -795,6 +798,17 @@ def check_compiler_exists(compiler_exe):
28 return
29 error("missing the required compiler: %s \n" % compiler_exe, 1)
30
31+def print_test_run_status(results):
32+ for fstatus in results:
33+ if (fstatus[1] == Status.Success):
34+ print( "%s: %s" % ("PASS", fstatus[0]))
35+ elif (fstatus[1] == Status.Compfail):
36+ print( "%s: %s" % ("FAIL", fstatus[0]))
37+ elif (fstatus[1] == Status.Runfail):
38+ print( "%s: %s" % ("FAIL", fstatus[0]))
39+ elif (fstatus[1] == Status.Skip):
40+ print( "%s: %s" % ("SKIP", fstatus[0]))
41+
42 def print_result(status, results, s, run_tests_log, csv):
43 title = StatusStr[status]
44 file_list = [fname for fname, fstatus in results if status == fstatus]
45@@ -938,6 +952,8 @@ def run_tests(options1, args, print_version):
46 pass_rate = -1
47 print_debug("PASSRATE (%d/%d) = %d%% \n\n" % (len(run_succeed_files), total_tests_executed, pass_rate), s, run_tests_log)
48
49+ print_test_run_status(results)
50+
51 for status in Status:
52 print_result(status, results, s, run_tests_log, options.csv)
53 fails = [status != Status.Compfail and status != Status.Runfail for _, status in results]
diff --git a/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Fix-QA-Issues.patch b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Fix-QA-Issues.patch
new file mode 100644
index 00000000..b0a76ff9
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0001-Fix-QA-Issues.patch
@@ -0,0 +1,36 @@
1From 7beff95c11071170eb27b6fa7d0cc77588caee8e Mon Sep 17 00:00:00 2001
2From: Yogesh Tyagi <yogesh.tyagi@intel.com>
3Date: Tue, 26 Jul 2022 15:25:10 +0800
4Subject: [PATCH] Fix QA Issues
5
6Stop ispc from inserting host file path in generated headers which leads to reproducibility problems.
7
8Upstream-Status: Inappropriate [OE build specific]
9
10Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
11---
12 src/module.cpp | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/src/module.cpp b/src/module.cpp
16index e2084d2e..e2626865 100644
17--- a/src/module.cpp
18+++ b/src/module.cpp
19@@ -2555,7 +2555,7 @@ bool Module::writeHeader(const char *fn) {
20 perror("fopen");
21 return false;
22 }
23- fprintf(f, "//\n// %s\n// (Header automatically generated by the ispc compiler.)\n", fn);
24+ fprintf(f, "//\n// \n// (Header automatically generated by the ispc compiler.)\n");
25 fprintf(f, "// DO NOT EDIT THIS FILE.\n//\n\n");
26
27 // Create a nice guard string from the filename, turning any
28@@ -2677,7 +2677,7 @@ bool Module::writeDispatchHeader(DispatchHeaderInfo *DHI) {
29 FILE *f = DHI->file;
30
31 if (DHI->EmitFrontMatter) {
32- fprintf(f, "//\n// %s\n// (Header automatically generated by the ispc compiler.)\n", DHI->fn);
33+ fprintf(f, "//\n// \n// (Header automatically generated by the ispc compiler.)\n");
34 fprintf(f, "// DO NOT EDIT THIS FILE.\n//\n\n");
35 }
36 // Create a nice guard string from the filename, turning any
diff --git a/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0002-cmake-don-t-build-for-32-bit-targets.patch b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0002-cmake-don-t-build-for-32-bit-targets.patch
index a13ade9f..f452dc50 100644
--- a/dynamic-layers/clang-layer/recipes-core/ispc/ispc/0002-cmake-don-t-build-for-32-bit-targets.patch
+++ b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0002-cmake-don-t-build-for-32-bit-targets.patch
@@ -1,4 +1,4 @@
1From 493e886d6dae2ed7bdc12ed03f717ee0e98dfe09 Mon Sep 17 00:00:00 2001 1From 16a2c22339287122d2c25d8bb33a5a51b4e6ee51 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com> 2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Thu, 24 Feb 2022 20:01:11 +0530 3Date: Thu, 24 Feb 2022 20:01:11 +0530
4Subject: [PATCH] cmake: don't build for 32-bit targets 4Subject: [PATCH] cmake: don't build for 32-bit targets
@@ -16,14 +16,14 @@ Upstream-Status: Inappropriate
16 16
17Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> 17Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
18--- 18---
19 cmake/GenerateBuiltins.cmake | 8 ++++---- 19 cmake/GenerateBuiltins.cmake | 6 +++---
20 1 file changed, 4 insertions(+), 4 deletions(-) 20 1 file changed, 3 insertions(+), 3 deletions(-)
21 21
22diff --git a/cmake/GenerateBuiltins.cmake b/cmake/GenerateBuiltins.cmake 22diff --git a/cmake/GenerateBuiltins.cmake b/cmake/GenerateBuiltins.cmake
23index fa228247..7adc7e52 100644 23index f84494ed..d90cb1ec 100644
24--- a/cmake/GenerateBuiltins.cmake 24--- a/cmake/GenerateBuiltins.cmake
25+++ b/cmake/GenerateBuiltins.cmake 25+++ b/cmake/GenerateBuiltins.cmake
26@@ -272,7 +272,7 @@ function(builtin_to_cpp bit os_name arch supported_archs supported_oses resultFi 26@@ -253,7 +253,7 @@ function(builtin_to_cpp bit os_name arch supported_archs supported_oses resultFi
27 # In this case headers will be installed in /usr/arm-linux-gnueabihf/include and will not be picked up 27 # In this case headers will be installed in /usr/arm-linux-gnueabihf/include and will not be picked up
28 # by clang by default. So the following line adds such path explicitly. If this path doesn't exist and 28 # by clang by default. So the following line adds such path explicitly. If this path doesn't exist and
29 # the headers can be found in other locations, this should not be a problem. 29 # the headers can be found in other locations, this should not be a problem.
@@ -32,7 +32,7 @@ index fa228247..7adc7e52 100644
32 endif() 32 endif()
33 endif() 33 endif()
34 34
35@@ -354,7 +354,7 @@ function (generate_target_builtins resultList) 35@@ -339,7 +339,7 @@ function (generate_target_builtins resultList)
36 set(regular_targets ${ARGN}) 36 set(regular_targets ${ARGN})
37 list(FILTER regular_targets EXCLUDE REGEX wasm) 37 list(FILTER regular_targets EXCLUDE REGEX wasm)
38 foreach (ispc_target ${regular_targets}) 38 foreach (ispc_target ${regular_targets})
@@ -41,24 +41,12 @@ index fa228247..7adc7e52 100644
41 foreach (os_name ${TARGET_OS_LIST_FOR_LL}) 41 foreach (os_name ${TARGET_OS_LIST_FOR_LL})
42 target_ll_to_cpp(target-${ispc_target} ${bit} ${os_name} output${os_name}${bit}) 42 target_ll_to_cpp(target-${ispc_target} ${bit} ${os_name} output${os_name}${bit})
43 list(APPEND tmpList ${output${os_name}${bit}}) 43 list(APPEND tmpList ${output${os_name}${bit}})
44@@ -415,7 +415,7 @@ function (generate_common_builtins resultList) 44@@ -405,7 +405,7 @@ function (generate_common_builtins resultList)
45 endif() 45 endif()
46 46
47 message (STATUS "ISPC will be built with support of ${supported_oses} for ${supported_archs}") 47 message (STATUS "ISPC will be built with support of ${supported_oses} for ${supported_archs}")
48- foreach (bit 32 64) 48- foreach (bit 32 64)
49+ foreach (bit 64) 49+ foreach (bit 64)
50 foreach (os_name "windows" "linux" "freebsd" "macos" "android" "ios" "ps4" "web") 50 foreach (os_name "windows" "linux" "freebsd" "macos" "android" "ios" "ps4" "web")
51 foreach (arch "x86" "arm" "wasm32") 51 foreach (arch "x86" "arm" "wasm")
52 builtin_to_cpp(${bit} ${os_name} ${arch} "${supported_archs}" "${supported_oses}" res${bit}${os_name}${arch}) 52 builtin_to_cpp(${bit} ${os_name} ${arch} "${supported_archs}" "${supported_oses}" res${bit}${os_name}${arch})
53@@ -428,7 +428,7 @@ function (generate_common_builtins resultList)
54 endforeach()
55 endforeach()
56 if (XE_ENABLED)
57- foreach (bit 32 64)
58+ foreach (bit 64)
59 builtin_xe_to_cpp(${bit} res_xe_${bit})
60 list(APPEND tmpList ${res_xe_${bit}} )
61 if(MSVC)
62--
632.17.1
64
diff --git a/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/run-ptest b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/run-ptest
new file mode 100644
index 00000000..77d13bb4
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/run-ptest
@@ -0,0 +1,2 @@
1#!/bin/sh
2python3 run_tests.py
diff --git a/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc_1.23.0.bb b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc_1.23.0.bb
new file mode 100644
index 00000000..ed8df859
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc_1.23.0.bb
@@ -0,0 +1,64 @@
1SUMMARY = "Intel(R) Implicit SPMD Program Compiler"
2DESCRIPTION = "ispc is a compiler for a variant of the C programming language, \
3with extensions for single program, multiple data programming."
4HOMEPAGE = "https://github.com/ispc/ispc"
5
6LICENSE = "BSD-3-Clause & Apache-2.0-with-LLVM-exception"
7LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=da5ecffdd210b3cf776b32b41c182e87 \
8 file://third-party-programs.txt;md5=2061218c7be521556719c8b504bf9ddd"
9
10inherit cmake python3native ptest
11
12S = "${WORKDIR}/git"
13
14SRC_URI = "git://github.com/ispc/ispc.git;protocol=https;branch=main \
15 file://0002-cmake-don-t-build-for-32-bit-targets.patch \
16 file://0001-Fix-QA-Issues.patch \
17 file://0001-Add-print-function-to-print-test-run-status-in-ptest.patch \
18 file://run-ptest \
19 "
20
21SRCREV = "bcb2cf896c00f9a802a11cbf291ef6e44b205416"
22
23COMPATIBLE_HOST = '(x86_64).*-linux'
24
25DEPENDS += " clang-native bison-native flex-native"
26DEPENDS:append:class-target = " clang"
27RDEPENDS:${PN}-ptest += " python3-multiprocessing"
28
29PACKAGECONFIG ??= "tbb"
30PACKAGECONFIG[tbb] = "-DISPCRT_BUILD_TASK_MODEL=TBB, -DISPCRT_BUILD_TASK_MODEL=OpenMP, tbb"
31
32YFLAGS='-d -t -v -y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}'
33
34do_configure:prepend() {
35 sed -i -e 's#\${BISON_EXECUTABLE}.*#\${BISON_EXECUTABLE} ${YFLAGS} #g' ${S}/CMakeLists.txt
36 sed -i -e 's#\${FLEX_EXECUTABLE}.*#\${FLEX_EXECUTABLE} \-L #g' ${S}/CMakeLists.txt
37}
38
39do_install_ptest() {
40 cp -rf ${S}/run_tests.py ${D}${PTEST_PATH}
41 cp -rf ${S}/common.py ${D}${PTEST_PATH}
42 cp -rf ${S}/tests ${D}${PTEST_PATH}
43 cp -rf ${S}/test_static.isph ${D}${PTEST_PATH}
44 cp -rf ${S}/fail_db.txt ${D}${PTEST_PATH}
45 cp -rf ${S}/test_static.cpp ${D}${PTEST_PATH}
46}
47
48EXTRA_OECMAKE += " \
49 -DISPC_INCLUDE_TESTS=OFF \
50 -DISPC_INCLUDE_EXAMPLES=OFF \
51 -DARM_ENABLED=OFF \
52 -DISPC_CROSS=ON \
53 -DISPC_ANDROID_TARGET=OFF \
54 -DISPC_FREEBSD_TARGET=OFF \
55 -DISPC_WINDOWS_TARGET=OFF \
56 -DISPC_IOS_TARGET=OFF \
57 -DISPC_PS_TARGET=OFF \
58 -DSYSROOT_DIR=${STAGING_DIR} \
59 -DCLANG_EXECUTABLE=${STAGING_BINDIR_NATIVE}/clang \
60 -DCLANGPP_EXECUTABLE=${STAGING_BINDIR_NATIVE}/clang++ \
61 -DLLVM_AS_EXECUTABLE=${STAGING_BINDIR_NATIVE}/llvm-as \
62 "
63
64BBCLASSEXTEND = "native nativesdk"
diff --git a/dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.7.15.bb b/dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.15.8.bb
index 42431416..8bade9f4 100644
--- a/dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.7.15.bb
+++ b/dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.15.8.bb
@@ -4,7 +4,7 @@ LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=97957beb2f7808ffa247e5d93e6442cc" 4LIC_FILES_CHKSUM = "file://LICENSE;md5=97957beb2f7808ffa247e5d93e6442cc"
5 5
6SRC_URI = "git://github.com/oneapi-src/level-zero.git;protocol=https;branch=master" 6SRC_URI = "git://github.com/oneapi-src/level-zero.git;protocol=https;branch=master"
7SRCREV = "bb7fff05b801e26c3d7858e03e509d1089914d59" 7SRCREV = "1685d01497428ca4d8b99200972b64685424d5c9"
8S = "${WORKDIR}/git" 8S = "${WORKDIR}/git"
9 9
10inherit cmake 10inherit cmake
@@ -30,3 +30,4 @@ FILES:${PN}-loader = "${libdir}"
30INSANE_SKIP:${PN}-loader = "dev-so" 30INSANE_SKIP:${PN}-loader = "dev-so"
31INSANE_SKIP:${PN}-samples = "dev-so" 31INSANE_SKIP:${PN}-samples = "dev-so"
32ALLOW_EMPTY:${PN} = "1" 32ALLOW_EMPTY:${PN} = "1"
33BBCLASSEXTEND = "native nativesdk"
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/compiler/intel-oneapi-compiler_2022.0.1-3633.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/compiler/intel-oneapi-compiler_2022.0.1-3633.bb
deleted file mode 100644
index b9d4fdf6..00000000
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/compiler/intel-oneapi-compiler_2022.0.1-3633.bb
+++ /dev/null
@@ -1,59 +0,0 @@
1SUMMARY = "Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic runtime common files"
2DESCRIPTION = "Intel® C++ Compiler Classic generates applications\
3 that can run on Intel® 64 architecture and the IA-32 architecture.\
4 Intel® oneAPI Data Parallel C++ (DPC++) is an open alternative \
5 to single-architecture proprietary languages. It allows developers to reuse \
6 code across hardware targets (CPUs and accelerators such as GPUs and FPGAs) \
7 and also perform custom tuning for a specific accelerator."
8HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/introducing-the-intel-c-compiler-classic.html"
9
10LICENSE="EULA"
11
12LIC_FILES_CHKSUM = " \
13 file://opt/intel/oneapi/lib/licensing/compiler/Intel%20Developer%20Tools%20EULA;md5=7bfc91523de2e84e7131d0eacf2827d4 \
14 file://opt/intel/oneapi/lib/licensing/compiler/openmp/third-party-programs.txt;md5=da72b17a4a1efef54faf14df4a703282 \
15 file://opt/intel/oneapi/lib/licensing/compiler/c/third-party-programs.txt;md5=3414f5649b09160ade46d4981f3452fe \
16 file://opt/intel/oneapi/lib/licensing/opencl/EULA.txt;md5=7bfc91523de2e84e7131d0eacf2827d4 \
17 file://opt/intel/oneapi/lib/licensing/opencl/TBB_TPP.txt;md5=0a69156543e3e115c673c6041b6aee92 \
18 file://opt/intel/oneapi/lib/licensing/opencl/redist.txt;md5=32fb3b7d1c0a92ea577fe2e4b0dfa663 \
19 file://opt/intel/oneapi/lib/licensing/opencl/third-party-programs.txt;md5=c660b8b0891e780a62da6a198e80e9ac \
20 "
21
22SRC_URI = " \
23 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-compilers-${PV}_amd64.deb;subdir=${BPN};name=runtime-compilers \
24 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-compilers-common-${PV}_all.deb;subdir=${BPN};name=common-compilers \
25 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-dpcpp-cpp-${PV}_amd64.deb;subdir=${BPN};name=runtime-dpcpp-cpp \
26 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-dpcpp-cpp-common-${PV}_all.deb;subdir=${BPN};name=common-dpcpp-cpp \
27 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-openmp-${PV}_amd64.deb;subdir=${BPN};name=runtime-openmp \
28 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-openmp-common-${PV}_all.deb;subdir=${BPN};name=common-openmp \
29 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-opencl-${PV}_amd64.deb;subdir=${BPN};name=runtime-opencl \
30 "
31
32SRC_URI[runtime-compilers.sha256sum] = "8951fd8a0946095609f0ef7bb2b51c698fc0315455a76d268a54851936c07db9"
33SRC_URI[common-compilers.sha256sum] = "c592482f68b131fff0623fdc978c592950f02d7f35f6795587e93a28fe1d3c31"
34SRC_URI[runtime-dpcpp-cpp.sha256sum] = "9e26b9c5321281d829d62542c22552182d00255ebc2f8a6e179b95515c63c24d"
35SRC_URI[common-dpcpp-cpp.sha256sum] = "9cd0957a75f5ad45b208f2c1c8ee2aa032e335ada9193ca69f8ac5a7cb548d02"
36SRC_URI[runtime-openmp.sha256sum] = "86fb0d6e3a34217cc30594e9f21e89070425c6c56773edae4d5a86730239c171"
37SRC_URI[common-openmp.sha256sum] = "5bd2fc7a1605545fc8536ec0e8d80c982f1feb7dc6eed5b45adf3cd0370e0a98"
38SRC_URI[runtime-opencl.sha256sum] = "65d73c23f07c2419b8a1d22043b73346f25b387d3ec07b48f08177de1835a360"
39
40S = "${WORKDIR}/${BPN}"
41
42inherit bin_package update-alternatives
43
44ALTERNATIVE:${PN} = "Intel_FPGA_SSG_Emulator.icd"
45ALTERNATIVE_LINK_NAME[Intel_FPGA_SSG_Emulator.icd] = "/etc/OpenCL/vendors/intel64-fpgaemu.icd"
46ALTERNATIVE_TARGET[Intel_FPGA_SSG_Emulator.icd] = "/opt/intel/oneapi/lib/etc/Intel_FPGA_SSG_Emulator.icd"
47ALTERNATIVE_PRIORITY[Intel_FPGA_SSG_Emulator.icd] = "328736233"
48
49INHIBIT_PACKAGE_STRIP = "1"
50INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
51
52RDEPENDS:${PN} += "perl elfutils ocl-icd level-zero-loader zlib tbb libelf setup-intel-oneapi-env"
53INSANE_SKIP:${PN} += "textrel dev-so"
54
55# The libomptarget.rtl.x86_64.so library is not supported on Yocto 3.1+ due to using obsolete libffi.so.6
56do_install:append () {
57 rm -f ${D}/opt/intel/oneapi/lib/libomptarget.rtl.x86_64.so
58 echo "/opt/intel/oneapi/lib/emu/libintelocl_emu.so" > ${D}/opt/intel/oneapi/lib/etc/Intel_FPGA_SSG_Emulator.icd
59}
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp-runtime_2024.0.0-49819.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp-runtime_2024.0.0-49819.bb
new file mode 100644
index 00000000..cedbae1e
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp-runtime_2024.0.0-49819.bb
@@ -0,0 +1,54 @@
1SUMMARY = "Intel® oneAPI DPC++/C++ Compiler runtime files"
2DESCRIPTION = "The Intel® oneAPI DPC++/C++ Compiler provides optimizations \
3that help your applications run faster on Intel® 64 architectures with support \
4for the latest C, C++, and SYCL language standards. This compiler produces \
5optimized code that can run significantly faster by taking advantage of the \
6ever-increasing core count and vector register width in Intel® Xeon® processors \
7and compatible processors."
8
9HOMEPAGE = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html"
10
11LICENSE="EULA"
12
13COMPILERMAINVER = "2024.0"
14
15LIC_FILES_CHKSUM = " \
16 file://opt/intel/oneapi/licensing/${COMPILERMAINVER}/licensing/${COMPILERMAINVER}/license.htm;md5=5ff64c6ff3ef98089ed69360e7a84c39 \
17 "
18COMPILERDOTVER = "2024.0.0-49406"
19DEVUTILITVERSION = "2024.0-2024.0.0-49320"
20SRC_URI = " \
21 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=dpcpp-runtime \
22 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-dpcpp-cpp-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=dpcpp-common \
23 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-runtime-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=compiler-shared-runtime \
24 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-common-vars-${COMPILERDOTVER}_all.deb;subdir=${BPN};name=common-vars \
25 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-openmp-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=openmp \
26 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-openmp-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=openmp-common \
27 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-common-licensing-${COMPILERMAINVER}-${COMPILERDOTVER}_all.deb;subdir=${BPN};name=license \
28 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-dev-utilities-${DEVUTILITVERSION}_amd64.deb;subdir=${BPN};name=dev-utils \
29 "
30
31SRC_URI[dpcpp-runtime.sha256sum] = "e24f0ba69daf3f66ceaf23d5e632f183cdb90bac69f65407fdb4407fc9034f33"
32SRC_URI[dpcpp-common.sha256sum] = "f5a3db6a725598224edf1099260955aee3e36beadcaed2af5b8b453e873a82fa"
33SRC_URI[compiler-shared-runtime.sha256sum] = "bce010cbe076259ddd3feb8e69792869e22fccd5b4e2c9af9e815826f2c1a394"
34SRC_URI[common-vars.sha256sum] = "368553c99db1b52060b8225355336778be0b00e5991d0f769c42f891c6328750"
35SRC_URI[openmp.sha256sum] = "154ff1e81adfdc872ba1d47bd860de70d62188417c7128422435dfd0ceca62fe"
36SRC_URI[openmp-common.sha256sum] = "8217001d78311cbef97dd139e684c6767932b532309c3843ba57d7894d15c07d"
37SRC_URI[license.sha256sum] = "9f9c8a12fc0bc82ab5b71e118e66745eff23f42224eba304068225b366cd74b6"
38SRC_URI[dev-utils.sha256sum] = "c675d960a5abca361cead9217d6e74adee499ee0a095c4e44092bd710b304d50"
39
40S = "${WORKDIR}/${BPN}"
41
42inherit bin_package
43
44RDEPENDS:${PN} += "virtual-opencl-icd zlib tbb level-zero-loader bash tcsh"
45SKIP_FILEDEPS:${PN} = '1'
46
47INHIBIT_PACKAGE_STRIP = "1"
48INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
49
50# doesn't have GNU_HASH (didn't pass LDFLAGS?)
51INSANE_SKIP:${PN} += "textrel dev-so dev-elf ldflags already-stripped staticdev rpaths arch useless-rpaths file-rdeps"
52
53FILES_SOLIBSDEV = ""
54BBCLASSEXTEND = "native nativesdk"
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp_2024.0.0-49819.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp_2024.0.0-49819.bb
new file mode 100644
index 00000000..90ada087
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/dpcpp-compiler/intel-oneapi-dpcpp-cpp_2024.0.0-49819.bb
@@ -0,0 +1,45 @@
1SUMMARY = "Intel® oneAPI DPC++/C++ Compiler"
2DESCRIPTION = "The Intel® oneAPI DPC++/C++ Compiler provides optimizations \
3that help your applications run faster on Intel® 64 architectures with support \
4for the latest C, C++, and SYCL language standards. This compiler produces \
5optimized code that can run significantly faster by taking advantage of the \
6ever-increasing core count and vector register width in Intel® Xeon® processors \
7and compatible processors."
8
9HOMEPAGE = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html"
10
11LICENSE="EULA"
12
13COMPILERMAINVER = "2024.0"
14
15LIC_FILES_CHKSUM = " \
16 file://opt/intel/oneapi/compiler/${COMPILERMAINVER}/share/doc/compiler/credist.txt;md5=b41f55af9f479b9570fc35b955d5ba1a \
17 "
18
19SRC_URI = " \
20 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-dpcpp-cpp-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=icx-compiler \
21 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=compiler-linker \
22 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=shared-common \
23 "
24
25SRC_URI[icx-compiler.sha256sum] = "0dcbac766d5a1519d4cf393f5a85e71d19024fef65f77638f3f849796b62cd82"
26SRC_URI[compiler-linker.sha256sum] = "e00faea6d797934d62143e4aa70b727ce30f80fdf30769d22122b3051140c236"
27SRC_URI[shared-common.sha256sum] = "cf490a4a790f349da79e618359598d3b32312ca3b2639e5d4c84e1cfa2745558"
28
29S = "${WORKDIR}/${BPN}"
30
31inherit bin_package
32
33RDEPENDS:${PN} += "intel-oneapi-dpcpp-cpp-runtime"
34SKIP_FILEDEPS:${PN} = '1'
35
36INHIBIT_PACKAGE_STRIP = "1"
37INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
38
39# doesn't have GNU_HASH (didn't pass LDFLAGS?)
40INSANE_SKIP:${PN} += "textrel dev-so dev-elf ldflags already-stripped file-rdeps staticdev rpaths arch useless-rpaths"
41
42FILES_SOLIBSDEV = ""
43
44EXCLUDE_FROM_SHLIBS = "1"
45BBCLASSEXTEND = "native nativesdk"
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_3.13.3.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_4.3.1.bb
index 5dc4cc8d..fb341b01 100644
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_3.13.3.bb
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_4.3.1.bb
@@ -6,16 +6,15 @@ HOMEPAGE = "https://github.com/embree/embree"
6 6
7LICENSE = "Apache-2.0 & syrah" 7LICENSE = "Apache-2.0 & syrah"
8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \ 8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
9 file://third-party-programs.txt;md5=86f6028ba2138fe41ac5c121d0a3518e \ 9 file://third-party-programs.txt;md5=f989f5b74cfff0d45d3ccf0e1366cbdc \
10 file://common/math/transcendental.h;beginline=6;endline=8;md5=73380bb2ab6613b30b8464f114bd0ca8" 10 file://common/math/transcendental.h;beginline=6;endline=8;md5=73380bb2ab6613b30b8464f114bd0ca8"
11 11
12inherit pkgconfig cmake 12inherit pkgconfig cmake
13 13
14S = "${WORKDIR}/git" 14S = "${WORKDIR}/git"
15 15
16SRC_URI = "git://github.com/embree/embree.git;protocol=https;branch=master \ 16SRC_URI = "git://github.com/embree/embree.git;protocol=https;branch=master"
17 " 17SRCREV = "daa8de0e714e18ad5e5c9841b67c1950d9c91c51"
18SRCREV = "0835461a5dd1659696524303dc9cb2f2300ae156"
19 18
20COMPATIBLE_HOST = '(x86_64).*-linux' 19COMPATIBLE_HOST = '(x86_64).*-linux'
21COMPATIBLE_HOST:libc-musl = "null" 20COMPATIBLE_HOST:libc-musl = "null"
@@ -23,9 +22,9 @@ COMPATIBLE_HOST:libc-musl = "null"
23DEPENDS = "tbb jpeg libpng glfw ispc-native" 22DEPENDS = "tbb jpeg libpng glfw ispc-native"
24 23
25EXTRA_OECMAKE += " \ 24EXTRA_OECMAKE += " \
26 -DEMBREE_ISPC_SUPPORT=OFF \
27 -DEMBREE_IGNORE_CMAKE_CXX_FLAGS=OFF \ 25 -DEMBREE_IGNORE_CMAKE_CXX_FLAGS=OFF \
28 -DEMBREE_MAX_ISA=DEFAULT \ 26 -DEMBREE_MAX_ISA=DEFAULT \
29 -DEMBREE_TUTORIALS=OFF \ 27 -DEMBREE_TUTORIALS=OFF \
30 -DEMBREE_ISPC_SUPPORT=ON \ 28 -DEMBREE_ISPC_SUPPORT=ON \
29 -DEMBREE_ZIP_MODE=OFF \
31 " 30 "
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.10.0-653.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.10.0-653.bb
new file mode 100644
index 00000000..1841253e
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.10.0-653.bb
@@ -0,0 +1,35 @@
1DESCRIPTION = "Intel® Integrated Performance Primitives are production-ready \
2 building blocks for cross-platform performance. Develop high-performance vision, \
3 signal, security, and storage applications with this multithreaded software library."
4HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html"
5
6LICENSE = "ISSL"
7
8MAXVER = "2021.10"
9
10LIC_FILES_CHKSUM = " \
11 file://opt/intel/oneapi/ipp/${MAXVER}/share/doc/ipp/licensing/license.txt;md5=d7cdc92ed6c4de1263da879599ddc3e2 \
12 file://opt/intel/oneapi/ipp/${MAXVER}/share/doc/ipp/licensing/third-party-programs.txt;md5=22bd13987911dcf790907041b43081f3 \
13 "
14SRC_URI = " \
15 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-${MAXVER}-${PV}_amd64.deb;subdir=${BPN};name=ipp \
16 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-common-devel-${MAXVER}-${PV}_all.deb;subdir=${BPN};name=headers \
17 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-common-${MAXVER}-${PV}_all.deb;subdir=${BPN};name=env \
18 "
19
20SRC_URI[ipp.sha256sum] = "b51e45c6e691aa46c7136b0ab61f5abe346388433e017a30cf53fd23e92bea07"
21SRC_URI[headers.sha256sum] = "342f37ab2f82bc9f4498435f848ee660591c2488b44d988bf6ee96b2a71fd005"
22SRC_URI[env.sha256sum] = "731e8c28a3b8b757730cd874d0941de2eb744856128f24ade59d36c12b415bf6"
23
24S = "${WORKDIR}/${BPN}"
25
26COMPATIBLE_HOST:libc-musl = "null"
27
28inherit bin_package
29
30INHIBIT_PACKAGE_STRIP = "1"
31INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
32INHIBIT_DEFAULT_DEPS = ""
33
34RDEPENDS:${PN} += "tbb setup-intel-oneapi-env"
35INSANE_SKIP:${PN} += "ldflags dev-so"
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.5.1-522.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.5.1-522.bb
deleted file mode 100644
index ae764253..00000000
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/ipp/intel-oneapi-ipp_2021.5.1-522.bb
+++ /dev/null
@@ -1,42 +0,0 @@
1DESCRIPTION = "Intel® Integrated Performance Primitives are production-ready \
2 building blocks for cross-platform performance. Develop high-performance vision, \
3 signal, security, and storage applications with this multithreaded software library."
4HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html"
5
6LICENSE = "ISSL"
7
8LIC_FILES_CHKSUM = " \
9 file://opt/intel/oneapi/lib/licensing/ipp/license.txt;md5=0c8b92562c3c165187e2c15ff638855e \
10 file://opt/intel/oneapi/lib/licensing/ipp/third-party-programs.txt;md5=6cd9ad51f3b5cdfd4a355fa5599a6c03 \
11 "
12
13SRC_URI = " \
14 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-ipp-${PV}_amd64.deb;subdir=${BPN};name=runtime \
15 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-ipp-common-${PV}_all.deb;subdir=${BPN};name=common \
16 "
17
18SRC_URI[runtime.sha256sum] = "98cd14bf635969d57bf9ea7bb27b90f27f72404f1927aa486a2bcf3c20a0f303"
19SRC_URI[common.sha256sum] = "1aac41633179e824567b90afd39b8405db30df79a027421568df019b2b51bdd1"
20
21S = "${WORKDIR}/${BPN}"
22
23COMPATIBLE_HOST:libc-musl = "null"
24
25inherit bin_package
26
27INHIBIT_PACKAGE_STRIP = "1"
28INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
29
30RDEPENDS:${PN} += "tbb setup-intel-oneapi-env"
31INSANE_SKIP:${PN} += "ldflags dev-so"
32
33# Some libraries are linking against the unversioned lib and there's no soname entry.
34# Workaround errors like:
35# Problem: conflicting requests
36# - nothing provides libippcore_tl_omp.so()(64bit) needed by intel-oneapi-ipp-2021.3.0+333-r0.skylake_64
37do_install:append () {
38 install -m 755 ${D}/opt/intel/oneapi/lib/intel64/libippcore_tl_omp.so.10.4 ${D}/opt/intel/oneapi/lib/intel64/libippcore_tl_omp.so
39 install -m 755 ${D}/opt/intel/oneapi/lib/intel64/libippcore_tl_tbb.so.10.4 ${D}/opt/intel/oneapi/lib/intel64/libippcore_tl_tbb.so
40 install -m 755 ${D}/opt/intel/oneapi/lib/intel64/libippi_tl_omp.so.10.4 ${D}/opt/intel/oneapi/lib/intel64/libippi_tl_omp.so
41 install -m 755 ${D}/opt/intel/oneapi/lib/intel64/libippi_tl_tbb.so.10.4 ${D}/opt/intel/oneapi/lib/intel64/libippi_tl_tbb.so
42}
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2022.0.1-117.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2022.0.1-117.bb
deleted file mode 100644
index fc89206a..00000000
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2022.0.1-117.bb
+++ /dev/null
@@ -1,39 +0,0 @@
1SUMMARY = "Intel® oneAPI Math Kernel Library (oneMKL)"
2DESCRIPTION = "The Intel® oneAPI Math Kernel Library (oneMKL) is a computing \
3 math library of highly optimized and extensively parallelized routines \
4 for applications that require maximum performance. oneMKL contains \
5 the high-performance optimizations from the full Intel® Math Kernel Library \
6 for CPU architectures (with C/Fortran programming language interfaces)\
7 and adds to them a set of DPC++ programming language interfaces for \
8 achieving performance on various CPU architectures \
9 and Intel Graphics Technology for certain key functionalities."
10HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html"
11
12LICENSE = "ISSL"
13
14LIC_FILES_CHKSUM = " \
15 file://opt/intel/oneapi/lib/licensing/mkl/license.txt;md5=0c8b92562c3c165187e2c15ff638855e \
16 file://opt/intel/oneapi/lib/licensing/mkl/third-party-programs-benchmarks.txt;md5=cb98e1a1f14c05ea85a979ea8982e7a4 \
17 file://opt/intel/oneapi/lib/licensing/mkl/third-party-programs-ipp.txt;md5=a4b2bf15e38f5c1267cdafed18bc0b09 \
18 file://opt/intel/oneapi/lib/licensing/mkl/third-party-programs-openmp.txt;md5=6b3c1aa2a11393060074c0346ce21e49 \
19 file://opt/intel/oneapi/lib/licensing/mkl/third-party-programs-safestring.txt;md5=c3aeee91c6d35a0f0753aed6c2633b82 \
20 file://opt/intel/oneapi/lib/licensing/mkl/third-party-programs.txt;md5=980965cf1f086d40998ca4981968b6a4 \
21 "
22
23SRC_URI = " \
24 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-mkl-${PV}_amd64.deb;subdir=${BPN};name=runtime \
25 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-runtime-mkl-common-${PV}_all.deb;subdir=${BPN};name=common \
26 "
27
28SRC_URI[runtime.sha256sum] = "b20e0f7400fbbc55d8489f9f3ef35a8c8df7f5af7d87903bf305703e3a2ebc3b"
29SRC_URI[common.sha256sum] = "bff8b2bfedbd09c9e6d0366cca3d4de80af521302bd5938fe6fa0128c6839041"
30
31S = "${WORKDIR}/${BPN}"
32
33inherit bin_package
34
35INHIBIT_PACKAGE_STRIP = "1"
36INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
37
38RDEPENDS:${PN} += "tbb intel-oneapi-compiler setup-intel-oneapi-env"
39INSANE_SKIP:${PN} = "ldflags textrel dev-so"
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2024.0.0-49656.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2024.0.0-49656.bb
new file mode 100644
index 00000000..e3e93028
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/mkl/intel-oneapi-mkl_2024.0.0-49656.bb
@@ -0,0 +1,74 @@
1SUMMARY = "Intel® oneAPI Math Kernel Library (oneMKL)"
2DESCRIPTION = "The Intel® oneAPI Math Kernel Library (oneMKL) is a computing \
3 math library of highly optimized and extensively parallelized routines \
4 for applications that require maximum performance. oneMKL contains \
5 the high-performance optimizations from the full Intel® Math Kernel Library \
6 for CPU architectures (with C/Fortran programming language interfaces)\
7 and adds to them a set of DPC++ programming language interfaces for \
8 achieving performance on various CPU architectures \
9 and Intel Graphics Technology for certain key functionalities."
10HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html"
11
12LICENSE = "ISSL"
13
14MKLMAINVER = "2024.0"
15
16LIC_FILES_CHKSUM = " \
17 file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/license.txt;md5=8510d21bf355a76e378c3216c3929ccd \
18 file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-benchmarks.txt;md5=cb98e1a1f14c05ea85a979ea8982e7a4 \
19 file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-ipp.txt;md5=a4b2bf15e38f5c1267cdafed18bc0b09 \
20 file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-openmp.txt;md5=6b3c1aa2a11393060074c0346ce21e49 \
21 file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-safestring.txt;md5=c3aeee91c6d35a0f0753aed6c2633b82 \
22 file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs.txt;md5=27de873e4084d62530fe828406b33ca9 \
23 "
24
25SRC_URI = " \
26 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-${MKLMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=runtime \
27 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-common-devel-${MKLMAINVER}-${PV}_all.deb;subdir=${BPN};name=common-devel \
28 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-devel-${MKLMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=devel \
29 https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-common-${MKLMAINVER}-${PV}_all.deb;subdir=${BPN};name=common-vars \
30 "
31
32SRC_URI[runtime.sha256sum] = "10a86e24051d6ef4a80fd839c570e629190638a3c0ac9bcca99ab855f534b959"
33SRC_URI[common-devel.sha256sum] = "adbf0ea946f63946d29b7f9c750c38a42ea7a65d8c81655b268aa2c7bb908192"
34SRC_URI[devel.sha256sum] = "fab2a6f15e18bfd9b4d425f2703e4e98928c57f52c4feebc9ed886f097062e84"
35SRC_URI[common-vars.sha256sum] = "ec2b67813739fa4a2895f63479a41acba2174afe2d0cb8a0c1c9119d1317d8ef"
36
37S = "${WORKDIR}/${BPN}"
38
39inherit bin_package
40
41do_install:append () {
42 install -d ${D}${bindir}
43 (cd ${D}${bindir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/bin/* .)
44 install -d ${D}${libdir}
45 (cd ${D}${libdir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/intel64/*.so* .)
46 (cd ${D}${libdir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/intel64/*.a* .)
47 install -d ${D}${libdir}/pkgconfig
48 (cd ${D}${libdir}/pkgconfig ; ln -s ../../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/pkgconfig/* .)
49 install -d ${D}${libdir}/cmake
50 (cd ${D}${libdir}/cmake ; ln -s ../../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/cmake/* .)
51
52 install -d ${D}${includedir}
53 find ${D}/opt/intel/oneapi/mkl/${MKLMAINVER}/include/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read srcdir; do
54 install -d ${D}${includedir}/$srcdir
55 (cd ${D}${includedir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/include/$srcdir/* ./$srcdir/)
56 done
57
58 find ${D}/opt/intel/oneapi/mkl/${MKLMAINVER}/include/ -mindepth 1 -maxdepth 1 -type f -printf '%f\n' | while read srcfile; do
59 (cd ${D}${includedir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/include/$srcfile .)
60 done
61}
62
63AUTO_LIBNAME_PKGS = ""
64INHIBIT_PACKAGE_STRIP = "1"
65INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
66
67RDEPENDS:${PN} += "bash tbb intel-oneapi-dpcpp-cpp-runtime setup-intel-oneapi-env virtual-opencl-icd"
68INSANE_SKIP:${PN} = "ldflags textrel dev-so staticdev arch already-stripped"
69
70FILES:${PN}-staticdev += "/opt/intel/oneapi/mkl/${MKLMAINVER}/lib/*.a*"
71
72SKIP_FILEDEPS:${PN} = '1'
73
74SYSROOT_DIRS += "/opt"
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn/0001-remove-redundant-RPATH.patch b/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn/0001-remove-redundant-RPATH.patch
deleted file mode 100644
index 0f39a581..00000000
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn/0001-remove-redundant-RPATH.patch
+++ /dev/null
@@ -1,37 +0,0 @@
1From 46b7de8c4ae0cc34805c2a11356c5a730fb8760a Mon Sep 17 00:00:00 2001
2From: Ezhilarasan <ezhilarasanx.s@intel.com>
3Date: Fri, 4 Mar 2022 21:04:47 +0530
4Subject: [PATCH] remove-redundant-RPATH
5
6Error Log:
7ERROR: oidn-1.4.3-r0 do_package_qa: QA Issue: oidn: /usr/lib/libOpenImageDenoise.so.1.4.3 contains probably-redundant RPATH /usr/lib
8oidn: /usr/bin/oidnTest contains probably-redundant RPATH /usr/lib
9oidn: /usr/bin/oidnDenoise contains probably-redundant RPATH /usr/lib
10oidn: /usr/bin/oidnBenchmark contains probably-redundant RPATH /usr/lib [useless-rpaths]
11ERROR: oidn-1.4.3-r0 do_package_qa: Fatal QA errors were found, failing task.
12
13Remove the redundant RPATH
14
15Upstream-Status: Inappropriate
16
17Signed-off-by: Ezhilarasan <ezhilarasanx.s@intel.com>
18---
19 cmake/oidn_package.cmake | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/cmake/oidn_package.cmake b/cmake/oidn_package.cmake
23index 1f76af8..46c0854 100644
24--- a/cmake/oidn_package.cmake
25+++ b/cmake/oidn_package.cmake
26@@ -29,7 +29,7 @@ if(OIDN_ZIP_MODE)
27 set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
28 endif()
29 else()
30- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
31+# set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
32 endif()
33
34 ## -----------------------------------------------------------------------------
35--
362.17.1
37
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_1.4.3.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_2.1.0.bb
index 8e055a57..4ea6ffbe 100644
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_1.4.3.bb
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_2.1.0.bb
@@ -7,15 +7,14 @@ HOMEPAGE = "https://www.openimagedenoise.org/"
7 7
8LICENSE = "Apache-2.0 & BSD-3-Clause" 8LICENSE = "Apache-2.0 & BSD-3-Clause"
9LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \ 9LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \
10 file://mkl-dnn/LICENSE;md5=8e17c0f9656ebaf0c380d9b22707c846 \ 10 file://external/mkl-dnn/LICENSE;md5=b48e3de3bfd47c27882a0d85b20823f5 \
11 file://mkl-dnn/src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \ 11 file://external/mkl-dnn/src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \
12 file://mkl-dnn/src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \ 12 file://external/mkl-dnn/src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \
13 file://weights/LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" 13 file://weights/LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
14 14
15SRC_URI = "https://github.com/OpenImageDenoise/${BPN}/releases/download/v${PV}/${BP}.src.tar.gz\ 15SRC_URI = "https://github.com/OpenImageDenoise/${BPN}/releases/download/v${PV}/${BP}.src.tar.gz\
16 file://0001-remove-redundant-RPATH.patch \
17 " 16 "
18SRC_URI[sha256sum] = "3276e252297ebad67a999298d8f0c30cfb221e166b166ae5c955d88b94ad062a" 17SRC_URI[sha256sum] = "ce144ba582ff36563d9442ee07fa2a4d249bc85aa93e5b25fc527ff4ee755ed6"
19 18
20inherit cmake 19inherit cmake
21 20
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_1.2.0.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_2.0.1.bb
index 4691b07f..a2d709a1 100644
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_1.2.0.bb
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_2.0.1.bb
@@ -20,16 +20,22 @@ S = "${WORKDIR}/git"
20 20
21SRC_URI = "git://github.com/openvkl/openvkl.git;protocol=https;branch=master \ 21SRC_URI = "git://github.com/openvkl/openvkl.git;protocol=https;branch=master \
22 " 22 "
23SRCREV = "5da393e9edc8becebbf41c9bb6cb9b87aa0b1e93" 23SRCREV = "8c6ba526813b871a624cb9d73d4cbb689ac7f4ce"
24 24
25COMPATIBLE_HOST = '(x86_64).*-linux' 25COMPATIBLE_HOST = '(x86_64).*-linux'
26COMPATIBLE_HOST:libc-musl = "null" 26COMPATIBLE_HOST:libc-musl = "null"
27 27
28DEPENDS = "ispc-native rkcommon embree" 28DEPENDS = "ispc ispc-native rkcommon embree"
29 29
30EXTRA_OECMAKE += " \ 30EXTRA_OECMAKE += " \
31 -DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \ 31 -DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \
32 " 32 "
33EXTRA_OECMAKE:intel-corei7-64 += " \
34 -DOPENVKL_ISA_AVX=OFF \
35 -DOPENVKL_ISA_AVX2=OFF \
36 -DOPENVKL_ISA_AVX512SKX=OFF \
37 "
38
33PACKAGES =+ "${PN}-examples" 39PACKAGES =+ "${PN}-examples"
34FILES:${PN}-examples = "\ 40FILES:${PN}-examples = "\
35 ${bindir} \ 41 ${bindir} \
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_2.9.0.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_3.1.0.bb
index cd70ecd8..3e03dcc2 100644
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_2.9.0.bb
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_3.1.0.bb
@@ -6,7 +6,8 @@ HOMEPAGE = "https://www.ospray.org/"
6 6
7LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & Zlib" 7LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & Zlib"
8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1dece7821bf3fd70fe1309eaa37d52a2 \ 8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1dece7821bf3fd70fe1309eaa37d52a2 \
9 file://third-party-programs.txt;md5=d0b3d9b55b2ccd6a3bffc374cf2d5563" 9 file://third-party-programs.txt;md5=e37b77e3bd997abccc359c710fb1f1db \
10 "
10 11
11inherit pkgconfig cmake 12inherit pkgconfig cmake
12 13
@@ -14,17 +15,18 @@ S = "${WORKDIR}/git"
14 15
15SRC_URI = "git://github.com/ospray/ospray.git;protocol=https;branch=master \ 16SRC_URI = "git://github.com/ospray/ospray.git;protocol=https;branch=master \
16 " 17 "
17SRCREV = "bc891f413f5657a31faa273992fda61d3666eef7" 18SRCREV = "f2a61c2eb58ccd666e34abfdb0fd7049ea073194"
18 19
19COMPATIBLE_HOST = '(x86_64).*-linux' 20COMPATIBLE_HOST = '(x86_64).*-linux'
20COMPATIBLE_HOST:libc-musl = "null" 21COMPATIBLE_HOST:libc-musl = "null"
21 22
22DEPENDS = "rkcommon ispc-native openvkl embree" 23DEPENDS = "rkcommon ispc ispc-native openvkl embree"
23 24
24EXTRA_OECMAKE += " \ 25EXTRA_OECMAKE += " \
25 -DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \ 26 -DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \
26 -DOSPRAY_ENABLE_APPS_BENCHMARK=OFF \ 27 -DOSPRAY_ENABLE_APPS_BENCHMARK=OFF \
27 -DOSPRAY_ENABLE_APPS_TESTING=OFF \ 28 -DOSPRAY_ENABLE_APPS_TESTING=OFF \
29 -DOSPRAY_ENABLE_APPS_EXAMPLES=OFF \
28 " 30 "
29 31
30PACKAGES =+ "${PN}-apps" 32PACKAGES =+ "${PN}-apps"
diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.9.0.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.13.0.bb
index c5e0fcdd..fe6b23ea 100644
--- a/dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.9.0.bb
+++ b/dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.13.0.bb
@@ -12,7 +12,7 @@ S = "${WORKDIR}/git"
12 12
13SRC_URI = "git://github.com/ospray/rkcommon.git;protocol=https;branch=master \ 13SRC_URI = "git://github.com/ospray/rkcommon.git;protocol=https;branch=master \
14 " 14 "
15SRCREV = "8636cc74a254178175601a656b58faefb299fd43" 15SRCREV = "7ebfa0765ea590767202b328e7da38102c2f5a15"
16 16
17DEPENDS = "tbb" 17DEPENDS = "tbb"
18 18
diff --git a/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch
index 7fede93c..11305e83 100644
--- a/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch
+++ b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch
@@ -1,48 +1,50 @@
1 1Subject: [PATCH] [PATCH]: ignore static asserts and null define for os and ut
2 builds
2Upstream-Status: Backport 3Upstream-Status: Backport
3Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> 4Signed-off-by: Teoh Suh Haw <suh.haw.teoh@intel.com>
4 5---
5 MdePkg/Include/Base.h | 12 ++++++++++++ 6 MdePkg/Include/Base.h | 12 ++++++++++++
6 1 file changed, 12 insertions(+) 7 1 file changed, 12 insertions(+)
7 8
8diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h 9diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h
9index 2da08b0c78..072eefdb94 100644 10index d209e6de28..6e61b8f3d3 100644
10--- a/MdePkg/Include/Base.h 11--- a/MdePkg/Include/Base.h
11+++ b/MdePkg/Include/Base.h 12+++ b/MdePkg/Include/Base.h
12@@ -318,7 +318,11 @@ struct _LIST_ENTRY { 13@@ -316,8 +316,12 @@ struct _LIST_ENTRY {
13 /// 14 #define NULL __null
14 /// NULL pointer (VOID *) 15 #endif
15 /// 16 #else
16+#ifndef OS_BUILD 17+#ifndef OS_BUILD
17+#ifndef UNIT_TEST_UEFI_BUILD 18+#ifndef UNIT_TEST_UEFI_BUILD
18 #define NULL ((VOID *) 0) 19 #define NULL ((VOID *) 0)
20 #endif
19+#endif 21+#endif
20+#endif 22+#endif
21 23
22 // 24 //
23 // Null character 25 // Null character
24@@ -810,6 +814,8 @@ typedef UINTN *BASE_LIST; 26@@ -779,6 +783,8 @@ typedef UINTN *BASE_LIST;
25 // Section 2.3.1 of the UEFI 2.3 Specification. 27 // Section 2.3.1 of the UEFI 2.3 Specification.
26 // 28 //
27 29
28+#ifndef OS_BUILD 30+#ifndef OS_BUILD
29+#ifndef UNIT_TEST_UEFI_BUILD 31+#ifndef UNIT_TEST_UEFI_BUILD
30 STATIC_ASSERT (sizeof (BOOLEAN) == 1, "sizeof (BOOLEAN) does not meet UEFI Specification Data Type requirements"); 32 STATIC_ASSERT (sizeof (BOOLEAN) == 1, "sizeof (BOOLEAN) does not meet UEFI Specification Data Type requirements");
31 STATIC_ASSERT (sizeof (INT8) == 1, "sizeof (INT8) does not meet UEFI Specification Data Type requirements"); 33 STATIC_ASSERT (sizeof (INT8) == 1, "sizeof (INT8) does not meet UEFI Specification Data Type requirements");
32 STATIC_ASSERT (sizeof (UINT8) == 1, "sizeof (UINT8) does not meet UEFI Specification Data Type requirements"); 34 STATIC_ASSERT (sizeof (UINT8) == 1, "sizeof (UINT8) does not meet UEFI Specification Data Type requirements");
33@@ -823,6 +829,8 @@ STATIC_ASSERT (sizeof (CHAR8) == 1, "sizeof (CHAR8) does not meet UEFI Specifi 35@@ -792,6 +798,8 @@ STATIC_ASSERT (sizeof (CHAR8) == 1, "sizeof (CHAR8) does not meet UEFI Specifi
34 STATIC_ASSERT (sizeof (CHAR16) == 2, "sizeof (CHAR16) does not meet UEFI Specification Data Type requirements"); 36 STATIC_ASSERT (sizeof (CHAR16) == 2, "sizeof (CHAR16) does not meet UEFI Specification Data Type requirements");
35 STATIC_ASSERT (sizeof (L'A') == 2, "sizeof (L'A') does not meet UEFI Specification Data Type requirements"); 37 STATIC_ASSERT (sizeof (L'A') == 2, "sizeof (L'A') does not meet UEFI Specification Data Type requirements");
36 STATIC_ASSERT (sizeof (L"A") == 4, "sizeof (L\"A\") does not meet UEFI Specification Data Type requirements"); 38 STATIC_ASSERT (sizeof (L"A") == 4, "sizeof (L\"A\") does not meet UEFI Specification Data Type requirements");
37+#endif 39+#endif
38+#endif 40+#endif
39 41
40 // 42 //
41 // The following three enum types are used to verify that the compiler 43 // The following three enum types are used to verify that the compiler
42@@ -843,9 +851,13 @@ typedef enum { 44@@ -812,9 +820,13 @@ typedef enum {
43 __VerifyUint32EnumValue = 0xffffffff 45 __VerifyUint32EnumValue = 0xffffffff
44 } __VERIFY_UINT32_ENUM_SIZE; 46 } __VERIFY_UINT32_ENUM_SIZE;
45 47
46+#ifndef OS_BUILD 48+#ifndef OS_BUILD
47+#ifndef UNIT_TEST_UEFI_BUILD 49+#ifndef UNIT_TEST_UEFI_BUILD
48 STATIC_ASSERT (sizeof (__VERIFY_UINT8_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements"); 50 STATIC_ASSERT (sizeof (__VERIFY_UINT8_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
@@ -50,8 +52,8 @@ index 2da08b0c78..072eefdb94 100644
50 STATIC_ASSERT (sizeof (__VERIFY_UINT32_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements"); 52 STATIC_ASSERT (sizeof (__VERIFY_UINT32_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements");
51+#endif 53+#endif
52+#endif 54+#endif
53 55
54 /** 56 /**
55 Macro that returns a pointer to the data structure that contains a specified field of 57 Macro that returns a pointer to the data structure that contains a specified field of
56-- 58--
572.31.0.windows.1 592.37.3
diff --git a/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0438.bb b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0485.bb
index 1ff15189..c4743d1c 100644
--- a/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0438.bb
+++ b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0485.bb
@@ -15,15 +15,16 @@ LICENSE = "BSD-3-Clause | BSD-2-Clause"
15LIC_FILES_CHKSUM = "file://LICENSE;md5=72b9da60da6219d612ce30b746a0fe71 \ 15LIC_FILES_CHKSUM = "file://LICENSE;md5=72b9da60da6219d612ce30b746a0fe71 \
16 file://edk2/License.txt;md5=6123e5bf044a66db96c4ce88a36b2d08" 16 file://edk2/License.txt;md5=6123e5bf044a66db96c4ce88a36b2d08"
17 17
18SRC_URI = "git://github.com/intel/ipmctl.git;protocol=https;branch=development;name=ipmctl; \ 18SRC_URI = "git://github.com/intel/ipmctl.git;protocol=https;branch=master;name=ipmctl; \
19 git://github.com/tianocore/edk2.git;protocol=https;name=edk2;destsuffix=git/edk2;branch=master \ 19 git://github.com/tianocore/edk2.git;protocol=https;name=edk2;destsuffix=git/edk2;branch=master \
20 file://0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch;patchdir=edk2 \ 20 file://0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch;patchdir=edk2 \
21 file://0001-CMakeLists-disable-Werror.patch \ 21 file://0001-CMakeLists-disable-Werror.patch \
22" 22"
23 23
24SRCREV_ipmctl = "99188a69a82409f6759e8bfdff8fd71840e851fc" 24SRCREV_ipmctl = "c75bd840ea7820c8f93a5488fcff75d08beedd51"
25#tag: edk2-stable202111 25#tag edk2-stable202302
26SRCREV_edk2 = "bb1bba3d776733c41dbfa2d1dc0fe234819a79f2" 26SRCREV_edk2 = "f80f052277c88a67c55e107b550f504eeea947d3"
27SRCREV_FORMAT = "ipmctl_edk2"
27 28
28S = "${WORKDIR}/git" 29S = "${WORKDIR}/git"
29 30
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-CPU-Solving-the-build-failure-caused-by-setting-the-.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-CPU-Solving-the-build-failure-caused-by-setting-the-.patch
new file mode 100644
index 00000000..d1851406
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-CPU-Solving-the-build-failure-caused-by-setting-the-.patch
@@ -0,0 +1,43 @@
1From b8c3bae71e6d3417ade5cb537cb1785fd75a75c8 Mon Sep 17 00:00:00 2001
2From: Razvan Apetroaie <117895604+razvanapetroaie@users.noreply.github.com>
3Date: Tue, 20 Feb 2024 02:28:14 +0200
4Subject: [PATCH] [CPU] Solving the build failure caused by setting the
5 "ENABLE_OV_ONNX_FRONTEND" option to "OFF" (#22934)
6
7### Details:
8See the [ticket
9description](https://jira.devtools.intel.com/browse/CVS-132119). The
10solution was checked only on a local setup on Ubuntu, if there's a way
11to check that using the CI please let me know (or if you could run the
12job and paste the link in the comments I would be grateful).
13
14Disclaimer: I'm not a CPU plugin developer, so I can't tell for sure if
15this is the ideal fix and no side effects are introduced. Please take
16that into account when reviewing/merging.
17
18### Tickets:
19 - [CVS-132119](https://jira.devtools.intel.com/browse/CVS-132119)
20
21Upstream-Status: Backport [https://github.com/openvinotoolkit/openvino/commit/b8c3bae71e6d3417ade5cb537cb1785fd75a75c8]
22
23Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
24---
25 src/plugins/intel_cpu/tests/functional/CMakeLists.txt | 2 +-
26 1 file changed, 1 insertion(+), 1 deletion(-)
27
28diff --git a/src/plugins/intel_cpu/tests/functional/CMakeLists.txt b/src/plugins/intel_cpu/tests/functional/CMakeLists.txt
29index db5ae8d01c..6941cb528d 100644
30--- a/src/plugins/intel_cpu/tests/functional/CMakeLists.txt
31+++ b/src/plugins/intel_cpu/tests/functional/CMakeLists.txt
32@@ -16,7 +16,7 @@ set(LINK_LIBRARIES funcSharedTests cpuSpecificRtInfo openvino::snippets ov_snipp
33 if(ENABLE_OV_ONNX_FRONTEND)
34 list(APPEND DEFINES TEST_MODELS="${TEST_MODEL_ZOO}")
35 else()
36- set(EXCLUDED_SOURCE_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/extension ${CMAKE_CURRENT_SOURCE_DIR}/shared_tests_instances/onnx)
37+ set(EXCLUDED_SOURCE_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/custom/extension ${CMAKE_CURRENT_SOURCE_DIR}/shared_tests_instances/onnx)
38 endif()
39
40 if(NOT (ARM OR AARCH64))
41--
422.34.1
43
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-fix-build-when-using-sysroot.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-fix-build-when-using-sysroot.patch
new file mode 100644
index 00000000..d251f21b
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-fix-build-when-using-sysroot.patch
@@ -0,0 +1,32 @@
1From b5dfcf8bc1245e804c847745c237068eb6f19931 Mon Sep 17 00:00:00 2001
2From: Yogesh Tyagi <yogesh.tyagi@intel.com>
3Date: Fri, 15 Mar 2024 16:28:41 +0800
4Subject: [PATCH] cmake: fix build when using sysroot
5
6When cross-compiling against a sysroot, system headers will not be at a place
7that starts with /usr. Update conditional check to exclude directories
8which have "/usr/include" in them to not add <sysroot>/usr/include as well.
9
10Upstream-Status: Submitted [https://github.com/openvinotoolkit/openvino/pull/23486]
11
12Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>
13---
14 src/cmake/ov_parallel.cmake | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/src/cmake/ov_parallel.cmake b/src/cmake/ov_parallel.cmake
18index 3793db98e30..819d3410531 100644
19--- a/src/cmake/ov_parallel.cmake
20+++ b/src/cmake/ov_parallel.cmake
21@@ -296,7 +296,7 @@ function(ov_set_threading_interface_for TARGET_NAME)
22 if(include_directories)
23 foreach(include_directory IN LISTS include_directories)
24 # cannot include /usr/include headers as SYSTEM
25- if(NOT "${include_directory}" MATCHES "^/usr.*$")
26+ if(NOT "${include_directory}" MATCHES ".*/usr/include.*$")
27 target_include_directories(${TARGET_NAME} SYSTEM
28 ${LINK_TYPE} $<BUILD_INTERFACE:${include_directory}>)
29 else()
30--
312.34.1
32
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-yocto-specific-tweaks-to-the-build-process.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-yocto-specific-tweaks-to-the-build-process.patch
new file mode 100644
index 00000000..7ab31309
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-cmake-yocto-specific-tweaks-to-the-build-process.patch
@@ -0,0 +1,90 @@
1From bfcf5ae581ca4e7266cf7dc65b1c71754cd78cc0 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Wed, 29 Nov 2023 12:42:57 +0530
4Subject: [PATCH 1/4] cmake: yocto specific tweaks to the build process
5
6* Dont try to detect glibc version as that doesn't work when cross compiling.
7* Install sample binaries as well.
8* Dont strip binaries.
9* Dont try to write triggers for CPack. We package ourselves.
10* Fix the installation path for Python modules when baselib = lib64.
11
12Upstream-Status: Inappropriate
13
14Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
15---
16 cmake/developer_package/packaging/rpm/rpm.cmake | 2 +-
17 cmake/developer_package/target_flags.cmake | 2 +-
18 samples/cpp/CMakeLists.txt | 6 +++---
19 src/bindings/python/CMakeLists.txt | 2 +-
20 src/bindings/python/wheel/setup.py | 1 -
21 5 files changed, 6 insertions(+), 7 deletions(-)
22
23diff --git a/cmake/developer_package/packaging/rpm/rpm.cmake b/cmake/developer_package/packaging/rpm/rpm.cmake
24index a7c0ec2cf61..40448e8a962 100644
25--- a/cmake/developer_package/packaging/rpm/rpm.cmake
26+++ b/cmake/developer_package/packaging/rpm/rpm.cmake
27@@ -154,7 +154,7 @@ ov_rpm_specific_settings()
28 # needed to add triggers for packages with libraries
29 set(def_triggers "${OpenVINO_BINARY_DIR}/_CPack_Packages/triggers")
30 set(triggers_content "# /bin/sh -p\n/sbin/ldconfig\n")
31-file(WRITE "${def_triggers}" "${triggers_content}")
32+#file(WRITE "${def_triggers}" "${triggers_content}")
33
34 #
35 # Functions helpful for packaging your modules with RPM cpack
36diff --git a/cmake/developer_package/target_flags.cmake b/cmake/developer_package/target_flags.cmake
37index 29f23e713e1..942dd445b19 100644
38--- a/cmake/developer_package/target_flags.cmake
39+++ b/cmake/developer_package/target_flags.cmake
40@@ -145,4 +145,4 @@ function(ov_glibc_version)
41 endif()
42 endfunction()
43
44-ov_glibc_version()
45+#ov_glibc_version()
46diff --git a/samples/cpp/CMakeLists.txt b/samples/cpp/CMakeLists.txt
47index c814cc37e2c..431e7bd2ed3 100644
48--- a/samples/cpp/CMakeLists.txt
49+++ b/samples/cpp/CMakeLists.txt
50@@ -206,9 +206,9 @@ macro(ov_add_sample)
51 target_link_libraries(${SAMPLE_NAME} PRIVATE ${ov_link_libraries} Threads::Threads ${SAMPLE_DEPENDENCIES})
52
53 install(TARGETS ${SAMPLE_NAME}
54- RUNTIME DESTINATION samples_bin/
55- COMPONENT samples_bin
56- EXCLUDE_FROM_ALL)
57+ DESTINATION ${CMAKE_INSTALL_BINDIR}
58+ COMPONENT samples_bin)
59+
60
61 # create global target with all samples / demo apps
62 if(NOT TARGET ov_samples)
63diff --git a/src/bindings/python/CMakeLists.txt b/src/bindings/python/CMakeLists.txt
64index 58ff9b74302..4763994ba56 100644
65--- a/src/bindings/python/CMakeLists.txt
66+++ b/src/bindings/python/CMakeLists.txt
67@@ -356,7 +356,7 @@ if(ENABLE_PYTHON_PACKAGING)
68 endif()
69
70 set(python_package_prefix "${CMAKE_CURRENT_BINARY_DIR}/install_${pyversion}")
71- set(install_lib "${python_package_prefix}/lib/${python_versioned_folder}/${ov_site_packages}")
72+ set(install_lib "${python_package_prefix}/${CMAKE_INSTALL_LIBDIR}/${python_versioned_folder}/${ov_site_packages}")
73 set(meta_info_subdir "openvino-${OpenVINO_VERSION}-py${python_xy}.egg-info")
74 set(meta_info_file "${install_lib}/${meta_info_subdir}/PKG-INFO")
75
76diff --git a/src/bindings/python/wheel/setup.py b/src/bindings/python/wheel/setup.py
77index 4b056912212..5f05d891310 100644
78--- a/src/bindings/python/wheel/setup.py
79+++ b/src/bindings/python/wheel/setup.py
80@@ -270,7 +270,6 @@ class CustomBuild(build):
81 self.spawn(["cmake", "--install", binary_dir,
82 "--prefix", prefix,
83 "--config", CONFIG,
84- "--strip",
85 "--component", cpack_comp_name])
86
87 def run(self):
88--
892.34.1
90
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-inference-engine-use-system-installed-packages.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-inference-engine-use-system-installed-packages.patch
deleted file mode 100644
index 315385d8..00000000
--- a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0001-inference-engine-use-system-installed-packages.patch
+++ /dev/null
@@ -1,296 +0,0 @@
1From b0f30ab7ecdac98afa72a31371a393a73f855b3c Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Thu, 7 Apr 2022 21:39:26 +0800
4Subject: [PATCH] Use system installed dependencies
5
6Use the system versions of libva, tbb, OpenCV, ade and zlib.
7
8Upstream-Status: Inappropriate
9Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
10
11---
12 cmake/dependencies.cmake | 75 -------------------------
13 cmake/extra_modules.cmake | 4 +-
14 cmake/templates/OpenVINOConfig.cmake.in | 9 ---
15 src/cmake/ie_parallel.cmake | 2 +-
16 src/plugins/intel_gpu/include/va/va.h | 6 --
17 tests/fuzz/src/CMakeLists.txt | 3 +-
18 thirdparty/CMakeLists.txt | 26 ++++-----
19 thirdparty/cnpy/CMakeLists.txt | 2 +-
20 8 files changed, 15 insertions(+), 112 deletions(-)
21 delete mode 100644 src/plugins/intel_gpu/include/va/va.h
22
23diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake
24index e2f941fcd..1fcc358ef 100644
25--- a/cmake/dependencies.cmake
26+++ b/cmake/dependencies.cmake
27@@ -29,26 +29,6 @@ endif()
28
29 if(CMAKE_CROSSCOMPILING AND CMAKE_HOST_SYSTEM_NAME MATCHES Linux AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
30 set(protoc_version "3.18.2")
31-
32- RESOLVE_DEPENDENCY(SYSTEM_PROTOC_ROOT
33- ARCHIVE_LIN "protoc-${protoc_version}-linux-x86_64.tar.gz"
34- TARGET_PATH "${TEMP}/protoc-${protoc_version}-linux-x86_64"
35- SHA256 "42fde2b6044c1f74c7e86d4e03b43aac87128ddf57ac6ed8c4eab7a1e21bbf21"
36- )
37- debug_message(STATUS "host protoc-${protoc_version} root path = " ${SYSTEM_PROTOC_ROOT})
38-
39- reset_deps_cache(SYSTEM_PROTOC)
40-
41- find_host_program(
42- SYSTEM_PROTOC
43- NAMES protoc
44- PATHS "${SYSTEM_PROTOC_ROOT}/bin"
45- NO_DEFAULT_PATH)
46- if(NOT SYSTEM_PROTOC)
47- message(FATAL_ERROR "[ONNX IMPORTER] Missing host protoc binary")
48- endif()
49-
50- update_deps_cache(SYSTEM_PROTOC "${SYSTEM_PROTOC}" "Path to host protoc for ONNX Importer")
51 endif()
52
53 if(ENABLE_INTEL_MYRIAD)
54@@ -102,61 +82,6 @@ if(THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO")
55 set(IE_PATH_TO_DEPS "${THIRDPARTY_SERVER_PATH}")
56 endif()
57
58- if(WIN32 AND X86_64)
59- # TODO: add target_path to be platform specific as well, to avoid following if
60- RESOLVE_DEPENDENCY(TBB
61- ARCHIVE_WIN "tbb2020_20200415_win.zip"
62- TARGET_PATH "${TEMP}/tbb"
63- ENVIRONMENT "TBBROOT"
64- SHA256 "f1c9b9e2861efdaa01552bd25312ccbc5feeb45551e5f91ae61e29221c5c1479")
65- if(ENABLE_TBBBIND_2_5)
66- RESOLVE_DEPENDENCY(TBBBIND_2_5
67- ARCHIVE_WIN "tbbbind_2_5_static_win_v1.zip"
68- TARGET_PATH "${TEMP}/tbbbind_2_5"
69- ENVIRONMENT "TBBBIND_2_5_ROOT"
70- SHA256 "a67afeea8cf194f97968c800dab5b5459972908295242e282045d6b8953573c1")
71- else()
72- message(WARNING "prebuilt TBBBIND_2_5 is not available.
73- Build oneTBB from sources and set TBBROOT environment var before OpenVINO cmake configure")
74- endif()
75- elseif(ANDROID) # Should be before LINUX due LINUX is detected as well
76- RESOLVE_DEPENDENCY(TBB
77- ARCHIVE_ANDROID "tbb2020_20200404_android.tgz"
78- TARGET_PATH "${TEMP}/tbb"
79- ENVIRONMENT "TBBROOT"
80- SHA256 "f42d084224cc2d643314bd483ad180b081774608844000f132859fca3e9bf0ce")
81- elseif(LINUX AND X86_64)
82- RESOLVE_DEPENDENCY(TBB
83- ARCHIVE_LIN "tbb2020_20200415_lin_strip.tgz"
84- TARGET_PATH "${TEMP}/tbb"
85- ENVIRONMENT "TBBROOT"
86- SHA256 "95b2f3b0b70c7376a0c7de351a355c2c514b42c4966e77e3e34271a599501008")
87- if(ENABLE_TBBBIND_2_5)
88- RESOLVE_DEPENDENCY(TBBBIND_2_5
89- ARCHIVE_LIN "tbbbind_2_5_static_lin_v2.tgz"
90- TARGET_PATH "${TEMP}/tbbbind_2_5"
91- ENVIRONMENT "TBBBIND_2_5_ROOT"
92- SHA256 "865e7894c58402233caf0d1b288056e0e6ab2bf7c9d00c9dc60561c484bc90f4")
93- else()
94- message(WARNING "prebuilt TBBBIND_2_5 is not available.
95- Build oneTBB from sources and set TBBROOT environment var before OpenVINO cmake configure")
96- endif()
97- elseif(LINUX AND AARCH64)
98- RESOLVE_DEPENDENCY(TBB
99- ARCHIVE_LIN "keembay/tbb2020_38404_kmb_lic.tgz"
100- TARGET_PATH "${TEMP}/tbb_yocto"
101- ENVIRONMENT "TBBROOT"
102- SHA256 "321261ff2eda6d4568a473cb883262bce77a93dac599f7bd65d2918bdee4d75b")
103- elseif(APPLE AND X86_64)
104- RESOLVE_DEPENDENCY(TBB
105- ARCHIVE_MAC "tbb2020_20200404_mac.tgz"
106- TARGET_PATH "${TEMP}/tbb"
107- ENVIRONMENT "TBBROOT"
108- SHA256 "ad9cf52e657660058aa6c6844914bc0fc66241fec89a392d8b79a7ff69c3c7f6")
109- else()
110- message(FATAL_ERROR "TBB is not available on current platform")
111- endif()
112-
113 update_deps_cache(TBBROOT "${TBB}" "Path to TBB root folder")
114 if(EXISTS "${TBBROOT}/lib/cmake/TBB/TBBConfig.cmake")
115 # oneTBB case
116diff --git a/cmake/extra_modules.cmake b/cmake/extra_modules.cmake
117index e33e4378f..f0cacdf6f 100644
118--- a/cmake/extra_modules.cmake
119+++ b/cmake/extra_modules.cmake
120@@ -18,7 +18,7 @@ function(ie_generate_dev_package_config)
121 configure_package_config_file("${OpenVINO_SOURCE_DIR}/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in"
122 "${CMAKE_BINARY_DIR}/InferenceEngineDeveloperPackageConfig.cmake"
123 INSTALL_DESTINATION share # not used
124- PATH_VARS "OpenVINO_SOURCE_DIR;gflags_BINARY_DIR"
125+ PATH_VARS "OpenVINO_SOURCE_DIR"
126 NO_CHECK_REQUIRED_COMPONENTS_MACRO)
127
128 configure_file("${OpenVINO_SOURCE_DIR}/cmake/templates/InferenceEngineConfig-version.cmake.in"
129@@ -45,7 +45,7 @@ function(ov_generate_dev_package_config)
130 configure_package_config_file("${OpenVINO_SOURCE_DIR}/cmake/templates/OpenVINODeveloperPackageConfig.cmake.in"
131 "${CMAKE_BINARY_DIR}/OpenVINODeveloperPackageConfig.cmake"
132 INSTALL_DESTINATION share # not used
133- PATH_VARS "OpenVINO_SOURCE_DIR;gflags_BINARY_DIR"
134+ PATH_VARS "OpenVINO_SOURCE_DIR"
135 NO_CHECK_REQUIRED_COMPONENTS_MACRO)
136
137 configure_file("${OpenVINO_SOURCE_DIR}/cmake/templates/OpenVINOConfig-version.cmake.in"
138diff --git a/cmake/templates/OpenVINOConfig.cmake.in b/cmake/templates/OpenVINOConfig.cmake.in
139index 00e892f2b..7c686fa07 100644
140--- a/cmake/templates/OpenVINOConfig.cmake.in
141+++ b/cmake/templates/OpenVINOConfig.cmake.in
142@@ -146,15 +146,6 @@ set(_ov_package_prefix_dir "${PACKAGE_PREFIX_DIR}")
143
144 set(THREADING "@THREADING@")
145 if((THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO") AND NOT TBB_FOUND)
146- set_and_check(_tbb_dir "@PACKAGE_IE_TBB_DIR@")
147- _ov_find_dependency(TBB
148- COMPONENTS tbb tbbmalloc
149- CONFIG
150- PATHS ${TBBROOT}/cmake
151- ${_tbb_dir}
152- NO_CMAKE_FIND_ROOT_PATH
153- NO_DEFAULT_PATH)
154-
155 set(install_tbbbind "@install_tbbbind@")
156 if(install_tbbbind)
157 set_and_check(_tbb_bind_dir "@PACKAGE_IE_TBBBIND_DIR@")
158diff --git a/src/cmake/ie_parallel.cmake b/src/cmake/ie_parallel.cmake
159index a036b019c..031f1ea48 100644
160--- a/src/cmake/ie_parallel.cmake
161+++ b/src/cmake/ie_parallel.cmake
162@@ -34,7 +34,7 @@ function(set_ie_threading_interface_for TARGET_NAME)
163 endforeach()
164 endif()
165 set(TBB_FOUND ${TBB_FOUND} PARENT_SCOPE)
166- set(TBB_IMPORTED_TARGETS ${TBB_IMPORTED_TARGETS} PARENT_SCOPE)
167+ set(TBB_IMPORTED_TARGETS "tbb;tbbmalloc" PARENT_SCOPE)
168 set(TBB_VERSION ${TBB_VERSION} PARENT_SCOPE)
169 if (NOT TBB_FOUND)
170 set(THREADING "SEQ" PARENT_SCOPE)
171diff --git a/src/plugins/intel_gpu/include/va/va.h b/src/plugins/intel_gpu/include/va/va.h
172deleted file mode 100644
173index 5c8a5c6f6..000000000
174--- a/src/plugins/intel_gpu/include/va/va.h
175+++ /dev/null
176@@ -1,6 +0,0 @@
177-// Copyright (C) 2018-2022 Intel Corporation
178-// SPDX-License-Identifier: Apache-2.0
179-//
180-
181-typedef cl_uint VASurfaceID;
182-typedef void* VADisplay;
183diff --git a/tests/fuzz/src/CMakeLists.txt b/tests/fuzz/src/CMakeLists.txt
184index 5e6b7b168..a81c51bb7 100644
185--- a/tests/fuzz/src/CMakeLists.txt
186+++ b/tests/fuzz/src/CMakeLists.txt
187@@ -10,14 +10,13 @@ add_custom_target(fuzz)
188 FILE(GLOB tests "*-fuzzer.cc")
189
190 add_subdirectory(../../../thirdparty/cnpy ${CMAKE_CURRENT_BINARY_DIR}/cnpy)
191-add_subdirectory(../../../thirdparty/zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib)
192
193 foreach(test_source ${tests})
194 get_filename_component(test_name ${test_source} NAME_WE)
195 add_fuzzer(${test_name} ${test_source})
196
197 target_link_libraries(${test_name} PRIVATE
198- openvino::runtime cnpy zlib)
199+ openvino::runtime cnpy z)
200
201 add_dependencies(fuzz ${test_name})
202
203diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt
204index 2d61c5fd7..97b372998 100644
205--- a/thirdparty/CMakeLists.txt
206+++ b/thirdparty/CMakeLists.txt
207@@ -12,10 +12,9 @@ endif()
208
209 add_subdirectory(ittapi)
210 add_subdirectory(itt_collector EXCLUDE_FROM_ALL)
211-add_subdirectory(zlib EXCLUDE_FROM_ALL)
212 add_subdirectory(cnpy EXCLUDE_FROM_ALL)
213 if(ENABLE_INTEL_GPU)
214- add_subdirectory(ocl)
215+ #add_subdirectory(ocl)
216 endif()
217
218 add_subdirectory(xbyak EXCLUDE_FROM_ALL)
219@@ -52,21 +51,16 @@ endif()
220 add_library(ocv_hal INTERFACE)
221 target_include_directories(ocv_hal INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/ocv")
222
223-add_subdirectory(ade EXCLUDE_FROM_ALL)
224 add_subdirectory(fluid/modules/gapi EXCLUDE_FROM_ALL)
225-set_target_properties(ade fluid PROPERTIES FOLDER thirdparty)
226-openvino_developer_export_targets(COMPONENT openvino_common TARGETS ade fluid)
227+set_target_properties(fluid PROPERTIES FOLDER thirdparty)
228+openvino_developer_export_targets(COMPONENT openvino_common TARGETS fluid)
229
230-ov_install_static_lib(ade openvino_common)
231 ov_install_static_lib(fluid openvino_common)
232
233 #
234 # Gflags
235 #
236
237-add_subdirectory(gflags EXCLUDE_FROM_ALL)
238-openvino_developer_export_targets(COMPONENT openvino_common TARGETS gflags)
239-
240 #
241 # Google Tests framework
242 #
243@@ -89,13 +83,13 @@ if(ENABLE_OV_PADDLE_FRONTEND OR ENABLE_OV_ONNX_FRONTEND OR ENABLE_OV_TF_FRONTEND
244 set(Protobuf_DEBUG ON)
245 endif()
246 find_package(Protobuf 3.18.2 REQUIRED)
247- set(Protobuf_LITE_LIBRARIES protobuf::libprotobuf-lite)
248- set(Protobuf_LIBRARIES protobuf::libprotobuf)
249- set(SYSTEM_PROTOC protobuf::protoc)
250+ set(Protobuf_LITE_LIBRARIES protobuf::libprotobuf-lite)
251+ set(Protobuf_LIBRARIES protobuf::libprotobuf)
252+ #set(SYSTEM_PROTOC protobuf::protoc)
253 set(PROTOC_EXECUTABLE ${SYSTEM_PROTOC})
254
255 foreach(target ${SYSTEM_PROTOC} ${Protobuf_LIBRARIES} ${Protobuf_LITE_LIBRARIES})
256- set_property(TARGET ${target} PROPERTY IMPORTED_GLOBAL TRUE)
257+ #set_property(TARGET ${target} PROPERTY IMPORTED_GLOBAL TRUE)
258 endforeach()
259 else()
260 add_subdirectory(protobuf EXCLUDE_FROM_ALL)
261@@ -104,8 +98,8 @@ if(ENABLE_OV_PADDLE_FRONTEND OR ENABLE_OV_ONNX_FRONTEND OR ENABLE_OV_TF_FRONTEND
262 # forward variables used in the other places
263 set(SYSTEM_PROTOC ${SYSTEM_PROTOC} PARENT_SCOPE)
264 set(PROTOC_EXECUTABLE ${PROTOC_EXECUTABLE} PARENT_SCOPE)
265- set(Protobuf_LIBRARIES ${Protobuf_LIBRARIES} PARENT_SCOPE)
266- set(Protobuf_LITE_LIBRARIES ${Protobuf_LITE_LIBRARIES} PARENT_SCOPE)
267+ set(Protobuf_LIBRARIES ${Protobuf_LIBRARY} PARENT_SCOPE)
268+ set(Protobuf_LITE_LIBRARIES ${Protobuf_LITE_LIBRARY} PARENT_SCOPE)
269 set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIRS} PARENT_SCOPE)
270 set(Protobuf_IN_FRONTEND ON PARENT_SCOPE)
271
272@@ -116,7 +110,7 @@ if(ENABLE_OV_PADDLE_FRONTEND OR ENABLE_OV_ONNX_FRONTEND OR ENABLE_OV_TF_FRONTEND
273 set(link_type INTERFACE)
274 endif()
275 if(CMAKE_COMPILER_IS_GNUCXX OR OV_COMPILER_IS_CLANG)
276- target_compile_options(${target} ${link_type} -Wno-undef)
277+ #target_compile_options(${target} ${link_type} -Wno-undef)
278 endif()
279 endforeach()
280 endif()
281diff --git a/thirdparty/cnpy/CMakeLists.txt b/thirdparty/cnpy/CMakeLists.txt
282index 041031e92..793de9845 100644
283--- a/thirdparty/cnpy/CMakeLists.txt
284+++ b/thirdparty/cnpy/CMakeLists.txt
285@@ -13,7 +13,7 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$")
286 PRIVATE -Wno-all)
287 endif()
288
289-target_link_libraries(${TARGET_NAME} PUBLIC zlib)
290+target_link_libraries(${TARGET_NAME} PUBLIC z)
291 target_include_directories(${TARGET_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
292
293 set_target_properties(${TARGET_NAME} PROPERTIES FOLDER thirdparty)
294--
2952.35.1
296
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0002-inference-engine-installation-fixes.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0002-inference-engine-installation-fixes.patch
deleted file mode 100644
index 9e2b46fd..00000000
--- a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0002-inference-engine-installation-fixes.patch
+++ /dev/null
@@ -1,348 +0,0 @@
1From 07772636ef9b7207967395d22a869e204e8f485b Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Mon, 11 Apr 2022 11:11:23 +0800
4Subject: [PATCH] Fix installation of binaries and libraries
5
6Make sure binaries are installed correctly.
7
8Upstream-Status: Inappropriate
9
10Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
11---
12 CMakeLists.txt | 2 +-
13 cmake/developer_package/frontends/frontends.cmake | 2 +-
14 cmake/developer_package/packaging.cmake | 4 ++--
15 cmake/developer_package/plugins/plugins.cmake | 2 +-
16 docs/CMakeLists.txt | 3 ++-
17 samples/CMakeLists.txt | 2 +-
18 samples/c/common/opencv_c_wrapper/CMakeLists.txt | 2 ++
19 samples/cpp/CMakeLists.txt | 2 ++
20 scripts/CMakeLists.txt | 10 +++++-----
21 src/bindings/c/src/CMakeLists.txt | 4 ++--
22 src/cmake/openvino.cmake | 12 ++++++------
23 src/common/preprocessing/CMakeLists.txt | 2 +-
24 src/core/CMakeLists.txt | 4 ++--
25 src/inference/CMakeLists.txt | 2 +-
26 .../intel_gpu/src/kernel_selector/CMakeLists.txt | 2 +-
27 src/plugins/intel_myriad/myriad_dependencies.cmake | 2 +-
28 .../intel_myriad/myriad_plugin/CMakeLists.txt | 2 +-
29 tools/CMakeLists.txt | 2 +-
30 tools/compile_tool/CMakeLists.txt | 8 ++++----
31 19 files changed, 37 insertions(+), 32 deletions(-)
32
33diff --git a/CMakeLists.txt b/CMakeLists.txt
34index fe62c6318..344d9398f 100644
35--- a/CMakeLists.txt
36+++ b/CMakeLists.txt
37@@ -104,7 +104,7 @@ include(cmake/extra_modules.cmake)
38 add_subdirectory(docs)
39 add_subdirectory(tools)
40 add_subdirectory(scripts)
41-add_subdirectory(licensing)
42+#add_subdirectory(licensing)
43
44 #
45 # CPack
46diff --git a/cmake/developer_package/frontends/frontends.cmake b/cmake/developer_package/frontends/frontends.cmake
47index 39b23fe65..aa638c077 100644
48--- a/cmake/developer_package/frontends/frontends.cmake
49+++ b/cmake/developer_package/frontends/frontends.cmake
50@@ -2,7 +2,7 @@
51 # SPDX-License-Identifier: Apache-2.0
52 #
53
54-set(FRONTEND_INSTALL_INCLUDE "runtime/include/")
55+set(FRONTEND_INSTALL_INCLUDE "include/")
56 set(FRONTEND_NAME_PREFIX "openvino_")
57 set(FRONTEND_NAME_SUFFIX "_frontend")
58
59diff --git a/cmake/developer_package/packaging.cmake b/cmake/developer_package/packaging.cmake
60index cc287ff1f..2daee6611 100644
61--- a/cmake/developer_package/packaging.cmake
62+++ b/cmake/developer_package/packaging.cmake
63@@ -20,8 +20,8 @@ function(ie_cpack_set_library_dir)
64 set(IE_CPACK_RUNTIME_PATH runtime/lib/${ARCH_FOLDER}/$<CONFIG> PARENT_SCOPE)
65 set(IE_CPACK_ARCHIVE_PATH runtime/lib/${ARCH_FOLDER}/$<CONFIG> PARENT_SCOPE)
66 else()
67- set(IE_CPACK_LIBRARY_PATH runtime/lib/${ARCH_FOLDER} PARENT_SCOPE)
68- set(IE_CPACK_RUNTIME_PATH runtime/lib/${ARCH_FOLDER} PARENT_SCOPE)
69+ set(IE_CPACK_LIBRARY_PATH ${CMAKE_INSTALL_LIBDIR} PARENT_SCOPE)
70+ set(IE_CPACK_RUNTIME_PATH ${CMAKE_INSTALL_BINDIR} PARENT_SCOPE)
71 set(IE_CPACK_ARCHIVE_PATH runtime/lib/${ARCH_FOLDER} PARENT_SCOPE)
72 endif()
73 endfunction()
74diff --git a/cmake/developer_package/plugins/plugins.cmake b/cmake/developer_package/plugins/plugins.cmake
75index a630d6c35..779c43631 100644
76--- a/cmake/developer_package/plugins/plugins.cmake
77+++ b/cmake/developer_package/plugins/plugins.cmake
78@@ -138,7 +138,7 @@ function(ie_add_plugin)
79
80 if(BUILD_SHARED_LIBS)
81 install(TARGETS ${IE_PLUGIN_NAME}
82- LIBRARY DESTINATION ${IE_CPACK_RUNTIME_PATH}
83+ LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH}
84 COMPONENT ${install_component})
85 else()
86 ov_install_static_lib(${IE_PLUGIN_NAME} ${install_component})
87diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt
88index 86b0e8652..4f31d3cc4 100644
89--- a/docs/CMakeLists.txt
90+++ b/docs/CMakeLists.txt
91@@ -36,9 +36,10 @@ if(NOT ENABLE_DOCKER)
92 foreach(target openvino_template_plugin template_extension openvino_template_extension)
93 if(TARGET ${target})
94 install(TARGETS ${target}
95- LIBRARY DESTINATION ${IE_CPACK_RUNTIME_PATH}
96+ LIBRARY DESTINATION ${IE_CPACK_RUNTIME_PATH}
97 COMPONENT tests
98 EXCLUDE_FROM_ALL)
99+ install(TARGETS ${target} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
100 endif()
101 endforeach()
102 endif()
103diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt
104index 8101b5e32..6abe8c20c 100644
105--- a/samples/CMakeLists.txt
106+++ b/samples/CMakeLists.txt
107@@ -9,7 +9,7 @@ add_subdirectory(c)
108 if(TARGET format_reader)
109 install(TARGETS format_reader
110 RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT tests EXCLUDE_FROM_ALL
111- LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT tests EXCLUDE_FROM_ALL)
112+ LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT tests)
113 endif()
114
115 openvino_developer_export_targets(COMPONENT openvino_common TARGETS format_reader ie_samples_utils)
116diff --git a/samples/c/common/opencv_c_wrapper/CMakeLists.txt b/samples/c/common/opencv_c_wrapper/CMakeLists.txt
117index a8e6e5172..aa3d2fe0e 100644
118--- a/samples/c/common/opencv_c_wrapper/CMakeLists.txt
119+++ b/samples/c/common/opencv_c_wrapper/CMakeLists.txt
120@@ -34,3 +34,5 @@ install(
121 RUNTIME DESTINATION samples_bin/ COMPONENT samples_bin EXCLUDE_FROM_ALL
122 LIBRARY DESTINATION samples_bin/ COMPONENT samples_bin EXCLUDE_FROM_ALL
123 )
124+
125+install(TARGETS ${TARGET_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
126diff --git a/samples/cpp/CMakeLists.txt b/samples/cpp/CMakeLists.txt
127index 3433dee0e..0c0fa0723 100644
128--- a/samples/cpp/CMakeLists.txt
129+++ b/samples/cpp/CMakeLists.txt
130@@ -222,6 +222,8 @@ macro(ie_add_sample)
131 EXCLUDE_FROM_ALL
132 )
133
134+ install(TARGETS ${IE_SAMPLE_NAME} DESTINATION bin)
135+
136 # create global target with all samples / demo apps
137 if(NOT TARGET ie_samples)
138 add_custom_target(ie_samples ALL)
139diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
140index 9ad26ba95..0853e2370 100644
141--- a/scripts/CMakeLists.txt
142+++ b/scripts/CMakeLists.txt
143@@ -28,7 +28,7 @@ ie_shellcheck_process(DIRECTORY "${OpenVINO_SOURCE_DIR}"
144
145 # install setupvars
146
147-ie_cpack_add_component(setupvars REQUIRED)
148+#ie_cpack_add_component(setupvars REQUIRED)
149
150 if(UNIX)
151 set(_setupvars_file setupvars/setupvars.sh)
152@@ -43,13 +43,13 @@ elseif(WIN32)
153 file(WRITE "${_setupvars_file}" "${_setupvars_content}")
154 endif()
155 endif()
156-install(PROGRAMS "${_setupvars_file}"
157- DESTINATION .
158- COMPONENT setupvars)
159+#install(PROGRAMS "${_setupvars_file}"
160+# DESTINATION .
161+# COMPONENT setupvars)
162
163 # install install_dependencies
164
165-if(LINUX)
166+if (FALSE)
167 ie_cpack_add_component(install_dependencies REQUIRED)
168 install(DIRECTORY install_dependencies/
169 DESTINATION install_dependencies
170diff --git a/src/bindings/c/src/CMakeLists.txt b/src/bindings/c/src/CMakeLists.txt
171index 9200d0bda..b3636e071 100644
172--- a/src/bindings/c/src/CMakeLists.txt
173+++ b/src/bindings/c/src/CMakeLists.txt
174@@ -43,8 +43,8 @@ install(TARGETS ${TARGET_NAME} EXPORT OpenVINOTargets
175 RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT core_c
176 ARCHIVE DESTINATION ${IE_CPACK_ARCHIVE_PATH} COMPONENT core_c
177 LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT core_c
178- INCLUDES DESTINATION runtime/include/ie)
179+ INCLUDES DESTINATION include/ie)
180
181 install(DIRECTORY ${InferenceEngine_C_API_SOURCE_DIR}/include/
182- DESTINATION runtime/include/ie
183+ DESTINATION include/ie
184 COMPONENT core_c_dev)
185diff --git a/src/cmake/openvino.cmake b/src/cmake/openvino.cmake
186index c46548468..3d65a20a5 100644
187--- a/src/cmake/openvino.cmake
188+++ b/src/cmake/openvino.cmake
189@@ -59,8 +59,8 @@ install(TARGETS ${TARGET_NAME} EXPORT OpenVINOTargets
190 RUNTIME DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT core
191 ARCHIVE DESTINATION ${IE_CPACK_ARCHIVE_PATH} COMPONENT core
192 LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT core
193- INCLUDES DESTINATION runtime/include
194- runtime/include/ie)
195+ INCLUDES DESTINATION include
196+ include/ie)
197
198 # --------------- OpenVINO runtime library dev ------------------------------
199 add_library(${TARGET_NAME}_dev INTERFACE)
200@@ -96,7 +96,7 @@ ie_cpack_add_component(core_dev REQUIRED DEPENDS core ${core_dev_components})
201
202 if(BUILD_SHARED_LIBS)
203 install(FILES $<TARGET_FILE_DIR:${TARGET_NAME}>/plugins.xml
204- DESTINATION ${IE_CPACK_RUNTIME_PATH}
205+ DESTINATION ${IE_CPACK_LIBRARY_PATH}
206 COMPONENT core)
207
208 # for InferenceEngineUnitTest
209@@ -115,7 +115,7 @@ endif()
210 install(EXPORT OpenVINOTargets
211 FILE OpenVINOTargets.cmake
212 NAMESPACE openvino::
213- DESTINATION runtime/cmake
214+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/OpenVINO
215 COMPONENT core_dev)
216
217 set(OV_CORE_DIR "${CMAKE_BINARY_DIR}/src/core")
218@@ -161,10 +161,10 @@ configure_file("${OpenVINO_SOURCE_DIR}/cmake/templates/OpenVINOConfig-version.cm
219 install(FILES "${CMAKE_BINARY_DIR}/share/InferenceEngineConfig.cmake"
220 "${CMAKE_BINARY_DIR}/InferenceEngineConfig-version.cmake"
221 "${OpenVINO_SOURCE_DIR}/src/cmake/ie_parallel.cmake"
222- DESTINATION runtime/cmake
223+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/InferenceEngine
224 COMPONENT core_dev)
225
226 install(FILES "${CMAKE_BINARY_DIR}/share/OpenVINOConfig.cmake"
227 "${CMAKE_BINARY_DIR}/OpenVINOConfig-version.cmake"
228- DESTINATION runtime/cmake
229+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/OpenVINO
230 COMPONENT core_dev)
231diff --git a/src/common/preprocessing/CMakeLists.txt b/src/common/preprocessing/CMakeLists.txt
232index e41e286c9..11aaffca6 100644
233--- a/src/common/preprocessing/CMakeLists.txt
234+++ b/src/common/preprocessing/CMakeLists.txt
235@@ -202,7 +202,7 @@ openvino_developer_export_targets(COMPONENT core TARGETS ${TARGET_NAME})
236
237 if(BUILD_SHARED_LIBS)
238 install(TARGETS ${TARGET_NAME}
239- LIBRARY DESTINATION ${IE_CPACK_RUNTIME_PATH} COMPONENT core)
240+ LIBRARY DESTINATION ${IE_CPACK_LIBRARY_PATH} COMPONENT core)
241 else()
242 ov_install_static_lib(${TARGET_NAME} core)
243 endif()
244diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
245index cc64b94ca..5f0dcf20c 100644
246--- a/src/core/CMakeLists.txt
247+++ b/src/core/CMakeLists.txt
248@@ -114,7 +114,7 @@ target_include_directories(ngraph INTERFACE $<BUILD_INTERFACE:${OV_CORE_INCLUDE_
249 #-----------------------------------------------------------------------------------------------
250
251 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
252- DESTINATION "runtime/include"
253+ DESTINATION "include"
254 COMPONENT core_dev
255 FILES_MATCHING
256 PATTERN "*.hpp"
257@@ -130,5 +130,5 @@ write_basic_package_version_file(${CMAKE_BINARY_DIR}/ngraphConfigVersion.cmake
258
259 install(FILES ${CMAKE_BINARY_DIR}/ngraphConfig.cmake
260 ${CMAKE_BINARY_DIR}/ngraphConfigVersion.cmake
261- DESTINATION "runtime/cmake"
262+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ngraph
263 COMPONENT core_dev)
264diff --git a/src/inference/CMakeLists.txt b/src/inference/CMakeLists.txt
265index ddd2fdcbc..f4ad1e623 100644
266--- a/src/inference/CMakeLists.txt
267+++ b/src/inference/CMakeLists.txt
268@@ -204,7 +204,7 @@ set_target_properties(${TARGET_NAME}_obj
269
270 openvino_developer_export_targets(COMPONENT core_legacy TARGETS ${TARGET_NAME}_plugin_api)
271
272-install(DIRECTORY "${PUBLIC_HEADERS_DIR}/" DESTINATION runtime/include
273+install(DIRECTORY "${PUBLIC_HEADERS_DIR}/" DESTINATION include
274 COMPONENT core_dev)
275
276 # Install static libraries for case BUILD_SHARED_LIBS=OFF
277diff --git a/src/plugins/intel_gpu/src/kernel_selector/CMakeLists.txt b/src/plugins/intel_gpu/src/kernel_selector/CMakeLists.txt
278index 3993bd973..99287bad5 100644
279--- a/src/plugins/intel_gpu/src/kernel_selector/CMakeLists.txt
280+++ b/src/plugins/intel_gpu/src/kernel_selector/CMakeLists.txt
281@@ -94,7 +94,7 @@ add_custom_command(
282 COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/core/cache/cache.json ${TUNING_CACHE_PATH}/cache.json)
283
284 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/core/cache/cache.json
285- DESTINATION ${IE_CPACK_RUNTIME_PATH}
286+ DESTINATION ${IE_CPACK_LIBRARY_PATH}
287 COMPONENT gpu)
288
289 ov_install_static_lib(${TARGET_NAME} gpu)
290diff --git a/src/plugins/intel_myriad/myriad_dependencies.cmake b/src/plugins/intel_myriad/myriad_dependencies.cmake
291index 5bba4235f..69c1470a7 100644
292--- a/src/plugins/intel_myriad/myriad_dependencies.cmake
293+++ b/src/plugins/intel_myriad/myriad_dependencies.cmake
294@@ -80,7 +80,7 @@ foreach(firmware_name IN LISTS VPU_SUPPORTED_FIRMWARES)
295 VERBATIM)
296
297 install(FILES ${${var_name}}
298- DESTINATION ${IE_CPACK_RUNTIME_PATH}
299+ DESTINATION ${IE_CPACK_LIBRARY_PATH}
300 COMPONENT myriad)
301
302 if(ENABLE_INTEL_MYRIAD AND ENABLE_BEH_TESTS)
303diff --git a/src/plugins/intel_myriad/myriad_plugin/CMakeLists.txt b/src/plugins/intel_myriad/myriad_plugin/CMakeLists.txt
304index 12a2f15e4..893146294 100644
305--- a/src/plugins/intel_myriad/myriad_plugin/CMakeLists.txt
306+++ b/src/plugins/intel_myriad/myriad_plugin/CMakeLists.txt
307@@ -56,6 +56,6 @@ set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION_REL
308 # install
309 if (LINUX)
310 install(FILES ${OpenVINO_SOURCE_DIR}/src/plugins/intel_myriad/third_party/mvnc/src/97-myriad-usbboot.rules
311- DESTINATION runtime/3rdparty
312+ DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/udev/rules.d
313 COMPONENT myriad)
314 endif()
315diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
316index c8638f7fd..ba30641c5 100644
317--- a/tools/CMakeLists.txt
318+++ b/tools/CMakeLists.txt
319@@ -20,7 +20,7 @@ endif()
320 ie_cpack_add_component(deployment_manager REQUIRED)
321
322 install(DIRECTORY deployment_manager
323- DESTINATION tools
324+ DESTINATION share/openvino/tools
325 COMPONENT deployment_manager
326 USE_SOURCE_PERMISSIONS)
327
328diff --git a/tools/compile_tool/CMakeLists.txt b/tools/compile_tool/CMakeLists.txt
329index d19eb5cc1..9fc929cbb 100644
330--- a/tools/compile_tool/CMakeLists.txt
331+++ b/tools/compile_tool/CMakeLists.txt
332@@ -38,9 +38,9 @@ add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME})
333 ie_cpack_add_component(core_tools DEPENDS core)
334
335 install(TARGETS compile_tool
336- RUNTIME DESTINATION tools/compile_tool
337+ RUNTIME DESTINATION bin
338 COMPONENT core_tools)
339
340-install(FILES README.md
341- DESTINATION tools/compile_tool
342- COMPONENT core_tools)
343+#install(FILES README.md
344+# DESTINATION tools/compile_tool
345+# COMPONENT core_tools)
346--
3472.35.1
348
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0003-cmake-Fix-overloaded-virtual-error.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0003-cmake-Fix-overloaded-virtual-error.patch
new file mode 100644
index 00000000..e0967d55
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0003-cmake-Fix-overloaded-virtual-error.patch
@@ -0,0 +1,33 @@
1From 900eeeb2953095e651270c0f42ccd8b26fd7885c Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Wed, 29 Nov 2023 12:49:35 +0530
4Subject: [PATCH 3/4] cmake: Fix overloaded-virtual error
5
6* Remove -Werror for:
7|git/src/plugins/intel_gpu/src/kernel_selector/jitter.h:129:28: error: 'virtual kernel_selector::JitDefinitions kernel_selector::JitConstant::GetDefinitions() const' was hidden [-Werror=overloaded-virtual=]
8| 129 | virtual JitDefinitions GetDefinitions() const = 0;
9| |
10
11Upstream-Status: Pending
12
13Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
14---
15 src/plugins/intel_gpu/CMakeLists.txt | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/src/plugins/intel_gpu/CMakeLists.txt b/src/plugins/intel_gpu/CMakeLists.txt
19index b0c66a435d6..a3037147cc2 100644
20--- a/src/plugins/intel_gpu/CMakeLists.txt
21+++ b/src/plugins/intel_gpu/CMakeLists.txt
22@@ -38,7 +38,7 @@ add_subdirectory(thirdparty)
23 include(thirdparty/cmake/rapidjson.cmake)
24
25 if(CMAKE_COMPILER_IS_GNUCXX)
26- ov_add_compiler_flags(-Werror)
27+ #ov_add_compiler_flags(-Werror)
28 endif()
29
30 add_subdirectory(src/runtime)
31--
322.34.1
33
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0004-protobuf-allow-target-protoc-to-be-built.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0004-protobuf-allow-target-protoc-to-be-built.patch
new file mode 100644
index 00000000..59095133
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/files/0004-protobuf-allow-target-protoc-to-be-built.patch
@@ -0,0 +1,45 @@
1From 3e288ed876c6bcb6aa3174e52446b479255ddf22 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Wed, 29 Nov 2023 12:55:19 +0530
4Subject: [PATCH 4/4] protobuf: allow target protoc to be built
5
6We can run target binaries using a qemu wrapper so allow these to be
7built and run.
8
9Upstream-Status: Inappropriate
10
11Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
12---
13 cmake/developer_package/frontends/frontends.cmake | 2 +-
14 thirdparty/protobuf/CMakeLists.txt | 2 +-
15 2 files changed, 2 insertions(+), 2 deletions(-)
16
17diff --git a/cmake/developer_package/frontends/frontends.cmake b/cmake/developer_package/frontends/frontends.cmake
18index 49c5b881030..2a1ea8562bc 100644
19--- a/cmake/developer_package/frontends/frontends.cmake
20+++ b/cmake/developer_package/frontends/frontends.cmake
21@@ -143,7 +143,7 @@ macro(ov_add_frontend)
22 set(OUTPUT_PB_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${relative_path}/${FILE_WE}.pb.h)
23 add_custom_command(
24 OUTPUT "${OUTPUT_PB_SRC}" "${OUTPUT_PB_HEADER}"
25- COMMAND ${PROTOC_EXECUTABLE} ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I ${protofiles_root_dir} ${proto_file}
26+ COMMAND protoc ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I ${protofiles_root_dir} ${proto_file}
27 DEPENDS ${PROTOC_DEPENDENCY} ${proto_file}
28 COMMENT "Running C++ protocol buffer compiler (${PROTOC_EXECUTABLE}) on ${proto_file_relative}"
29 VERBATIM
30diff --git a/thirdparty/protobuf/CMakeLists.txt b/thirdparty/protobuf/CMakeLists.txt
31index 4b6d6da87f3..409e492a5b3 100644
32--- a/thirdparty/protobuf/CMakeLists.txt
33+++ b/thirdparty/protobuf/CMakeLists.txt
34@@ -28,7 +28,7 @@ set(ABSL_PROPAGATE_CXX_STD ON CACHE BOOL "Abseil protogate CXX standard to depen
35 if(CMAKE_CROSSCOMPILING OR
36 (APPLE AND (HOST_X86_64 AND AARCH64)) OR
37 (MSVC AND (HOST_X86_64 AND (AARCH64 OR ARM))))
38- set(protobuf_BUILD_PROTOC_BINARIES OFF CACHE BOOL "Build protoc binaries" FORCE)
39+ set(protobuf_BUILD_PROTOC_BINARIES ON CACHE BOOL "Build protoc binaries" FORCE)
40 else()
41 set(protobuf_BUILD_PROTOC_BINARIES ON CACHE BOOL "Build protoc binaries" FORCE)
42 endif()
43--
442.34.1
45
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo/0001-use-oe-gflags.patch b/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo/0001-use-oe-gflags.patch
index 3db0a31e..816a98a3 100644
--- a/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo/0001-use-oe-gflags.patch
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo/0001-use-oe-gflags.patch
@@ -1,6 +1,6 @@
1From e071d6a6323f04dc7e6e40047199e509536d7f6e Mon Sep 17 00:00:00 2001 1From 804b08023b3f8e72b8e3eb09e464d6775c11d966 Mon Sep 17 00:00:00 2001
2From: Naveen Saini <naveen.kumar.saini@intel.com> 2From: Naveen Saini <naveen.kumar.saini@intel.com>
3Date: Mon, 30 Aug 2021 17:54:17 +0800 3Date: Fri, 21 Oct 2022 11:38:23 +0800
4Subject: [PATCH] demos: use gflags from meta-oe 4Subject: [PATCH] demos: use gflags from meta-oe
5 5
6Upstream-Status: Inappropriate 6Upstream-Status: Inappropriate
@@ -13,15 +13,15 @@ Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
13 1 file changed, 1 insertion(+), 1 deletion(-) 13 1 file changed, 1 insertion(+), 1 deletion(-)
14 14
15diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt 15diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt
16index 98de0db6c..077d43fb4 100644 16index 51767051c..fb7e3d22f 100644
17--- a/demos/CMakeLists.txt 17--- a/demos/CMakeLists.txt
18+++ b/demos/CMakeLists.txt 18+++ b/demos/CMakeLists.txt
19@@ -140,7 +140,7 @@ endmacro() 19@@ -141,7 +141,7 @@ endmacro()
20 find_package(OpenCV REQUIRED COMPONENTS core highgui videoio imgproc imgcodecs gapi) 20 find_package(OpenCV REQUIRED COMPONENTS core highgui videoio imgproc imgcodecs)
21 find_package(OpenVINO REQUIRED COMPONENTS Runtime) 21 find_package(OpenVINO REQUIRED COMPONENTS Runtime)
22 22
23-add_subdirectory(thirdparty/gflags) 23-add_subdirectory(thirdparty/gflags)
24+#add_subdirectory(thirdparty/gflags) 24+#add_subdirectory(thirdparty/gflags)
25 add_subdirectory(common/cpp) 25 add_subdirectory(common/cpp)
26 add_subdirectory(common/cpp_gapi) 26
27 add_subdirectory(multi_channel_common/cpp) 27 find_package(OpenCV QUIET COMPONENTS gapi)
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2022.1.bb b/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2024.0.0.bb
index d21b2968..495a4786 100644
--- a/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2022.1.bb
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2024.0.0.bb
@@ -4,11 +4,11 @@ DESCRIPTION = "This repository includes optimized deep learning \
4models and a set of demos to expedite development of high-performance \ 4models and a set of demos to expedite development of high-performance \
5deep learning inference applications." 5deep learning inference applications."
6 6
7SRC_URI = "git://github.com/opencv/open_model_zoo.git;protocol=https;branch=releases/2022/1 \ 7SRC_URI = "git://github.com/opencv/open_model_zoo.git;protocol=https;branch=master \
8 file://0001-use-oe-gflags.patch \ 8 file://0001-use-oe-gflags.patch \
9 " 9 "
10 10
11SRCREV = "cf9003a95ddb742aabea341aa1573c3fa25ebbe1" 11SRCREV = "37f60eb7fe1dcdedc552b2fb184d646723ed5e80"
12 12
13LICENSE = "Apache-2.0" 13LICENSE = "Apache-2.0"
14LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \ 14LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2022.1.bb b/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2022.1.bb
deleted file mode 100644
index 5814380d..00000000
--- a/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2022.1.bb
+++ /dev/null
@@ -1,141 +0,0 @@
1SUMMARY = "OpenVINO(TM) Toolkit - Deep Learning Deployment Toolkit"
2HOMEPAGE = "https://github.com/opencv/dldt"
3DESCRIPTION = "This toolkit allows developers to deploy pre-trained \
4deep learning models through a high-level C++ Inference Engine API \
5integrated with application logic."
6
7SRC_URI = "git://github.com/openvinotoolkit/openvino.git;protocol=https;branch=releases/2022/1;lfs=0 \
8 https://download.01.org/opencv/master/openvinotoolkit/thirdparty/unified/VPU/usb-ma2x8x/firmware_usb-ma2x8x_1875.zip;name=usb_ma2x8x \
9 https://download.01.org/opencv/master/openvinotoolkit/thirdparty/unified/VPU/pcie-ma2x8x/firmware_pcie-ma2x8x_1875.zip;name=pcie_ma2x8x \
10 git://github.com/openvinotoolkit/oneDNN.git;protocol=https;destsuffix=git/src/plugins/intel_cpu/thirdparty/mkl-dnn;name=mkl;nobranch=1 \
11 git://github.com/oneapi-src/oneDNN.git;protocol=https;destsuffix=git/src/plugins/intel_gpu/thirdparty/onednn_gpu;name=onednn;branch=master \
12 git://github.com/herumi/xbyak.git;protocol=https;destsuffix=git/thirdparty/xbyak;name=xbyak;branch=master \
13 git://github.com/pybind/pybind11.git;protocol=https;destsuffix=git/src/bindings/python/thirdparty/pybind11;name=pybind11;branch=master \
14 git://github.com/protocolbuffers/protobuf.git;protocol=https;destsuffix=git/thirdparty/protobuf/protobuf;name=protobuf;branch=3.18.x \
15 git://github.com/nlohmann/json.git;protocol=https;destsuffix=git/thirdparty/json/nlohmann_json;name=json;branch=master \
16 git://github.com/pboettch/json-schema-validator.git;protocol=https;destsuffix=git/thirdparty/json/nlohmann_json_schema_validator;name=jsonschema;branch=main \
17 git://github.com/openvinotoolkit/open_model_zoo.git;protocol=https;destsuffix=git/thirdparty/open_model_zoo;name=omz;branch=releases/2022/1 \
18 file://0001-inference-engine-use-system-installed-packages.patch \
19 file://0002-inference-engine-installation-fixes.patch \
20 "
21
22SRCREV = "cdb9bec7210f8c24fde3e416c7ada820faaaa23e"
23SRCREV_mkl = "82ca2f931c1d588b67d154d873136d4af1ffb3a8"
24SRCREV_onednn = "9e2bf22e51726ad36ddae90c7caf2898d124baa6"
25SRCREV_xbyak = "8d1e41b650890080fb77548372b6236bbd4079f9"
26SRCREV_pybind11 = "d71ba0cb73616c493d35699a8a9283aa64ef0f6b"
27SRCREV_protobuf = "6c6b0778b70f35f93c2f0dee30e5d12ad2a83eea"
28SRCREV_json = "fec56a1a16c6e1c1b1f4e116a20e79398282626c"
29SRCREV_jsonschema = "b1ef8628326cf0b53612f12784fd245e5e4382f1"
30SRCREV_omz = "cf9003a95ddb742aabea341aa1573c3fa25ebbe1"
31
32SRC_URI[usb_ma2x8x.sha256sum] = "e65fcc1c6b0f3e9d814e53022c212ec0a2b83197a9df38badb298fb85ccf3acf"
33SRC_URI[pcie_ma2x8x.sha256sum] = "b11368fec2036d96fb703d2a40b171184fefe89f27e74a988ef1ca34260a2bc5"
34
35LICENSE = "Apache-2.0 & MIT & BSD-3-Clause"
36LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \
37 file://thirdparty/xbyak/COPYRIGHT;md5=03532861dad9003cc2c17f14fc7a4efa \
38 file://thirdparty/cnpy/LICENSE;md5=689f10b06d1ca2d4b1057e67b16cd580 \
39 file://thirdparty/protobuf/protobuf/LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b \
40 file://thirdparty/json/nlohmann_json/LICENSE.MIT;md5=441793d25a658d58d79a1f87516a6ad1 \
41 file://thirdparty/json/nlohmann_json_schema_validator/LICENSE;md5=c441d022da1b1663c70181a32225d006 \
42 file://thirdparty/open_model_zoo/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \
43 file://src/plugins/intel_cpu/thirdparty/mkl-dnn/LICENSE;md5=b48e3de3bfd47c27882a0d85b20823f5 \
44 file://src/plugins/intel_gpu/thirdparty/onednn_gpu/LICENSE;md5=b48e3de3bfd47c27882a0d85b20823f5 \
45 file://src/bindings/python/thirdparty/pybind11/LICENSE;md5=774f65abd8a7fe3124be2cdf766cd06f \
46"
47
48inherit cmake python3native
49
50S = "${WORKDIR}/git"
51EXTRA_OECMAKE += " \
52 -DENABLE_OPENCV=OFF \
53 -DOpenCV_DIR=${STAGING_LIBDIR}/cmake \
54 -DENABLE_PLUGIN_RPATH=0 \
55 -DENABLE_INTEL_GNA=OFF \
56 -DPYTHON_EXECUTABLE=${PYTHON} \
57 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
58 -DTHREADING=TBB -DTBB_DIR="${STAGING_LIBDIR}/cmake/TBB" \
59 -DENABLE_SAMPLES=ON \
60 -DTREAT_WARNING_AS_ERROR=FALSE \
61 -DENABLE_DATA=FALSE \
62 -DENABLE_SYSTEM_PUGIXML=TRUE \
63 -DENABLE_SYSTEM_PROTOBUF=TRUE \
64 -DProtobuf_LIBRARIES=protobuf \
65 -DProtobuf_LITE_LIBRARIES=protobuf-lite \
66 -DProtobuf_INCLUDE_DIR=${STAGING_INCDIR} \
67 -DSYSTEM_PROTOC=${STAGING_BINDIR_NATIVE}/protoc \
68 -DENABLE_OV_ONNX_FRONTEND=FALSE \
69 -DUSE_BUILD_TYPE_SUBFOLDER=OFF \
70 "
71
72DEPENDS += "libusb1 \
73 ade \
74 opencv \
75 pugixml \
76 protobuf \
77 protobuf-native \
78 tbb \
79 zlib \
80 "
81
82COMPATIBLE_HOST = '(x86_64).*-linux'
83COMPATIBLE_HOST:libc-musl = "null"
84
85#Disable opencl temporarily. intel-compute-runtime depends on
86#intel-graphics-compiler and vc-intrinsics and these two recipes fail to
87#compile with LLVM13. Enable it after upstream has fixed it.
88#PACKAGECONFIG ?= "vpu opencl"
89PACKAGECONFIG ?= "vpu"
90PACKAGECONFIG[opencl] = "-DENABLE_INTEL_GPU=TRUE -DOpenCL_INCLUDE_DIR=${STAGING_INCDIR} -DOpenCL_LIBRARY=${STAGING_LIBDIR}/libOpenCL.so, -DENABLE_INTEL_GPU=FALSE, ocl-icd opencl-headers opencl-clhpp libva,"
91PACKAGECONFIG[python3] = "-DENABLE_PYTHON=ON -DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR}, -DENABLE_PYTHON=OFF, python3-cython-native patchelf-native, python3 python3-numpy python3-opencv python3-progress python3-cython"
92PACKAGECONFIG[vpu] = "-DENABLE_INTEL_MYRIAD=ON -DVPU_FIRMWARE_USB-MA2X8X_FILE=../mvnc/usb-ma2x8x.mvcmd -DVPU_FIRMWARE_PCIE-MA2X8X_FILE=../mvnc/pcie-ma2x8x.mvcmd,-DENABLE_INTEL_MYRIAD=OFF,,${PN}-vpu-firmware"
93PACKAGECONFIG[verbose] = "-DVERBOSE_BUILD=1,-DVERBOSE_BUILD=0"
94
95do_install:append() {
96 if ${@bb.utils.contains('PACKAGECONFIG', 'python3', 'true', 'false', d)}; then
97 install -d ${D}${datadir}/openvino
98 mv ${D}/usr/samples/python ${D}${datadir}/openvino/
99
100 install -d ${D}${PYTHON_SITEPACKAGES_DIR}
101 mv ${D}${prefix}/python/${PYTHON_DIR}/openvino ${D}${PYTHON_SITEPACKAGES_DIR}/
102 mv ${D}${prefix}/python/${PYTHON_DIR}/ngraph ${D}${PYTHON_SITEPACKAGES_DIR}/
103
104 rm -rf ${D}${prefix}/python
105 fi
106
107 rm -rf ${D}${prefix}/deployment_tools
108
109 # Remove the samples source directory. We install the built samples.
110 rm -rf ${D}/usr/samples
111}
112
113# Otherwise e.g. ros-openvino-toolkit-dynamic-vino-sample when using dldt-inference-engine uses dldt-inference-engine WORKDIR
114# instead of RSS
115SSTATE_SCAN_FILES:append = " *.cmake"
116
117FILES:${PN}-dev = "${includedir} \
118 ${libdir}/cmake \
119 "
120
121FILES:${PN} += "${libdir}/lib*${SOLIBSDEV} \
122 ${datadir}/openvino \
123 ${libdir}/custom_kernels \
124 ${libdir}/plugins.xml \
125 ${libdir}/cache.json \
126 "
127
128# Move inference engine samples into a separate package
129PACKAGES =+ "${PN}-samples ${PN}-vpu-firmware"
130
131FILES:${PN}-samples = "${datadir}/openvino \
132 ${bindir} \
133 "
134FILES:${PN}-vpu-firmware += "${libdir}/*.mvcmd"
135
136# Package for inference engine python API
137PACKAGES =+ "${PN}-${PYTHON_PN}"
138
139FILES:${PN}-${PYTHON_PN} = "${PYTHON_SITEPACKAGES_DIR}"
140
141UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2024.0.0.bb b/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2024.0.0.bb
new file mode 100644
index 00000000..94edd1b8
--- /dev/null
+++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/openvino-inference-engine_2024.0.0.bb
@@ -0,0 +1,143 @@
1SUMMARY = "OpenVINO(TM) Toolkit - Deep Learning Deployment Toolkit"
2HOMEPAGE = "https://github.com/opencv/dldt"
3DESCRIPTION = "This toolkit allows developers to deploy pre-trained \
4deep learning models through a high-level C++ Inference Engine API \
5integrated with application logic."
6
7SRC_URI = "git://github.com/openvinotoolkit/openvino.git;protocol=https;name=openvino;branch=releases/2024/0;lfs=0 \
8 git://github.com/openvinotoolkit/oneDNN.git;protocol=https;destsuffix=git/src/plugins/intel_cpu/thirdparty/onednn;name=mkl;nobranch=1 \
9 git://github.com/oneapi-src/oneDNN.git;protocol=https;destsuffix=git/src/plugins/intel_gpu/thirdparty/onednn_gpu;name=onednn;nobranch=1 \
10 git://github.com/herumi/xbyak.git;protocol=https;destsuffix=git/thirdparty/xbyak;name=xbyak;branch=master \
11 git://github.com/nlohmann/json.git;protocol=https;destsuffix=git/thirdparty/json/nlohmann_json;name=json;branch=develop \
12 git://github.com/opencv/ade.git;protocol=https;destsuffix=git/thirdparty/ade;name=ade;nobranch=1 \
13 git://github.com/protocolbuffers/protobuf.git;protocol=https;destsuffix=git/thirdparty/protobuf/protobuf;name=protobuf;branch=3.20.x \
14 git://github.com/gflags/gflags.git;protocol=https;destsuffix=git/thirdparty/gflags/gflags;name=gflags;nobranch=1 \
15 git://github.com/madler/zlib.git;protocol=https;destsuffix=git/thirdparty/zlib/zlib;name=zlib;nobranch=1 \
16 git://github.com/openvinotoolkit/mlas.git;protocol=https;destsuffix=git/src/plugins/intel_cpu/thirdparty/mlas;name=mlas;nobranch=1 \
17 git://github.com/nodejs/node-api-headers.git;protocol=https;destsuffix=git/node-api-headers-src;name=node-api-headers;nobranch=1 \
18 git://github.com/nodejs/node-addon-api.git;protocol=https;destsuffix=git/node-addon-api-src;name=node-addon-api;nobranch=1 \
19 file://0001-cmake-yocto-specific-tweaks-to-the-build-process.patch \
20 file://0003-cmake-Fix-overloaded-virtual-error.patch \
21 file://0004-protobuf-allow-target-protoc-to-be-built.patch \
22 file://0001-cmake-fix-build-when-using-sysroot.patch \
23 file://0001-CPU-Solving-the-build-failure-caused-by-setting-the-.patch \
24 "
25
26SRCREV_openvino = "34caeefd07800b59065345d651949efbe8ab6649"
27SRCREV_mkl = "f82148befdbdc9576ec721c9d500155ee4de8060"
28SRCREV_onednn = "494af5f9921bdae98f1a0e2955fa7d76ff386c4f"
29SRCREV_xbyak = "740dff2e866f3ae1a70dd42d6e8836847ed95cc2"
30SRCREV_json = "9cca280a4d0ccf0c08f47a99aa71d1b0e52f8d03"
31SRCREV_ade = "0e8a2ccdd34f29dba55894f5f3c5179809888b9e"
32SRCREV_protobuf = "fe271ab76f2ad2b2b28c10443865d2af21e27e0e"
33SRCREV_gflags = "e171aa2d15ed9eb17054558e0b3a6a413bb01067"
34SRCREV_zlib = "09155eaa2f9270dc4ed1fa13e2b4b2613e6e4851"
35SRCREV_mlas = "d1bc25ec4660cddd87804fcf03b2411b5dfb2e94"
36SRCREV_node-api-headers = "186e04b5e40e54d7fd1655bc67081cc483f12488"
37SRCREV_node-addon-api = "39a25bf27788ff7a7ea5c64978c4dcd1e7b9d80d"
38SRCREV_FORMAT = "openvino_mkl_onednn_xbyak_json_ade_protobuf_gflags_zlib_node-api-headers_node-addon-api_mlas"
39
40LICENSE = "Apache-2.0 & MIT & BSD-3-Clause & Zlib"
41LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \
42 file://thirdparty/xbyak/COPYRIGHT;md5=3c98edfaa50a86eeaef4c6109e803f16 \
43 file://thirdparty/cnpy/LICENSE;md5=689f10b06d1ca2d4b1057e67b16cd580 \
44 file://thirdparty/json/nlohmann_json/LICENSE.MIT;md5=f969127d7b7ed0a8a63c2bbeae002588 \
45 file://thirdparty/ade/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
46 file://thirdparty/gflags/gflags/COPYING.txt;md5=c80d1a3b623f72bb85a4c75b556551df \
47 file://thirdparty/zlib/zlib/LICENSE;md5=b51a40671bc46e961c0498897742c0b8 \
48 file://src/plugins/intel_cpu/thirdparty/mlas/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \
49 file://src/plugins/intel_cpu/thirdparty/onednn/LICENSE;md5=3b64000f6e7d52516017622a37a94ce9 \
50 file://src/plugins/intel_gpu/thirdparty/onednn_gpu/LICENSE;md5=3b64000f6e7d52516017622a37a94ce9 \
51 file://node-api-headers-src/LICENSE;md5=6adb2909701d4605b4b2ae1a9b25d8bd \
52 file://node-addon-api-src/LICENSE.md;md5=0492ef29a9d558a3e9660e7accc9ca6a \
53"
54
55inherit cmake python3native pkgconfig qemu
56
57S = "${WORKDIR}/git"
58EXTRA_OECMAKE += " \
59 -DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \
60 -DENABLE_OPENCV=OFF \
61 -DENABLE_INTEL_GNA=OFF \
62 -DENABLE_SYSTEM_TBB=ON \
63 -DPYTHON_EXECUTABLE=${PYTHON} \
64 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
65 -DTHREADING=TBB -DTBB_DIR="${STAGING_LIBDIR}/cmake/TBB" \
66 -DTREAT_WARNING_AS_ERROR=FALSE \
67 -DENABLE_DATA=FALSE \
68 -DENABLE_SYSTEM_PUGIXML=TRUE \
69 -DENABLE_OV_ONNX_FRONTEND=FALSE \
70 -DUSE_BUILD_TYPE_SUBFOLDER=OFF \
71 -DENABLE_FUZZING=OFF \
72 -DENABLE_TBBBIND_2_5=OFF \
73 -DCPACK_GENERATOR=RPM \
74 -DENABLE_SYSTEM_FLATBUFFERS=ON \
75 -DENABLE_SYSTEM_SNAPPY=ON \
76 -DFETCHCONTENT_BASE_DIR="${S}" \
77 "
78
79DEPENDS += "\
80 flatbuffers-native \
81 pugixml \
82 python3-pybind11 \
83 python3-pybind11-native \
84 qemu-native \
85 snappy \
86 tbb \
87 "
88
89COMPATIBLE_HOST = '(x86_64).*-linux'
90COMPATIBLE_HOST:libc-musl = "null"
91
92PACKAGECONFIG ?= "opencl samples"
93PACKAGECONFIG[opencl] = "-DENABLE_INTEL_GPU=TRUE, -DENABLE_INTEL_GPU=FALSE, virtual/opencl-icd opencl-headers opencl-clhpp,"
94PACKAGECONFIG[python3] = "-DENABLE_PYTHON=ON -DPYTHON_LIBRARY=${PYTHON_LIBRARY} -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR} -DENABLE_PYTHON_PACKAGING=ON, -DENABLE_PYTHON=OFF, patchelf-native, python3 python3-numpy python3-progress"
95PACKAGECONFIG[samples] = "-DENABLE_SAMPLES=ON -DENABLE_COMPILE_TOOL=ON, -DENABLE_SAMPLES=OFF -DENABLE_COMPILE_TOOL=OFF, opencv"
96PACKAGECONFIG[verbose] = "-DVERBOSE_BUILD=1,-DVERBOSE_BUILD=0"
97
98do_configure:prepend() {
99 # Dont set PROJECT_ROOT_DIR
100 sed -i -e 's:\${OpenVINO_SOURCE_DIR}::;' ${S}/src/CMakeLists.txt
101
102 # qemu wrapper that can be used by cmake to run target binaries.
103 qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}"
104 cat > ${WORKDIR}/qemuwrapper << EOF
105#!/bin/sh
106$qemu_binary "\$@"
107EOF
108 chmod +x ${WORKDIR}/qemuwrapper
109}
110
111do_install:append() {
112 rm -rf ${D}${prefix}/install_dependencies
113 rm -rf ${D}${prefix}/setupvars.sh
114
115 find ${B}/src/plugins/intel_cpu/cross-compiled/ -type f -name *_disp.cpp -exec sed -i -e 's%'"${S}"'%'"${TARGET_DBGSRC_DIR}"'%g' {} +
116}
117
118# Otherwise e.g. ros-openvino-toolkit-dynamic-vino-sample when using dldt-inference-engine uses dldt-inference-engine WORKDIR
119# instead of RSS
120SSTATE_SCAN_FILES:append = " *.cmake"
121
122FILES:${PN} += "\
123 ${libdir}/openvino-${PV}/lib*${SOLIBSDEV} \
124 ${libdir}/openvino-${PV}/plugins.xml \
125 ${libdir}/openvino-${PV}/cache.json \
126 "
127
128# Move inference engine samples into a separate package
129PACKAGES =+ "${PN}-samples"
130
131FILES:${PN}-samples = "${datadir}/openvino \
132 ${bindir} \
133 ${libdir}/libformat_reader.a \
134 ${libdir}/libopencv_c_wrapper.a \
135 "
136RDEPENDS:${PN}-samples += "python3-core"
137
138# Package for inference engine python API
139PACKAGES =+ "${PN}-python3"
140
141FILES:${PN}-python3 = "${PYTHON_SITEPACKAGES_DIR}"
142
143UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+\.\d+\.\d+))$"
diff --git a/lib/oeqa/runtime/cases/jhi.py b/lib/oeqa/runtime/cases/jhi.py
deleted file mode 100644
index 7a24b6da..00000000
--- a/lib/oeqa/runtime/cases/jhi.py
+++ /dev/null
@@ -1,41 +0,0 @@
1import os
2from oeqa.runtime.decorator.package import OEHasPackage
3from oeqa.runtime.case import OERuntimeTestCase
4from oeqa.core.decorator.depends import OETestDepends
5
6class JhiTest(OERuntimeTestCase):
7
8 @classmethod
9 def tearDownClass(cls):
10 _, output = cls.tc.target.run('pidof jhid')
11 cls.tc.target.run('kill %s' % output)
12
13 @OEHasPackage(['openssh-sshd'])
14 @OEHasPackage(['jhi'])
15 def test_jhi_mei_driver(self):
16 command = 'ls /dev/mei*'
17 (status, output) = self.target.run(command)
18 self.assertEqual(status, 0, msg="Error messages: %s" % output)
19
20 @OETestDepends(['jhi.JhiTest.test_jhi_mei_driver'])
21 def test_jhi_daemon_version(self):
22 command = 'jhid -v'
23 (status, output) = self.target.run(command)
24 self.assertEqual(status, 0, msg="Error messages: %s" % output)
25
26 @OETestDepends(['jhi.JhiTest.test_jhi_mei_driver'])
27 def test_jhi_daemon_can_initialized(self):
28 command = 'jhid -d'
29 (status, output) = self.target.run(command)
30 self.assertEqual(status, 0, msg="Error messages: %s" % output)
31
32 @OEHasPackage(['jhi-test'])
33 @OETestDepends(['jhi.JhiTest.test_jhi_daemon_can_initialized'])
34 def test_jhi_bist(self):
35 (status, output) = self.target.run('uname -m')
36 self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output))
37 if 'x86_64' not in output:
38 self.skipTest("Skipped jhi bist test if not x86_64 machine (current machine: %s)." % output)
39 command = 'bist'
40 (status, output) = self.target.run(command)
41 self.assertEqual(status, 0, msg="Error messages: %s" % output)
diff --git a/lib/oeqa/runtime/cases/parselogs-ignores-intel-core2-32.txt b/lib/oeqa/runtime/cases/parselogs-ignores-intel-core2-32.txt
new file mode 100644
index 00000000..84ce8168
--- /dev/null
+++ b/lib/oeqa/runtime/cases/parselogs-ignores-intel-core2-32.txt
@@ -0,0 +1,9 @@
1# These should be reviewed to see if they are still needed
2ACPI: No _BQC method, cannot determine initial brightness
3[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness
4(EE) Failed to load module "psb"
5(EE) Failed to load module "psbdrv"
6(EE) open /dev/fb0: No such file or directory
7(EE) AIGLX: reverting to software rendering
8dmi: Firmware registration failed.
9ioremap error for 0x78
diff --git a/lib/oeqa/runtime/cases/parselogs-ignores-intel-corei7-64.txt b/lib/oeqa/runtime/cases/parselogs-ignores-intel-corei7-64.txt
new file mode 100644
index 00000000..5c9b4bc7
--- /dev/null
+++ b/lib/oeqa/runtime/cases/parselogs-ignores-intel-corei7-64.txt
@@ -0,0 +1,14 @@
1# These should be reviewed to see if they are still needed
2can't set Max Payload Size to 256
3intel_punit_ipc: can't request region for resource
4[drm] parse error at position 4 in video mode 'efifb'
5ACPI Error: Could not enable RealTimeClock event
6ACPI Warning: Could not enable fixed event - RealTimeClock
7hci_intel INT33E1:00: Unable to retrieve gpio
8hci_intel: probe of INT33E1:00 failed
9can't derive routing for PCI INT A
10failed to read out thermal zone
11Bluetooth: hci0: Setting Intel event mask failed
12ttyS2 - failed to request DMA
13Bluetooth: hci0: Failed to send firmware data (-38)
14atkbd serio0: Failed to enable keyboard on isa0060/serio0
diff --git a/recipes-bsp/intel-cmt-cat/intel-cmt-cat_23.11.1.bb b/recipes-bsp/intel-cmt-cat/intel-cmt-cat_23.11.1.bb
new file mode 100644
index 00000000..60d0dfd2
--- /dev/null
+++ b/recipes-bsp/intel-cmt-cat/intel-cmt-cat_23.11.1.bb
@@ -0,0 +1,29 @@
1SUMMARY = "intel-cmt-cat"
2DESCRIPTION = "Software package which provides basic support for Intel(R) \
3Resource Director Technology (Intel(R) RDT)"
4HOMEPAGE = "https://github.com/intel/intel-cmt-cat"
5
6LICENSE = "BSD-3-Clause"
7LIC_FILES_CHKSUM = "file://LICENSE;md5=4b63c65942e1c16fd897f8cd20abebf8"
8
9SRC_URI = "git://github.com/intel/intel-cmt-cat;protocol=https;branch=master"
10SRCREV = "b26b31b0ae6980c5939a421cefe0316cae884626"
11
12S = "${WORKDIR}/git"
13
14COMPATIBLE_HOST = '(x86_64).*-linux'
15COMPATIBLE_HOST:libc-musl = "null"
16
17do_install() {
18 oe_runmake install PREFIX=${D}${prefix} NOLDCONFIG=y
19}
20
21FILES:${PN} += "${nonarch_libdir}/libpqos*"
22FILES:${PN}-doc = "/usr/man*"
23
24INSANE_SKIP:${PN} += "ldflags"
25INSANE_SKIP:${PN} += "dev-so"
26INSANE_SKIP:${PN} += "libdir"
27INSANE_SKIP:${PN} += "already-stripped"
28
29INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
diff --git a/recipes-bsp/metee/metee_3.1.3.bb b/recipes-bsp/metee/metee_3.2.4.bb
index 99f72abb..da8220b9 100644
--- a/recipes-bsp/metee/metee_3.1.3.bb
+++ b/recipes-bsp/metee/metee_3.2.4.bb
@@ -10,8 +10,9 @@ COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
10 10
11inherit cmake 11inherit cmake
12 12
13SRC_URI = "git://github.com/intel/metee.git;branch=master;protocol=https" 13SRC_URI = "git://github.com/intel/metee.git;branch=master;protocol=https \
14SRCREV = "0d6f19420bebaa92b0e3dcb6b81e352820f1f1cc" 14"
15SRCREV = "db45e37e146fd9c06907a15ade55eba06ad1f951"
15 16
16S = "${WORKDIR}/git" 17S = "${WORKDIR}/git"
17 18
diff --git a/recipes-core/meta/icx-environment.inc b/recipes-core/meta/icx-environment.inc
new file mode 100644
index 00000000..65322a91
--- /dev/null
+++ b/recipes-core/meta/icx-environment.inc
@@ -0,0 +1,15 @@
1export ICX_LDFLAGS_OPTION = " -Wl,-dynamic-linker,/lib/ld-linux-x86-64.so.2"
2export ICXSDK_PREFIX_OPTION = "-B ${TARGET_PREFIX}"
3export ICXQSDK_PREFIX_OPTION = "-qgnu-prefix=${TARGET_PREFIX}"
4
5create_sdk_files:append() {
6 script=${SDK_OUTPUT}/${SDKPATH}/environment-setup-${REAL_MULTIMACH_TARGET_SYS}
7 if ${@bb.utils.contains('ICXSDK', '1', 'true', 'false', d)}; then
8 echo 'export ICX="icx ${ICXSDK_PREFIX_OPTION} --target=${TARGET_SYS} ${TARGET_CC_ARCH} --sysroot=$SDKTARGETSYSROOT ${ICX_LDFLAGS_OPTION}"' >> $script
9 echo 'export ICXCXX="icpx ${ICXSDK_PREFIX_OPTION} --target=${TARGET_SYS} ${TARGET_CC_ARCH} --sysroot=$SDKTARGETSYSROOT ${ICX_LDFLAGS_OPTION}"' >> $script
10 echo 'export ICXCPP="icx ${ICXSDK_PREFIX_OPTION} -E --target=${TARGET_SYS} ${TARGET_CC_ARCH} --sysroot=$SDKTARGETSYSROOT ${ICX_LDFLAGS_OPTION}"' >> $script
11 echo 'export ICXLD="xild --sysroot=$SDKTARGETSYSROOT "' >> $script
12 echo 'export ICXCCLD="icx ${ICXSDK_PREFIX_OPTION} --sysroot=$SDKTARGETSYSROOT"' >> $script
13 echo 'export ICXAR="xiar ${ICXQSDK_PREFIX_OPTION}"' >> $script
14 fi
15}
diff --git a/recipes-core/meta/meta-environment-extsdk.bbappend b/recipes-core/meta/meta-environment-extsdk.bbappend
new file mode 100644
index 00000000..2cff6fc4
--- /dev/null
+++ b/recipes-core/meta/meta-environment-extsdk.bbappend
@@ -0,0 +1,3 @@
1FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
2
3require ${@bb.utils.contains('ICXSDK', '1', 'icx-environment.inc', '', d)}
diff --git a/recipes-core/meta/meta-environment.bbappend b/recipes-core/meta/meta-environment.bbappend
new file mode 100644
index 00000000..2cff6fc4
--- /dev/null
+++ b/recipes-core/meta/meta-environment.bbappend
@@ -0,0 +1,3 @@
1FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
2
3require ${@bb.utils.contains('ICXSDK', '1', 'icx-environment.inc', '', d)}
diff --git a/recipes-core/microcode/intel-microcode_20220510.bb b/recipes-core/microcode/intel-microcode_20240312.bb
index ce59ab0e..00b18231 100644
--- a/recipes-core/microcode/intel-microcode_20220510.bb
+++ b/recipes-core/microcode/intel-microcode_20240312.bb
@@ -16,7 +16,7 @@ LIC_FILES_CHKSUM = "file://license;md5=d8405101ec6e90c1d84b082b0c40c721"
16SRC_URI = "git://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git;protocol=https;branch=main \ 16SRC_URI = "git://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git;protocol=https;branch=main \
17 " 17 "
18 18
19SRCREV = "6c0c4691e5bb446e0e428ebca595164709c59586" 19SRCREV = "41af34500598418150aa298bb04e7edacc547897"
20 20
21DEPENDS = "iucode-tool-native" 21DEPENDS = "iucode-tool-native"
22S = "${WORKDIR}/git" 22S = "${WORKDIR}/git"
diff --git a/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch b/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch
index 6065b1f7..7eb3bc69 100644
--- a/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch
+++ b/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch
@@ -9,6 +9,8 @@ application. It's used for testing purposes only.
9 9
10Images signed with refkit-db keys are allowed to boot. 10Images signed with refkit-db keys are allowed to boot.
11 11
12Upstream-Status: Inappropriate
13
12Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com> 14Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
13Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> 15Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
14--- 16---
diff --git a/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend
new file mode 100644
index 00000000..b5a5fdd4
--- /dev/null
+++ b/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend
@@ -0,0 +1 @@
RDEPENDS:${PN} += "${@bb.utils.contains('ICXSDK', '1', ' intel-oneapi-dpcpp-cpp intel-oneapi-dpcpp-cpp-dev intel-oneapi-dpcpp-cpp-runtime intel-oneapi-dpcpp-cpp-runtime-dev ', '', d)}"
diff --git a/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend b/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend
new file mode 100644
index 00000000..608ea3d3
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-core-standalone-sdk-target.bbappend
@@ -0,0 +1 @@
RRECOMMENDS:${PN}:append:intel-x86-common = "${@bb.utils.contains('ICXSDK', '1', ' intel-oneapi-dpcpp-cpp intel-oneapi-dpcpp-cpp-dev intel-oneapi-dpcpp-cpp-runtime intel-oneapi-dpcpp-cpp-runtime-dev ', '', d)}"
diff --git a/recipes-graphics/gmmlib/files/0001-Add-new-DG2-device-IDs-194.patch b/recipes-graphics/gmmlib/files/0001-Add-new-DG2-device-IDs-194.patch
new file mode 100644
index 00000000..825c1f18
--- /dev/null
+++ b/recipes-graphics/gmmlib/files/0001-Add-new-DG2-device-IDs-194.patch
@@ -0,0 +1,37 @@
1From 8729d66800995a9b7e693bd78249932bd12383e1 Mon Sep 17 00:00:00 2001
2From: John Machado <john.machado@intel.com>
3Date: Mon, 25 Mar 2024 11:13:27 +0530
4Subject: [PATCH] Add new DG2 device IDs (#194)
5
6Upstream-Status: Backport [https://github.com/intel/gmmlib/commit/dcc4b85ea3728c848b62fbb164c00f43b519b6fb]
7
8Signed-off-by: Hoe, Sheng Yang <sheng.yang.hoe@intel.com>
9---
10 Source/inc/common/igfxfmid.h | 4 ++++
11 1 file changed, 4 insertions(+)
12
13diff --git a/Source/inc/common/igfxfmid.h b/Source/inc/common/igfxfmid.h
14index 7969779..8e2c955 100644
15--- a/Source/inc/common/igfxfmid.h
16+++ b/Source/inc/common/igfxfmid.h
17@@ -1932,6 +1932,8 @@ typedef enum __NATIVEGTTYPE
18 #define DEV_ID_56BB 0x56BB
19 #define DEV_ID_56BC 0x56BC
20 #define DEV_ID_56BD 0x56BD
21+#define DEV_ID_56BE 0x56BE
22+#define DEV_ID_56BF 0x56BF
23 #define DEV_ID_56C0 0x56C0
24 #define DEV_ID_56C1 0x56C1
25
26@@ -1992,6 +1994,8 @@ typedef enum __NATIVEGTTYPE
27 ( d == DEV_ID_5690 ) || \
28 ( d == DEV_ID_5691 ) || \
29 ( d == DEV_ID_5692 ) || \
30+ ( d == DEV_ID_56BE ) || \
31+ ( d == DEV_ID_56BF ) || \
32 ( d == DEV_ID_56C0 ) || \
33 ( d == DEV_ID_4F80 ) || \
34 ( d == DEV_ID_4F81 ) || \
35--
362.34.1
37
diff --git a/recipes-graphics/gmmlib/files/0001-Introduce-ARL-H-support-172.patch b/recipes-graphics/gmmlib/files/0001-Introduce-ARL-H-support-172.patch
new file mode 100644
index 00000000..ab4cb178
--- /dev/null
+++ b/recipes-graphics/gmmlib/files/0001-Introduce-ARL-H-support-172.patch
@@ -0,0 +1,42 @@
1From 2b267b72d6aaa922861b120da9c1543161797046 Mon Sep 17 00:00:00 2001
2From: John Machado <john.machado@intel.com>
3Date: Fri, 9 Feb 2024 13:10:18 +0530
4Subject: [PATCH] Introduce ARL-H support (#172)
5
6Upstream-Status: Backport [https://github.com/intel/gmmlib/commit/544a8be6f66631e085c86c453aafd78b0e7f5179]
7Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
8---
9 Source/inc/common/igfxfmid.h | 10 ++++++++++
10 1 file changed, 10 insertions(+)
11
12diff --git a/Source/inc/common/igfxfmid.h b/Source/inc/common/igfxfmid.h
13index 99fc624..19aa505 100644
14--- a/Source/inc/common/igfxfmid.h
15+++ b/Source/inc/common/igfxfmid.h
16@@ -1966,6 +1966,11 @@ typedef enum __NATIVEGTTYPE
17 // ARL-S
18 #define DEV_ID_7D67 0x7D67
19
20+// ARL-H
21+#define DEV_ID_7D41 0x7D41
22+#define DEV_ID_7D51 0x7D51
23+#define DEV_ID_7DD1 0x7DD1
24+
25 #define MGM_HAS 0
26
27 //#define SDG_HAS 1 //Reserve place for Springdale-G HAS
28@@ -2012,6 +2017,11 @@ typedef enum __NATIVEGTTYPE
29 // Macro to identify ARL-S Device ID
30 #define GFX_IS_ARL_S(d) ( ( d == DEV_ID_7D67 ) )
31
32+// Macro to identify ARL-H Device ID
33+#define GFX_IS_ARL_H(d) ( ( d == DEV_ID_7D41 ) || \
34+ ( d == DEV_ID_7D51 ) || \
35+ ( d == DEV_ID_7DD1 ))
36+
37 //we define the highest cap and lower cap of stepping IDs
38 #define SI_REV_ID(lo,hi) (lo | hi<<16)
39
40--
412.40.1
42
diff --git a/recipes-graphics/gmmlib/gmmlib_22.1.2.bb b/recipes-graphics/gmmlib/gmmlib_22.3.15.bb
index 0fd9c326..875fbaf5 100644
--- a/recipes-graphics/gmmlib/gmmlib_22.1.2.bb
+++ b/recipes-graphics/gmmlib/gmmlib_22.3.15.bb
@@ -8,9 +8,11 @@ LIC_FILES_CHKSUM = "file://LICENSE.md;md5=465fe90caea3edd6a2cecb3f0c28a654"
8 8
9SRC_URI = " \ 9SRC_URI = " \
10 git://github.com/intel/gmmlib.git;protocol=https;branch=master \ 10 git://github.com/intel/gmmlib.git;protocol=https;branch=master \
11 file://0001-Introduce-ARL-H-support-172.patch \
12 file://0001-Add-new-DG2-device-IDs-194.patch \
11 " 13 "
12 14
13SRCREV = "29152fc6d39f87983b176664f225d42af039f716" 15SRCREV = "5fb4180e22695ad4e3c155cf680119913c9f44bc"
14 16
15S = "${WORKDIR}/git" 17S = "${WORKDIR}/git"
16 18
diff --git a/recipes-graphics/hdcp/hdcp/0001-main-fix-hdcpd-service-failure.patch b/recipes-graphics/hdcp/hdcp/0001-main-fix-hdcpd-service-failure.patch
index f07d466f..6d32da43 100644
--- a/recipes-graphics/hdcp/hdcp/0001-main-fix-hdcpd-service-failure.patch
+++ b/recipes-graphics/hdcp/hdcp/0001-main-fix-hdcpd-service-failure.patch
@@ -9,7 +9,7 @@ exits, which causing hdcpd service failure.
9Added wait function to block parent process 9Added wait function to block parent process
10until child process exits. 10until child process exits.
11 11
12Upstream-Status: Submitted[https://github.com/intel/hdcp/pull/17] 12Upstream-Status: Submitted [https://github.com/intel/hdcp/pull/17]
13 13
14Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> 14Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
15--- 15---
diff --git a/recipes-graphics/libva/libva-intel-utils_2.14.0.bb b/recipes-graphics/libva/libva-intel-utils_2.20.1.bb
index ae9eba3b..9c26f009 100644
--- a/recipes-graphics/libva/libva-intel-utils_2.14.0.bb
+++ b/recipes-graphics/libva/libva-intel-utils_2.20.1.bb
@@ -14,8 +14,8 @@ SECTION = "x11"
14LICENSE = "MIT" 14LICENSE = "MIT"
15LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e" 15LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e"
16 16
17SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.14-branch;protocol=https" 17SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.20-branch;protocol=https"
18SRCREV = "f478fe4f9b66a19ac7ebc952223025f8771b2aba" 18SRCREV = "2ad888bb463dc9bfb3deb512ec9faf78f1d3bfa8"
19S = "${WORKDIR}/git" 19S = "${WORKDIR}/git"
20 20
21UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" 21UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))"
diff --git a/recipes-graphics/libva/libva-intel_2.14.0.bb b/recipes-graphics/libva/libva-intel_2.20.0.bb
index a08ccb27..c81ed65c 100644
--- a/recipes-graphics/libva/libva-intel_2.14.0.bb
+++ b/recipes-graphics/libva/libva-intel_2.20.0.bb
@@ -17,8 +17,9 @@ SECTION = "x11"
17LICENSE = "MIT" 17LICENSE = "MIT"
18LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f" 18LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"
19 19
20SRC_URI = "https://github.com/intel/libva/releases/download/${PV}/libva-${PV}.tar.bz2" 20SRC_URI = "https://github.com/intel/libva/releases/download/${PV}/libva-${PV}.tar.bz2 \
21SRC_URI[sha256sum] = "511e9a74d1ccfb548bc192290603082c11074ac59b17aadfd5d56a3f93e58454" 21 "
22SRC_URI[sha256sum] = "f72bdb4f48dfe71ad01f1cbefe069672a2c949a6abd51cf3c4d4784210badc49"
22 23
23S = "${WORKDIR}/libva-${PV}" 24S = "${WORKDIR}/libva-${PV}"
24 25
diff --git a/recipes-graphics/metrics-discovery/metrics-discovery/0001-md_internal.h-Replace-string.h-with-string-C-header-.patch b/recipes-graphics/metrics-discovery/metrics-discovery/0001-md_internal.h-Replace-string.h-with-string-C-header-.patch
deleted file mode 100644
index d97c6543..00000000
--- a/recipes-graphics/metrics-discovery/metrics-discovery/0001-md_internal.h-Replace-string.h-with-string-C-header-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1From 8c11096a0e5cf980309692ae3e272108da5f2b4e Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 9 Oct 2019 11:36:56 -0700
4Subject: [PATCH] md_internal.h: Replace string.h with <string> C++ header API
5
6This helps in compiling with libc++/Clang
7Fixes
8usr/include/c++/v1/type_traits:1561:38: error: implicit instantiation of undefined template 'std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >'
9: public integral_constant<bool, __is_empty(_Tp)> {};
10^
11
12Upstream-Status: Submitted [https://github.com/intel/metrics-discovery/pull/14]
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 instrumentation/metrics_discovery/common/md_internal.cpp | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/instrumentation/metrics_discovery/common/md_internal.cpp b/instrumentation/metrics_discovery/common/md_internal.cpp
19index f9571ac..0767e81 100644
20--- a/instrumentation/metrics_discovery/common/md_internal.cpp
21+++ b/instrumentation/metrics_discovery/common/md_internal.cpp
22@@ -27,8 +27,8 @@
23 \*****************************************************************************/
24 #include "md_internal.h"
25
26-#include <string.h>
27 #include <stdlib.h>
28+#include <string>
29 #include <new>
30 #include <unordered_map>
31
32--
332.23.0
34
diff --git a/recipes-graphics/metrics-discovery/metrics-discovery_1.5.108.bb b/recipes-graphics/metrics-discovery/metrics-discovery_1.12.170.bb
index dd6dc1d5..3ed1c9bd 100644
--- a/recipes-graphics/metrics-discovery/metrics-discovery_1.5.108.bb
+++ b/recipes-graphics/metrics-discovery/metrics-discovery_1.12.170.bb
@@ -8,9 +8,8 @@ SECTION = "lib"
8inherit pkgconfig cmake 8inherit pkgconfig cmake
9 9
10S = "${WORKDIR}/git" 10S = "${WORKDIR}/git"
11SRCREV = "a495db4682b7318bc82b1cccfb17fafdf2e3a2ff" 11SRCREV = "75b292eb1309e4ea10dce403065ee8ca5bf29ecc"
12SRC_URI = "git://github.com/intel/metrics-discovery.git;branch=master;protocol=https \ 12SRC_URI = "git://github.com/intel/metrics-discovery.git;branch=master;protocol=https \
13 file://0001-md_internal.h-Replace-string.h-with-string-C-header-.patch \
14 " 13 "
15 14
16EXTRA_OECMAKE += "-DMD_PLATFORM=linux" 15EXTRA_OECMAKE += "-DMD_PLATFORM=linux"
diff --git a/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb b/recipes-graphics/xorg-driver/xf86-video-ast_1.1.6.bb
index 090efd62..d7e4eab4 100644
--- a/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb
+++ b/recipes-graphics/xorg-driver/xf86-video-ast_1.1.6.bb
@@ -7,6 +7,6 @@ DESCRIPTION = "ast is an Xorg driver for ASpeed Technologies video cards"
7LIC_FILES_CHKSUM = "file://COPYING;md5=0b8c242f0218eea5caa949b7910a774b" 7LIC_FILES_CHKSUM = "file://COPYING;md5=0b8c242f0218eea5caa949b7910a774b"
8 8
9DEPENDS += "libpciaccess" 9DEPENDS += "libpciaccess"
10XORG_DRIVER_COMPRESSOR = ".tar.gz"
10 11
11SRC_URI[md5sum] = "4f85febe48d51e53624550a96fc9e9ee" 12SRC_URI[sha256sum] = "eeff52178ce2916a0e07b531bb23c8b105826b6e6e6c5f7c90e33f757827a7c7"
12SRC_URI[sha256sum] = "1edbbc55d47d3fd71dec99b15c2483e22738c642623a0fb86ef4a81a9067a2de"
diff --git a/recipes-kernel/intel-ethernet/ixgbe_5.15.2.bb b/recipes-kernel/intel-ethernet/ixgbe_5.19.6.bb
index b1280213..7ef38650 100644
--- a/recipes-kernel/intel-ethernet/ixgbe_5.15.2.bb
+++ b/recipes-kernel/intel-ethernet/ixgbe_5.19.6.bb
@@ -10,7 +10,7 @@ LIC_FILES_CHKSUM = "file://${WORKDIR}/${BP}/COPYING;md5=a216b4192dc6b777b6f0db56
10SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/${PV}/${BP}.tar.gz \ 10SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/${PV}/${BP}.tar.gz \
11 " 11 "
12 12
13SRC_URI[sha256sum] = "ca31fa581d6ddabee706b01fc59a5bbb841291fc0a392183adc9a80796eb9d04" 13SRC_URI[sha256sum] = "a844f1fea8064e30b276792455c3b286c1d7af26731e8f865d4a4e9ed1dcf4ab"
14 14
15UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/" 15UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/"
16UPSTREAM_CHECK_REGEX = "ixgbe%20stable/(?P<pver>\d+(\.\d+)+)/" 16UPSTREAM_CHECK_REGEX = "ixgbe%20stable/(?P<pver>\d+(\.\d+)+)/"
@@ -19,7 +19,7 @@ CVE_PRODUCT = "linux:linux_kernel_ixgbe"
19 19
20S = "${WORKDIR}/${BP}/src" 20S = "${WORKDIR}/${BP}/src"
21 21
22EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"' 22EXTRA_OEMAKE=' KSRC="${STAGING_KERNEL_DIR}" KOBJ="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"'
23 23
24KERNEL_MODULE_AUTOLOAD:append:intel-core2-32 = " ixgbe" 24KERNEL_MODULE_AUTOLOAD:append:intel-core2-32 = " ixgbe"
25KERNEL_MODULE_AUTOLOAD:append:intel-corei7-64 = " ixgbe" 25KERNEL_MODULE_AUTOLOAD:append:intel-corei7-64 = " ixgbe"
@@ -40,5 +40,4 @@ FILES:${PN}-script += "${sysconfdir}/network/set_irq_affinity"
40 40
41EXCLUDE_FROM_WORLD = "1" 41EXCLUDE_FROM_WORLD = "1"
42 42
43# This was fixed in kernel v4.4 43CVE_STATUS[CVE-2015-1142857] = "fixed-version: Fixed from version 4.4-rc1"
44CVE_CHECK_IGNORE += "CVE-2015-1142857"
diff --git a/recipes-kernel/intel-ethernet/ixgbevf_4.15.1.bb b/recipes-kernel/intel-ethernet/ixgbevf_4.18.7.bb
index 469195ab..b21796c6 100644
--- a/recipes-kernel/intel-ethernet/ixgbevf_4.15.1.bb
+++ b/recipes-kernel/intel-ethernet/ixgbevf_4.18.7.bb
@@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = "file://${WORKDIR}/${BP}/COPYING;md5=a216b4192dc6b777b6f0db56
13SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/${PV}/${BP}.tar.gz \ 13SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/${PV}/${BP}.tar.gz \
14 " 14 "
15 15
16SRC_URI[sha256sum] = "851f595fe662ac08abe125843aadb1e7c45b3fcd4d6223583a033f84b821832e" 16SRC_URI[sha256sum] = "90f6cd614008839b6fc748ae0f4ad3503435f8b788318d4f40cfc83c7029025e"
17 17
18UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/" 18UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/"
19UPSTREAM_CHECK_REGEX = "ixgbevf%20stable/(?P<pver>\d+(\.\d+)+)/" 19UPSTREAM_CHECK_REGEX = "ixgbevf%20stable/(?P<pver>\d+(\.\d+)+)/"
@@ -22,7 +22,7 @@ CVE_PRODUCT = "linux:linux_kernel_ixgbe"
22 22
23S = "${WORKDIR}/${BP}/src" 23S = "${WORKDIR}/${BP}/src"
24 24
25EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"' 25EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_DIR}" KOBJ="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"'
26 26
27KERNEL_MODULE_AUTOLOAD:append:intel-core2-32 = " ixgbevf" 27KERNEL_MODULE_AUTOLOAD:append:intel-core2-32 = " ixgbevf"
28KERNEL_MODULE_AUTOLOAD:append:intel-corei7-64 = " ixgbevf" 28KERNEL_MODULE_AUTOLOAD:append:intel-corei7-64 = " ixgbevf"
@@ -41,7 +41,6 @@ PACKAGES += "${PN}-script"
41 41
42FILES:${PN}-script += "${sysconfdir}/network/set_irq_affinity" 42FILES:${PN}-script += "${sysconfdir}/network/set_irq_affinity"
43 43
44# This was fixed in kernel v4.4 44CVE_STATUS[CVE-2015-1142857] = "fixed-version: Fixed from version 4.4-rc1"
45CVE_CHECK_IGNORE += "CVE-2015-1142857"
46 45
47EXCLUDE_FROM_WORLD = "1" 46EXCLUDE_FROM_WORLD = "1"
diff --git a/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb b/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb
index 7f2a9f5c..ea36cfc3 100644
--- a/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb
+++ b/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb
@@ -5,9 +5,9 @@ LICENSE = "GPL-2.0-only"
5 5
6REQUIRED_DISTRO_FEATURES = "wifi" 6REQUIRED_DISTRO_FEATURES = "wifi"
7 7
8LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" 8LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
9 9
10inherit module 10inherit module features_check
11 11
12# For some iwfwifi LinuxCore supported wireless chips, the best/latest 12# For some iwfwifi LinuxCore supported wireless chips, the best/latest
13# firmware blobs are found in the iwlwifi's linux-firmware.git fork. 13# firmware blobs are found in the iwlwifi's linux-firmware.git fork.
@@ -17,8 +17,8 @@ inherit module
17# When updating this recipe, ensure that the proper firmware is included from 17# When updating this recipe, ensure that the proper firmware is included from
18# either the linux-firmware or iwlwifi-firmware repos. 18# either the linux-firmware or iwlwifi-firmware repos.
19 19
20PV = "45" 20PV = "79"
21SRCREV = "a75c1de6b3fa87885556c67619429cfa87cc048f" 21SRCREV = "574631d89d736fd2c76b0e2ea489270c50903e52"
22 22
23SRC_URI = " \ 23SRC_URI = " \
24 git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi;branch=release/core${PV} \ 24 git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi;branch=release/core${PV} \
@@ -44,6 +44,8 @@ do_install:append() {
44 44
45RDEPENDS:${PN} = "linux-firmware-iwlwifi" 45RDEPENDS:${PN} = "linux-firmware-iwlwifi"
46 46
47FILES:${PN} += "${sysconfdir}/modprobe.d/iwlwifi.conf"
48
47KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " iwlwifi" 49KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " iwlwifi"
48KERNEL_MODULE_AUTOLOAD:append:corei7-64-intel-common = " iwlwifi" 50KERNEL_MODULE_AUTOLOAD:append:corei7-64-intel-common = " iwlwifi"
49 51
diff --git a/recipes-kernel/linux/linux-intel-dev.bb b/recipes-kernel/linux/linux-intel-dev.bb
deleted file mode 100644
index b8256fcc..00000000
--- a/recipes-kernel/linux/linux-intel-dev.bb
+++ /dev/null
@@ -1,32 +0,0 @@
1require recipes-kernel/linux/linux-yocto.inc
2require recipes-kernel/linux/meta-intel-compat-kernel.inc
3
4FILESEXTRAPATHS:prepend := "${THISDIR}/linux-intel:"
5
6SRC_URI = " \
7 git://github.com/intel/mainline-tracking.git;protocol=https;name=machine;nobranch=1; \
8 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=${KMETA} \
9 file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \
10 "
11
12KMETA = "kernel-meta"
13KCONF_BSP_AUDIT_LEVEL = "2"
14
15KMETA_BRANCH = "master"
16
17LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
18
19DEPENDS += "elfutils-native openssl-native util-linux-native"
20
21LINUX_VERSION ?= "5.12.0"
22SRCREV_machine ?= "9f4ad9e425a1d3b6a34617b8ea226d56a119a717"
23SRCREV_meta ?= "99570241ac88d6c7e32b6fccd83afce53816b275"
24
25LINUX_VERSION_EXTENSION ?= "-mainline-tracking-${LINUX_KERNEL_TYPE}"
26PV = "${LINUX_VERSION}+git${SRCPV}"
27
28COMPATIBLE_MACHINE ?= "(intel-corei7-64)"
29
30# Functionality flags
31KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
32KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc"
diff --git a/recipes-kernel/linux/linux-intel-rt_5.15.bb b/recipes-kernel/linux/linux-intel-rt_6.6.bb
index 73903a5c..342679eb 100644
--- a/recipes-kernel/linux/linux-intel-rt_5.15.bb
+++ b/recipes-kernel/linux/linux-intel-rt_6.6.bb
@@ -1,5 +1,8 @@
1require linux-intel.inc 1require linux-intel.inc
2 2
3SRC_URI:prepend = "git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \
4 "
5
3# Skip processing of this recipe if it is not explicitly specified as the 6# Skip processing of this recipe if it is not explicitly specified as the
4# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying 7# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
5# to build multiple virtual/kernel providers, e.g. as dependency of 8# to build multiple virtual/kernel providers, e.g. as dependency of
@@ -9,17 +12,22 @@ python () {
9 raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it") 12 raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
10} 13}
11 14
12LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" 15KBRANCH = "6.6/preempt-rt"
13SRC_URI:append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \ 16KMETA_BRANCH = "yocto-6.6"
14 "
15 17
16KBRANCH = "5.15/preempt-rt" 18LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
17KMETA_BRANCH = "yocto-5.15"
18 19
19DEPENDS += "elfutils-native openssl-native util-linux-native" 20DEPENDS += "elfutils-native openssl-native util-linux-native"
20 21
21LINUX_VERSION ?= "5.15.43" 22LINUX_VERSION_EXTENSION ??= "-intel-pk-${LINUX_KERNEL_TYPE}"
22SRCREV_machine ?= "9800b6da3fbf306dd172f2848423e5cc4060b604" 23
23SRCREV_meta ?= "ea948a0983d7b7820814e5bce4eda3079201bd95" 24LINUX_VERSION ?= "6.6.25"
25SRCREV_machine ?= "f8939454cf9bb7277239bb44e90c99474c599f37"
26SRCREV_meta ?= "c3d1322fb6ff68cdcf4d7a3c1140d81bfdc1320a"
24 27
25LINUX_KERNEL_TYPE = "preempt-rt" 28LINUX_KERNEL_TYPE = "preempt-rt"
29
30# Functionality flags
31KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc"
32
33UPSTREAM_CHECK_GITTAGREGEX = "^lts-(?P<pver>v6.6.(\d+)-rt(\d)-preempt-rt-(\d+)T(\d+)Z)$"
diff --git a/recipes-kernel/linux/linux-intel.inc b/recipes-kernel/linux/linux-intel.inc
index 97daba5e..f78f5205 100644
--- a/recipes-kernel/linux/linux-intel.inc
+++ b/recipes-kernel/linux/linux-intel.inc
@@ -6,16 +6,18 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/linux-intel:"
6KERNEL_CONFIG_URI ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=${KMETA}" 6KERNEL_CONFIG_URI ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=${KMETA}"
7 7
8SRC_URI = " \ 8SRC_URI = " \
9 git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \
10 ${KERNEL_CONFIG_URI} \ 9 ${KERNEL_CONFIG_URI} \
10 file://0001-vt-conmakehash-improve-reproducibility.patch \
11 file://0001-lib-build_OID_registry-fix-reproducibility-issues.patch \
12 file://fix-perf-reproducibility.patch \
13 file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \
14 file://0002-mconf-fix-output-of-cflags-and-libraries.patch \
11 " 15 "
12 16
13LINUX_VERSION_EXTENSION ??= "-intel-pk-${LINUX_KERNEL_TYPE}"
14
15PV = "${LINUX_VERSION}+git${SRCPV}" 17PV = "${LINUX_VERSION}+git${SRCPV}"
16 18
17KMETA = "kernel-meta" 19KMETA = "kernel-meta"
18KCONF_BSP_AUDIT_LEVEL = "2" 20KCONF_BSP_AUDIT_LEVEL = "0"
19 21
20COMPATIBLE_MACHINE ?= "(intel-corei7-64)" 22COMPATIBLE_MACHINE ?= "(intel-corei7-64)"
21 23
diff --git a/recipes-kernel/linux/linux-intel/0001-lib-build_OID_registry-fix-reproducibility-issues.patch b/recipes-kernel/linux/linux-intel/0001-lib-build_OID_registry-fix-reproducibility-issues.patch
new file mode 100644
index 00000000..d41c3f0b
--- /dev/null
+++ b/recipes-kernel/linux/linux-intel/0001-lib-build_OID_registry-fix-reproducibility-issues.patch
@@ -0,0 +1,48 @@
1From 2fca0fd719812ea2ff67630b01355aa80481623e Mon Sep 17 00:00:00 2001
2From: Bruce Ashfield <bruce.ashfield@gmail.com>
3Date: Sun, 10 Jul 2022 22:56:53 -0400
4Subject: [PATCH] lib/build_OID_registry: fix reproducibility issues
5
6The script build_OID_registry captures the full path of itself
7in the generated data. This causes reproduciblity issues as the
8path is captured and packaged.
9
10We use the basename of the script instead, and that allows us
11to be reprodicible, with slightly less information captured in
12the output data (but the generating script can still easily
13be found).
14
15Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
16Upstream-Status: Inappropriate
17
18Taken from linux-yocto, v5.15/standard/base.
19
20Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
21---
22 lib/build_OID_registry | 3 ++-
23 1 file changed, 2 insertions(+), 1 deletion(-)
24
25diff --git a/lib/build_OID_registry b/lib/build_OID_registry
26index d7fc32ea8ac2..f6de0a7f7457 100755
27--- a/lib/build_OID_registry
28+++ b/lib/build_OID_registry
29@@ -8,6 +8,7 @@
30 #
31
32 use strict;
33+use File::Basename;
34
35 my @names = ();
36 my @oids = ();
37@@ -35,7 +36,7 @@ close IN_FILE || die;
38 #
39 open C_FILE, ">$ARGV[1]" or die;
40 print C_FILE "/*\n";
41-print C_FILE " * Automatically generated by ", $0, ". Do not edit\n";
42+print C_FILE " * Automatically generated by ", basename $0, ". Do not edit\n";
43 print C_FILE " */\n";
44
45 #
46--
472.36.1
48
diff --git a/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch b/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch
index 3dc71ff2..a601e783 100644
--- a/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch
+++ b/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch
@@ -1,7 +1,8 @@
1From bebd63730a433ba62549a80114a9851328aa8897 Mon Sep 17 00:00:00 2001 1From 1811da09f42ca5e82282970e8ad014707bc94c82 Mon Sep 17 00:00:00 2001
2From: Bruce Ashfield <bruce.ashfield@windriver.com> 2From: Bruce Ashfield <bruce.ashfield@windriver.com>
3Date: Mon, 2 Jul 2018 23:10:28 -0400 3Date: Mon, 2 Jul 2018 23:10:28 -0400
4Subject: [PATCH] menuconfig,mconf-cfg: Allow specification of ncurses location 4Subject: [PATCH 1/2] menuconfig,mconf-cfg: Allow specification of ncurses
5 location
5 6
6In some cross build environments such as the Yocto Project build 7In some cross build environments such as the Yocto Project build
7environment it provides an ncurses library that is compiled 8environment it provides an ncurses library that is compiled
@@ -16,33 +17,36 @@ check-lxdialog.sh for environments such as the Yocto Project. Adding
16a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing 17a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing
17compiling and linking against the right headers and libraries. 18compiling and linking against the right headers and libraries.
18 19
20Upstream-Status: Submitted
21
19Signed-off-by: Jason Wessel <jason.wessel@windriver.com> 22Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
20cc: Michal Marek <mmarek@suse.cz> 23cc: Michal Marek <mmarek@suse.cz>
21cc: linux-kbuild@vger.kernel.org 24cc: linux-kbuild@vger.kernel.org
22Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> 25Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
26Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
23--- 27---
24 scripts/kconfig/mconf-cfg.sh | 8 ++++++++ 28 scripts/kconfig/mconf-cfg.sh | 8 ++++++++
25 1 file changed, 8 insertions(+) 29 1 file changed, 8 insertions(+)
26 30
27diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh 31diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
28index c812872d7f9d..42d20819025c 100755 32index 1e61f50a5905..38cf8304bb31 100755
29--- a/scripts/kconfig/mconf-cfg.sh 33--- a/scripts/kconfig/mconf-cfg.sh
30+++ b/scripts/kconfig/mconf-cfg.sh 34+++ b/scripts/kconfig/mconf-cfg.sh
31@@ -4,6 +4,14 @@ 35@@ -7,6 +7,14 @@ libs=$2
32 PKG="ncursesw" 36 PKG="ncursesw"
33 PKG2="ncurses" 37 PKG2="ncurses"
34 38
35+if [ "$CROSS_CURSES_LIB" != "" ]; then 39+if [ "$CROSS_CURSES_LIB" != "" ]; then
36+ echo libs=\'$CROSS_CURSES_LIB\' 40+ echo libs=\'$CROSS_CURSES_LIB\'
37+ if [ x"$CROSS_CURSES_INC" != x ]; then 41+ if [ x"$CROSS_CURSES_INC" != x ]; then
38+ echo cflags=\'$CROSS_CURSES_INC\' 42+ echo cflags=\'$CROSS_CURSES_INC\'
39+ fi 43+ fi
40+ exit 0 44+ exit 0
41+fi 45+fi
42+ 46+
43 if [ -n "$(command -v pkg-config)" ]; then 47 if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then
44 if pkg-config --exists $PKG; then 48 if ${HOSTPKG_CONFIG} --exists $PKG; then
45 echo cflags=\"$(pkg-config --cflags $PKG)\" 49 ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
46-- 50--
472.17.1 512.34.1
48 52
diff --git a/recipes-kernel/linux/linux-intel/0001-vt-conmakehash-improve-reproducibility.patch b/recipes-kernel/linux/linux-intel/0001-vt-conmakehash-improve-reproducibility.patch
new file mode 100644
index 00000000..33280063
--- /dev/null
+++ b/recipes-kernel/linux/linux-intel/0001-vt-conmakehash-improve-reproducibility.patch
@@ -0,0 +1,58 @@
1From 0f586f4ee8adacac79b64d1f3d47799a5eb7fbea Mon Sep 17 00:00:00 2001
2From: Bruce Ashfield <bruce.ashfield@gmail.com>
3Date: Sun, 10 Jul 2022 21:37:07 -0400
4Subject: [PATCH] vt/conmakehash: improve reproducibility
5
6The file generated by conmakehash capture the application
7path used to generate the file. While that can be informative,
8it varies based on where the kernel was built, as the full
9path is captured.
10
11We tweak the application to use a second input as the "capture
12name", and then modify the Makefile to pass the basename of
13the source, making it reproducible.
14
15This could be improved by using some sort of path mapping,
16or the application manipualing argv[1] itself, but for now
17this solves the reprodicibility issue.
18
19Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
20
21Upstream-Status: Inappropriate
22
23Taken from linux-yocto, v5.15/standard/base
24Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
25---
26 drivers/tty/vt/Makefile | 2 +-
27 drivers/tty/vt/conmakehash.c | 2 +-
28 2 files changed, 2 insertions(+), 2 deletions(-)
29
30diff --git a/drivers/tty/vt/Makefile b/drivers/tty/vt/Makefile
31index fe30ce512819..cb51c21b58f9 100644
32--- a/drivers/tty/vt/Makefile
33+++ b/drivers/tty/vt/Makefile
34@@ -15,7 +15,7 @@ clean-files := consolemap_deftbl.c defkeymap.c
35 hostprogs += conmakehash
36
37 quiet_cmd_conmk = CONMK $@
38- cmd_conmk = $(obj)/conmakehash $< > $@
39+ cmd_conmk = $(obj)/conmakehash $< $(shell basename $<) > $@
40
41 $(obj)/consolemap_deftbl.c: $(src)/$(FONTMAPFILE) $(obj)/conmakehash
42 $(call cmd,conmk)
43diff --git a/drivers/tty/vt/conmakehash.c b/drivers/tty/vt/conmakehash.c
44index cddd789fe46e..d62510b280e9 100644
45--- a/drivers/tty/vt/conmakehash.c
46+++ b/drivers/tty/vt/conmakehash.c
47@@ -253,7 +253,7 @@ int main(int argc, char *argv[])
48 #include <linux/types.h>\n\
49 \n\
50 u8 dfont_unicount[%d] = \n\
51-{\n\t", argv[1], fontlen);
52+{\n\t", argv[2], fontlen);
53
54 for ( i = 0 ; i < fontlen ; i++ )
55 {
56--
572.36.1
58
diff --git a/recipes-kernel/linux/linux-intel/0002-mconf-fix-output-of-cflags-and-libraries.patch b/recipes-kernel/linux/linux-intel/0002-mconf-fix-output-of-cflags-and-libraries.patch
new file mode 100644
index 00000000..a96b68d9
--- /dev/null
+++ b/recipes-kernel/linux/linux-intel/0002-mconf-fix-output-of-cflags-and-libraries.patch
@@ -0,0 +1,40 @@
1From 1b53d82a8152843afcddd7f16b0c43b6b4f22895 Mon Sep 17 00:00:00 2001
2From: Bruce Ashfield <bruce.ashfield@gmail.com>
3Date: Mon, 17 Jul 2023 17:17:55 -0400
4Subject: [PATCH 2/2] mconf: fix output of cflags and libraries
5
6commit 3122c84409d578a5df8bcb1 [kconfig: refactor Makefile to reduce
7process forks] changes the way that flags are detected. They are
8no longer just echo'd and captured, they are written to a file and
9later read.
10
11We adjust our CROSS ncurses patch accordingly.
12
13We'll eventually be able to drop this patch, but not quite yet.
14
15Upstream-Status: Inappropriate [OE-Specific]
16Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
17Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
18---
19 scripts/kconfig/mconf-cfg.sh | 4 ++--
20 1 file changed, 2 insertions(+), 2 deletions(-)
21
22diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
23index 38cf8304bb31..a5ae56e08b07 100755
24--- a/scripts/kconfig/mconf-cfg.sh
25+++ b/scripts/kconfig/mconf-cfg.sh
26@@ -8,9 +8,9 @@ PKG="ncursesw"
27 PKG2="ncurses"
28
29 if [ "$CROSS_CURSES_LIB" != "" ]; then
30- echo libs=\'$CROSS_CURSES_LIB\'
31+ echo $CROSS_CURSES_LIB > ${libs}
32 if [ x"$CROSS_CURSES_INC" != x ]; then
33- echo cflags=\'$CROSS_CURSES_INC\'
34+ echo $CROSS_CURSES_INC > ${cflags}
35 fi
36 exit 0
37 fi
38--
392.34.1
40
diff --git a/recipes-kernel/linux/linux-intel/fix-perf-reproducibility.patch b/recipes-kernel/linux/linux-intel/fix-perf-reproducibility.patch
new file mode 100644
index 00000000..1a98b1db
--- /dev/null
+++ b/recipes-kernel/linux/linux-intel/fix-perf-reproducibility.patch
@@ -0,0 +1,39 @@
1From b8cd0e429bf75b673c438a8277d4bc74327df992 Mon Sep 17 00:00:00 2001
2From: Tom Zanussi <tom.zanussi@intel.com>
3Date: Tue, 3 Jul 2012 13:07:23 -0500
4Subject: perf: change --root to --prefix for python install
5
6Otherwise we get the sysroot path appended to the build path, not what
7we want.
8
9Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
10
11Upstream-Status: Inappropriate
12
13Taken from linux-yocto, v5.15/standard/base
14https://git.yoctoproject.org/linux-yocto/commit?id=b8cd0e429bf75b673c438a8277d4bc74327df992&h=v5.15%2Fstandard%2Fbase
15
16Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
17---
18 tools/perf/Makefile.perf | 2 +-
19 1 file changed, 1 insertion(+), 1 deletion(-)
20
21(limited to 'tools/perf/Makefile.perf')
22
23diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
24index 8f738e11356d..ee945d8e3996 100644
25--- a/tools/perf/Makefile.perf
26+++ b/tools/perf/Makefile.perf
27@@ -1022,7 +1022,7 @@ install-bin: install-tools install-tests install-traceevent-plugins
28 install: install-bin try-install-man
29
30 install-python_ext:
31- $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'
32+ $(PYTHON_WORD) util/setup.py --quiet install --prefix='$(DESTDIR_SQ)/usr'
33
34 # 'make install-doc' should call 'make -C Documentation install'
35 $(INSTALL_DOC_TARGETS):
36--
37cgit
38
39
diff --git a/recipes-kernel/linux/linux-intel_5.15.bb b/recipes-kernel/linux/linux-intel_5.15.bb
deleted file mode 100644
index 6a63e9f9..00000000
--- a/recipes-kernel/linux/linux-intel_5.15.bb
+++ /dev/null
@@ -1,18 +0,0 @@
1require linux-intel.inc
2
3KBRANCH = "5.15/linux"
4KMETA_BRANCH = "yocto-5.15"
5
6LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
7
8SRC_URI:append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \
9 "
10
11DEPENDS += "elfutils-native openssl-native util-linux-native"
12
13LINUX_VERSION ?= "5.15.43"
14SRCREV_machine ?= "1ec5959a8f6dbfbb47057317bc935924cd8d6977"
15SRCREV_meta ?= "ea948a0983d7b7820814e5bce4eda3079201bd95"
16
17# Functionality flags
18KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc"
diff --git a/recipes-kernel/linux/linux-intel_6.6.bb b/recipes-kernel/linux/linux-intel_6.6.bb
new file mode 100644
index 00000000..3b917bfa
--- /dev/null
+++ b/recipes-kernel/linux/linux-intel_6.6.bb
@@ -0,0 +1,21 @@
1require linux-intel.inc
2
3SRC_URI:prepend = "git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \
4 "
5KBRANCH = "6.6/linux"
6KMETA_BRANCH = "yocto-6.6"
7
8LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
9
10DEPENDS += "elfutils-native openssl-native util-linux-native"
11
12LINUX_VERSION_EXTENSION ??= "-intel-pk-${LINUX_KERNEL_TYPE}"
13
14LINUX_VERSION ?= "6.6.25"
15SRCREV_machine ?= "lts-v6.6.25-linux-240415T215440Z"
16SRCREV_meta ?= "c3d1322fb6ff68cdcf4d7a3c1140d81bfdc1320a"
17
18# Functionality flags
19KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc"
20
21UPSTREAM_CHECK_GITTAGREGEX = "^lts-(?P<pver>v6.6.(\d+)-linux-(\d+)T(\d+)Z)$"
diff --git a/recipes-kernel/linux/linux-intel_6.8.bb b/recipes-kernel/linux/linux-intel_6.8.bb
new file mode 100644
index 00000000..036879db
--- /dev/null
+++ b/recipes-kernel/linux/linux-intel_6.8.bb
@@ -0,0 +1,20 @@
1require linux-intel.inc
2
3SRC_URI:prepend = "git://github.com/intel/mainline-tracking.git;protocol=https;name=machine;nobranch=1; \
4 "
5KMETA_BRANCH = "master"
6
7LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
8
9DEPENDS += "elfutils-native openssl-native util-linux-native"
10
11LINUX_VERSION_EXTENSION ??= "-mainline-tracking-${LINUX_KERNEL_TYPE}"
12
13LINUX_VERSION ?= "6.8"
14SRCREV_machine ?= "efbae83db36abbbbdb946d4f7bbdfda174107cd2"
15SRCREV_meta ?= "27907f391a4fc508da21358b13419c6e86926c34"
16
17# Functionality flags
18KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc"
19
20UPSTREAM_CHECK_GITTAGREGEX = "^mainline-tracking-v6.7-rc3-linux-(?P<pver>(\d+)T(\d+)Z)$"
diff --git a/recipes-kernel/linux/linux-yocto-rt_5.%.bbappend b/recipes-kernel/linux/linux-yocto-rt_%.bbappend
index daa7dd6b..daa7dd6b 100644
--- a/recipes-kernel/linux/linux-yocto-rt_5.%.bbappend
+++ b/recipes-kernel/linux/linux-yocto-rt_%.bbappend
diff --git a/recipes-kernel/linux/linux-yocto_%.bbappend b/recipes-kernel/linux/linux-yocto_%.bbappend
index 7657b02f..9f3d43e3 100644
--- a/recipes-kernel/linux/linux-yocto_%.bbappend
+++ b/recipes-kernel/linux/linux-yocto_%.bbappend
@@ -1,3 +1,5 @@
1require meta-intel-compat-kernel.inc
2
1# The kernel build is 64-bit regardless, so include both common overrides. 3# The kernel build is 64-bit regardless, so include both common overrides.
2# Without this, the kernel will be missing vars that make it buildable for the 4# Without this, the kernel will be missing vars that make it buildable for the
3# intel-corei7-64 machine. 5# intel-corei7-64 machine.
diff --git a/recipes-kernel/linux/linux-yocto_5.%.bbappend b/recipes-kernel/linux/linux-yocto_5.%.bbappend
deleted file mode 100644
index daa7dd6b..00000000
--- a/recipes-kernel/linux/linux-yocto_5.%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
1require meta-intel-compat-kernel.inc
diff --git a/recipes-kernel/linux/meta-intel-compat-kernel.inc b/recipes-kernel/linux/meta-intel-compat-kernel.inc
index 41582aa5..0c861e13 100644
--- a/recipes-kernel/linux/meta-intel-compat-kernel.inc
+++ b/recipes-kernel/linux/meta-intel-compat-kernel.inc
@@ -8,7 +8,7 @@ KERNEL_FEATURES:intel-x86-common = "${KERNEL_FEATURES_INTEL_COMMON}"
8 8
9KMACHINE:corei7-64-intel-common = "intel-corei7-64" 9KMACHINE:corei7-64-intel-common = "intel-corei7-64"
10KMACHINE:core2-32-intel-common = "intel-core2-32" 10KMACHINE:core2-32-intel-common = "intel-core2-32"
11KMACHINE:skylake-64-intel-common = "intel-corei7-64" 11KMACHINE:x86-64-v3-intel-common = "intel-corei7-64"
12 12
13INTEL_COMMON_AUTOLOAD ?= " uio iwlwifi i915" 13INTEL_COMMON_AUTOLOAD ?= " uio iwlwifi i915"
14KERNEL_MODULE_AUTOLOAD:intel-x86-common = " ${INTEL_COMMON_AUTOLOAD}" 14KERNEL_MODULE_AUTOLOAD:intel-x86-common = " ${INTEL_COMMON_AUTOLOAD}"
diff --git a/recipes-multimedia/itt/itt_3.23.0.bb b/recipes-multimedia/itt/itt_3.24.6.bb
index 83ff3142..1c4759f9 100644
--- a/recipes-multimedia/itt/itt_3.23.0.bb
+++ b/recipes-multimedia/itt/itt_3.24.6.bb
@@ -9,7 +9,7 @@ LIC_FILES_CHKSUM = "file://LICENSES/BSD-3-Clause.txt;md5=c551872bcf41ce707df54c7
9 " 9 "
10 10
11SRC_URI = "git://github.com/intel/ittapi.git;protocol=https;branch=master" 11SRC_URI = "git://github.com/intel/ittapi.git;protocol=https;branch=master"
12SRCREV = "96a01335dbc560b9224f52f0cc25c28ca0f1b564" 12SRCREV = "ec077431fc725dba590b09b2cec5137878b14783"
13S = "${WORKDIR}/git" 13S = "${WORKDIR}/git"
14PE = "1" 14PE = "1"
15 15
diff --git a/recipes-multimedia/libva/files/0001-Disable-vp9-padding-on-mtl.patch b/recipes-multimedia/libva/files/0001-Disable-vp9-padding-on-mtl.patch
new file mode 100644
index 00000000..90dff8d1
--- /dev/null
+++ b/recipes-multimedia/libva/files/0001-Disable-vp9-padding-on-mtl.patch
@@ -0,0 +1,35 @@
1From 1b303f417113ad1aa6b63fc024fbe4aa0c943f57 Mon Sep 17 00:00:00 2001
2From: Lim Siew Hoon <siew.hoon.lim@intel.com>
3Date: Tue, 5 Sep 2023 16:13:42 +0800
4Subject: [PATCH 01/12] Disable vp9 padding on mtl.
5
6Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1720]
7
8Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
9---
10 media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp b/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
14index 844545a87..72265289c 100644
15--- a/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
16+++ b/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
17@@ -284,7 +284,7 @@ static bool InitMtlMediaWaExt(struct GfxDeviceInfo *devInfo,
18
19 MEDIA_WR_WA(waTable, WaDisableSetObjectCapture, 1);
20
21- MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 1);
22+ MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 0);
23
24 MEDIA_WR_WA(waTable, Wa_15013355402, 1);
25
26@@ -337,4 +337,4 @@ static struct LinuxDeviceInit arlDeviceInit =
27 };
28
29 static bool arlDeviceRegister = DeviceInfoFactory<LinuxDeviceInit>::
30- RegisterDevice((uint32_t)IGFX_ARROWLAKE, &arlDeviceInit);
31\ No newline at end of file
32+ RegisterDevice((uint32_t)IGFX_ARROWLAKE, &arlDeviceInit);
33--
342.40.1
35
diff --git a/recipes-multimedia/libva/files/0002-Force-ARGB-surface-to-tile4-for-ACM.patch b/recipes-multimedia/libva/files/0002-Force-ARGB-surface-to-tile4-for-ACM.patch
new file mode 100644
index 00000000..df3d9805
--- /dev/null
+++ b/recipes-multimedia/libva/files/0002-Force-ARGB-surface-to-tile4-for-ACM.patch
@@ -0,0 +1,44 @@
1From 1580f01ec5ad5afdad58c39dded999494275be10 Mon Sep 17 00:00:00 2001
2From: Lim Siew Hoon <siew.hoon.lim@intel.com>
3Date: Wed, 11 Oct 2023 15:36:21 +0800
4Subject: [PATCH 02/12] Force ARGB surface to tile4 for ACM
5
6Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1728]
7
8Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com>
9Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
10---
11 media_driver/linux/common/ddi/media_libva_util.cpp | 10 ++++++++++
12 1 file changed, 10 insertions(+)
13
14diff --git a/media_driver/linux/common/ddi/media_libva_util.cpp b/media_driver/linux/common/ddi/media_libva_util.cpp
15index 63c173419..73be76366 100755
16--- a/media_driver/linux/common/ddi/media_libva_util.cpp
17+++ b/media_driver/linux/common/ddi/media_libva_util.cpp
18@@ -504,6 +504,7 @@ VAStatus DdiMediaUtil_AllocateSurface(
19 gmmCustomParams.Flags.Gpu.UnifiedAuxSurface = 0;
20 }
21 }
22+
23 break;
24 case TILING_X:
25 gmmCustomParams.Flags.Info.TiledX = true;
26@@ -685,6 +686,15 @@ VAStatus DdiMediaUtil_AllocateSurface(
27 }
28 }
29 }
30+ // There's no VAAPI interface for modifier query yet. As a workaround, always allocate
31+ // RGB surface as tile4.
32+ if ((format == Media_Format_A8R8G8B8 ||
33+ format == Media_Format_B10G10R10A2 |
34+ format == Media_Format_A8B8G8R8 ||
35+ format == Media_Format_X8R8G8B8) && !MEDIA_IS_SKU(&mediaDrvCtx->SkuTable, FtrTileY))
36+ {
37+ gmmParams.Flags.Info.Tile4 = true;
38+ }
39 break;
40 case TILING_X:
41 gmmParams.Flags.Info.TiledX = true;
42--
432.40.1
44
diff --git a/recipes-multimedia/libva/files/0004-Add-device-ID-for-ARL.patch b/recipes-multimedia/libva/files/0004-Add-device-ID-for-ARL.patch
new file mode 100644
index 00000000..59fff127
--- /dev/null
+++ b/recipes-multimedia/libva/files/0004-Add-device-ID-for-ARL.patch
@@ -0,0 +1,45 @@
1From bb860c0bfe53060925b1dce50da4e6e94cfc8cae Mon Sep 17 00:00:00 2001
2From: huangli2018 <li.h.huang@intel.com>
3Date: Wed, 20 Dec 2023 15:47:43 +0800
4Subject: [PATCH 04/13] Add device ID for ARL
5
6Add device ID for ARL
7
8Upstream-Status: Backport [https://github.com/intel/media-driver/commit/95cbfce81cafa3c24d9d4601d41a855093bc51fb]
9Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
10---
11 .../linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp | 13 +++++++++++--
12 1 file changed, 11 insertions(+), 2 deletions(-)
13
14diff --git a/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp b/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp
15index 426bd795f..7b73dfaff 100644
16--- a/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp
17+++ b/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp
18@@ -1,6 +1,6 @@
19 /*===================== begin_copyright_notice ==================================
20
21-Copyright (c) 2022, Intel Corporation
22+Copyright (c) 2023, Intel Corporation
23
24 Permission is hereby granted, free of charge, to any person obtaining a
25 copy of this software and associated documentation files (the "Software"),
26@@ -218,4 +218,13 @@ static struct GfxDeviceInfo arlInfo = {
27 };
28
29 static bool arlsDevice7d67 = DeviceInfoFactory<GfxDeviceInfo>::
30- RegisterDevice(0x7D67, &arlInfo);
31\ No newline at end of file
32+ RegisterDevice(0x7D67, &arlInfo);
33+
34+static bool arlhDevice7d51 = DeviceInfoFactory<GfxDeviceInfo>::
35+ RegisterDevice(0x7D51, &arlInfo);
36+
37+static bool arlhDevice7dd1 = DeviceInfoFactory<GfxDeviceInfo>::
38+ RegisterDevice(0x7DD1, &arlInfo);
39+
40+static bool arlhDevice7d41 = DeviceInfoFactory<GfxDeviceInfo>::
41+ RegisterDevice(0x7D41, &arlInfo);
42\ No newline at end of file
43--
442.40.1
45
diff --git a/recipes-multimedia/libva/files/0005-Add-XR24-support-to-DMABuf.patch b/recipes-multimedia/libva/files/0005-Add-XR24-support-to-DMABuf.patch
new file mode 100644
index 00000000..a9cd2317
--- /dev/null
+++ b/recipes-multimedia/libva/files/0005-Add-XR24-support-to-DMABuf.patch
@@ -0,0 +1,34 @@
1From bbd3af94a6146d702909ff7e25b0c0547ecbb895 Mon Sep 17 00:00:00 2001
2From: jlui <jonathan.ming.jun.lui@intel.com>
3Date: Wed, 15 Nov 2023 10:48:34 +0800
4Subject: [PATCH 05/13] Add XR24 support to DMABuf
5
6This is to enable XR24/BGRX support for DMABuf
7
8Signed-off-by: Lui, Jonathan Ming Jun <jonathan.ming.jun.lui@intel.com>
9
10Upstream-Status: Backport [https://github.com/intel/media-driver/commit/3910b7029f5416fd0b5972f940c65d0a82c48c7b]
11
12Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
13---
14 .../vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h | 3 ++-
15 1 file changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h b/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h
18index fdcca8873..2dcf440a4 100644
19--- a/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h
20+++ b/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h
21@@ -55,8 +55,9 @@ static ProfileSurfaceAttribInfo surfaceAttribInfo_VAEntrypointVideoProc_VAProfil
22 {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('4', '2', '2', 'V')}}},
23 {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'A')}}},
24 {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('B', 'G', 'R', 'A')}}},
25- {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, { VA_FOURCC('R', 'G', 'B', 'P')}}},
26+ {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'P')}}},
27 {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'X')}}},
28+ {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('X', 'R', 'G', 'B')}}},
29 {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('P', '0', '1', '0')}}},
30 {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', '2', '4')}}},
31 {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC_ARGB}}},
32--
332.40.1
34
diff --git a/recipes-multimedia/libva/files/0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch b/recipes-multimedia/libva/files/0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch
new file mode 100644
index 00000000..5b04201a
--- /dev/null
+++ b/recipes-multimedia/libva/files/0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch
@@ -0,0 +1,214 @@
1From 67fb6128adf8fc03d429393e98f0982b42a40e64 Mon Sep 17 00:00:00 2001
2From: Zhang_Xinfeng <carl.zhang@intel.com>
3Date: Wed, 27 Dec 2023 09:59:29 +0800
4Subject: [PATCH 06/12] add INTEL MEDIA ALLOC refineE to specify the memory
5 alignment
6
7this key is used to allocate bigger pages
8env variable INTEL_MEDIA_ALLOC_refineE also could be used
9and was not enabled by default
10mode 0 is default mode
11mode 1 is < 64 align to 64
12mode 2 is > 1M && <= 3M align to 1M, >3M align to 2M
13mode 3 is mode 1 & mode 2
14
15Upstream-Status: Backport [https://github.com/intel/media-driver/commit/765dd939dcc5562d18cca18e5eda505bda952797]
16Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
17---
18 .../linux/common/os/i915/mos_bufmgr.c | 75 +++++++++++++++----
19 .../common/os/i915_production/mos_bufmgr.c | 1 +
20 .../common/os/mos_context_specific_next.cpp | 21 +++++-
21 .../common/os/mos_user_setting_specific.cpp | 7 ++
22 4 files changed, 90 insertions(+), 14 deletions(-)
23
24diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr.c b/media_softlet/linux/common/os/i915/mos_bufmgr.c
25index c0b3ba027..b623d0129 100644
26--- a/media_softlet/linux/common/os/i915/mos_bufmgr.c
27+++ b/media_softlet/linux/common/os/i915/mos_bufmgr.c
28@@ -138,7 +138,7 @@ struct mos_bufmgr_gem {
29 int exec_count;
30
31 /** Array of lists of cached gem objects of power-of-two sizes */
32- struct mos_gem_bo_bucket cache_bucket[14 * 4];
33+ struct mos_gem_bo_bucket cache_bucket[64];
34 int num_buckets;
35 time_t time;
36
37@@ -3852,9 +3852,9 @@ add_bucket(struct mos_bufmgr_gem *bufmgr_gem, int size)
38 }
39
40 static void
41-init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem)
42+init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem, uint8_t alloc_mode)
43 {
44- unsigned long size, cache_max_size = 64 * 1024 * 1024;
45+ unsigned long size, cache_max_size = 64 * 1024 * 1024, unit_size;
46
47 /* OK, so power of two buckets was too wasteful of memory.
48 * Give 3 other sizes between each power of two, to hopefully
49@@ -3864,17 +3864,63 @@ init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem)
50 * width/height alignment and rounding of sizes to pages will
51 * get us useful cache hit rates anyway)
52 */
53- add_bucket(bufmgr_gem, 4096);
54- add_bucket(bufmgr_gem, 4096 * 2);
55- add_bucket(bufmgr_gem, 4096 * 3);
56+ /* alloc_mode 0 is default alloc_mode
57+ * alloc_mode 1 rounding up to 64K for all < 1M
58+ * alloc_mode 2 rounding up to 2M for size> 1M
59+ * alloc_mode 3 rounding up to 2M for size > 1M and 64K for size <= 1M */
60+ if( alloc_mode > 3 )
61+ alloc_mode = 0;
62+
63+ if ( 0 == alloc_mode || 2 == alloc_mode)
64+ {
65+ // < 1M normal alloc_mode
66+ add_bucket(bufmgr_gem, 4096);
67+ add_bucket(bufmgr_gem, 4096 * 2);
68+ add_bucket(bufmgr_gem, 4096 * 3);
69+ /* Initialize the linked lists for BO reuse cache. */
70+ for (size = 4 * 4096; size < 1024 * 1024; size *= 2) {
71+ add_bucket(bufmgr_gem, size);
72+ add_bucket(bufmgr_gem, size + size * 1 / 4);
73+ add_bucket(bufmgr_gem, size + size * 2 / 4);
74+ add_bucket(bufmgr_gem, size + size * 3 / 4);
75+ }
76
77- /* Initialize the linked lists for BO reuse cache. */
78- for (size = 4 * 4096; size <= cache_max_size; size *= 2) {
79- add_bucket(bufmgr_gem, size);
80+ add_bucket(bufmgr_gem, 1024 * 1024);
81+ }
82+ if (1 == alloc_mode || 3 == alloc_mode)
83+ {
84+ // < 1M 64k alignment
85+ unit_size = 64 * 1024;
86+ for (size = unit_size; size <= 1024 * 1024; size += unit_size)
87+ {
88+ add_bucket(bufmgr_gem, size);
89+ }
90+ }
91+ if( 0 == alloc_mode || 1 == alloc_mode)
92+ {
93+ //> 1M is normal alloc_mode
94+ add_bucket(bufmgr_gem, 1280 * 1024);
95+ add_bucket(bufmgr_gem, 1536 * 1024);
96+ add_bucket(bufmgr_gem, 1792 * 1024);
97+
98+ for (size = 2 * 1024 * 1024; size < cache_max_size; size *= 2) {
99+ add_bucket(bufmgr_gem, size);
100+ add_bucket(bufmgr_gem, size + size * 1 / 4);
101+ add_bucket(bufmgr_gem, size + size * 2 / 4);
102+ add_bucket(bufmgr_gem, size + size * 3 / 4);
103+ }
104+ }
105+ if( 2 == alloc_mode || 3 == alloc_mode)
106+ {
107+ //> 1M rolling to 2M
108+ unit_size = 2 * 1024 * 1024;
109+ add_bucket(bufmgr_gem, unit_size);
110+ add_bucket(bufmgr_gem, 3 * 1024 * 1024);
111
112- add_bucket(bufmgr_gem, size + size * 1 / 4);
113- add_bucket(bufmgr_gem, size + size * 2 / 4);
114- add_bucket(bufmgr_gem, size + size * 3 / 4);
115+ for (size = 4 * 1024 * 1024; size <= cache_max_size; size += unit_size)
116+ {
117+ add_bucket(bufmgr_gem, size);
118+ }
119 }
120 }
121
122@@ -5100,6 +5146,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
123 struct drm_i915_gem_get_aperture aperture;
124 drm_i915_getparam_t gp;
125 int ret, tmp;
126+ uint8_t alloc_mode;
127 bool exec2 = false;
128
129 pthread_mutex_lock(&bufmgr_list_mutex);
130@@ -5352,10 +5399,12 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
131 *
132 * Every 4 was too few for the blender benchmark.
133 */
134+ alloc_mode = (uint8_t)(batch_size & 0xff);
135+ batch_size &= 0xffffff00;
136 bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2;
137
138 DRMINITLISTHEAD(&bufmgr_gem->named);
139- init_cache_buckets(bufmgr_gem);
140+ init_cache_buckets(bufmgr_gem,alloc_mode);
141
142 DRMLISTADD(&bufmgr_gem->managers, &bufmgr_list);
143
144diff --git a/media_softlet/linux/common/os/i915_production/mos_bufmgr.c b/media_softlet/linux/common/os/i915_production/mos_bufmgr.c
145index 90b5685b1..b3574f7d3 100644
146--- a/media_softlet/linux/common/os/i915_production/mos_bufmgr.c
147+++ b/media_softlet/linux/common/os/i915_production/mos_bufmgr.c
148@@ -5403,6 +5403,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
149 *
150 * Every 4 was too few for the blender benchmark.
151 */
152+ batch_size &= 0xffffff00;
153 bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2;
154
155 DRMINITLISTHEAD(&bufmgr_gem->named);
156diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp
157index 9e9e3ff7e..543e262d1 100644
158--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp
159+++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp
160@@ -64,6 +64,7 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
161 uint32_t iDeviceId = 0;
162 MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
163 uint32_t value = 0;
164+ uint32_t mode = 0;
165 MediaUserSettingSharedPtr userSettingPtr = nullptr;
166
167 MOS_OS_FUNCTION_ENTER;
168@@ -89,7 +90,25 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
169
170 userSettingPtr = MosInterface::MosGetUserSettingInstance(osDriverContext);
171
172- m_bufmgr = mos_bufmgr_gem_init(m_fd, BATCH_BUFFER_SIZE, &m_deviceType);
173+ mode = BATCH_BUFFER_SIZE;
174+ ReadUserSetting(
175+ userSettingPtr,
176+ value,
177+ "INTEL MEDIA ALLOC MODE",
178+ MediaUserSetting::Group::Device);
179+
180+ if (value)
181+ {
182+ mode |= (value & 0x000000ff);
183+ }
184+ value = 0;
185+ /* no need to set batch buffer size after switch to softpin
186+ * keep it, just for test during relocation to softpin transition
187+ * now , it could be a debug method , but is actually useless
188+ * so it is safe to reuse the lowest 8bit to convey addtional information
189+ * more suitable solution is deleting it , or add additional parameter*/
190+
191+ m_bufmgr = mos_bufmgr_gem_init(m_fd, (int)mode, &m_deviceType);
192 if (nullptr == m_bufmgr)
193 {
194 MOS_OS_ASSERTMESSAGE("Not able to allocate buffer manager, fd=0x%d", m_fd);
195diff --git a/media_softlet/linux/common/os/mos_user_setting_specific.cpp b/media_softlet/linux/common/os/mos_user_setting_specific.cpp
196index 6be8b4298..caed584f4 100644
197--- a/media_softlet/linux/common/os/mos_user_setting_specific.cpp
198+++ b/media_softlet/linux/common/os/mos_user_setting_specific.cpp
199@@ -52,5 +52,12 @@ MOS_STATUS MosUserSetting::InitMosUserSettingSpecific(MediaUserSettingSharedPtr
200 0,
201 true); //"Enable VM Bind."
202
203+ DeclareUserSettingKey(
204+ userSettingPtr,
205+ "INTEL MEDIA ALLOC MODE",
206+ MediaUserSetting::Group::Device,
207+ 0,
208+ false); //
209+
210 return MOS_STATUS_SUCCESS;
211 }
212--
2132.40.1
214
diff --git a/recipes-multimedia/libva/files/0007-Skip-report-keys.patch b/recipes-multimedia/libva/files/0007-Skip-report-keys.patch
new file mode 100644
index 00000000..459ff490
--- /dev/null
+++ b/recipes-multimedia/libva/files/0007-Skip-report-keys.patch
@@ -0,0 +1,78 @@
1From b1aebef4d342c77fc2b9c5efbf20aeb2aa9d634e Mon Sep 17 00:00:00 2001
2From: Wang_Pingli <pingli.wang@intel.com>
3Date: Thu, 28 Dec 2023 16:44:40 +0800
4Subject: [PATCH 07/12] Skip report keys
5
6Skip to report keys
7
8Upstream-Status: Backport [https://github.com/intel/media-driver/commit/68ce25b0a6fa90614eb4734c8680aa4e149e8323]
9Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
10---
11 .../os/osservice/mos_utilities_specific.cpp | 30 +++++++++++++++++--
12 1 file changed, 28 insertions(+), 2 deletions(-)
13
14diff --git a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp
15index b5df29f06..96785e21e 100644
16--- a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp
17+++ b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp
18@@ -67,6 +67,8 @@ int32_t g_mosMemoryFailSimulateAllocCounter = 0;
19 int32_t *MosUtilities::m_mosAllocMemoryFailSimulateAllocCounter = &g_mosMemoryFailSimulateAllocCounter;
20 #endif
21
22+static bool s_skipToReportReg = false;
23+
24 double MosUtilities::MosGetTime()
25 {
26 struct timespec ts = {};
27@@ -1551,6 +1553,10 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap &regBufferMap)
28 {
29 std::string id = "";
30
31+ static const char *disableReportRegKeyList[] = {
32+ "INTEL MEDIA ALLOC MODE"
33+ };
34+ static const uint32_t disableReportRegKeyListCount = sizeof(disableReportRegKeyList) / sizeof(disableReportRegKeyList[0]);
35 while(!regStream.eof())
36 {
37 std::string line = "";
38@@ -1585,8 +1591,22 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap &regBufferMap)
39 {
40 std::string name = line.substr(0,pos);
41 std::string value = line.substr(pos+1);
42- auto &keys = regBufferMap[id];
43- keys[name] = value;
44+ if (name.size() > 0 && value.size() > 0)
45+ {
46+ auto &keys = regBufferMap[id];
47+ keys[name] = value;
48+ if (s_skipToReportReg == false && id == USER_SETTING_CONFIG_PATH)
49+ {
50+ for (uint32_t i = 0; i < disableReportRegKeyListCount; i++)
51+ {
52+ if (strcmp(name.c_str(), disableReportRegKeyList[i]) == 0)
53+ {
54+ s_skipToReportReg = true;
55+ break;
56+ }
57+ }
58+ }
59+ }
60 }
61 }
62 }
63@@ -1606,6 +1626,12 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap &regBufferMap)
64 MOS_STATUS MosUtilities::MosUninitializeReg(RegBufferMap &regBufferMap)
65 {
66 MOS_STATUS status = MOS_STATUS_SUCCESS;
67+
68+ if (s_skipToReportReg)
69+ {
70+ return MOS_STATUS_SUCCESS;
71+ }
72+
73 if (regBufferMap.size() == 0)
74 {
75 return MOS_STATUS_SUCCESS;
76--
772.40.1
78
diff --git a/recipes-multimedia/libva/files/0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch b/recipes-multimedia/libva/files/0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch
new file mode 100644
index 00000000..ece5e00b
--- /dev/null
+++ b/recipes-multimedia/libva/files/0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch
@@ -0,0 +1,255 @@
1From ac2ffac8d4aade216cc361c6c7120c13a8780719 Mon Sep 17 00:00:00 2001
2From: "Soon, Thean Siew" <thean.siew.soon@intel.com>
3Date: Thu, 28 Dec 2023 18:42:59 +0000
4Subject: [PATCH 08/12] Limit INTEL MEDIA ALLOC MODE to MTL and ARL only
5
6Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1754]
7
8Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com>
9---
10 .../common/os/i915/include/mos_bufmgr_api.h | 1 +
11 .../common/os/i915/include/mos_bufmgr_priv.h | 2 +-
12 .../linux/common/os/i915/mos_bufmgr.c | 69 +++++++++++++++----
13 .../linux/common/os/i915/mos_bufmgr_api.c | 19 +++++
14 .../os/i915_production/mos_bufmgr_priv.h | 1 +
15 .../common/os/mos_context_specific_next.cpp | 36 +++++-----
16 6 files changed, 94 insertions(+), 34 deletions(-)
17
18diff --git a/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h b/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h
19index 71cc01099..ab4f1ba89 100644
20--- a/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h
21+++ b/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h
22@@ -299,6 +299,7 @@ void mos_bufmgr_enable_vmbind(struct mos_bufmgr *bufmgr);
23 void mos_bufmgr_disable_object_capture(struct mos_bufmgr *bufmgr);
24 int mos_bufmgr_get_memory_info(struct mos_bufmgr *bufmgr, char *info, uint32_t length);
25 int mos_bufmgr_get_devid(struct mos_bufmgr *bufmgr);
26+void mos_bufmgr_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode);
27
28 int mos_bo_map_unsynchronized(struct mos_linux_bo *bo);
29 int mos_bo_map_gtt(struct mos_linux_bo *bo);
30diff --git a/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h b/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h
31index 63f69f985..6fd58f827 100644
32--- a/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h
33+++ b/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h
34@@ -358,9 +358,9 @@ struct mos_bufmgr {
35 void (*disable_object_capture)(struct mos_bufmgr *bufmgr) = nullptr;
36 int (*get_memory_info)(struct mos_bufmgr *bufmgr, char *info, uint32_t length) = nullptr;
37 int (*get_devid)(struct mos_bufmgr *bufmgr) = nullptr;
38+ void (*realloc_cache)(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) = nullptr;
39 int (*query_engines_count)(struct mos_bufmgr *bufmgr,
40 unsigned int *nengine) = nullptr;
41-
42 int (*query_engines)(struct mos_bufmgr *bufmgr,
43 __u16 engine_class,
44 __u64 caps,
45diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr.c b/media_softlet/linux/common/os/i915/mos_bufmgr.c
46index b623d0129..2814ddbb7 100644
47--- a/media_softlet/linux/common/os/i915/mos_bufmgr.c
48+++ b/media_softlet/linux/common/os/i915/mos_bufmgr.c
49@@ -2426,19 +2426,9 @@ mos_gem_bo_start_gtt_access(struct mos_linux_bo *bo, int write_enable)
50 }
51
52 static void
53-mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr)
54+mos_bufmgr_cleanup_cache(struct mos_bufmgr_gem *bufmgr_gem)
55 {
56- struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *) bufmgr;
57- struct drm_gem_close close_bo;
58- int i, ret;
59-
60- free(bufmgr_gem->exec2_objects);
61- free(bufmgr_gem->exec_objects);
62- free(bufmgr_gem->exec_bos);
63- pthread_mutex_destroy(&bufmgr_gem->lock);
64-
65- /* Free any cached buffer objects we were going to reuse */
66- for (i = 0; i < bufmgr_gem->num_buckets; i++) {
67+ for (int i = 0; i < bufmgr_gem->num_buckets; i++) {
68 struct mos_gem_bo_bucket *bucket =
69 &bufmgr_gem->cache_bucket[i];
70 struct mos_bo_gem *bo_gem;
71@@ -2450,7 +2440,25 @@ mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr)
72
73 mos_gem_bo_free(&bo_gem->bo);
74 }
75+ bufmgr_gem->cache_bucket[i].size = 0;
76 }
77+ bufmgr_gem->num_buckets = 0;
78+}
79+
80+static void
81+mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr)
82+{
83+ struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *)bufmgr;
84+ struct drm_gem_close close_bo;
85+ int ret;
86+
87+ free(bufmgr_gem->exec2_objects);
88+ free(bufmgr_gem->exec_objects);
89+ free(bufmgr_gem->exec_bos);
90+ pthread_mutex_destroy(&bufmgr_gem->lock);
91+
92+ /* Free any cached buffer objects we were going to reuse */
93+ mos_bufmgr_cleanup_cache(bufmgr_gem);
94
95 /* Release userptr bo kept hanging around for optimisation. */
96 if (bufmgr_gem->userptr_active.ptr) {
97@@ -3852,9 +3860,41 @@ add_bucket(struct mos_bufmgr_gem *bufmgr_gem, int size)
98 }
99
100 static void
101-init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem, uint8_t alloc_mode)
102+init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem)
103+{
104+ unsigned long size, cache_max_size = 64 * 1024 * 1024;
105+
106+ /* OK, so power of two buckets was too wasteful of memory.
107+ * Give 3 other sizes between each power of two, to hopefully
108+ * cover things accurately enough. (The alternative is
109+ * probably to just go for exact matching of sizes, and assume
110+ * that for things like composited window resize the tiled
111+ * width/height alignment and rounding of sizes to pages will
112+ * get us useful cache hit rates anyway)
113+ */
114+ add_bucket(bufmgr_gem, 4096);
115+ add_bucket(bufmgr_gem, 4096 * 2);
116+ add_bucket(bufmgr_gem, 4096 * 3);
117+
118+ /* Initialize the linked lists for BO reuse cache. */
119+ for (size = 4 * 4096; size <= cache_max_size; size *= 2) {
120+ add_bucket(bufmgr_gem, size);
121+
122+ add_bucket(bufmgr_gem, size + size * 1 / 4);
123+ add_bucket(bufmgr_gem, size + size * 2 / 4);
124+ add_bucket(bufmgr_gem, size + size * 3 / 4);
125+ }
126+}
127+
128+static void
129+mos_gem_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode)
130 {
131 unsigned long size, cache_max_size = 64 * 1024 * 1024, unit_size;
132+ struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *)bufmgr;
133+
134+ // Clean up the pre-allocated cache before re-allocating according
135+ // to alloc_mode
136+ mos_bufmgr_cleanup_cache(bufmgr_gem);
137
138 /* OK, so power of two buckets was too wasteful of memory.
139 * Give 3 other sizes between each power of two, to hopefully
140@@ -5218,6 +5258,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
141 bufmgr_gem->bufmgr.disable_object_capture = mos_gem_disable_object_capture;
142 bufmgr_gem->bufmgr.get_memory_info = mos_gem_get_memory_info;
143 bufmgr_gem->bufmgr.get_devid = mos_gem_get_devid;
144+ bufmgr_gem->bufmgr.realloc_cache = mos_gem_realloc_cache;
145 bufmgr_gem->bufmgr.set_context_param = mos_gem_set_context_param;
146 bufmgr_gem->bufmgr.set_context_param_parallel = mos_gem_set_context_param_parallel;
147 bufmgr_gem->bufmgr.set_context_param_load_balance = mos_gem_set_context_param_load_balance;
148@@ -5404,7 +5445,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
149 bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2;
150
151 DRMINITLISTHEAD(&bufmgr_gem->named);
152- init_cache_buckets(bufmgr_gem,alloc_mode);
153+ init_cache_buckets(bufmgr_gem);
154
155 DRMLISTADD(&bufmgr_gem->managers, &bufmgr_list);
156
157diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr_api.c b/media_softlet/linux/common/os/i915/mos_bufmgr_api.c
158index abe8ef96a..d0e02c267 100644
159--- a/media_softlet/linux/common/os/i915/mos_bufmgr_api.c
160+++ b/media_softlet/linux/common/os/i915/mos_bufmgr_api.c
161@@ -1204,6 +1204,25 @@ mos_bufmgr_get_devid(struct mos_bufmgr *bufmgr)
162 }
163 }
164
165+void
166+mos_bufmgr_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode)
167+{
168+ if(!bufmgr)
169+ {
170+ MOS_OS_CRITICALMESSAGE("Input null ptr\n");
171+ return;
172+ }
173+
174+ if (bufmgr->realloc_cache)
175+ {
176+ return bufmgr->realloc_cache(bufmgr, alloc_mode);
177+ }
178+ else
179+ {
180+ MOS_OS_CRITICALMESSAGE("Unsupported\n");
181+ }
182+}
183+
184 int
185 mos_query_engines_count(struct mos_bufmgr *bufmgr,
186 unsigned int *nengine)
187diff --git a/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h b/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h
188index c3b765a4c..1d7f7edb0 100644
189--- a/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h
190+++ b/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h
191@@ -358,6 +358,7 @@ struct mos_bufmgr {
192 void (*disable_object_capture)(struct mos_bufmgr *bufmgr) = nullptr;
193 int (*get_memory_info)(struct mos_bufmgr *bufmgr, char *info, uint32_t length) = nullptr;
194 int (*get_devid)(struct mos_bufmgr *bufmgr) = nullptr;
195+ void (*realloc_cache)(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) = nullptr;
196 int (*query_engines_count)(struct mos_bufmgr *bufmgr,
197 unsigned int *nengine) = nullptr;
198
199diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp
200index 543e262d1..87059f538 100644
201--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp
202+++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp
203@@ -90,25 +90,7 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
204
205 userSettingPtr = MosInterface::MosGetUserSettingInstance(osDriverContext);
206
207- mode = BATCH_BUFFER_SIZE;
208- ReadUserSetting(
209- userSettingPtr,
210- value,
211- "INTEL MEDIA ALLOC MODE",
212- MediaUserSetting::Group::Device);
213-
214- if (value)
215- {
216- mode |= (value & 0x000000ff);
217- }
218- value = 0;
219- /* no need to set batch buffer size after switch to softpin
220- * keep it, just for test during relocation to softpin transition
221- * now , it could be a debug method , but is actually useless
222- * so it is safe to reuse the lowest 8bit to convey addtional information
223- * more suitable solution is deleting it , or add additional parameter*/
224-
225- m_bufmgr = mos_bufmgr_gem_init(m_fd, (int)mode, &m_deviceType);
226+ m_bufmgr = mos_bufmgr_gem_init(m_fd, BATCH_BUFFER_SIZE, &m_deviceType);
227 if (nullptr == m_bufmgr)
228 {
229 MOS_OS_ASSERTMESSAGE("Not able to allocate buffer manager, fd=0x%d", m_fd);
230@@ -151,6 +133,22 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
231 return eStatus;
232 }
233
234+ if (m_platformInfo.eProductFamily == IGFX_METEORLAKE ||
235+ m_platformInfo.eProductFamily == IGFX_ARROWLAKE)
236+ {
237+ ReadUserSetting(
238+ userSettingPtr,
239+ value,
240+ "INTEL MEDIA ALLOC MODE",
241+ MediaUserSetting::Group::Device);
242+
243+ if (value)
244+ {
245+ mode = (value & 0x000000ff);
246+ }
247+ mos_bufmgr_realloc_cache(m_bufmgr, mode);
248+ }
249+
250 ReadUserSetting(
251 userSettingPtr,
252 value,
253--
2542.40.1
255
diff --git a/recipes-multimedia/libva/files/0009-Skip-cache-bucket-realloc-for-default-mode-0.patch b/recipes-multimedia/libva/files/0009-Skip-cache-bucket-realloc-for-default-mode-0.patch
new file mode 100644
index 00000000..8ee7ef14
--- /dev/null
+++ b/recipes-multimedia/libva/files/0009-Skip-cache-bucket-realloc-for-default-mode-0.patch
@@ -0,0 +1,33 @@
1From 18c32247cbc0e9fabff7a847add099496af9e53f Mon Sep 17 00:00:00 2001
2From: "Soon, Thean Siew" <thean.siew.soon@intel.com>
3Date: Mon, 8 Jan 2024 18:12:30 +0000
4Subject: [PATCH 09/12] Skip cache bucket realloc for default mode 0
5
6Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1754]
7
8Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com>
9---
10 .../linux/common/os/mos_context_specific_next.cpp | 7 ++++++-
11 1 file changed, 6 insertions(+), 1 deletion(-)
12
13diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp
14index 87059f538..9dbd5da79 100644
15--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp
16+++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp
17@@ -146,7 +146,12 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
18 {
19 mode = (value & 0x000000ff);
20 }
21- mos_bufmgr_realloc_cache(m_bufmgr, mode);
22+
23+ // Realloc cache only if it's not mode 0
24+ if (mode)
25+ {
26+ mos_bufmgr_realloc_cache(m_bufmgr, mode);
27+ }
28 }
29
30 ReadUserSetting(
31--
322.40.1
33
diff --git a/recipes-multimedia/libva/files/0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch b/recipes-multimedia/libva/files/0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch
new file mode 100644
index 00000000..0100df77
--- /dev/null
+++ b/recipes-multimedia/libva/files/0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch
@@ -0,0 +1,195 @@
1From 7291ab5206c5e172c6c94dcfbe4f1bc258f3b7a5 Mon Sep 17 00:00:00 2001
2From: WenshengZhang <wensheng.zhang@intel.com>
3Date: Wed, 10 Jan 2024 14:08:37 +0800
4Subject: [PATCH 10/12] Fix failed 4k video wall test case and color corruption
5 of video composition
6
7Fix failed 4k video wall test case from 16CH video only show 1CH output and
8corruption observed on certain number of video composition when doing
9sample_multi_transcode.
10
11Upstream-Status: Backport [https://github.com/intel/media-driver/commit/38e14b1b97170b51586d00d1fa607e496b0c5825]
12Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
13---
14 .../common/vp/kdll/hal_kerneldll_next.h | 1 +
15 .../vp/hal/packet/vp_render_fc_kernel.cpp | 7 ++
16 .../common/vp/kdll/hal_kerneldll_next.c | 70 +++++++++++--------
17 .../linux/common/vp/ddi/ddi_vp_functions.cpp | 20 ++----
18 4 files changed, 55 insertions(+), 43 deletions(-)
19
20diff --git a/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h b/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h
21index 6447999b7..8e2ab371e 100644
22--- a/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h
23+++ b/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h
24@@ -588,6 +588,7 @@ typedef struct tagKdll_FilterEntry
25 Kdll_Scalingratio ScalingRatio;
26 Kdll_RenderMethod RenderMethod;
27 Kdll_SetCSCCoeffMethod SetCSCCoeffMode;
28+ bool forceToTargetColorSpace;
29 } Kdll_FilterEntry, *PKdll_FilterEntry;
30
31 // Structure that defines a compositing filter
32diff --git a/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp b/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp
33index 8e982f67e..f8308fed1 100644
34--- a/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp
35+++ b/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp
36@@ -775,6 +775,13 @@ MOS_STATUS VpRenderFcKernel::BuildFilter(
37
38 for (i = 0; (i < (int)compParams->sourceCount) && (iMaxFilterSize > 0); i++)
39 {
40+ if (i > 0)
41+ {
42+ if (!RECT1_CONTAINS_RECT2(compParams->source[0].surf->rcDst, compParams->source[i].surf->rcDst))
43+ {
44+ pFilter->forceToTargetColorSpace = true;
45+ }
46+ }
47 src = &compParams->source[i];
48
49 //--------------------------------
50diff --git a/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c b/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c
51index d8f7d429a..151f3b039 100644
52--- a/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c
53+++ b/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c
54@@ -2378,6 +2378,7 @@ bool KernelDll_SetupCSC(
55 Kdll_CSC_Matrix curr_matrix;
56 Kdll_CSC_Matrix *matrix = pCSC->Matrix; // Color Space conversion matrix
57 uint8_t * matrixID = pCSC->MatrixID; // CSC coefficient allocation table
58+ bool forceToTargetColorSpace = false;
59
60 // Clear all CSC matrices
61 MOS_ZeroMemory(matrix, sizeof(pCSC->Matrix));
62@@ -2395,6 +2396,10 @@ bool KernelDll_SetupCSC(
63 //---------------------------------------------------------------//
64 for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++)
65 {
66+ if (pFilter->forceToTargetColorSpace)
67+ {
68+ forceToTargetColorSpace = true;
69+ }
70 // Disable Procamp for all layers except Main Video
71 // Disable Procamp if source is RGB
72 if (pFilter->layer != Layer_MainVideo ||
73@@ -2456,44 +2461,51 @@ bool KernelDll_SetupCSC(
74 //---------------------------------------------------------------//
75 if (sel_cspace == CSpace_Any)
76 {
77- int cs;
78- for (cs = (CSpace_Any + 1); cs < CSpace_Count; cs++)
79+ if (forceToTargetColorSpace)
80 {
81- // Skip color spaces not in use
82- cspace = (VPHAL_CSPACE)cs;
83- if (!cspace_in_use[cspace])
84- {
85- continue;
86- }
87-
88- // xvYCC and BT are treated as same for CSC considerations (BT.x to xvYCC.x matrix is I)
89- cspace = KernelDll_TranslateCspace(cspace);
90-
91- // Count # of CS conversions and matrices
92- csc_count = 0;
93- for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++)
94+ sel_cspace = out_cspace;
95+ }
96+ else
97+ {
98+ int cs;
99+ for (cs = (CSpace_Any + 1); cs < CSpace_Count; cs++)
100 {
101- // Ignore layers where the Color Space may be set in software (colorfill, palletized)
102- if (pFilter->cspace == CSpace_Any)
103+ // Skip color spaces not in use
104+ cspace = (VPHAL_CSPACE)cs;
105+ if (!cspace_in_use[cspace])
106 {
107 continue;
108 }
109
110- // Check if CSC/PA is required
111- if (KernelDll_TranslateCspace(pFilter->cspace) != cspace ||
112- pFilter->procamp != DL_PROCAMP_DISABLED)
113+ // xvYCC and BT are treated as same for CSC considerations (BT.x to xvYCC.x matrix is I)
114+ cspace = KernelDll_TranslateCspace(cspace);
115+
116+ // Count # of CS conversions and matrices
117+ csc_count = 0;
118+ for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++)
119 {
120- csc_count++;
121+ // Ignore layers where the Color Space may be set in software (colorfill, palletized)
122+ if (pFilter->cspace == CSpace_Any)
123+ {
124+ continue;
125+ }
126+
127+ // Check if CSC/PA is required
128+ if (KernelDll_TranslateCspace(pFilter->cspace) != cspace ||
129+ pFilter->procamp != DL_PROCAMP_DISABLED)
130+ {
131+ csc_count++;
132+ }
133 }
134- }
135
136- // Save best choice as requiring minimum number of CSC operations
137- if ((sel_csc_count < 0) || // Initial value
138- (csc_count < sel_csc_count) || // Minimum number of CSC operations
139- (csc_count == sel_csc_count && cs == main_cspace)) // Use main cspace as default if same CSC count
140- {
141- sel_cspace = cspace;
142- sel_csc_count = csc_count;
143+ // Save best choice as requiring minimum number of CSC operations
144+ if ((sel_csc_count < 0) || // Initial value
145+ (csc_count < sel_csc_count) || // Minimum number of CSC operations
146+ (csc_count == sel_csc_count && cs == main_cspace)) // Use main cspace as default if same CSC count
147+ {
148+ sel_cspace = cspace;
149+ sel_csc_count = csc_count;
150+ }
151 }
152 }
153 }
154diff --git a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
155index 40d0b3fad..e60a6c69c 100644
156--- a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
157+++ b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
158@@ -2115,9 +2115,8 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill(
159 {
160 DDI_VP_FUNC_ENTER;
161 DDI_VP_CHK_NULL(vpHalRenderParams, "nullptr vpHalRenderParams.", VA_STATUS_ERROR_INVALID_PARAMETER);
162- DDI_VP_CHK_NULL(vpHalRenderParams->pTarget[0],"nullptr pTarget[0].", VA_STATUS_ERROR_INVALID_PARAMETER);
163
164- if ((outBackGroundcolor >> 24) != 0 || vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB)
165+ if ((outBackGroundcolor >> 24) != 0)
166 {
167 if (vpHalRenderParams->pColorFillParams == nullptr)
168 {
169@@ -2126,18 +2125,11 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill(
170
171 DDI_VP_CHK_NULL(vpHalRenderParams->pColorFillParams, "nullptr pColorFillParams.", VA_STATUS_ERROR_UNKNOWN);
172
173- if (vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB && (outBackGroundcolor >> 24) == 0)
174- {
175- // set color space for sRGB output
176- vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
177- }
178- else
179- {
180- // set background colorfill option
181- vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor;
182- vpHalRenderParams->pColorFillParams->bYCbCr = false;
183- vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
184- }
185+ // set background colorfill option
186+ vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor;
187+ vpHalRenderParams->pColorFillParams->bYCbCr = false;
188+ vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
189+
190 }
191 else
192 {
193--
1942.40.1
195
diff --git a/recipes-multimedia/libva/files/0011-Disable-422H-format-output.patch b/recipes-multimedia/libva/files/0011-Disable-422H-format-output.patch
new file mode 100644
index 00000000..2f4aec1e
--- /dev/null
+++ b/recipes-multimedia/libva/files/0011-Disable-422H-format-output.patch
@@ -0,0 +1,33 @@
1From f8b4d982232d4c1330e1e5f5dcd7cd8ca94decba Mon Sep 17 00:00:00 2001
2From: WenshengZhang <wensheng.zhang@intel.com>
3Date: Thu, 25 Jan 2024 16:35:10 +0800
4Subject: [PATCH 11/12] Disable 422H format output
5
6Disable 422H format output.
7
8Upstream-Status: Backport [https://github.com/intel/media-driver/commit/eab411768e61a46e096793291f5f992eecf76cd8]
9Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
10---
11 .../agnostic/common/vp/hal/feature_manager/policy.cpp | 6 ++++++
12 1 file changed, 6 insertions(+)
13
14diff --git a/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp b/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp
15index 317cec25a..12f1124fa 100644
16--- a/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp
17+++ b/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp
18@@ -1140,6 +1140,12 @@ MOS_STATUS Policy::GetScalingExecutionCaps(SwFilter *feature, bool isHdrEnabled)
19 bool isAlphaSettingSupportedByVebox =
20 IsAlphaSettingSupportedByVebox(scalingParams->formatInput, scalingParams->formatOutput, scalingParams->pCompAlpha);
21
22+ if (scalingParams->formatOutput == Format_422H)
23+ {
24+ VP_PUBLIC_ASSERTMESSAGE("Scaling not support 422H format output.");
25+ return MOS_STATUS_UNIMPLEMENTED;
26+ }
27+
28 // Clean usedForNextPass flag.
29 if (scalingEngine->usedForNextPass)
30 {
31--
322.40.1
33
diff --git a/recipes-multimedia/libva/files/0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch b/recipes-multimedia/libva/files/0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch
new file mode 100644
index 00000000..1be9139d
--- /dev/null
+++ b/recipes-multimedia/libva/files/0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch
@@ -0,0 +1,32 @@
1From b93904533d3ee66c7919fa8e23d26b852a37a917 Mon Sep 17 00:00:00 2001
2From: Lim Siew Hoon <siew.hoon.lim@intel.com>
3Date: Tue, 30 Jan 2024 13:27:52 +0800
4Subject: [PATCH 12/12] [Decode] Fix AVC decode SFC 4K hang issue
5
6Updated VDSFC input width and height for AVC decode
7
8Upstream-Status: Submitted [https://github.com/intel-innersource/drivers.gpu.unified/pull/151401]
9
10Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
11---
12 .../hal/dec/avc/packet/decode_avc_downsampling_packet.cpp | 4 ++++
13 1 file changed, 4 insertions(+)
14
15diff --git a/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp b/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp
16index e75fd8137..9cc236bd7 100644
17--- a/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp
18+++ b/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp
19@@ -59,6 +59,10 @@ MOS_STATUS AvcDownSamplingPkt::InitSfcParams(VDBOX_SFC_PARAMS &sfcParams)
20
21 AvcBasicFeature *avcBasicFeature = dynamic_cast<AvcBasicFeature*>(m_basicFeature);
22 DECODE_CHK_NULL(avcBasicFeature);
23+
24+ sfcParams.input.width = avcBasicFeature->m_width;
25+ sfcParams.input.height = avcBasicFeature->m_height;
26+
27 CODEC_PICTURE curPic = avcBasicFeature->m_avcPicParams->CurrPic;
28
29 if (avcBasicFeature->m_avcPicParams->seq_fields.mb_adaptive_frame_field_flag == true)
30--
312.40.1
32
diff --git a/recipes-multimedia/libva/files/c8457540aed1ab9424661087276fb788c0e3aabb.patch b/recipes-multimedia/libva/files/c8457540aed1ab9424661087276fb788c0e3aabb.patch
deleted file mode 100644
index 046778b2..00000000
--- a/recipes-multimedia/libva/files/c8457540aed1ab9424661087276fb788c0e3aabb.patch
+++ /dev/null
@@ -1,109 +0,0 @@
1From c8457540aed1ab9424661087276fb788c0e3aabb Mon Sep 17 00:00:00 2001
2From: "Wang, Pingli" <pingli.wang@intel.com>
3Date: Wed, 23 Mar 2022 20:14:04 +0800
4Subject: [PATCH] Fixes #1354
5
6Fixes #1354. It is to fix the compiling issue for gcc12.0.1.
7[-Werror=address] [-Werror=dangling-pointer=][-Werror=alloc-size-larger-than=]
8
9Signed-off-by: Wang, Pingli <pingli.wang@intel.com>
10
11Upstream-Status: Backport
12Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
13---
14 .../agnostic/common/os/mos_utilities.h | 4 +--
15 .../codec/hal/codechal_encoder_base.cpp | 2 +-
16 .../common/codec/ddi/media_ddi_decode_vp8.cpp | 25 ++++++++-----------
17 .../agnostic/common/os/mos_utilities_next.h | 4 +--
18 4 files changed, 16 insertions(+), 19 deletions(-)
19
20diff --git a/media_common/agnostic/common/os/mos_utilities.h b/media_common/agnostic/common/os/mos_utilities.h
21index 7c395816f..d41a3a065 100644
22--- a/media_common/agnostic/common/os/mos_utilities.h
23+++ b/media_common/agnostic/common/os/mos_utilities.h
24@@ -181,10 +181,10 @@ _Ty* MOS_NewUtil(_Types&&... _Args)
25 template<class _Ty, class... _Types>
26 _Ty *MOS_NewArrayUtil(const char *functionName,
27 const char *filename,
28- int32_t line, int32_t numElements)
29+ int32_t line, size_t numElements)
30 #else
31 template<class _Ty, class... _Types>
32-_Ty* MOS_NewArrayUtil(int32_t numElements)
33+_Ty* MOS_NewArrayUtil(size_t numElements)
34 #endif
35 {
36 #if MOS_MESSAGES_ENABLED
37diff --git a/media_driver/agnostic/common/codec/hal/codechal_encoder_base.cpp b/media_driver/agnostic/common/codec/hal/codechal_encoder_base.cpp
38index 4bf869c60..e9b3575fd 100644
39--- a/media_driver/agnostic/common/codec/hal/codechal_encoder_base.cpp
40+++ b/media_driver/agnostic/common/codec/hal/codechal_encoder_base.cpp
41@@ -3891,6 +3891,7 @@ MOS_STATUS CodechalEncoderState::ReadCounterValue(uint16_t index, EncodeStatusRe
42 CODECHAL_ENCODE_FUNCTION_ENTER;
43 CODECHAL_ENCODE_CHK_NULL_RETURN(encodeStatusReport);
44 uint64_t *address2Counter = nullptr;
45+ uint32_t ctr[4] = { 0 };
46
47 if (m_hwInterface->GetCpInterface()->IsHwCounterIncrement(m_osInterface))
48 {
49@@ -3923,7 +3924,6 @@ MOS_STATUS CodechalEncoderState::ReadCounterValue(uint16_t index, EncodeStatusRe
50 else
51 {
52 //Report driver generated counter which was submitted to HW by command
53- uint32_t ctr[4] = { 0 };
54 eStatus = m_hwInterface->GetCpInterface()->GetCounterValue(ctr);
55 if (MOS_STATUS_SUCCESS == eStatus)
56 {
57diff --git a/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp b/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
58index 72891d584..fac4c415d 100644
59--- a/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
60+++ b/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
61@@ -235,20 +235,17 @@ VAStatus DdiDecodeVP8::ParsePicParams(
62 codecPicParams->ucUvModeProbs[0] = picParam->uv_mode_probs[0];
63 codecPicParams->ucUvModeProbs[1] = picParam->uv_mode_probs[1];
64 codecPicParams->ucUvModeProbs[2] = picParam->uv_mode_probs[2];
65- if (codecPicParams->ucMvUpdateProb[0] && picParam->mv_probs[0])
66- {
67- MOS_SecureMemcpy(codecPicParams->ucMvUpdateProb[0],
68- sizeof(codecPicParams->ucMvUpdateProb[0]),
69- picParam->mv_probs[0],
70- sizeof(codecPicParams->ucMvUpdateProb[0]));
71- }
72- if (codecPicParams->ucMvUpdateProb[1] && picParam->mv_probs[1])
73- {
74- MOS_SecureMemcpy(codecPicParams->ucMvUpdateProb[1],
75- sizeof(codecPicParams->ucMvUpdateProb[1]),
76- picParam->mv_probs[1],
77- sizeof(codecPicParams->ucMvUpdateProb[1]));
78- }
79+
80+ MOS_SecureMemcpy(codecPicParams->ucMvUpdateProb[0],
81+ sizeof(codecPicParams->ucMvUpdateProb[0]),
82+ picParam->mv_probs[0],
83+ sizeof(codecPicParams->ucMvUpdateProb[0]));
84+
85+ MOS_SecureMemcpy(codecPicParams->ucMvUpdateProb[1],
86+ sizeof(codecPicParams->ucMvUpdateProb[1]),
87+ picParam->mv_probs[1],
88+ sizeof(codecPicParams->ucMvUpdateProb[1]));
89+
90 codecPicParams->ucP0EntropyCount = (8 - picParam->bool_coder_ctx.count) & 0x7; //hardware needs used bits not remaining bits in bool decoder
91 codecPicParams->ucP0EntropyValue = picParam->bool_coder_ctx.value;
92 codecPicParams->uiP0EntropyRange = picParam->bool_coder_ctx.range;
93diff --git a/media_softlet/agnostic/common/os/mos_utilities_next.h b/media_softlet/agnostic/common/os/mos_utilities_next.h
94index 509f2de3d..b6069bbc8 100644
95--- a/media_softlet/agnostic/common/os/mos_utilities_next.h
96+++ b/media_softlet/agnostic/common/os/mos_utilities_next.h
97@@ -90,10 +90,10 @@ class MosUtilities
98 template<class _Ty, class... _Types>
99 static _Ty *MosNewArrayUtil(const char *functionName,
100 const char *filename,
101- int32_t line, int32_t numElements)
102+ int32_t line, size_t numElements)
103 #else
104 template<class _Ty, class... _Types>
105- static _Ty* MosNewArrayUtil(int32_t numElements)
106+ static _Ty* MosNewArrayUtil(size_t numElements)
107 #endif
108 {
109 #if (_DEBUG || _RELEASE_INTERNAL)
diff --git a/recipes-multimedia/libva/intel-media-driver_22.3.1.bb b/recipes-multimedia/libva/intel-media-driver_23.4.3.bb
index 4e64c1b6..6513d574 100644
--- a/recipes-multimedia/libva/intel-media-driver_22.3.1.bb
+++ b/recipes-multimedia/libva/intel-media-driver_23.4.3.bb
@@ -19,10 +19,20 @@ REQUIRED_DISTRO_FEATURES = "opengl"
19DEPENDS += "libva gmmlib" 19DEPENDS += "libva gmmlib"
20 20
21SRC_URI = "git://github.com/intel/media-driver.git;protocol=https;nobranch=1 \ 21SRC_URI = "git://github.com/intel/media-driver.git;protocol=https;nobranch=1 \
22 file://c8457540aed1ab9424661087276fb788c0e3aabb.patch \ 22 file://0001-Disable-vp9-padding-on-mtl.patch \
23 file://0002-Force-ARGB-surface-to-tile4-for-ACM.patch \
24 file://0004-Add-device-ID-for-ARL.patch \
25 file://0005-Add-XR24-support-to-DMABuf.patch \
26 file://0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch \
27 file://0007-Skip-report-keys.patch \
28 file://0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch \
29 file://0009-Skip-cache-bucket-realloc-for-default-mode-0.patch \
30 file://0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch \
31 file://0011-Disable-422H-format-output.patch \
32 file://0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch \
23 " 33 "
24 34
25SRCREV = "6547f46584633a7619440b39b34908e13c8c857d" 35SRCREV = "a9f272496fc0f3e823cc4a814666ea27b443d902"
26S = "${WORKDIR}/git" 36S = "${WORKDIR}/git"
27 37
28COMPATIBLE_HOST:x86-x32 = "null" 38COMPATIBLE_HOST:x86-x32 = "null"
diff --git a/recipes-multimedia/mediasdk/files/fix-gcc13.patch b/recipes-multimedia/mediasdk/files/fix-gcc13.patch
new file mode 100644
index 00000000..fb973870
--- /dev/null
+++ b/recipes-multimedia/mediasdk/files/fix-gcc13.patch
@@ -0,0 +1,15 @@
1Upstream-Status: Inactive-Upstream
2Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
3
4diff --git a/api/mfx_dispatch/linux/mfxparser.cpp b/api/mfx_dispatch/linux/mfxparser.cpp
5index 9d3823ec3e..12e46d1881 100644
6--- a/api/mfx_dispatch/linux/mfxparser.cpp
7+++ b/api/mfx_dispatch/linux/mfxparser.cpp
8@@ -20,6 +20,7 @@
9
10 #include <ctype.h>
11 #include <stdio.h>
12+#include <stdint.h>
13 #include <stdlib.h>
14 #include <string.h>
15
diff --git a/recipes-multimedia/mediasdk/intel-mediasdk_22.3.0.bb b/recipes-multimedia/mediasdk/intel-mediasdk_23.2.2.bb
index 099d489a..f00a4404 100644
--- a/recipes-multimedia/mediasdk/intel-mediasdk_22.3.0.bb
+++ b/recipes-multimedia/mediasdk/intel-mediasdk_23.2.2.bb
@@ -17,7 +17,9 @@ COMPATIBLE_HOST:x86-x32 = "null"
17inherit features_check 17inherit features_check
18REQUIRED_DISTRO_FEATURES = "opengl" 18REQUIRED_DISTRO_FEATURES = "opengl"
19 19
20DEPENDS += "libdrm libva intel-media-driver" 20DEPENDS += "libva"
21
22RDEPENDS:${PN} += "intel-media-driver"
21 23
22PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "dri3", "", d)} \ 24PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "dri3", "", d)} \
23 ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)} \ 25 ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)} \
@@ -27,15 +29,16 @@ PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "dri3", "", d)
27 29
28PACKAGECONFIG[dri3] = "-DENABLE_X11_DRI3=ON, -DENABLE_X11_DRI3=OFF" 30PACKAGECONFIG[dri3] = "-DENABLE_X11_DRI3=ON, -DENABLE_X11_DRI3=OFF"
29PACKAGECONFIG[itt] = "-DENABLE_ITT=ON, -DENABLE_ITT=OFF, itt" 31PACKAGECONFIG[itt] = "-DENABLE_ITT=ON, -DENABLE_ITT=OFF, itt"
30PACKAGECONFIG[opencl] = "-DENABLE_OPENCL=ON, -DENABLE_OPENCL=OFF, ocl-icd opencl-clhpp opencl-headers" 32PACKAGECONFIG[opencl] = "-DENABLE_OPENCL=ON, -DENABLE_OPENCL=OFF, virtual/opencl-icd opencl-clhpp opencl-headers"
31PACKAGECONFIG[samples] = "-DBUILD_SAMPLES=ON, -DBUILD_SAMPLES=OFF" 33PACKAGECONFIG[samples] = "-DBUILD_SAMPLES=ON, -DBUILD_SAMPLES=OFF"
32PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND=ON, -DENABLE_WAYLAND=OFF, wayland wayland-native" 34PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND=ON, -DENABLE_WAYLAND=OFF, wayland wayland-native"
33 35
34SRC_URI = "git://github.com/Intel-Media-SDK/MediaSDK.git;protocol=https;nobranch=1;lfs=0 \ 36SRC_URI = "git://github.com/Intel-Media-SDK/MediaSDK.git;protocol=https;nobranch=1;lfs=0 \
35 file://0001-FindITT.cmake-fix-detection-of-header-library.patch \ 37 file://0001-FindITT.cmake-fix-detection-of-header-library.patch \
38 file://fix-gcc13.patch \
36 " 39 "
37 40
38SRCREV = "f577d724de6cf8d040a113d337d4433b0f7478e2" 41SRCREV = "869b60a6c3d7b5e9f7c3b3b914986322dca4bbae"
39S = "${WORKDIR}/git" 42S = "${WORKDIR}/git"
40 43
41UPSTREAM_CHECK_GITTAGREGEX = "^intel-mediasdk-(?P<pver>(\d+(\.\d+)+))$" 44UPSTREAM_CHECK_GITTAGREGEX = "^intel-mediasdk-(?P<pver>(\d+(\.\d+)+))$"
diff --git a/recipes-multimedia/onevpl/files/0001-ARLH-DID-open-source-6286.patch b/recipes-multimedia/onevpl/files/0001-ARLH-DID-open-source-6286.patch
new file mode 100644
index 00000000..8d1f3380
--- /dev/null
+++ b/recipes-multimedia/onevpl/files/0001-ARLH-DID-open-source-6286.patch
@@ -0,0 +1,39 @@
1From a425927469b36e7bc597bff4fdc24d42a1168d1a Mon Sep 17 00:00:00 2001
2From: gfxVPLsdm <gfxvplsdm@intel.com>
3Date: Mon, 18 Dec 2023 09:58:35 +0800
4Subject: [PATCH] ARLH DID open source (#6286)
5
6Co-authored-by: huangli <li.h.huang@intel.com>
7
8Upstream-Status: Backport [https://github.com/oneapi-src/oneVPL-intel-gpu/commit/66f1b4d60a367eb1b0774e0b4369f906e0e632ae]
9Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
10
11---
12 _studio/shared/include/mfxstructures-int.h | 7 ++++++-
13 1 file changed, 6 insertions(+), 1 deletion(-)
14
15diff --git a/_studio/shared/include/mfxstructures-int.h b/_studio/shared/include/mfxstructures-int.h
16index 363d9a63..8f16b0a8 100644
17--- a/_studio/shared/include/mfxstructures-int.h
18+++ b/_studio/shared/include/mfxstructures-int.h
19@@ -1,4 +1,4 @@
20-// Copyright (c) 2007-2021 Intel Corporation
21+// Copyright (c) 2007-2023 Intel Corporation
22 //
23 // Permission is hereby granted, free of charge, to any person obtaining a copy
24 // of this software and associated documentation files (the "Software"), to deal
25@@ -569,6 +569,11 @@ typedef struct {
26 /* ARL S */
27 { 0x7D67, MFX_HW_ARL, MFX_GT2 },
28
29+ /* ARL H*/
30+ { 0x7D51, MFX_HW_ARL, MFX_GT2 },
31+ { 0x7DD1, MFX_HW_ARL, MFX_GT2 },
32+ { 0x7D41, MFX_HW_ARL, MFX_GT2 },
33+
34 };
35
36 /*
37--
382.40.1
39
diff --git a/recipes-multimedia/onevpl/files/0001-Fix-SetBuffersYV12-V-U-plane-offsets-calculation-647.patch b/recipes-multimedia/onevpl/files/0001-Fix-SetBuffersYV12-V-U-plane-offsets-calculation-647.patch
new file mode 100644
index 00000000..8e014c97
--- /dev/null
+++ b/recipes-multimedia/onevpl/files/0001-Fix-SetBuffersYV12-V-U-plane-offsets-calculation-647.patch
@@ -0,0 +1,32 @@
1From e118062518c95d8fb0080cc8276b123a90bd0eb9 Mon Sep 17 00:00:00 2001
2From: gfxVPLsdm <gfxvplsdm@intel.com>
3Date: Wed, 21 Feb 2024 17:11:52 +0800
4Subject: [PATCH] Fix SetBuffersYV12() V & U plane offsets calculation (#6475)
5
6Signed-off-by: Hoe, Sheng Yang <sheng.yang.hoe@intel.com>
7Co-authored-by: Hoe, Sheng Yang <sheng.yang.hoe@intel.com>
8
9Upstream-Status: Backport [https://github.com/oneapi-src/oneVPL-intel-gpu/commit/ce704ddfe11724767ba86c9425a3917dc3100d4a]
10Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
11---
12 _studio/shared/src/libmfx_core_vaapi.cpp | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/_studio/shared/src/libmfx_core_vaapi.cpp b/_studio/shared/src/libmfx_core_vaapi.cpp
16index 2cad86f8..fd5fc269 100644
17--- a/_studio/shared/src/libmfx_core_vaapi.cpp
18+++ b/_studio/shared/src/libmfx_core_vaapi.cpp
19@@ -462,8 +462,8 @@ public:
20 }
21 else
22 {
23- eb.offsets[1] = eb.offsets[0] + uint32_t(eb.height * eb.pitches[1] / 2);
24- eb.offsets[2] = eb.offsets[1] + uint32_t(eb.height * eb.pitches[2] / 2);
25+ eb.offsets[1] = eb.offsets[0] + uint32_t(eb.height * eb.pitches[0]);
26+ eb.offsets[2] = eb.offsets[1] + uint32_t(eb.height * eb.pitches[1] / 2);
27 }
28 eb.num_planes = 3;
29 eb.data_size = eb.offsets[2] + (eb.height * eb.pitches[2] / 2);
30--
312.40.1
32
diff --git a/recipes-multimedia/onevpl/files/0001-JPEGe-Enable-BGR4-JPEG-Enc-support-6470.patch b/recipes-multimedia/onevpl/files/0001-JPEGe-Enable-BGR4-JPEG-Enc-support-6470.patch
new file mode 100644
index 00000000..e3854407
--- /dev/null
+++ b/recipes-multimedia/onevpl/files/0001-JPEGe-Enable-BGR4-JPEG-Enc-support-6470.patch
@@ -0,0 +1,96 @@
1From 40c0bc6d3dfe172dd25908df2c16de29c34fa4d4 Mon Sep 17 00:00:00 2001
2From: gfxVPLsdm <gfxvplsdm@intel.com>
3Date: Mon, 5 Feb 2024 17:14:07 +0800
4Subject: [PATCH] [JPEGe] Enable BGR4 JPEG Enc support (#6470)
5
6Co-authored-by: vcheah <vincent.beng.keat.cheah@intel.com>
7
8Upstream-Status: Backport [https://github.com/oneapi-src/oneVPL-intel-gpu/commit/e73763d05f8fdc348c356b58dcb83075b5e868f8]
9Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
10---
11 .../mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp | 6 ++++--
12 .../encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp | 9 +++++----
13 2 files changed, 9 insertions(+), 6 deletions(-)
14
15diff --git a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp
16index 141564b1..332f6372 100644
17--- a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp
18+++ b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp
19@@ -212,7 +212,8 @@ mfxStatus MFXVideoENCODEMJPEG_HW::QueryImplsDescription(
20 ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_YV12;
21 ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_YUY2;
22 ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_RGB4;
23- memCaps.NumColorFormats = 4;
24+ ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_BGR4;
25+ memCaps.NumColorFormats = 5;
26
27 ah.PushBack(profileCaps.MemDesc);
28 profileCaps.MemDesc[1] = profileCaps.MemDesc[0];
29@@ -392,7 +393,7 @@ mfxStatus MFXVideoENCODEMJPEG_HW::Query(VideoCORE * core, mfxVideoParam *in, mfx
30 if ((fourCC == 0 && chromaFormat == 0) ||
31 (fourCC == MFX_FOURCC_NV12 && (chromaFormat == MFX_CHROMAFORMAT_YUV420 || chromaFormat == MFX_CHROMAFORMAT_YUV400)) ||
32 (fourCC == MFX_FOURCC_YUY2 && chromaFormat == MFX_CHROMAFORMAT_YUV422H) ||
33- (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444))
34+ ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444))
35 {
36 out->mfx.FrameInfo.FourCC = in->mfx.FrameInfo.FourCC;
37 out->mfx.FrameInfo.ChromaFormat = in->mfx.FrameInfo.ChromaFormat;
38@@ -698,6 +699,7 @@ mfxStatus MFXVideoENCODEMJPEG_HW::Init(mfxVideoParam *par)
39 doubleBytesPerPx = 4;
40 break;
41 case MFX_FOURCC_RGB4:
42+ case MFX_FOURCC_BGR4:
43 default:
44 doubleBytesPerPx = 8;
45 break;
46diff --git a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp
47index 3fc619d1..b1ab556e 100644
48--- a/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp
49+++ b/_studio/mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp
50@@ -108,6 +108,7 @@ mfxStatus MfxHwMJpegEncode::CheckJpegParam(VideoCORE *core, mfxVideoParam & par,
51 BytesPerPx = 2;
52 break;
53 case MFX_FOURCC_RGB4:
54+ case MFX_FOURCC_BGR4:
55 default:
56 BytesPerPx = 4;
57 }
58@@ -157,7 +158,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c
59
60 m_payload_base.length = 0;
61 m_payload_list.clear();
62- if (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444)
63+ if ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444)
64 {
65 m_app14_data.header = 0xEEFF;//APP14
66 m_app14_data.lenH = 0;
67@@ -287,7 +288,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c
68 m_pps.num_components = 3;
69 else if (fourCC == MFX_FOURCC_NV12 && chromaFormat == MFX_CHROMAFORMAT_YUV400)
70 m_pps.num_components = 1;
71- else if (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444)
72+ else if ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444)
73 m_pps.num_components = 3;
74 else
75 MFX_RETURN(MFX_ERR_UNDEFINED_BEHAVIOR);
76@@ -341,7 +342,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c
77 {
78 // No external tables - use Quality parameter
79 m_dqt_list.resize(0);
80- if (fourCC == MFX_FOURCC_RGB4)
81+ if (fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4)
82 {
83 m_pps.quantiser_table_selector[0] = 0;
84 m_pps.quantiser_table_selector[1] = 0;
85@@ -393,7 +394,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c
86 {
87 m_dht_list.resize(0);
88 }
89- else if (hwCaps->MaxNumHuffTable == 1 || fourCC == MFX_FOURCC_RGB4)
90+ else if (hwCaps->MaxNumHuffTable == 1 || (fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4))
91 {
92 m_dht_list.resize(1);
93
94--
952.40.1
96
diff --git a/recipes-multimedia/onevpl/files/0001-vpl.pc.in-dont-pass-pcfiledir-to-cflags.patch b/recipes-multimedia/onevpl/files/0001-vpl.pc.in-dont-pass-pcfiledir-to-cflags.patch
new file mode 100644
index 00000000..762a4902
--- /dev/null
+++ b/recipes-multimedia/onevpl/files/0001-vpl.pc.in-dont-pass-pcfiledir-to-cflags.patch
@@ -0,0 +1,28 @@
1From 630c32194f53c70f4f654fb3d198790df253ba1f Mon Sep 17 00:00:00 2001
2From: Markus Volk <f_l_k@t-online.de>
3Date: Thu, 15 Jun 2023 13:43:32 +0200
4Subject: [PATCH] vpl.pc.in: dont pass pcfiledir to cflags
5
6Signed-off-by: Markus Volk <f_l_k@t-online.de>
7
8Upstream-Status: Inappropriate [oe specific]
9---
10 libvpl/pkgconfig/vpl.pc.in | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/libvpl/pkgconfig/vpl.pc.in b/libvpl/pkgconfig/vpl.pc.in
14index ab468a9..05c020e 100644
15--- a/libvpl/pkgconfig/vpl.pc.in
16+++ b/libvpl/pkgconfig/vpl.pc.in
17@@ -8,6 +8,6 @@ Description: oneAPI Video Processing Library
18 Version: @API_VERSION_MAJOR@.@API_VERSION_MINOR@
19 URL: https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onevpl.html
20
21-Libs: -L${libdir} -l@OUTPUT_NAME@ @VPL_PKGCONFIG_DEPENDENT_LIBS@
22+Libs: -L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -l@OUTPUT_NAME@ @VPL_PKGCONFIG_DEPENDENT_LIBS@
23 Libs.private: @VPL_PKGCONFIG_PRIVATE_LIBS@
24-Cflags: -I${includedir} -I${includedir}/vpl
25+Cflags: -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@ -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@/vpl
26--
272.40.1
28
diff --git a/recipes-multimedia/onevpl/onevpl-intel-gpu_22.3.2.bb b/recipes-multimedia/onevpl/onevpl-intel-gpu_23.4.3.bb
index 88b9aa37..0b849bf1 100644
--- a/recipes-multimedia/onevpl/onevpl-intel-gpu_22.3.2.bb
+++ b/recipes-multimedia/onevpl/onevpl-intel-gpu_23.4.3.bb
@@ -15,11 +15,15 @@ COMPATIBLE_HOST = '(x86_64).*-linux'
15COMPATIBLE_HOST:x86-x32 = "null" 15COMPATIBLE_HOST:x86-x32 = "null"
16 16
17DEPENDS += "libdrm libva intel-media-driver onevpl pkgconfig-native" 17DEPENDS += "libdrm libva intel-media-driver onevpl pkgconfig-native"
18RDEPENDS:${PN} += "intel-media-driver"
18 19
19SRC_URI = "git://github.com/oneapi-src/oneVPL-intel-gpu.git;protocol=https;branch=intel-onevpl-22.3;lfs=0 \ 20SRC_URI = "git://github.com/oneapi-src/oneVPL-intel-gpu.git;protocol=https;nobranch=1;lfs=0 \
20 " 21 file://0001-ARLH-DID-open-source-6286.patch \
22 file://0001-JPEGe-Enable-BGR4-JPEG-Enc-support-6470.patch \
23 file://0001-Fix-SetBuffersYV12-V-U-plane-offsets-calculation-647.patch \
24 "
21 25
22SRCREV = "0f7e5f41160bb5a48e24f7cec2ced1ef9dd9c5be" 26SRCREV = "852fa9f705ef44c004d014548601f3804a6de705"
23S = "${WORKDIR}/git" 27S = "${WORKDIR}/git"
24 28
25FILES:${PN} += " \ 29FILES:${PN} += " \
diff --git a/recipes-multimedia/onevpl/onevpl/0001-Fix-basename-build-issue-with-musl_libc.patch b/recipes-multimedia/onevpl/onevpl/0001-Fix-basename-build-issue-with-musl_libc.patch
deleted file mode 100644
index 14453279..00000000
--- a/recipes-multimedia/onevpl/onevpl/0001-Fix-basename-build-issue-with-musl_libc.patch
+++ /dev/null
@@ -1,37 +0,0 @@
1From 72ceb46b43a7a74d20ced961aaff9366ccce53a9 Mon Sep 17 00:00:00 2001
2From: "Yew, Chang Ching" <chang.ching.yew@intel.com>
3Date: Mon, 24 Jan 2022 20:49:50 +0800
4Subject: [PATCH 1/5] Fix basename() build issue with musl_libc
5
6Upstream-Status: Submitted
7innersource PR #264
8
9Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com>
10---
11 tools/legacy/sample_common/src/vaapi_utils.cpp | 3 ++-
12 1 file changed, 2 insertions(+), 1 deletion(-)
13
14diff --git a/tools/legacy/sample_common/src/vaapi_utils.cpp b/tools/legacy/sample_common/src/vaapi_utils.cpp
15index 86193d17..db71d413 100644
16--- a/tools/legacy/sample_common/src/vaapi_utils.cpp
17+++ b/tools/legacy/sample_common/src/vaapi_utils.cpp
18@@ -7,6 +7,7 @@
19 #ifdef LIBVA_SUPPORT
20
21 #include "vaapi_utils.h"
22+ #include <libgen.h>
23 #include <dlfcn.h>
24 #include <stdexcept>
25
26@@ -24,7 +25,7 @@ namespace MfxLoader {
27
28 SimpleLoader::SimpleLoader(const char* name) {
29 dlerror();
30- so_handle = dlopen(name, RTLD_GLOBAL | RTLD_NOW);
31+ so_handle = dlopen(basename((char *)name), RTLD_GLOBAL | RTLD_NOW);
32 if (NULL == so_handle) {
33 std::cerr << dlerror() << std::endl;
34 throw std::runtime_error("Can't load library");
35--
362.34.1
37
diff --git a/recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-missing-UYUV-fourcc-enc-input.patch b/recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-missing-UYUV-fourcc-enc-input.patch
deleted file mode 100644
index 70e15a30..00000000
--- a/recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-missing-UYUV-fourcc-enc-input.patch
+++ /dev/null
@@ -1,41 +0,0 @@
1From ff5325a437e625d2007568a71d7f403f16d4c367 Mon Sep 17 00:00:00 2001
2From: "Yew, Chang Ching" <chang.ching.yew@intel.com>
3Date: Thu, 10 Mar 2022 13:06:28 +0800
4Subject: [PATCH] sample_common: Fix missing UYUV fourcc enc input
5
6Fix regression with commit ae3e355
7
8Upstream-Status: Submitted
9innersource PR #383
10
11Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com>
12---
13 tools/legacy/sample_common/src/sample_utils.cpp | 12 ++++++------
14 1 file changed, 6 insertions(+), 6 deletions(-)
15
16diff --git a/tools/legacy/sample_common/src/sample_utils.cpp b/tools/legacy/sample_common/src/sample_utils.cpp
17index 0437dbdb..a8e25631 100644
18--- a/tools/legacy/sample_common/src/sample_utils.cpp
19+++ b/tools/legacy/sample_common/src/sample_utils.cpp
20@@ -114,12 +114,12 @@ mfxStatus CSmplYUVReader::Init(std::list<msdk_string> inputs,
21
22 if (MFX_FOURCC_NV12 != ColorFormat && MFX_FOURCC_YV12 != ColorFormat &&
23 MFX_FOURCC_I420 != ColorFormat && MFX_FOURCC_YUY2 != ColorFormat &&
24- MFX_FOURCC_RGB4 != ColorFormat && MFX_FOURCC_BGR4 != ColorFormat &&
25- MFX_FOURCC_P010 != ColorFormat && MFX_FOURCC_P210 != ColorFormat &&
26- MFX_FOURCC_AYUV != ColorFormat && MFX_FOURCC_A2RGB10 != ColorFormat &&
27- MFX_FOURCC_Y210 != ColorFormat && MFX_FOURCC_Y410 != ColorFormat &&
28- MFX_FOURCC_P016 != ColorFormat && MFX_FOURCC_Y216 != ColorFormat &&
29- MFX_FOURCC_I010 != ColorFormat) {
30+ MFX_FOURCC_UYVY != ColorFormat && MFX_FOURCC_RGB4 != ColorFormat &&
31+ MFX_FOURCC_BGR4 != ColorFormat && MFX_FOURCC_P010 != ColorFormat &&
32+ MFX_FOURCC_P210 != ColorFormat && MFX_FOURCC_AYUV != ColorFormat &&
33+ MFX_FOURCC_A2RGB10 != ColorFormat && MFX_FOURCC_Y210 != ColorFormat &&
34+ MFX_FOURCC_Y410 != ColorFormat && MFX_FOURCC_P016 != ColorFormat &&
35+ MFX_FOURCC_Y216 != ColorFormat && MFX_FOURCC_I010 != ColorFormat) {
36 return MFX_ERR_UNSUPPORTED;
37 }
38
39--
402.17.1
41
diff --git a/recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-regression-of-missing-mutex-init.patch b/recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-regression-of-missing-mutex-init.patch
deleted file mode 100644
index eaf49405..00000000
--- a/recipes-multimedia/onevpl/onevpl/0001-sample_common-Fix-regression-of-missing-mutex-init.patch
+++ /dev/null
@@ -1,48 +0,0 @@
1From f6f9d62817d58909fe9eafa555b1638f165dc746 Mon Sep 17 00:00:00 2001
2From: "Yew, Chang Ching" <chang.ching.yew@intel.com>
3Date: Wed, 2 Mar 2022 07:56:57 +0800
4Subject: [PATCH] sample_common: Fix regression of missing mutex init
5
6Upstream-Status: Submitted
7innersource PR #377
8
9Signed-off-by: Yew, Chang Ching <chang.ching.yew@intel.com>
10---
11 tools/legacy/sample_common/src/vm/thread_linux.cpp | 14 ++++++++++++++
12 1 file changed, 14 insertions(+)
13
14diff --git a/tools/legacy/sample_common/src/vm/thread_linux.cpp b/tools/legacy/sample_common/src/vm/thread_linux.cpp
15index 819d811f..c17ce5bf 100644
16--- a/tools/legacy/sample_common/src/vm/thread_linux.cpp
17+++ b/tools/legacy/sample_common/src/vm/thread_linux.cpp
18@@ -22,6 +22,13 @@ MSDKSemaphore::MSDKSemaphore(mfxStatus& sts, mfxU32 count) : msdkSemaphoreHandle
19 // If pthread_cond_init reports an error m_semaphore was not allocated
20 throw std::bad_alloc();
21 }
22+ res = pthread_mutex_init(&m_mutex, NULL);
23+ if (res) {
24+ if (!pthread_cond_destroy(&m_semaphore)) {
25+ // do nothing
26+ }
27+ throw std::bad_alloc();
28+ }
29 }
30
31 MSDKSemaphore::~MSDKSemaphore(void) {
32@@ -97,6 +104,13 @@ MSDKEvent::MSDKEvent(mfxStatus& sts, bool manual, bool state) : msdkEventHandle(
33 //non-zero means something is wrong, throw bad_alloc
34 throw std::bad_alloc();
35 }
36+ res = pthread_mutex_init(&m_mutex, NULL);
37+ if (res) {
38+ if (!pthread_cond_destroy(&m_event)) {
39+ // do nothing
40+ }
41+ throw std::bad_alloc();
42+ }
43 }
44
45 MSDKEvent::~MSDKEvent(void) {
46--
472.17.1
48
diff --git a/recipes-multimedia/onevpl/onevpl/0001-samples-Addin-wayland-scanner-auto-generate-on-cmake.patch b/recipes-multimedia/onevpl/onevpl/0001-samples-Addin-wayland-scanner-auto-generate-on-cmake.patch
deleted file mode 100644
index 351c707d..00000000
--- a/recipes-multimedia/onevpl/onevpl/0001-samples-Addin-wayland-scanner-auto-generate-on-cmake.patch
+++ /dev/null
@@ -1,88 +0,0 @@
1From 7f428b8d0ca95b43b70663c27b525c5d6f7bf28d Mon Sep 17 00:00:00 2001
2From: "Ung, Teng En" <teng.en.ung@intel.com>
3Date: Tue, 25 Jan 2022 16:36:19 +0800
4Subject: [PATCH 1/3] samples: Addin wayland-scanner auto generate on cmake.
5
6Upstream-Status: Submitted
7innersource PR #269
8---
9 tools/legacy/sample_common/CMakeLists.txt | 22 +++++++++++++++++++
10 tools/legacy/sample_misc/wayland/CMakeLists.txt | 29 +++++++++++++++++++++++++
11 2 files changed, 51 insertions(+)
12
13diff --git a/tools/legacy/sample_common/CMakeLists.txt b/tools/legacy/sample_common/CMakeLists.txt
14index 24245cd..030ffee 100644
15--- a/tools/legacy/sample_common/CMakeLists.txt
16+++ b/tools/legacy/sample_common/CMakeLists.txt
17@@ -103,6 +103,28 @@ if(CMAKE_SYSTEM_NAME MATCHES Linux)
18 target_include_directories(
19 sample_common
20 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../sample_misc/wayland/include)
21+
22+ find_program(WAYLAND_SCANNER_BIN "wayland-scanner")
23+ pkg_check_modules(PKG_WAYLAND_PROTCOLS "wayland-protocols>=1.15")
24+
25+ if(WAYLAND_SCANNER_BIN AND PKG_WAYLAND_PROTCOLS_FOUND)
26+ pkg_get_variable(WAYLAND_PROTOCOLS_PATH wayland-protocols pkgdatadir)
27+ if(WAYLAND_PROTOCOLS_PATH)
28+ find_file(
29+ WAYLAND_LINUX_DMABUF_XML_PATH linux-dmabuf-unstable-v1.xml
30+ PATHS ${WAYLAND_PROTOCOLS_PATH}/unstable/linux-dmabuf
31+ NO_DEFAULT_PATH)
32+ endif()
33+ endif()
34+
35+ if(WAYLAND_LINUX_DMABUF_XML_PATH)
36+ target_compile_definitions(
37+ sample_common PUBLIC WAYLAND_LINUX_DMABUF_SUPPORT)
38+ target_include_directories(
39+ sample_common
40+ PUBLIC ${CMAKE_BINARY_DIR}/tools/legacy/sample_misc/wayland)
41+ endif()
42+
43 else()
44 message(
45 WARNING
46diff --git a/tools/legacy/sample_misc/wayland/CMakeLists.txt b/tools/legacy/sample_misc/wayland/CMakeLists.txt
47index cf91987..a2dffbb 100644
48--- a/tools/legacy/sample_misc/wayland/CMakeLists.txt
49+++ b/tools/legacy/sample_misc/wayland/CMakeLists.txt
50@@ -20,6 +20,35 @@ target_sources(
51 ${CMAKE_CURRENT_SOURCE_DIR}/src/listener_wayland.cpp
52 ${CMAKE_CURRENT_SOURCE_DIR}/src/wayland-drm-protocol.c)
53
54+if(WAYLAND_SCANNER_BIN AND PKG_WAYLAND_PROTCOLS_FOUND AND WAYLAND_LINUX_DMABUF_XML_PATH)
55+ execute_process(
56+ COMMAND "${WAYLAND_SCANNER_BIN_PATH}\/${WAYLAND_SCANNER_BIN}"
57+ "client-header" "${WAYLAND_LINUX_DMABUF_XML_PATH}"
58+ "tools/legacy/sample_misc/wayland/linux-dmabuf-unstable-v1.h"
59+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
60+ RESULT_VARIABLE WAYLAND_SCANNER_RESULT)
61+ if (WAYLAND_SCANNER_RESULT)
62+ message(FATAL_ERROR "Failed to generate linux-dmabuf-unstable-v1.h")
63+ endif()
64+
65+ execute_process(
66+ COMMAND "${WAYLAND_SCANNER_BIN_PATH}\/${WAYLAND_SCANNER_BIN}"
67+ "private-code" "${WAYLAND_LINUX_DMABUF_XML_PATH}"
68+ "tools/legacy/sample_misc/wayland/linux-dmabuf-unstable-v1.c"
69+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
70+ RESULT_VARIABLE WAYLAND_SCANNER_RESULT)
71+ if (WAYLAND_SCANNER_RESULT)
72+ message(FATAL_ERROR "Failed to generate linux-dmabuf-unstable-v1.c")
73+ endif()
74+
75+ target_include_directories(
76+ vpl_wayland PRIVATE ${CMAKE_BINARY_DIR}/tools/legacy/sample_misc/wayland)
77+ target_sources(
78+ vpl_wayland
79+ PRIVATE ${CMAKE_BINARY_DIR}/tools/legacy/sample_misc/wayland/linux-dmabuf-unstable-v1.c)
80+endif()
81+
82+
83 target_link_libraries(vpl_wayland PRIVATE sample_common wayland-client va drm
84 drm_intel)
85
86--
872.7.4
88
diff --git a/recipes-multimedia/onevpl/onevpl/0002-sample_misc-Addin-basic-wayland-dmabuf-support.patch b/recipes-multimedia/onevpl/onevpl/0002-sample_misc-Addin-basic-wayland-dmabuf-support.patch
deleted file mode 100644
index d8a55352..00000000
--- a/recipes-multimedia/onevpl/onevpl/0002-sample_misc-Addin-basic-wayland-dmabuf-support.patch
+++ /dev/null
@@ -1,90 +0,0 @@
1From 047b7865a69e26c9091b22dceceae1b609a3efbc Mon Sep 17 00:00:00 2001
2From: "Ung, Teng En" <teng.en.ung@intel.com>
3Date: Fri, 8 Oct 2021 14:19:40 +0000
4Subject: [PATCH 2/3] sample_misc: Addin basic wayland dmabuf support.
5
6Upstream-Status: Submitted
7innersource PR #269
8
9---
10 tools/legacy/sample_misc/wayland/include/class_wayland.h | 16 ++++++++++++++++
11 tools/legacy/sample_misc/wayland/src/class_wayland.cpp | 8 ++++++++
12 2 files changed, 24 insertions(+)
13
14diff --git a/tools/legacy/sample_misc/wayland/include/class_wayland.h b/tools/legacy/sample_misc/wayland/include/class_wayland.h
15index 29f724f..753b8b1 100644
16--- a/tools/legacy/sample_misc/wayland/include/class_wayland.h
17+++ b/tools/legacy/sample_misc/wayland/include/class_wayland.h
18@@ -19,6 +19,9 @@ extern "C" {
19 #include "sample_defs.h"
20 #include "vpl/mfxstructures.h"
21 #include "wayland-drm-client-protocol.h"
22+#if defined(WAYLAND_LINUX_DMABUF_SUPPORT)
23+ #include "linux-dmabuf-unstable-v1.h"
24+#endif
25
26 typedef struct buffer wld_buffer;
27
28@@ -80,6 +83,11 @@ public:
29 struct wl_drm* GetDrm() {
30 return m_drm;
31 }
32+#if defined(WAYLAND_LINUX_DMABUF_SUPPORT)
33+ struct zwp_linux_dmabuf_v1* GetDMABuf() {
34+ return m_dmabuf;
35+ }
36+#endif
37 struct wl_shm* GetShm() {
38 return m_shm;
39 };
40@@ -107,6 +115,11 @@ public:
41 void SetDrm(struct wl_drm* drm) {
42 m_drm = drm;
43 }
44+#if defined(WAYLAND_LINUX_DMABUF_SUPPORT)
45+ void SetDMABuf(struct zwp_linux_dmabuf_v1* dmabuf) {
46+ m_dmabuf = dmabuf;
47+ }
48+#endif
49 void DrmHandleDevice(const char* device);
50 void DrmHandleAuthenticated();
51 void RegistryGlobal(struct wl_registry* registry,
52@@ -134,6 +147,9 @@ private:
53 struct wl_compositor* m_compositor;
54 struct wl_shell* m_shell;
55 struct wl_drm* m_drm;
56+#if defined(WAYLAND_LINUX_DMABUF_SUPPORT)
57+ struct zwp_linux_dmabuf_v1* m_dmabuf;
58+#endif
59 struct wl_shm* m_shm;
60 struct wl_shm_pool* m_pool;
61 struct wl_surface* m_surface;
62diff --git a/tools/legacy/sample_misc/wayland/src/class_wayland.cpp b/tools/legacy/sample_misc/wayland/src/class_wayland.cpp
63index c5e3359..7eac204 100644
64--- a/tools/legacy/sample_misc/wayland/src/class_wayland.cpp
65+++ b/tools/legacy/sample_misc/wayland/src/class_wayland.cpp
66@@ -37,6 +37,9 @@ Wayland::Wayland()
67 m_compositor(NULL),
68 m_shell(NULL),
69 m_drm(NULL),
70+#if defined(WAYLAND_LINUX_DMABUF_SUPPORT)
71+ m_dmabuf(NULL),
72+#endif
73 m_shm(NULL),
74 m_pool(NULL),
75 m_surface(NULL),
76@@ -347,6 +350,11 @@ void Wayland::RegistryGlobal(struct wl_registry* registry,
77 m_drm = static_cast<wl_drm*>(wl_registry_bind(registry, name, &wl_drm_interface, 2));
78 wl_drm_add_listener(m_drm, &drm_listener, this);
79 }
80+#if defined(WAYLAND_LINUX_DMABUF_SUPPORT)
81+ else if(0 == strcmp(interface, "zwp_linux_dmabuf_v1"))
82+ m_dmabuf = static_cast<zwp_linux_dmabuf_v1*>(
83+ wl_registry_bind(registry, name, &zwp_linux_dmabuf_v1_interface, version));
84+#endif
85 }
86
87 void Wayland::DrmHandleDevice(const char* name) {
88--
892.7.4
90
diff --git a/recipes-multimedia/onevpl/onevpl/0003-sample_misc-use-wayland-dmabuf-to-render-nv12.patch b/recipes-multimedia/onevpl/onevpl/0003-sample_misc-use-wayland-dmabuf-to-render-nv12.patch
deleted file mode 100644
index 50ed3ca7..00000000
--- a/recipes-multimedia/onevpl/onevpl/0003-sample_misc-use-wayland-dmabuf-to-render-nv12.patch
+++ /dev/null
@@ -1,94 +0,0 @@
1From e2b5041b272e0cb8b3c4c9d332b0bbc3dda05e69 Mon Sep 17 00:00:00 2001
2From: "Ung, Teng En" <teng.en.ung@intel.com>
3Date: Fri, 8 Oct 2021 14:38:45 +0000
4Subject: [PATCH 3/3] sample_misc: use wayland dmabuf to render nv12
5
6Upstream-Status: Submitted
7innersource PR #269
8
9---
10 .../sample_misc/wayland/src/class_wayland.cpp | 60 +++++++++++++++++-----
11 1 file changed, 47 insertions(+), 13 deletions(-)
12
13diff --git a/tools/legacy/sample_misc/wayland/src/class_wayland.cpp b/tools/legacy/sample_misc/wayland/src/class_wayland.cpp
14index 7eac204..68fcea4 100644
15--- a/tools/legacy/sample_misc/wayland/src/class_wayland.cpp
16+++ b/tools/legacy/sample_misc/wayland/src/class_wayland.cpp
17@@ -13,6 +13,7 @@
18 #include <iostream>
19 extern "C" {
20 #include <drm.h>
21+#include <drm_fourcc.h>
22 #include <intel_bufmgr.h>
23 #include <xf86drm.h>
24 }
25@@ -292,20 +293,53 @@ struct wl_buffer* Wayland::CreatePrimeBuffer(uint32_t name,
26 int32_t offsets[3],
27 int32_t pitches[3]) {
28 struct wl_buffer* buffer = NULL;
29- if (NULL == m_drm)
30- return NULL;
31
32- buffer = wl_drm_create_prime_buffer(m_drm,
33- name,
34- width,
35- height,
36- format,
37- offsets[0],
38- pitches[0],
39- offsets[1],
40- pitches[1],
41- offsets[2],
42- pitches[2]);
43+#if defined(WAYLAND_LINUX_DMABUF_SUPPORT)
44+ if (format == WL_DRM_FORMAT_NV12) {
45+ if(NULL == m_dmabuf)
46+ return NULL;
47+
48+ struct zwp_linux_buffer_params_v1 *dmabuf_params = NULL;
49+ int i = 0;
50+ uint64_t modifier = I915_FORMAT_MOD_Y_TILED;
51+
52+ dmabuf_params = zwp_linux_dmabuf_v1_create_params(m_dmabuf);
53+ for(i = 0; i < 2; i++) {
54+ zwp_linux_buffer_params_v1_add(dmabuf_params,
55+ name,
56+ i,
57+ offsets[i],
58+ pitches[i],
59+ modifier >> 32,
60+ modifier & 0xffffffff);
61+ }
62+
63+ buffer = zwp_linux_buffer_params_v1_create_immed(dmabuf_params,
64+ width,
65+ height,
66+ format,
67+ 0);
68+
69+ zwp_linux_buffer_params_v1_destroy(dmabuf_params);
70+ } else
71+#endif
72+ {
73+ if(NULL == m_drm)
74+ return NULL;
75+
76+ buffer = wl_drm_create_prime_buffer(m_drm,
77+ name,
78+ width,
79+ height,
80+ format,
81+ offsets[0],
82+ pitches[0],
83+ offsets[1],
84+ pitches[1],
85+ offsets[2],
86+ pitches[2]);
87+ }
88+
89 return buffer;
90 }
91
92--
932.7.4
94
diff --git a/recipes-multimedia/onevpl/onevpl_2022.0.3.bb b/recipes-multimedia/onevpl/onevpl_2023.4.0.bb
index 66be720f..513c7f2c 100644
--- a/recipes-multimedia/onevpl/onevpl_2022.0.3.bb
+++ b/recipes-multimedia/onevpl/onevpl_2023.4.0.bb
@@ -6,17 +6,12 @@ that works across a wide range of accelerators."
6HOMEPAGE = "https://github.com/oneapi-src/oneVPL" 6HOMEPAGE = "https://github.com/oneapi-src/oneVPL"
7LICENSE = "MIT" 7LICENSE = "MIT"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=c18ea6bb4786a26bf4eee88a7424a408 \ 8LIC_FILES_CHKSUM = "file://LICENSE;md5=c18ea6bb4786a26bf4eee88a7424a408 \
9 file://third-party-programs.txt;md5=43ed11c52f754dafaa62e2cfdd2bac13" 9 file://third-party-programs.txt;md5=0e35a23482445dd089b4eabe19103a06"
10 10
11SRC_URI = "git://github.com/oneapi-src/oneVPL.git;protocol=https;branch=master \ 11SRC_URI = "git://github.com/oneapi-src/oneVPL.git;protocol=https;branch=master \
12 file://0001-Fix-basename-build-issue-with-musl_libc.patch \ 12 file://0001-vpl.pc.in-dont-pass-pcfiledir-to-cflags.patch \
13 file://0001-samples-Addin-wayland-scanner-auto-generate-on-cmake.patch \
14 file://0002-sample_misc-Addin-basic-wayland-dmabuf-support.patch \
15 file://0003-sample_misc-use-wayland-dmabuf-to-render-nv12.patch \
16 file://0001-sample_common-Fix-regression-of-missing-mutex-init.patch \
17 file://0001-sample_common-Fix-missing-UYUV-fourcc-enc-input.patch \
18 " 13 "
19SRCREV = "efc259f8b7ee5c334bca1a904a503186038bbbdd" 14SRCREV = "2274efcd3672b43297ef774f332e1fed6781381c"
20S = "${WORKDIR}/git" 15S = "${WORKDIR}/git"
21 16
22inherit cmake 17inherit cmake
@@ -32,14 +27,14 @@ do_install:append() {
32 27
33COMPATIBLE_HOST = '(x86_64).*-linux' 28COMPATIBLE_HOST = '(x86_64).*-linux'
34 29
35PACKAGES += "${PN}-examples" 30PACKAGES =+ "${PN}-examples"
36 31
37FILES:${PN}-examples = "${datadir}/oneVPL/examples \ 32FILES:${PN}-examples = "${datadir}/vpl \
38 " 33 "
39 34
40FILES_SOLIBSDEV = "" 35FILES_SOLIBSDEV = ""
41FILES:${PN}-dev += "${libdir}/libvpl.so" 36FILES:${PN}-dev += "${libdir}/libvpl.so"
42 37
43FILES:${PN} += "${datadir} \ 38FILES:${PN} += " ${datadir}/oneVPL/samples \
44 ${libdir}/oneVPL/libvpl_wayland.so \ 39 ${libdir}/vpl/libvpl_wayland.so \
45 " 40 "
diff --git a/recipes-oneapi/crypto/intel-crypto-mb/0001-crypto-mb-Make-sure-libs-are-installed-correctly.patch b/recipes-oneapi/crypto/intel-crypto-mb/0001-crypto-mb-Make-sure-libs-are-installed-correctly.patch
new file mode 100644
index 00000000..c47c8de5
--- /dev/null
+++ b/recipes-oneapi/crypto/intel-crypto-mb/0001-crypto-mb-Make-sure-libs-are-installed-correctly.patch
@@ -0,0 +1,42 @@
1From 3b7b4eca54aa8d851e37f60c74e4a027fa7b21f2 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anuj.mittal@intel.com>
3Date: Wed, 14 Jun 2023 13:18:45 +0800
4Subject: [PATCH] crypto-mb: Make sure libs are installed correctly
5
6Dont assume that "lib" is always the correct destination. This fixes
7multilib builds when libdir != /usr/lib.
8
9Upstream-Status: Pending
10
11Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
12---
13 sources/ippcp/crypto_mb/src/CMakeLists.txt | 6 +++---
14 1 file changed, 3 insertions(+), 3 deletions(-)
15
16diff --git a/sources/ippcp/crypto_mb/src/CMakeLists.txt b/sources/ippcp/crypto_mb/src/CMakeLists.txt
17index c9cad06..31f52bd 100644
18--- a/sources/ippcp/crypto_mb/src/CMakeLists.txt
19+++ b/sources/ippcp/crypto_mb/src/CMakeLists.txt
20@@ -123,8 +123,8 @@ endif(DYNAMIC_LIB OR MB_STANDALONE)
21 # Installation of the shared library
22 if (MB_STANDALONE) # standalone crypto_mb's cmake run
23 install(TARGETS ${MB_DYN_LIB_TARGET}
24- LIBRARY DESTINATION "lib"
25- RUNTIME DESTINATION "lib"
26+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
27+ RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}
28 PUBLIC_HEADER DESTINATION "include/crypto_mb")
29 elseif (DYNAMIC_LIB) # build from ippcp's cmake
30 install(TARGETS ${MB_DYN_LIB_TARGET}
31@@ -154,7 +154,7 @@ endif()
32 # Static lib installation
33 if(MB_STANDALONE)
34 install(TARGETS ${MB_STATIC_LIB_TARGET}
35- ARCHIVE DESTINATION "lib"
36+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
37 PUBLIC_HEADER DESTINATION "include/crypto_mb")
38 else()
39 install(TARGETS ${MB_STATIC_LIB_TARGET}
40--
412.37.3
42
diff --git a/recipes-oneapi/crypto/intel-crypto-mb_git.bb b/recipes-oneapi/crypto/intel-crypto-mb_2021.11.1.bb
index 0be7b17c..be72fd85 100644
--- a/recipes-oneapi/crypto/intel-crypto-mb_git.bb
+++ b/recipes-oneapi/crypto/intel-crypto-mb_2021.11.1.bb
@@ -8,15 +8,16 @@ LICENSE = "Apache-2.0"
8 8
9LIC_FILES_CHKSUM = "file://../../../LICENSE;md5=e787af283468feca985d6b865d27d95b" 9LIC_FILES_CHKSUM = "file://../../../LICENSE;md5=e787af283468feca985d6b865d27d95b"
10 10
11SRC_URI = " \ 11IPP_BRANCH = "ipp-crypto_${@'_'.join(d.getVar('PV').rsplit('.')[-3:])}"
12 git://github.com/intel/ipp-crypto;protocol=https;branch=develop \ 12
13 file://0001-CMakeLists.txt-exclude-host-system-headers.patch;striplevel=4 \ 13SRC_URI = "git://github.com/intel/ipp-crypto;protocol=https;branch=${IPP_BRANCH} \
14 file://0002-cmake-exclude-Yocto-build-flags.patch;striplevel=4 \ 14 file://0001-CMakeLists.txt-exclude-host-system-headers.patch;striplevel=4 \
15 " 15 file://0002-cmake-exclude-Yocto-build-flags.patch;striplevel=4 \
16SRCREV = "46944bd18e6dbad491ef9b9a3404303ef7680c09" 16 file://0001-crypto-mb-Make-sure-libs-are-installed-correctly.patch;striplevel=4 \
17 "
18SRCREV = "d02611e34328898d16025467d3deeb7d62b6076b"
17 19
18S = "${WORKDIR}/git/sources/ippcp/crypto_mb" 20S = "${WORKDIR}/git/sources/ippcp/crypto_mb"
19PV = "2021.5+git${SRCPV}"
20 21
21DEPENDS = "openssl" 22DEPENDS = "openssl"
22 23
diff --git a/recipes-oneapi/onedpl/onedpl_2021.6.1.bb b/recipes-oneapi/onedpl/onedpl_2022.3.0.bb
index eb8fccc8..d80b64c9 100644
--- a/recipes-oneapi/onedpl/onedpl_2021.6.1.bb
+++ b/recipes-oneapi/onedpl/onedpl_2022.3.0.bb
@@ -7,13 +7,13 @@ HOMEPAGE = "https://github.com/oneapi-src/oneDPL"
7 7
8LICENSE = "Apache-2.0-with-LLVM-exception" 8LICENSE = "Apache-2.0-with-LLVM-exception"
9LIC_FILES_CHKSUM = "file://licensing/LICENSE.txt;md5=2e982d844baa4df1c80de75470e0c5cb \ 9LIC_FILES_CHKSUM = "file://licensing/LICENSE.txt;md5=2e982d844baa4df1c80de75470e0c5cb \
10 file://licensing/third-party-programs.txt;md5=74cbe473c3521af32a92f662c44aa6bd" 10 file://licensing/third-party-programs.txt;md5=cfb8d6b1f04a8fcc7d0dddd817619634"
11 11
12S = "${WORKDIR}/git" 12S = "${WORKDIR}/git"
13 13
14SRC_URI = "git://github.com/oneapi-src/oneDPL.git;protocol=https;branch=release/2021.6 \ 14SRC_URI = "git://github.com/oneapi-src/oneDPL.git;protocol=https;branch=release/2022.3 \
15 " 15 "
16SRCREV = "bfa2cd2fc07ea105a07d4772276e8c15f7530cd4" 16SRCREV = "180f18ad25fbc39fa13bad43f1df7d54ee8f5609"
17 17
18do_compile[noexec] = "1" 18do_compile[noexec] = "1"
19do_configure[noexec] = "1" 19do_configure[noexec] = "1"
diff --git a/recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2022.0.1-3633.bb b/recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2023.0.0-25370.bb
index 81653384..702f794e 100644
--- a/recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2022.0.1-3633.bb
+++ b/recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2023.0.0-25370.bb
@@ -17,3 +17,4 @@ if [ x"$D" = "x" ]; then
17 if [ -x /sbin/ldconfig ]; then /sbin/ldconfig ; fi 17 if [ -x /sbin/ldconfig ]; then /sbin/ldconfig ; fi
18fi 18fi
19} 19}
20BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-support/isa-l/isa-l_2.30.0.bb b/recipes-support/isa-l/isa-l_2.31.0.bb
index 3a4cea14..d5d09002 100644
--- a/recipes-support/isa-l/isa-l_2.30.0.bb
+++ b/recipes-support/isa-l/isa-l_2.31.0.bb
@@ -2,16 +2,18 @@ SUMMARY = "Intelligent Storage Acceleration Library"
2DESCRIPTION = "ISA-L is a collection of optimized low-level functions \ 2DESCRIPTION = "ISA-L is a collection of optimized low-level functions \
3targeting storage applications." 3targeting storage applications."
4LICENSE = "BSD-3-Clause" 4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=e6c7d82ad7dd512687b0991a159a1ca9" 5LIC_FILES_CHKSUM = "file://LICENSE;md5=2476688d0948d4a3f7c69473a603540d"
6SECTION = "lib" 6SECTION = "lib"
7 7
8inherit autotools pkgconfig 8inherit autotools pkgconfig
9 9
10S = "${WORKDIR}/git" 10S = "${WORKDIR}/git"
11SRCREV = "2df39cf5f1b9ccaa2973f6ef273857e4dc46f0cf" 11SRCREV = "bd226375027899087bd48f3e59b910430615cc0a"
12SRC_URI = "git://github.com/intel/isa-l.git;branch=master;protocol=https" 12SRC_URI = "git://github.com/intel/isa-l.git;branch=master;protocol=https"
13 13
14DEPENDS = "nasm-native" 14DEPENDS = "nasm-native"
15AS[unexport] = "1" 15AS[unexport] = "1"
16 16
17TARGET_CC_ARCH += "${LDFLAGS}"
18
17COMPATIBLE_HOST = '(x86_64).*-linux' 19COMPATIBLE_HOST = '(x86_64).*-linux'
diff --git a/recipes-support/jhi/jhi_1.41.bb b/recipes-support/jhi/jhi_1.41.bb
deleted file mode 100644
index bbb30a6d..00000000
--- a/recipes-support/jhi/jhi_1.41.bb
+++ /dev/null
@@ -1,72 +0,0 @@
1SUMMARY = "Intel Dynamic Application Loader (DAL) Host Interface"
2DESCRIPTION = "A daemon and libraries which allow user space applications \
3to install Java applets on DAL FW and communicate with them"
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=833126f14614a3276708a4d7c9734645"
6
7SRC_URI = "git://github.com/intel/dynamic-application-loader-host-interface.git;protocol=https;branch=master"
8
9inherit cmake useradd systemd pkgconfig update-rc.d
10
11SRCREV = "4c9ef52bcd55fa03b30ac323e553a05be858d41e"
12
13S = "${WORKDIR}/git"
14
15DEPENDS += "util-linux libxml2"
16DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
17RDEPENDS:${PN} += "bash"
18
19USERADD_PACKAGES = "${PN}"
20USERADD_PARAM:${PN} = "--system --no-create-home --shell /bin/false -g mei jhi"
21
22GROUPADD_PARAM:${PN} = "-g 880 mei"
23
24COMPATIBLE_HOST:libc-musl = 'null'
25
26SYSTEMD_SERVICE:${PN} = "jhi.service"
27
28INITSCRIPT_PACKAGES = "${PN}"
29INITSCRIPT_NAME:${PN} = "${PN}"
30INITSCRIPT_PARAMS:${PN} = "defaults"
31
32# systemd is the default so they are installed when sysvinit is not selected as INIT_SYSTEM
33EXTRA_OECMAKE = "-DCMAKE_SKIP_RPATH=ON \
34 -DINIT_SYSTEM=${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'SysVinit', 'systemd', d)} \
35 -DAPPLETS_DIR=${libdir}/dal/applets \
36 -DAPP_REPO_DIR=${localstatedir}/cache/dal/applet_repository \
37 "
38
39do_install:append () {
40 install -d ${D}${localstatedir}/cache/dal/applet_repository
41
42 chown -R jhi ${D}${localstatedir}/cache/dal/applet_repository
43 chgrp -R mei ${D}${localstatedir}/cache/dal/applet_repository
44
45 install -d ${D}${bindir}
46 install -m 755 ${B}/bin_linux/smoketest ${D}${bindir}
47 install -m 755 ${B}/bin_linux/bist ${D}${bindir}
48
49 install -d ${D}${libdir}/dal/applets
50 cp -r ${S}/test/smoketest/applets/* ${D}${libdir}/dal/applets/
51}
52
53PACKAGES += "${PN}-test"
54
55FILES:${PN}-dev = ""
56
57FILES:${PN} = "\
58 ${sbindir} \
59 ${sysconfdir} \
60 ${libdir}/lib*${SOLIBSDEV} \
61 ${libdir}/dal/applets/SpoolerApplet.dalp \
62 ${nonarch_libdir}/tmpfiles.d \
63 ${systemd_system_unitdir} \
64 ${localstatedir}/cache/dal/applet_repository \
65 "
66
67FILES:${PN}-test = "\
68 ${bindir} \
69 ${libdir}/dal/applets \
70 "
71
72UPSTREAM_CHECK_COMMITS = "1"
diff --git a/recipes-support/libipt/libipt_2.0.5.bb b/recipes-support/libipt/libipt_2.1.1.bb
index c1f67c1d..205967c1 100644
--- a/recipes-support/libipt/libipt_2.0.5.bb
+++ b/recipes-support/libipt/libipt_2.1.1.bb
@@ -5,19 +5,20 @@ library or it can be partially or fully integrated into your tool."
5HOMEPAGE = "https://github.com/intel/libipt" 5HOMEPAGE = "https://github.com/intel/libipt"
6 6
7LICENSE = "BSD-3-Clause" 7LICENSE = "BSD-3-Clause"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=bc005f06a45e41cdefcb8f5aceb1f5c9" 8LIC_FILES_CHKSUM = "file://LICENSE;md5=a429afa59f273b5d12778eda69d10313"
9 9
10inherit pkgconfig cmake 10inherit pkgconfig cmake
11 11
12S = "${WORKDIR}/git" 12S = "${WORKDIR}/git"
13 13
14SRC_URI = "git://github.com/intel/libipt.git;protocol=https;branch=stable/v2.0" 14SRC_URI = "git://github.com/intel/libipt.git;protocol=https;branch=stable/v2.1"
15 15
16SRCREV = "e315d53984ebe0e40dbb71b213bcf2cba42496f4" 16SRCREV = "1c9bc700f4b9a71fd2d1cf1742de7e2351ddb281"
17 17
18EXTRA_OECMAKE += " \ 18EXTRA_OECMAKE += " \
19 -DPTDUMP=ON \ 19 -DPTDUMP=ON \
20 -DPTTC=ON \ 20 -DPTTC=ON \
21 -DPTSEG=ON \
21 -DCMAKE_SKIP_RPATH=ON \ 22 -DCMAKE_SKIP_RPATH=ON \
22 " 23 "
23 24
diff --git a/recipes-support/sbsigntool/sbsigntool-native_git.bb b/recipes-support/sbsigntool/sbsigntool-native_git.bb
index a45a3dea..5a9f5b4d 100644
--- a/recipes-support/sbsigntool/sbsigntool-native_git.bb
+++ b/recipes-support/sbsigntool/sbsigntool-native_git.bb
@@ -22,16 +22,15 @@ LIC_FILES_CHKSUM = "file://LICENSE.GPLv3;md5=9eef91148a9b14ec7f9df333daebc746 \
22SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git;protocol=https;name=sbsigntools;branch=master \ 22SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git;protocol=https;name=sbsigntools;branch=master \
23 git://github.com/rustyrussell/ccan.git;protocol=https;destsuffix=git/lib/ccan.git;name=ccan;branch=master \ 23 git://github.com/rustyrussell/ccan.git;protocol=https;destsuffix=git/lib/ccan.git;name=ccan;branch=master \
24 file://0001-configure-Fixup-build-dependencies-for-cross-compili.patch \ 24 file://0001-configure-Fixup-build-dependencies-for-cross-compili.patch \
25 file://0002-fix-openssl-3-0.patch \ 25 "
26 "
27 26
28SRCREV_sbsigntools ?= "f12484869c9590682ac3253d583bf59b890bb826" 27SRCREV_sbsigntools ?= "9cfca9fe7aa7a8e29b92fe33ce8433e212c9a8ba"
29SRCREV_ccan ?= "b1f28e17227f2320d07fe052a8a48942fe17caa5" 28SRCREV_ccan ?= "b1f28e17227f2320d07fe052a8a48942fe17caa5"
30SRCREV_FORMAT = "sbsigntools_ccan" 29SRCREV_FORMAT = "sbsigntools_ccan"
31 30
32DEPENDS = "binutils-native gnu-efi-native help2man-native openssl-native util-linux-native" 31DEPENDS = "binutils-native gnu-efi-native help2man-native openssl-native util-linux-native"
33 32
34PV = "0.9.4-git${SRCPV}" 33PV = "0.9.5"
35 34
36S = "${WORKDIR}/git" 35S = "${WORKDIR}/git"
37 36
diff --git a/recipes-support/sbsigntool/sbsigntool/0001-configure-Fixup-build-dependencies-for-cross-compili.patch b/recipes-support/sbsigntool/sbsigntool/0001-configure-Fixup-build-dependencies-for-cross-compili.patch
index ef686511..ea7bee29 100644
--- a/recipes-support/sbsigntool/sbsigntool/0001-configure-Fixup-build-dependencies-for-cross-compili.patch
+++ b/recipes-support/sbsigntool/sbsigntool/0001-configure-Fixup-build-dependencies-for-cross-compili.patch
@@ -10,7 +10,7 @@ under /usr/include and /usr/lib.
10Prepend these paths with a placeholder that can be replaced with the 10Prepend these paths with a placeholder that can be replaced with the
11actual paths once they are resolved. 11actual paths once they are resolved.
12 12
13Upstream status: inappropriate [OE specific] 13Upstream-Status: Inappropriate [OE specific]
14 14
15Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com> 15Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
16 16
diff --git a/recipes-support/sbsigntool/sbsigntool/0002-fix-openssl-3-0.patch b/recipes-support/sbsigntool/sbsigntool/0002-fix-openssl-3-0.patch
deleted file mode 100644
index 8a277947..00000000
--- a/recipes-support/sbsigntool/sbsigntool/0002-fix-openssl-3-0.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1Use ASN1_ITEM_rptr() instead of taking the address of IDC_PEID_it.
2
3openssl-3.0 changed the type of TYPE_it from `const ASN1_ITEM TYPE_it` to
4`const ASN1_ITEM *TYPE_it(void)`. This was previously hidden behind
5OPENSSL_EXPORT_VAR_AS_FUNCTION but in 3.0 only the function version is
6available. This change should have been transparent to the application, but
7only if the `ASN1_ITEM_rptr()` macro is used.
8
9This change passes `make check` with both openssl 1.1 and 3.0.
10
11Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
12Upstream-status: Submited [https://groups.io/g/sbsigntools/topic/patch_fix_openssl_3_0_issue/85903418]
13---
14 src/idc.c | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/src/idc.c b/src/idc.c
18index 6d87bd4..0a82218 100644
19--- a/src/idc.c
20+++ b/src/idc.c
21@@ -189,7 +189,7 @@ int IDC_set(PKCS7 *p7, PKCS7_SIGNER_INFO *si, struct image *image)
22
23 idc->data->type = OBJ_nid2obj(peid_nid);
24 idc->data->value = ASN1_TYPE_new();
25- type_set_sequence(image, idc->data->value, peid, &IDC_PEID_it);
26+ type_set_sequence(image, idc->data->value, peid, ASN1_ITEM_rptr(IDC_PEID));
27
28 idc->digest->alg->parameter = ASN1_TYPE_new();
29 idc->digest->alg->algorithm = OBJ_nid2obj(NID_sha256);
30--
312.25.1
32