diff options
230 files changed, 6391 insertions, 4392 deletions
diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index a99cbb1f..00000000 --- a/CHANGELOG +++ /dev/null @@ -1,87 +0,0 @@ -This file will only list major changes that occur within a release. -For a full list of changes, view the git log of the repository. - -Rocko Release 11/2017 -===================== - -Moved qat support to separate layer ------------------------------------ -Quick Assist Technology (QAT) is more middleware and should not be part of the -core BSP. The new layer can be found here: -https://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-qat/ - -Moved dpdk support to separate layer ------------------------------------- -We had some requests to make DPDK standalone so that it could be included -without bringing in anything else from meta-intel, as it is not specific to -Intel(R) hardware. The new layer is located here: -https://git.yoctoproject.org/cgit/cgit.cgi/meta-dpdk/ - -Added support for out-of-tree iwlwifi drivers ---------------------------------------------- -Backport-iwlwifi out-of-tree wifi modules are now available via meta-intel. -Backport-iwlwifi brings the latest iwlwifi drivers to almost any kernel -Note that mac80211 and cfg80211 backports are also necessary, which will most -likely cause incompatibility with other in-tree wifi drivers. -See https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi for more info. - -Added support for out-of-tree ixgbe drivers -------------------------------------------- -The out-of-tree ixgbe drivers bring ixgbe support to nearly any kernel. See -here: http://www.intel.com/network/connectivity/products/server_adapters.htm - -Added an implementation of Secure Boot --------------------------------------- -meta-intel now supports a simple Secure Boot implementation. This implementation -consists of a single binary consisting of an EFI stub, the kernel, an -initrd, and a kernel command line. The binary is then signed via keys defined by -the variables SECUREBOOT_SIGNING_KEY and SECUREBOOT_SIGNING_CERT. These keys -should match the keys embedded in your hardware's firmware. -See documentation/secureboot/README for more information on this feature. - -Improved Yocto Project Compatibility status -------------------------------------------- -The common layer should now be considered Yocto Project compatible - it should -no longer modify OE-core values when adding the layer to your bblayers.conf. -The meta-tlk layer is still not Yocto Project compatible, however. - -Pyro Release 5/2017 -=================== - -Changed default kernel provider from linux-yocto to linux-intel. ----------------------------------------------------------------- -Linux-intel is an Intel(R)-maintained kernel based on the latest stable -branch, along with backports from upstream to better support Intel(R) -hardware. The intel-linux kernel also has a branch with the preempt-rt -patches applied, providing a preempt-rt kernel with no additional work. - -Added QEMU support. -------------------- -We now build several virtio drivers into the kernel by default, and -have qemuboot.conf files for intel-corei7-64 and intel-core2-32 -targets. This allows one to do basic testing on meta-intel images -without having to use hardware. The virtio drivers are added via -KERNEL_FEATURES_INTEL_COMMON. This prevents them from being added to -custom kernels by default. They can be removed by adding the -following to a conf or kernel bbappend file: - KERNEL_FEATURES_INTEL_COMMON_remove = “cfg/virtio.scc” -OVMF firmware is also built and can be used in order to emulate a UEFI -environment. A full runqemu command line for intel-corei7-64 could look -like this: - runqemu core-image-minimal intel-corei7-64 wic ovmf - -Musl support ------------- -Meta-intel is now compatible with the musl C library. You can specify musl -As your C library by adding the following to your local.conf: - TCLIBC = “musl” -Note: there is a known failure with DPDK. - -X32 support ------------ -The meta-intel layer can now build with the x32 tune settings in a multi-lib -setting, it will not work in as the primary MACHINE tune as the bootloader needs -to be built as a 64bit binary. The setup for this would be as follows: - require conf/multilib.conf - MULTILIBS = "multilib:libx32 - 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 @@ -This file contains a list of BSP maintainers for the BSPs contained in -the meta-intel repository. - -The purpose of this file is to provide contact information for -specific BSPs and other code contained within meta-intel. You should -address questions and patches for a particular BSP or other code to -the appropriate maintainer listed in this file, cc'ing the meta-intel -mailing list. This ensures that your question or patch will be -addressed by the appropriate person, and that it will be seen by other -users who may be facing similar problems or questions. - -Please see the top-level README file for guidelines relating to the -details of submitting patches, reporting problems, or asking questions -about any of the BSPs or other recipes contained within meta-intel. - -Descriptions of section entries: - - M: Mail patches to: FullName <address@domain> - F: Files and directories with wildcard patterns. - A trailing slash includes all files and subdirectory files. - F: common/ all files in and below common - F: common/* all files in common, but not below - One pattern per line. Multiple F: lines acceptable. - -Please keep this list in alphabetical order. - -Maintainers List (try to look for most precise areas first) - - ----------------------------------- - -M: Anuj Mittal <anuj.mittal@intel.com> -F: * diff --git a/README b/README deleted file mode 100644 index fef16673..00000000 --- a/README +++ /dev/null @@ -1,432 +0,0 @@ -meta-intel -========== - -This README file contains information on building and booting -meta-intel BSP layers. Please see the corresponding sections below -for details. - - -Yocto Project Compatible -======================== - -The BSPs contained in this layer are compatible with the Yocto Project -as per the requirements listed here: - - https://www.yoctoproject.org/webform/yocto-project-compatible-registration - - -Dependencies -============ - -This layer depends on: - - URI: git://git.openembedded.org/bitbake - - URI: git://git.openembedded.org/openembedded-core - layers: meta - branch: master - - -Table of Contents -================= - - I. Overview - II. Building and booting meta-intel BSP layers - a. Building the intel-common BSP layers - b. Booting the intel-common BSP images - III. Technical Miscellany - Benefits of using meta-intel - The intel-common kernel package architecture - Intel-specific machine features - IV. Tested Hardware - V. Guidelines for submitting patches - - -I. Overview -=========== - -This is the location for Intel-maintained BSPs. - -For details on the intel-common, see the information below. - -For all others, please see the README files contained in the -individual BSP layers for BSP-specific information. - -If you have problems with or questions about a particular BSP, please -contact the maintainer listed in the MAINTAINERS file directly (cc:ing -the Yocto mailing list puts it in the archive and helps other people -who might have the same questions in the future), but please try to do -the following first: - - - look in the Yocto Project Bugzilla - (http://bugzilla.yoctoproject.org/) to see if a problem has - already been reported - - - look through recent entries of the meta-intel - (https://lists.yoctoproject.org/pipermail/meta-intel/) and Yocto - (https://lists.yoctoproject.org/pipermail/yocto/) mailing list - archives to see if other people have run into similar problems or - had similar questions answered. - -If you believe you have encountered a bug, you can open a new bug and -enter the details in the Yocto Project Bugzilla -(http://bugzilla.yoctoproject.org/). If you're relatively certain -that it's a bug against the BSP itself, please use the 'Yocto Project -Components: BSPs | meta-intel' category for the bug; otherwise, please -submit the bug against the most likely category for the problem - if -you're wrong, it's not a big deal and the bug will be recategorized -upon triage. - - -II. Building and booting meta-intel BSP layers -============================================== - -The following sections contain information on building and booting the -BSPs contained in the meta-intel layer. - -Note that these instructions specifically cover the intel-common, which -may or may not be applicable to other BSPs contained in this layer - if -a given BSP contains its own README, that version should be used instead, -and these instructions can be ignored. - -a. Building the intel-common BSP layers -------------------------------------------------- - -In order to build an image with BSP support for a given release, you -need to download the corresponding BSP tarball from the 'Board Support -Package (BSP) Downloads' page of the Yocto Project website (or -equivalently, check out the appropriate branch from the meta-intel git -repository, see below). For the intel-common BSPs, those tarballs would -correspond to the following choices in the BSP downloads section: - - - Intel-core2-32 Intel® Common Core BSP (Intel-core2-32) - - Intel-corei7-64 Intel® Common Core BSP (Intel-corei7-64) - -The intel-* BSPs, also known as the intel-common BSPs, provide a few -carefully selected tune options and generic hardware support to cover -the majority of current Intel CPUs and devices. The naming follows the -convention of intel-<TUNE>-<BITS>, where TUNE is the gcc cpu-type -(used with mtune and march typically) and BITS is either 32 bit or 64 -bit. - -Having done that, and assuming you extracted the BSP tarball contents -at the top-level of your yocto build tree, you can build a BSP image -by adding the location of the meta-intel layer to bblayers.conf e.g.: - - yocto/meta-intel \ - -To enable a particular machine, you need to add a MACHINE line naming -the BSP to the local.conf file: - - MACHINE ?= "xxx" - -where 'xxx' is replaced by one of the following BSP names: - - - intel-core2-32 - - This BSP is optimized for the Core2 family of CPUs as well as all - Atom CPUs prior to the Silvermont core. - - - intel-corei7-64 - - This BSP is optimized for Nehalem and later Core and Xeon CPUs as - well as Silvermont and later Atom CPUs, such as the Baytrail SoCs. - -You should then be able to build an image as such: - - $ source oe-init-build-env - $ bitbake core-image-sato - -At the end of a successful build, you should have an image that -you can boot from a USB flash drive (see instructions on how to do -that below, in the section 'Booting the intel-common BSP images'). - -As an alternative to downloading the BSP tarball, you can also work -directly from the meta-intel git repository. For each BSP in the -'meta-intel' repository, there are multiple branches, one -corresponding to each major release starting with 'laverne' (0.90), in -addition to the latest code which tracks the current master (note that -not all BSPs are present in every release). Instead of extracting -a BSP tarball at the top level of your yocto build tree, you can -equivalently check out the appropriate branch from the meta-intel -repository at the same location. - -b. Booting the intel-common BSP images --------------------------------------- - -If you've built your own image, either from the downloaded BSP layer -or from the meta-intel git repository, you'll find the bootable -image in the build/tmp/deploy/images/xxx directory, where again -'xxx' refers to the machine name used in the build. - -Under Linux, insert a USB flash drive. Assuming the USB flash drive -takes device /dev/sdf, use dd to copy the image to it. Before the image -can be burned onto a USB drive, it should be un-mounted. Some Linux distros -may automatically mount a USB drive when it is plugged in. Using USB device -/dev/sdf as an example, find all mounted partitions: - - $ mount | grep sdf - -and un-mount those that are mounted, for example: - - $ umount /dev/sdf1 - $ umount /dev/sdf2 - -Now burn the image onto the USB drive: - - $ sudo dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf status=progress - $ sync - $ eject /dev/sdf - -This should give you a bootable USB flash device. Insert the device -into a bootable USB socket on the target, and power on. This should -result in a system booted to the Sato graphical desktop. - -If you want a terminal, use the arrows at the top of the UI to move to -different pages of available applications, one of which is named -'Terminal'. Clicking that should give you a root terminal. - -If you want to ssh into the system, you can use the root terminal to -ifconfig the IP address and use that to ssh in. The root password is -empty, so to log in type 'root' for the user name and hit 'Enter' at -the Password prompt: and you should be in. - -If you find you're getting corrupt images on the USB (it doesn't show -the syslinux boot: prompt, or the boot: prompt contains strange -characters), try doing this first: - - $ dd if=/dev/zero of=/dev/sdf bs=1M count=512 - -III. Technical Miscellany -========================= - -Benefits of using meta-intel ----------------------------- - -Using meta-intel has the following benefits over a generic BSP: - -tune flags -++++++++++ -intel-* MACHINEs each have different compilation flags appropriate for their -targeted hardware sets. intel-corei7-64 has tune flags appropriate for modern -64-bit Intel Core i microarchitecture, and includes instruction sets up to -SSE4.2. intel-core2-32 has tune flags appropriate for legacy 32-bit Intel Core2 -microarchitecture, and includes instruction sets up to SSE3. - -linux-intel kernel -++++++++++++++++++ -The linux-intel kernel is an initiative to bring better Intel(R) hardware -support to the current LTS linux kernel. It contains a base LTS kernel with -additional backports from upstream Intel drivers. In addition, a default kernel -config containing most features found on Intel boards is supplied via the -yocto-kernel-cache. - -graphics stack -++++++++++++++ -Meta-intel provides the latest Intel Graphics Linux Stack drivers to support -Intel hardware as defined by the https://01.org/linuxgraphics. - -Other software -++++++++++++++ - * intel ucode - provides the latest microcode updates for Intel processors - - * thermald - which proactively controls thermal, using P-states, T-states, and -the Intel power clamp driver. -(https://01.org/linux-thermal-daemon/documentation/introduction-thermal-daemon) - -The intel-common kernel package architecture --------------------------------------------- - -These BSPs use what we call the intel-common Linux kernel package -architecture. This includes core2-32-intel-common and -corei7-64-intel-common. These kernel packages can also be used by any -of the BSPs in meta-intel that choose to include the -intel-common-pkgarch.inc file. - -To minimize the proliferation of vendor trees, reduce the sources we -must support, and consolidate QA efforts, all BSP maintainers are -encouraged to make use of the intel-common Linux kernel package -architecture. - -Intel-specific machine features -------------------------------- - -The meta-intel layer makes some additional machine features available -to BSPs. These machine features can be used in a BSP layer in the -same way that machine features are used in other layers based on -oe-core, via the MACHINE_FEATURES variable. - -Requirements -++++++++++++ - -The meta-intel-specific machine features are only available to a BSP -when the meta-intel layer is included in the build configuration, and -the meta-intel.inc file is included in the machine configuration of -that BSP. - -To make these features available for your machine, you will need to: - - 1. include a configuration line such as the below in bblayers.conf - BBLAYERS += "<local path>/meta-intel" - 2. include the following line in the machine configuration file - require conf/machine/include/meta-intel.inc - -Once the above requirements are met, the machine features provided by -the meta-intel layer will be available for the BSP to use. - -Available machine features -++++++++++++++++++++++++++ - -Currently, the meta-intel layer makes the following set of -Intel-specific machine features available: - - * intel-ucode - -These machine features can be included by listing them in the -MACHINE_FEATURES variable in the machine configuration file. For -example: - - MACHINE_FEATURES += "intel-ucode" - -Machine feature details -+++++++++++++++++++++++ - - * intel-ucode - - This feature provides support for microcode updates to Intel - processors. The intel-ucode feature runs at early boot and uses - the microcode data file added by the feature into the BSP's - initrd. It also puts the userland microcode-updating tool, - iucode_tool, into the target images along with the microcode data - file. - - Q. Why might a user want to enable the intel-ucode feature? - - A. Intel releases microcode updates to correct processor behavior - as documented in the respective processor specification - updates. While the normal approach to getting such microcode - updates is via a BIOS upgrade, this can be an administrative - hassle and not always possible in the field. The intel-ucode - feature enables the microcode update capability present in the - Linux kernel. It provides an easy path for upgrading processor - microcode without the need to change the BIOS. If the feature - is enabled, it is also possible to update the existing target - images with a newer microcode update in the future. - - Q. How would a user bundle only target-specific microcode in the - target image? - - A. The Intel microcode data file released by Intel contains - microcode updates for multiple processors. If the BSP image is - meant to run on only a certain subset of processor types, a - processor-specific subset of microcode can be bundled into the - target image via the UCODE_FILTER_PARAMETERS variable. This - works by listing a sequence of iucode-tool parameters in the - UCODE_FILTER_PARAMETERS variable, which in this case will - select only the specific microcode relevant to the BSP. For - more information on the underlying parameters refer to the - iucode-tool manual page at http://manned.org/iucode-tool - - To define a set of parameters for microcode-filtering via the - UCODE_FILTER_PARAMETERS variable, one needs to identify the - cpuid signatures of all the processors the BSP is meant to run - on. One way to determine the cpuid signature for a specific - processor is to build and run an intel-ucode-feature-enabled - image on the target hardware, without first assigning any value - to the UCODE_FILTER_PARAMETERS variable, and then once the - image is booted, run the "ucode_tool -S" command to have the - ucode tool scan the system for processor signatures. These - signatures can then be used in the UCODE_FILTER_PARAMETERS - variable in conjunction with -s parameter. For example, for - the fri2 BSP, the cpuid can be determined as such: - - [root@fri2 ~]# iucode_tool -S - iucode_tool: system has processor(s) with signature 0x00020661 - - Given that output, a suitable UCODE_FILTER_PARAMETERS variable - definition could be specified in the machine configuration as - such: - - UCODE_FILTER_PARAMETERS = "-s 0x00020661" - - Q. Are there any reasons a user might want to disable the - intel-ucode feature? - - A. The microcode data file and associated tools occupy a small - amount of space (a few KB) on the target image. BSPs which are - highly sensitive to target image size and which are not - experiencing microcode-related issues might consider not - enabling this feature. - - -IV. Tested Hardware -=================== - -The following undergo regular basic testing with their respective MACHINE types. -Note that both 64-bit and 32-bit firmware is available for the MinnowBoard -Turbot, so it is tested against both intel-corei7-64 and intel-core2-32. - -intel-corei7-64: - NUC6i5SYH - NUC7i7BNH - Coffee Lake-H - -intel-core2-32: - MinnowBoard Turbot - - -V. Guidelines for submitting patches -==================================== - -Please submit any patches against meta-intel BSPs to the meta-intel -mailing list (meta-intel@yoctoproject.org). Also, if your patches are -available via a public git repository, please also include a URL to -the repo and branch containing your patches as that makes it easier -for maintainers to grab and test your patches. - -There are patch submission scripts available that will, among other -things, automatically include the repo URL and branch as mentioned. -Please see the Yocto Project Development Manual sections entitled -'Using Scripts to Push a Change Upstream and Request a Pull' and -'Using Email to Submit a Patch' for details. - -Regardless of how you submit a patch or patchset, the patches should -at minimum follow the suggestions outlined in the 'Submitting a Change -to the Yocto Project' section in the Yocto Project Development Manual. -Specifically, they should: - - - Include a 'Signed-off-by:' line. A commit can't legally be pulled - in without this. - - - Provide a single-line, short summary of the change. This short - description should be prefixed by the BSP or recipe name, as - appropriate, followed by a colon. Capitalize the first character - of the summary (following the colon). - - - For the body of the commit message, provide detailed information - that describes what you changed, why you made the change, and the - approach you used. - - - If the change addresses a specific bug or issue that is associated - with a bug-tracking ID, include a reference to that ID in your - detailed description in the following format: [YOCTO #<bug-id>]. - - - Pay attention to line length - please don't allow any particular - line in the commit message to stretch past 72 characters. - - - For any non-trivial patch, provide information about how you - tested the patch, and for any non-trivial or non-obvious testing - setup, provide details of that setup. - -Doing a quick 'git log' in meta-intel will provide you with many -examples of good example commits if you have questions about any -aspect of the preferred format. - -The meta-intel maintainers will do their best to review and/or pull in -a patch or patchset within 24 hours of the time it was posted. For -larger and/or more involved patches and patchsets, the review process -may take longer. - -Please see the meta-intel/MAINTAINERS file for the list of maintainers -and their specific areas; it's also a good idea to cc: the specific -maintainer, 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 @@ +# meta-intel + +OpenEmbedded/Yocto BSP layer for Intel platforms. + +## Dependencies + +This layer primarily depends on OpenEmbedded-Core (OE-Core). However, certain +recipes may require additional layers to support optional features or +programming languages not supported by OE-Core. Such recipes are located within +the `dynamic-layers` directory. + +Base dependencies: +- [Bitbake](https://git.openembedded.org/bitbake) +- [OE-Core](https://git.openembedded.org/openembedded-core) + +Dynamic additional dependencies: + +- [meta-openembedded](https://git.openembedded.org/meta-openembedded/tree/meta-oe) +- [meta-python](https://git.openembedded.org/meta-openembedded/tree/meta-python) +- [meta-clang](https://github.com/kraj/meta-clang.git) + + +## Contents + +- [Building and booting meta-intel BSP layers](documentation/building_and_booting.md) +- [Intel oneAPI DPC++/C++ Compiler](documentation/dpcpp-compiler.md) +- [Tested Hardware](documentation/tested_hardware.md) +- [Guidelines for submitting patches](documentation/submitting_patches.md) +- [Reporting bugs](documentation/reporting_bugs.md) +- [Reporting security bugs](SECURITY.md) + +## Maintainers + +- Anuj Mittal <anuj.mittal@intel.com> + diff --git a/README.sources b/README.sources deleted file mode 100644 index 9b483ee0..00000000 --- a/README.sources +++ /dev/null @@ -1,17 +0,0 @@ -The sources for the packages comprising the images shipped with this -BSP can be found at the following location: - -http://downloads.yoctoproject.org/mirror/sources/ - -The metadata used to generate the images shipped with this BSP, in -addition to the code contained in this BSP, can be found at the -following location: - -http://downloads.yoctoproject.org/releases/yocto/yocto-2.7/poky-warrior-21.0.0.tar.bz2 - -The metadata used to generate the images shipped with this BSP, in -addition to the code contained in this BSP, can also be found at the -following locations: - -git://git.yoctoproject.org/poky.git -git://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 @@ +# Security Policy +Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation. + +## Reporting a Vulnerability +Please 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). + diff --git a/classes/uefi-comboapp.bbclass b/classes/uefi-comboapp.bbclass index 4ecc5535..a05e0ca0 100644 --- a/classes/uefi-comboapp.bbclass +++ b/classes/uefi-comboapp.bbclass @@ -4,8 +4,8 @@ # it with the efi stub obtained from systemd-boot. # Don't add syslinux or build an ISO -PCBIOS_forcevariable = "0" -NOISO_forcevariable = "1" +PCBIOS:forcevariable = "0" +NOISO:forcevariable = "1" # image-live.bbclass will default INITRD_LIVE to the image INITRD_IMAGE creates. # We want behavior to be consistent whether or not "live" is in IMAGE_FSTYPES, so @@ -138,7 +138,7 @@ build_efi_cfg() { : } -populate_kernel_append() { +populate_kernel:append() { # The kernel and initrd are built into the app, so we don't need these if [ -f $dest/initrd ]; then rm $dest/initrd diff --git a/conf/include/maintainers.inc b/conf/include/maintainers.inc index 99ddec24..9849d0d8 100644 --- a/conf/include/maintainers.inc +++ b/conf/include/maintainers.inc @@ -1,21 +1,54 @@ # This file contains a list of recipe maintainers for meta-intel -RECIPE_MAINTAINER_pn-core-image-rt = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-core-image-rt-sdk = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-gma500-gfx-check = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-gmmlib = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-intel-gpu-tools = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-intel-media-driver = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-intel-mediasdk = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-intel-microcode = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-core-image-minimal-initramfs = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-iucode-tool = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-intel-vaapi-driver = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-libyami = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-libyami-utils = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-linux-intel = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-linux-intel-rt = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-thermald = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-xf86-video-ast = "Anuj Mittal <anuj.mittal@intel.com>" -RECIPE_MAINTAINER_pn-mkl-dnn = "Ankit Navik <ankit.tarot@gmail.com>" -RECIPE_MAINTAINER_pn-metrics-discovery = "Ankit Navik <ankit.tarot@gmail.com>" +RECIPE_MAINTAINER:pn-backport-iwlwifi = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-core-image-rt = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-core-image-rt-sdk = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-core-image-tiny = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-core-image-minimal-initramfs = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-embree = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-gmmlib = "Lim Siew Hoon <siew.hoon.lim@intel.com>" +RECIPE_MAINTAINER:pn-hdcp = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-intel-cmt-cat = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-intel-compute-runtime = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-intel-crypto-mb = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-intel-graphics-compiler = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-intel-media-driver = "Lim Siew Hoon <siew.hoon.lim@intel.com>" +RECIPE_MAINTAINER:pn-intel-mediasdk = "Lim Siew Hoon <siew.hoon.lim@intel.com>" +RECIPE_MAINTAINER:pn-intel-microcode = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-intel-vaapi-driver = "Lim Siew Hoon <siew.hoon.lim@intel.com>" +RECIPE_MAINTAINER:pn-ipmctl = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-isa-l = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-ispc = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-itt = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-ixgbe = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-ixgbevf = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-iucode-tool = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-level-zero = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-libipt = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-libva-intel = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-libva-intel-utils = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-libxcam = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-linux-intel = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-linux-intel-rt = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-linux-intel-dev = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-lms = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-metee = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-metrics-discovery = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-oidn = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-onednn = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-onedpl = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-onevpl = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-onevpl-intel-gpu = "Yew Chang Ching <chang.ching.yew@intel.com>" +RECIPE_MAINTAINER:pn-open-model-zoo = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-opencl-clang = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-openvino-inference-engine = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-openvino-model-optimizer = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-openvkl = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-ospray = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-ovmf-shell-image-enrollkeys = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-rkcommon = "Naveen Saini <naveen.kumar.saini@intel.com>" +RECIPE_MAINTAINER:pn-sbsigntool-native = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-secureboot-selftest-image-signed = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-secureboot-selftest-image-unsigned = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-thermald = "Anuj Mittal <anuj.mittal@intel.com>" +RECIPE_MAINTAINER:pn-xf86-video-ast = "Anuj Mittal <anuj.mittal@intel.com>" diff --git a/conf/layer.conf b/conf/layer.conf index 0db08957..97dfb897 100644 --- a/conf/layer.conf +++ b/conf/layer.conf @@ -10,24 +10,36 @@ BBFILE_PATTERN_intel := "^${LAYERDIR}/" BBFILE_PRIORITY_intel = "5" # Additional license directories. -LICENSE_PATH += "${LAYERDIR}/custom-licenses" +CUSTOM_LICENSES_PATH = "${LAYERDIR}/custom-licenses" +LICENSE_PATH += "${CUSTOM_LICENSES_PATH}" LAYERDEPENDS_intel = "core" -LAYERRECOMMENDS_intel = "dpdk intel-qat" +LAYERRECOMMENDS_intel = "dpdk" # This should only be incremented on significant changes that will # cause compatibility issues with other layers LAYERVERSION_intel = "5" -LAYERSERIES_COMPAT_intel = "thud warrior" +LAYERSERIES_COMPAT_intel = "kirkstone scarthgap" BBFILES_DYNAMIC += " \ clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bb \ clang-layer:${LAYERDIR}/dynamic-layers/clang-layer/*/*/*.bbappend \ -" - -BBFILES_DYNAMIC += " \ openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bb \ openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/*/*/*.bbappend \ + meta-python:${LAYERDIR}/dynamic-layers/meta-python/*/*/*.bb \ + meta-python:${LAYERDIR}/dynamic-layers/meta-python/*/*/*.bbappend \ " require ${LAYERDIR}/conf/include/maintainers.inc + +# Use the libva from OE-Core when layer is included but no MACHINE +# from meta-intel is being used. +PREFERRED_PROVIDER_libva ?= "libva" +PREFERRED_PROVIDER_libva-native ?= "libva-native" +PREFERRED_PROVIDER_nativesdk-libva ?= "nativesdk-libva" + +PREFERRED_PROVIDER_libva-utils ?= "libva-utils" +PREFERRED_PROVIDER_libva-utils-native ?= "libva-utils-native" +PREFERRED_PROVIDER_nativesdk-libva-utils ?= "nativesdk-libva-utils" + +# addpylib ${LAYERDIR}/lib oeqa diff --git a/conf/machine/include/intel-common-pkgarch.inc b/conf/machine/include/intel-common-pkgarch.inc index d0f208bd..94d77e06 100644 --- a/conf/machine/include/intel-common-pkgarch.inc +++ b/conf/machine/include/intel-common-pkgarch.inc @@ -1,15 +1,15 @@ INTEL_COMMON_PACKAGE_ARCH ?= "${TUNE_PKGARCH}-intel-common" -PACKAGE_ARCH_pn-linux-intel = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-linux-intel-rt = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-linux-intel-tiny = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-linux-intel-dev = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-linux-yocto = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-linux-yocto-rt = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-linux-yocto-tiny = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-linux-yocto-dev = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-intel-microcode = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_ARCH_pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}" -PACKAGE_EXTRA_ARCHS_append += "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-intel = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-intel-rt = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-intel-tiny = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-intel-dev = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-yocto = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-yocto-rt = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-yocto-tiny = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-linux-yocto-dev = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-intel-microcode = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_ARCH:pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}" +PACKAGE_EXTRA_ARCHS:append = " ${INTEL_COMMON_PACKAGE_ARCH}" MACHINEOVERRIDES =. "${INTEL_COMMON_PACKAGE_ARCH}:" diff --git a/conf/machine/include/intel-core2-32-common.inc b/conf/machine/include/intel-core2-32-common.inc index 8c469499..ce34d9bb 100644 --- a/conf/machine/include/intel-core2-32-common.inc +++ b/conf/machine/include/intel-core2-32-common.inc @@ -3,5 +3,5 @@ # DEFAULTTUNE ?= "core2-32" -require conf/machine/include/tune-core2.inc -require conf/machine/include/x86-base.inc +require conf/machine/include/x86/tune-core2.inc +require conf/machine/include/x86/x86-base.inc diff --git a/conf/machine/include/intel-corei7-64-common.inc b/conf/machine/include/intel-corei7-64-common.inc index 00282569..3498ebe3 100644 --- a/conf/machine/include/intel-corei7-64-common.inc +++ b/conf/machine/include/intel-corei7-64-common.inc @@ -3,5 +3,5 @@ # DEFAULTTUNE ?= "corei7-64" -require conf/machine/include/tune-corei7.inc -require conf/machine/include/x86-base.inc +require conf/machine/include/x86/tune-corei7.inc +require conf/machine/include/x86/x86-base.inc diff --git a/conf/machine/include/meta-intel.inc b/conf/machine/include/meta-intel.inc index d45f4825..230d0253 100644 --- a/conf/machine/include/meta-intel.inc +++ b/conf/machine/include/meta-intel.inc @@ -5,34 +5,43 @@ # PREFERRED_PROVIDER_virtual/kernel ?= "linux-intel" -PREFERRED_PROVIDER_virtual/kernel_poky-tiny ?= "linux-intel" +PREFERRED_PROVIDER_virtual/kernel:poky-tiny ?= "linux-intel" -# Only use the Intel-tuned zlib for target builds to improve reuse -PREFERRED_PROVIDER_zlib = "zlib-intel" -PREFERRED_PROVIDER_zlib-native = "zlib-native" -PREFERRED_PROVIDER_nativesdk-zlib = "nativesdk-zlib" +PREFERRED_VERSION_linux-intel ?= "6.6%" +PREFERRED_VERSION_linux-intel-rt ?= "6.6%" +PREFERRED_VERSION_linux-intel:poky-altcfg ?= "6.8%" -PREFERRED_VERSION_linux-intel_linuxstdbase ?= "4.19%" -PREFERRED_VERSION_linux-intel ?= "4.19%" -PREFERRED_VERSION_linux-intel-rt ?= "4.19%" +# Need to point to latest version of libva needed for media components +PREFERRED_PROVIDER_libva = "libva-intel" +PREFERRED_PROVIDER_libva-native = "libva-intel-native" +PREFERRED_PROVIDER_nativesdk-libva = "nativesdk-libva-intel" + +PREFERRED_PROVIDER_libva-utils = "libva-intel-utils" +PREFERRED_PROVIDER_libva-utils-native = "libva-intel-utils-native" +PREFERRED_PROVIDER_nativesdk-libva-utils = "nativesdk-libva-intel-utils" + +LLVM_MAJOR_VERSION = "${@d.getVar('LLVMVERSION').split('.')[0]}" +PREFERRED_VERSION_opencl-clang ?= "${@bb.utils.contains('LLVM_MAJOR_VERSION', '14', '14.0.0', '15.0.0', d)}" +PREFERRED_VERSION_opencl-clang-native ?= "${@bb.utils.contains('LLVM_MAJOR_VERSION', '14', '14.0.0', '15.0.0', d)}" XSERVER_X86_ASPEED_AST = "xf86-video-ast \ " # include the user space intel microcode loading support in the generated images. -MACHINE_ESSENTIAL_EXTRA_RDEPENDS_append = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', ' intel-microcode', '', d)} thermald" +MACHINE_ESSENTIAL_EXTRA_RDEPENDS:append = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', ' intel-microcode', '', d)}" # recommended extra packages common to all intel machines -MACHINE_EXTRA_RRECOMMENDS_append = " kernel-modules linux-firmware" +MACHINE_EXTRA_RRECOMMENDS:append = " kernel-modules linux-firmware" +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS:append = " kernel-module-i915 linux-firmware-i915 kernel-module-igc kernel-module-r8152" # for the early boot time kernel microcode loading support, # merge the microcode data in the final initrd image. -INITRD_LIVE_prepend = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}" +INITRD_LIVE:prepend = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}" DISK_SIGNATURE_UUID ??= "deadbeef-dead-beef-dead-beefdeadbeef" EFI_PROVIDER ?= "systemd-boot" -EFI_PROVIDER_x86-x32 = "grub-efi" +EFI_PROVIDER:x86-x32 = "grub-efi" # Add general MACHINEOVERRIDE for meta-intel MACHINEOVERRIDES =. "intel-x86-common:" diff --git a/conf/machine/include/qemu-intel.inc b/conf/machine/include/qemu-intel.inc index 81510404..4608db99 100644 --- a/conf/machine/include/qemu-intel.inc +++ b/conf/machine/include/qemu-intel.inc @@ -2,7 +2,7 @@ # distro content (in particular the kernel) less than qemu.inc. # Ensure that qemu gets built when building images. -EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native" +EXTRA_IMAGEDEPENDS += "qemu-system-native qemu-helper-native:do_addto_recipe_sysroot" # Build ovmf firmware for uefi support in qemu. EXTRA_IMAGEDEPENDS += "ovmf" diff --git a/conf/machine/include/qemuboot-intel.inc b/conf/machine/include/qemuboot-intel.inc index 6586cf09..17a1234d 100644 --- a/conf/machine/include/qemuboot-intel.inc +++ b/conf/machine/include/qemuboot-intel.inc @@ -1,15 +1,18 @@ # For runqemu IMAGE_CLASSES += "qemuboot" -QB_SYSTEM_NAME_intel-core2-32 = "qemu-system-i386" -QB_CPU_intel-core2-32 = "-cpu coreduo" -QB_CPU_KVM_intel-core2-32 = "-cpu kvm32" +QB_SYSTEM_NAME:intel-core2-32 = "qemu-system-i386" +QB_CPU:intel-core2-32 = "-cpu coreduo" +QB_CPU_KVM:intel-core2-32 = "-cpu kvm32" -QB_SYSTEM_NAME_intel-corei7-64 = "qemu-system-x86_64" -QB_CPU_intel-corei7-64 = "-cpu Nehalem" -QB_CPU_KVM_intel-corei7-64 = "-cpu kvm64" +QB_SYSTEM_NAME:intel-corei7-64 = "qemu-system-x86_64" +QB_CPU:intel-corei7-64 = "-cpu Nehalem" +QB_CPU_KVM:intel-corei7-64 = "-cpu kvm64" + +QB_SYSTEM_NAME:intel-skylake-64 = "qemu-system-x86_64" +QB_CPU:intel-skylake-64 = "-cpu Skylake-Client" +QB_CPU_KVM:intel-skylake-64 = "-cpu Skylake-Client" QB_AUDIO_DRV = "alsa" -QB_AUDIO_OPT = "-soundhw ac97,es1370" -QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=640x480-32 oprofile.timer=1 uvesafb.task_timeout=-1" -# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy -QB_OPT_APPEND = "-vga vmware -show-cursor -usb -usbdevice tablet -device virtio-rng-pci" +QB_AUDIO_OPT = "-device AC97" +QB_KERNEL_CMDLINE_APPEND = " oprofile.timer=1" +QB_OPT_APPEND = " -usb -usbdevice tablet " diff --git a/conf/machine/intel-core2-32.conf b/conf/machine/intel-core2-32.conf index d99dc783..5b134dc3 100644 --- a/conf/machine/intel-core2-32.conf +++ b/conf/machine/intel-core2-32.conf @@ -13,11 +13,6 @@ MACHINE_FEATURES += "intel-ucode" MACHINE_HWCODECS ?= "intel-vaapi-driver gstreamer1.0-vaapi" -MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check" - -# Enable optional QAT items: -COMPATIBLE_MACHINE_pn-qat17 = "intel-core2-32" - XSERVER ?= "${XSERVER_X86_BASE} \ ${XSERVER_X86_EXT} \ ${XSERVER_X86_FBDEV} \ @@ -29,9 +24,9 @@ XSERVER ?= "${XSERVER_X86_BASE} \ " SYSLINUX_OPTS = "serial 0 115200" -SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1 115200;ttyPCH0" +SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyPCH0" APPEND += "rootwait console=ttyS0,115200 console=ttyPCH0,115200 console=tty0" IMAGE_FSTYPES += "wic" WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks.in", "grub-bootdisk-microcode.wks.in", d)}" -WKS_FILE_DEPENDS_append = " intel-microcode" +WKS_FILE_DEPENDS:append = " intel-microcode" diff --git a/conf/machine/intel-corei7-64.conf b/conf/machine/intel-corei7-64.conf index 197546f7..968395fe 100644 --- a/conf/machine/intel-corei7-64.conf +++ b/conf/machine/intel-corei7-64.conf @@ -11,15 +11,11 @@ MACHINE_FEATURES += "pcbios efi" MACHINE_FEATURES += "wifi 3g nfc" MACHINE_FEATURES += "intel-ucode" -MACHINE_HWCODECS ?= "intel-vaapi-driver gstreamer1.0-vaapi" +MACHINE_HWCODECS ?= "${@bb.utils.contains('TUNE_FEATURES', 'mx32', '', 'intel-media-driver intel-mediasdk', d)} gstreamer1.0-vaapi" # Enable optional dpdk: -COMPATIBLE_MACHINE_pn-dpdk = "intel-corei7-64" - -# Enable optional QAT items: -COMPATIBLE_MACHINE_pn-qat16 = "intel-corei7-64" -COMPATIBLE_MACHINE_pn-qat17 = "intel-corei7-64" -COMPATIBLE_MACHINE_pn-zlib-qat = "intel-corei7-64" +COMPATIBLE_MACHINE:pn-dpdk = "intel-corei7-64" +COMPATIBLE_MACHINE:pn-dpdk-module = "intel-corei7-64" XSERVER ?= "${XSERVER_X86_BASE} \ ${XSERVER_X86_EXT} \ @@ -32,9 +28,9 @@ XSERVER ?= "${XSERVER_X86_BASE} \ " SYSLINUX_OPTS = "serial 0 115200" -SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1 115200;ttyS2" +SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyS2" APPEND += "rootwait console=ttyS0,115200 console=tty0" IMAGE_FSTYPES += "wic" WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks.in", "grub-bootdisk-microcode.wks.in", d)}" -WKS_FILE_DEPENDS_append = " intel-microcode" +WKS_FILE_DEPENDS:append = " intel-microcode" diff --git a/conf/machine/intel-skylake-64.conf b/conf/machine/intel-skylake-64.conf new file mode 100644 index 00000000..a2b392c2 --- /dev/null +++ b/conf/machine/intel-skylake-64.conf @@ -0,0 +1,36 @@ +#@TYPE: Machine +#@NAME: intel-skylake-64 + +#@DESCRIPTION: Machine configuration for 64 bit Intel Skylake CPU (and later) with MMX, SSE, SSE2, SSE3, SSE4.1, SSE4.2, AVX, and AVX2 instruction set support. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware. + +require conf/machine/include/meta-intel.inc +require conf/machine/include/x86/x86-base.inc +require conf/machine/include/x86/tune-x86-64-v3.inc +require conf/machine/include/intel-common-pkgarch.inc + +MACHINE_FEATURES += "efi" +MACHINE_FEATURES += "wifi 3g nfc" +MACHINE_FEATURES += "intel-ucode" + +MACHINE_HWCODECS ?= "intel-media-driver intel-mediasdk gstreamer1.0-vaapi" + +COMPATIBLE_MACHINE:pn-dpdk = "intel-skylake-64" +COMPATIBLE_MACHINE:pn-dpdk-module = "intel-skylake-64" + +XSERVER ?= "${XSERVER_X86_BASE} \ + ${XSERVER_X86_EXT} \ + ${XSERVER_X86_FBDEV} \ + ${XSERVER_X86_I915} \ + ${XSERVER_X86_I965} \ + ${XSERVER_X86_MODESETTING} \ + ${XSERVER_X86_VESA} \ + ${XSERVER_X86_ASPEED_AST} \ + " + +SYSLINUX_OPTS = "serial 0 115200" +SERIAL_CONSOLES ?= "115200;ttyS0 115200;ttyS1 115200;ttyS2" +APPEND += "rootwait console=ttyS0,115200 console=tty0" + +IMAGE_FSTYPES += "wic" +WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks.in", "grub-bootdisk-microcode.wks.in", d)}" +WKS_FILE_DEPENDS:append = " intel-microcode" diff --git a/custom-licenses/ACE-TAO-CIAO b/custom-licenses/ACE-TAO-CIAO deleted file mode 100644 index 67fc5632..00000000 --- a/custom-licenses/ACE-TAO-CIAO +++ /dev/null @@ -1,111 +0,0 @@ - - _________________________________________________________________ - - Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), - DAnCE(TM), and CoSMIC(TM) - - [1]ACE(TM), [2]TAO(TM), [3]CIAO(TM), DAnCE(TM), and [4]CoSMIC(TM) - (henceforth referred to as "DOC software") are copyrighted by - [5]Douglas C. Schmidt and his [6]research group at [7]Washington - University, [8]University of California, Irvine, and [9]Vanderbilt - University, Copyright (c) 1993-2018, all rights reserved. Since DOC - software is open-source, freely available software, you are free to - use, modify, copy, and distribute--perpetually and irrevocably--the - DOC software source code and object code produced from the source, as - well as copy and distribute modified versions of this software. You - must, however, include this copyright statement along with any code - built using DOC software that you release. No copyright statement - needs to be provided if you just ship binary executables of your - software products. - - You can use DOC software in commercial and/or binary software releases - and are under no obligation to redistribute any of your source code - that is built using DOC software. Note, however, that you may not - misappropriate the DOC software code, such as copyrighting it yourself - or claiming authorship of the DOC software code, in a way that will - prevent DOC software from being distributed freely using an - open-source development model. You needn't inform anyone that you're - using DOC software in your software, though we encourage you to let - [10]us know so we can promote your project in the [11]DOC software - success stories. - - The [12]ACE, [13]TAO, [14]CIAO, [15]DAnCE, and [16]CoSMIC web sites - are maintained by the [17]DOC Group at the [18]Institute for Software - Integrated Systems (ISIS) and the [19]Center for Distributed Object - Computing of Washington University, St. Louis for the development of - open-source software as part of the open-source software community. - Submissions are provided by the submitter ``as is'' with no warranties - whatsoever, including any warranty of merchantability, noninfringement - of third party intellectual property, or fitness for any particular - purpose. In no event shall the submitter be liable for any direct, - indirect, special, exemplary, punitive, or consequential damages, - including without limitation, lost profits, even if advised of the - possibility of such damages. Likewise, DOC software is provided as is - with no warranties of any kind, including the warranties of design, - merchantability, and fitness for a particular purpose, - noninfringement, or arising from a course of dealing, usage or trade - practice. Washington University, UC Irvine, Vanderbilt University, - their employees, and students shall have no liability with respect to - the infringement of copyrights, trade secrets or any patents by DOC - software or any part thereof. Moreover, in no event will Washington - University, UC Irvine, or Vanderbilt University, their employees, or - students be liable for any lost revenue or profits or other special, - indirect and consequential damages. - - DOC software is provided with no support and without any obligation on - the part of Washington University, UC Irvine, Vanderbilt University, - their employees, or students to assist in its use, correction, - modification, or enhancement. A [20]number of companies around the - world provide commercial support for DOC software, however. DOC - software is Y2K-compliant, as long as the underlying OS platform is - Y2K-compliant. Likewise, DOC software is compliant with the new US - daylight savings rule passed by Congress as "The Energy Policy Act of - 2005," which established new daylight savings times (DST) rules for - the United States that expand DST as of March 2007. Since DOC software - obtains time/date and calendaring information from operating systems - users will not be affected by the new DST rules as long as they - upgrade their operating systems accordingly. - - The names ACE(TM), TAO(TM), CIAO(TM), DAnCE(TM), CoSMIC(TM), - Washington University, UC Irvine, and Vanderbilt University, may not - be used to endorse or promote products or services derived from this - source without express written permission from Washington University, - UC Irvine, or Vanderbilt University. This license grants no permission - to call products or services derived from this source ACE(TM), - TAO(TM), CIAO(TM), DAnCE(TM), or CoSMIC(TM), nor does it grant - permission for the name Washington University, UC Irvine, or - Vanderbilt University to appear in their names. - - If you have any suggestions, additions, comments, or questions, please - let [21]me know. - - [22]Douglas C. Schmidt - _________________________________________________________________ - - Back to the [23]ACE home page. - -References - - 1. http://www.dre.vanderbilt.edu/~schmidt/ACE.html - 2. http://www.dre.vanderbilt.edu/~schmidt/TAO.html - 3. http://www.dre.vanderbilt.edu/CIAO/ - 4. http://www.dre.vanderbilt.edu/cosmic/ - 5. http://www.dre.vanderbilt.edu/~schmidt/ - 6. http://www.dre.vanderbilt.edu/~schmidt/ACE-members.html - 7. http://www.wustl.edu/ - 8. http://www.uci.edu/ - 9. http://www.vanderbilt.edu/ - 10. mailto:doc_group@cs.wustl.edu - 11. http://www.dre.vanderbilt.edu/~schmidt/ACE-users.html - 12. http://www.dre.vanderbilt.edu/~schmidt/ACE.html - 13. http://www.dre.vanderbilt.edu/~schmidt/TAO.html - 14. http://www.dre.vanderbilt.edu/CIAO/ - 15. http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/DAnCE/ - 16. http://www.dre.vanderbilt.edu/cosmic/ - 17. http://www.dre.vanderbilt.edu/ - 18. http://www.isis.vanderbilt.edu/ - 19. http://www.cs.wustl.edu/~schmidt/doc-center.html - 20. http://www.dre.vanderbilt.edu/~schmidt/commercial-support.html - 21. mailto:d.schmidt@vanderbilt.edu - 22. http://www.dre.vanderbilt.edu/~schmidt/ - 23. http://www.dre.vanderbilt.edu/~schmidt/ACE.html diff --git a/custom-licenses/EULA b/custom-licenses/EULA new file mode 100644 index 00000000..549f78e1 --- /dev/null +++ b/custom-licenses/EULA @@ -0,0 +1,392 @@ +Intel End User License Agreement for Developer Tools (Version October 2021) + +IMPORTANT NOTICE - PLEASE READ AND AGREE BEFORE DOWNLOADING, INSTALLING, COPYING +OR USING + +This Agreement is between you, or the company or other legal entity that you +represent and warrant you have the legal authority to bind, (each, "You" or +"Your") and Intel Corporation and its subsidiaries (collectively, "Intel") +regarding Your use of the Materials. By downloading, installing, copying or +using the Materials, You agree to be bound by the terms of this Agreement. If +You do not agree to the terms of this Agreement, or do not have legal authority +or required age to agree to them, do not download, install, copy or use the +Materials. + +1. LICENSE DEFINITIONS. + + A. "Cloud Provider" means a third party service provider offering a cloud-based + platform, infrastructure, application or storage services, such as Microsoft + Azure or Amazon Web Services, which You may only utilize to host the + Materials subject to the restrictions set forth in Section 2.3 B. + + B. "Derivative Work" means a derivative work, as defined in 17 U.S.C. 101, of + the Source Code. + + C. "Executable Code" means computer programming code in binary form suitable + for machine execution by a processor without the intervening steps of + interpretation or compilation. + + D. "Materials" mean the software, documentation, the software product serial + number, and other collateral, including any updates, made available to You + by Intel under this Agreement. Materials include Redistributables, + Executable Code, Source Code, Sample Source Code, and Pre-Release Materials, + but do not include Third Party Software. + + E. "Pre-Release Materials" mean the Materials, or portions of the Materials, + that are identified (in the product release notes, on Intel's download + website for the Materials or elsewhere) or labeled as pre-release, + prototype, alpha or beta code and, as such, are deemed to be pre-release + code (i) which may not be fully functional or tested and may contain bugs or + errors; (ii) which Intel may substantially modify in its development of a + production version; or (iii) for which Intel makes no assurances that it + will ever develop or make a production version generally available. + Pre-Release Materials are subject to the terms of Section 3.2. + + F. "Reciprocal Open Source Software" means any software that is subject to a + license which requires that (i) it must be distributed in source code form; + (ii) it must be licensed under the same open source license terms; and (iii) + its derivative works must be licensed under the same open source license + terms. Examples of this type of license are the GNU General Public License + or the Mozilla Public License. + + G. "Redistributables" mean the files (if any) listed in the "redist.txt," + "redist-rt.txt" or similarly-named text files that may be included in the + Materials. Redistributables include Sample Source Code. + + H. "Sample Source Code" means those portions of the Materials that are Source + Code and are identified as sample code. Sample Source Code may not have been + tested or validated by Intel and is provided purely as a programming example. + + I. "Source Code" means the software portion of the Materials provided in human + readable format. + + J. "Third Party Software" mean the files (if any) listed in the + "third-party-software.txt" or other similarly-named text file that may be + included in the Materials for the applicable software. Third Party Software + is subject to the terms of Section 2.2. + + K. "Your Product" means one or more applications, products or projects + developed by or for You using the Materials. + +2. LICENSE GRANTS. + +2.1 License to the Materials. Subject to the terms and conditions of this + Agreement, Intel grants You a non-exclusive, worldwide, non-assignable, + non-sublicensable, limited right and license under its copyrights, to: + + A. reproduce internally a reasonable number of copies of the Materials for Your + personal or business use; + + B. use the Materials solely for Your personal or business use to develop Your + Product, in accordance with the documentation included as part of the + Materials; + + C. modify or create Derivative Works only of the Redistributables, or any + portions, that are provided to You in Source Code; + + D. distribute (directly and through Your distributors, resellers, and other + channel partners, if applicable), the Redistributables, including any + modifications to or Derivative Works of the Redistributables or any portions + made pursuant to Section 2.1.C subject to the following conditions: + + (1) Any distribution of the Redistributables must only be as part of Your + Product which must add significant primary functionality different than + that of the Redistributables themselves; + + (2) You must only distribute the Redistributables originally provided to You + by Intel only in Executable Code subject to a license agreement that + prohibits reverse engineering, decompiling or disassembling the + Redistributables; + + (3) This distribution right includes a limited right to sublicense only the + Intel copyrights in the Redistributables and only to the extent necessary + to perform, display, and distribute the Redistributables (including Your + modifications and Derivative Works of the Redistributables provided in + Source Code) solely as incorporated in Your Product; and + + (4) You: (i) will be solely responsible to Your customers for any update, + support obligation or other obligation or liability which may arise from + the distribution of Your Product, (ii) will not make any statement that + Your Product is "certified" or that its performance is guaranteed by Intel + or its suppliers, (iii) will not use Intel's or its suppliers' names or + trademarks to market Your Product, (iv) will comply with any additional + restrictions which are included in the text files with the + Redistributables and in Section 3 below, (v) will indemnify, hold + harmless, and defend Intel and its suppliers from and against any claims + or lawsuits, costs, damages, and expenses, including attorney's fees, that + arise or result from (a) Your modifications or Derivative Works of the + Materials or (b) Your distribution of Your Product. + +2.2 Third Party Software. Third Party Software, even if included with the + distribution of the Materials, may be governed by separate license terms, + including without limitation, third party license terms, open source + software notices and terms, and/or other Intel software license terms. These + separate license terms solely govern Your use of the Third Party Software. + +2.3 Third Party Use. + + A. If You are an entity, Your contractors may use the Materials under the + license specified in Section 2, provided: (i) their use of the Materials is + solely on behalf of and in support of Your business, (ii) they agree to the + terms and conditions of this Agreement, and (iii) You are solely responsible + for their use, misuse or disclosure of the Materials. + + B. You may utilize a Cloud Provider to host the Materials for You, provided: + (i) the Cloud Provider may only host the Materials for Your exclusive use + and may not use the Materials for any other purpose whatsoever, including the + restriction set forth in Section 3.1(xi); (ii) the Cloud Provider's use of + the Materials must be solely on behalf of and in support of Your Product, and + (iii) You will indemnify, hold harmless, and defend Intel and its suppliers + from and against any claims or lawsuits, costs, damages, and expenses, + including attorney's fees, that arise or result from Your Cloud Provider's + use, misuse or disclosure of the Materials. + +3. LICENSE CONDITIONS. + +3.1 Restrictions. Except as expressly provided in this Agreement, You may NOT: + (i) use, reproduce, disclose, distribute, or publicly display the + Materials; (ii) share, publish, rent or lease the Materials to any third + party; (iii) assign this Agreement or transfer the Materials; (iv) modify, + adapt, or translate the Materials in whole or in part; (v) reverse engineer, + decompile, or disassemble the Materials, or otherwise attempt to derive the + source code for the software; (vi) work around any technical limitations in + the Materials; (vii) distribute, sublicense or transfer any Source Code, + modifications or Derivative Works of any Source Code to any third party; + (viii) remove, minimize, block or modify any notices of Intel or its + suppliers in the Materials; (ix) include the Redistributables in malicious, + deceptive, or unlawful programs or products or use the Materials in any way + that is against the law; (x) modify, create a Derivative Work, link, or + distribute the Materials so that any part of it becomes Reciprocal Open + Source Software; (xi) use the Materials directly or indirectly for SaaS + services or service bureau purposes (i.e., a service that allows use of or + access to the Materials by a third party as part of that service, such as + the salesforce.com service business model). + +3.2 Pre-Release Materials. If You receive Pre-Release Materials, You may + reproduce a reasonable number of copies and use the Pre-Release Materials + for evaluation and testing purposes only. You may not (i) modify or + incorporate the Pre-Release Materials into Your Product; (ii) continue to + use the Pre-Release Materials once a commercial version is released; or + (iii) disclose to any third party any benchmarks, performance results, or + other information relating to the Pre-Release Materials. Intel may waive + these restrictions in writing at its sole discretion; however, if You decide + to use the Pre-Release Materials in Your Product (even with Intel's waiver), + You acknowledge and agree that You are fully responsible for any and all + issues that result from such use. + +3.3 Safety-Critical, and Life-Saving Applications; Indemnity. The Materials may + provide information relevant to safety-critical applications + ("Safety-Critical Applications") to allow compliance with functional safety + standards or requirements. You acknowledge and agree that safety is Your + responsibility. To the extent You use the Materials to create, or as part + of, products used in Safety-Critical Applications, it is Your responsibility + to design, manage, and ensure that there are system-level safeguards to + anticipate, monitor, and control system failures, and You agree that You are + solely responsible for all applicable regulatory standards and + safety-related requirements concerning Your use of the Materials in Safety + Critical Applications. + + Should You use the Materials for Safety-Critical Applications or in any type + of a system or application in which the failure of the Materials could + create a situation where personal injury or death may occur (e.g., medical + systems, life-sustaining or life-saving systems) ("Life-Saving + Applications"), You agree to indemnify, defend, and hold Intel and its + representatives harmless against any claims or lawsuits, costs, damages, and + expenses, including reasonable attorney fees, arising in any way out of Your + use of the Materials in Safety-Critical Applications or Life-Saving + Applications and claims of product liability, personal injury or death + associated with those applications; even if such claims allege that Intel + was negligent or strictly liable regarding the design or manufacture of the + Materials or its failure to warn regarding the Materials. + +3.4 Media Format Codecs and Digital Rights Management. You acknowledge and agree + that Your use of the Materials or distribution of the Redistributables with + Your Product as permitted by this Agreement may require You to procure + license(s) from third parties that may hold intellectual property rights + applicable to any media decoding, encoding or transcoding technology (e.g., + the use of an audio or video codec) and/or digital rights management + capabilities of the Materials, if any. Should any such additional licenses + be required, You are solely responsible for obtaining any such licenses and + agree to obtain any such licenses at Your own expense. + +4. DATA COLLECTION AND PRIVACY. + +4.1 Data Collection. The Materials may generate and collect anonymous data + and/or provisioning data about the Materials and/or the development + environment and transmit the data to Intel as a one-time event during + installation. Optional data may also be collected by the Materials, however, + You will be provided notice of the request to collect optional data and no + optional data will be collected without Your consent. All data collection by + Intel is performed pursuant to relevant privacy laws, including notice and + consent requirements. + +4.2 Intel's Privacy Notice. Intel is committed to respecting Your privacy. To + learn more about Intel's privacy practices, please visit + http://www.intel.com/privacy. + +5. OWNERSHIP. Title to the Materials and all copies remain with Intel or its + suppliers. The Materials are protected by intellectual property rights, + including without limitation, United States copyright laws and international + treaty provisions. You will not remove any copyright or other proprietary + notices from the Materials. Except as expressly provided herein, no license + or right is granted to You directly or by implication, inducement, estoppel + or otherwise; specifically, Intel does not grant any express or implied right + to You under Intel patents, copyrights, trademarks, or trade secrets. + +6. NO WARRANTY AND NO SUPPORT. + +6.1 No Warranty. Disclaimer. Intel disclaims all warranties of any kind and the + terms and remedies provided in this Agreement are instead of any other + warranty or condition, express, implied or statutory, including those + regarding merchantability, fitness for any particular purpose, + non-infringement or any warranty arising out of any course of dealing, usage + of trade, proposal, specification or sample. Intel does not assume (and does + not authorize any person to assume on its behalf) any liability. + +6.2 No Support; Priority Support. Intel may make changes to the Materials, or to + items referenced therein, at any time without notice, but is not obligated + to support, update or provide training for the Materials under the terms of + this Agreement. Intel offers free community and paid priority support + options. More information on these support options can be found at: + https://software.intel.com/content/www/us/en/develop/support/priority-support.html. + +7. LIMITATION OF LIABILITY. + +7.1 Intel will not be liable for any of the following losses or damages (whether + such losses or damages were foreseen, foreseeable, known or otherwise): (i) + loss of revenue; (ii) loss of actual or anticipated profits; (iii) loss of + the use of money; (iv) loss of anticipated savings; (v) loss of business; + (vi) loss of opportunity; (vii) loss of goodwill; (viii) loss of use of the + Materials; (ix) loss of reputation; (x) loss of, damage to, or corruption of + data; or (xi) any indirect, incidental, special or consequential loss of + damage however caused (including loss or damage of the type specified in + this Section 7). + +7.2 Intel's total cumulative liability to You, including for direct damages for + claims relating to this Agreement, and whether for breach of contract, + negligence, or for any other reason, will not exceed $100. + +7.3 You acknowledge that the limitations of liability provided in this Section 7 + are an essential part of this Agreement. You agree that the limitations of + liability provided in this Agreement with respect to Intel will be conveyed + to and made binding upon any customer of Yours that acquires the + Redistributables. + +8. USER SUBMISSIONS. Should you provide Intel with comments, modifications, + corrections, enhancements or other input ("Feedback") related to the + Materials, Intel will be free to use, disclose, reproduce, license or + otherwise distribute or exploit the Feedback in its sole discretion without + any obligations or restrictions of any kind, including without limitation, + intellectual property rights or licensing obligations. If You wish to provide + Intel with information that You intend to be treated as confidential + information, Intel requires that such confidential information be provided + pursuant to a non-disclosure agreement ("NDA"); please contact Your Intel + representative to ensure the proper NDA is in place. + +9. NON-DISCLOSURE. Information provided by Intel to You may include information + marked as confidential. You must treat such information as confidential under + the terms of the applicable NDA between Intel and You. If You have not + entered into an NDA with Intel, You must not disclose, distribute or make use + of any information marked as confidential, except as expressly authorized in + writing by Intel. Intel retains all rights in and to its confidential + information specifications, designs, engineering details, discoveries, + inventions, patents, copyrights, trademarks, trade secrets, and other + proprietary rights relating to the Materials. Any breach by You of the + confidentiality obligations provided for in this Section 9 will cause + irreparable injury to Intel for which money damages may be inadequate to + compensate Intel for losses arising from such a breach. Intel may obtain + equitable relief, including injunctive relief, if You breach or threaten to + breach Your confidentiality obligations. + +10. TERM AND TERMINATION. This Agreement becomes effective on the date You + accept this Agreement and will continue until terminated as provided for in + this Agreement. The term for any Pre-Release Materials terminates upon + release of a commercial version. This Agreement will terminate if You are in + breach of any of its terms and conditions. Upon termination, You will + promptly destroy the Materials and all copies. In the event of termination of + this Agreement, Your license to any Redistributables distributed by You in + accordance with the terms and conditions of this Agreement, prior to the + effective date of such termination, will survive any such termination of this + Agreement. Sections 1, 2.1.D(4)(v), 2.2, 2.3.A(iii), 2.3.B(iii), 3.3, 5, 6, + 7, 8, 9, 10 (with respect to these survival provisions in the last sentence), + and 12 will survive expiration or termination of this Agreement. + +11. U.S. GOVERNMENT RESTRICTED RIGHTS. The technical data and computer software + covered by this license is a "Commercial Item," as such term is defined by + the FAR 2.101 (48 C.F.R. 2.101) and is "commercial computer software" and + "commercial computer software documentation" as specified under FAR 12.212 + (48 C.F.R. 12.212) or DFARS 227.7202 (48 C.F.R. 227.7202), as applicable. + This commercial computer software and related documentation is provided to + end users for use by and on behalf of the U.S. Government with only those + rights as are granted to all other end users pursuant to the terms and + conditions of this Agreement. + +12. GENERAL PROVISIONS. + +12.1 ENTIRE AGREEMENT. This Agreement contains the complete and exclusive + agreement and understanding between the parties concerning the subject + matter of this Agreement, and supersedes all prior and contemporaneous + proposals, agreements, understanding, negotiations, representations, + warranties, conditions, and communications, oral or written, between the + parties relating to the same subject matter. Each party acknowledges and + agrees that in entering into this Agreement it has not relied on, and will + not be entitled to rely on, any oral or written representations, + warranties, conditions, understanding, or communications between the + parties that are not expressly set forth in this Agreement. The express + provisions of this Agreement control over any course of performance, course + of dealing, or usage of the trade inconsistent with any of the provisions + of this Agreement. The provisions of this Agreement will prevail + notwithstanding any different, conflicting, or additional provisions that + may appear on any purchase order, acknowledgement, invoice, or other + writing issued by either party in connection with this Agreement. No + modification or amendment to this Agreement will be effective unless in + writing and signed by authorized representatives of each party, and must + specifically identify this Agreement by its title and version (e.g., "Intel + End User License Agreement for Developer Tools (Version October 2021)"); + except that Intel may make changes to this Agreement as it distributes new + versions of the Materials. When changes are made, Intel will make a new + version of the Agreement available on its website. If You received a copy + of this Agreement translated into another language, the English language + version of this Agreement will prevail in the event of any conflict between + versions. + +12.2 EXPORT. You acknowledge that the Materials and all related technical + information are subject to export controls and you agree to comply with all + laws and regulations of the United States and other applicable governments + governing export, re-export, import, transfer, distribution, and use of the + Materials. In particular, but without limitation, the Materials may not be + exported or re-exported (i) into any U.S. embargoed countries or (ii) to + any person or entity listed on a denial order published by the U.S. + government or any other applicable governments. By using the Materials, You + represent and warrant that You are not located in any such country or on + any such list. You also agree that You will not use the Materials for, or + sell or transfer them to a third party who is known or suspected to be + involved in, any purposes prohibited by the U.S. government or other + applicable governments, including, without limitation, the development, + design, manufacture, or production of nuclear, missile, chemical or + biological weapons. + +12.3 GOVERNING LAW, JURISDICTION, AND VENUE. All disputes arising out of or + related to this Agreement, whether based on contract, tort, or any other + legal or equitable theory, will in all respects be governed by, and + construed and interpreted under, the laws of the United States of America + and the State of Delaware, without reference to conflict of laws + principles. The parties agree that the United Nations Convention on + Contracts for the International Sale of Goods (1980) is specifically + excluded from and will not apply to this Agreement. All disputes arising + out of or related to this Agreement, whether based on contract, tort, or + any other legal or equitable theory, will be subject to the exclusive + jurisdiction of the courts of the State of Delaware or of the Federal + courts sitting in that State. Each party submits to the personal + jurisdiction of those courts and waives all objections to that jurisdiction + and venue for those disputes. + +12.4 SEVERABILITY. The parties intend that if a court holds that any provision + or part of this Agreement is invalid or unenforceable under applicable law, + the court will modify the provision to the minimum extent necessary to make + it valid and enforceable, or if it cannot be made valid and enforceable, + the parties intend that the court will sever and delete the provision or + part from this Agreement. Any change to or deletion of a provision or part + of this Agreement under this Section will not affect the validity or + enforceability of the remainder of this Agreement, which will continue in + full force and effect. diff --git a/custom-licenses/ISSL b/custom-licenses/ISSL new file mode 100644 index 00000000..f987e502 --- /dev/null +++ b/custom-licenses/ISSL @@ -0,0 +1,73 @@ +Intel Simplified Software License (Version August 2021) + +Use and Redistribution. You may use and redistribute the software (the +"Software"), without modification, provided the following conditions are met: + +* Redistributions must reproduce the above copyright notice and the following + terms of use in the Software and in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel nor the names of its suppliers may be used to + endorse or promote products derived from this Software without specific + prior written permission. +* No reverse engineering, decompilation, or disassembly of this Software is + permitted. + +No other licenses. Except as provided in the preceding section, Intel grants no +licenses or other rights by implication, estoppel or otherwise to, patent, +copyright, trademark, trade name, service mark or other intellectual property +licenses or rights of Intel. + +Third party software. The Software may contain Third Party Software. "Third +Party Software" is open source software, third party software, or other Intel +software that may be identified in the Software itself or in the files (if any) +listed in the "third-party-software.txt" or similarly named text file included +with the Software. Third Party Software, even if included with the distribution +of the Software, may be governed by separate license terms, including without +limitation, open source software license terms, third party software license +terms, and other Intel software license terms. Those separate license terms +solely govern your use of the Third Party Software, and nothing in this license +limits any rights under, or grants rights that supersede, the terms of the +applicable license terms. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE +DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS +WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE +THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND +ATTORNEYS' FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT +INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE. + +LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +No support. Intel may make changes to the Software, at any time without notice, +and is not obligated to support, update or provide training for the Software. + +Termination. Your right to use the Software is terminated in the event of your +breach of this license. + +Feedback. Should you provide Intel with comments, modifications, corrections, +enhancements or other input ("Feedback") related to the Software, Intel will be +free to use, disclose, reproduce, license or otherwise distribute or exploit the +Feedback in its sole discretion without any obligations or restrictions of any +kind, including without limitation, intellectual property rights or licensing +obligations. + +Compliance with laws. You agree to comply with all relevant laws and regulations +governing your use, transfer, import or export (or prohibition thereof) of the +Software. + +Governing law. All disputes will be governed by the laws of the United States of +America and the State of Delaware without reference to conflict of law +principles and subject to the exclusive jurisdiction of the state or federal +courts sitting in the State of Delaware, and each party agrees that it submits +to the personal jurisdiction and venue of those courts and waives any +objections. The United Nations Convention on Contracts for the International +Sale of Goods (1980) is specifically excluded and will not apply to the +Software. diff --git a/custom-licenses/syrah b/custom-licenses/syrah new file mode 100644 index 00000000..5cd7f4e6 --- /dev/null +++ b/custom-licenses/syrah @@ -0,0 +1,32 @@ +Copyright (c) 2009, Stanford University, and authors listed below. +All rights reserved. + +Original authors: + Solomon Boulos + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +Neither the name of Stanford University nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file 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 @@ +### Building the Intel BSP layers + +The intel-common BSP provide a few carefully selected tune options and +generic hardware support to cover the majority of current Intel CPUs and +devices. The naming follows the convention of intel-<TUNE>-<BITS>, where +TUNE is the gcc cpu-type (used with mtune and march typically) and BITS +is either 32 bit or 64 bit. + +In order to build an image with BSP support for a given release, you +need to clone the meta-intel layer from git repository: +``` +git clone https://git.yoctoproject.org/meta-intel +``` + +Check out the appropriate branch or release tags. The branch name and tags +would align with Yocto Project +[Release Codenames](https://wiki.yoctoproject.org/wiki/Releases). +Assuming meta-intel repository is cloned at the top-level of +OE-Core build tree, you can build a BSP image by adding the location of +the meta-intel layer to bblayers.conf: +``` +BBLAYERS = " \ + /openembedded-core/meta \ + /openembedded-core/meta-intel " +``` + +To enable a particular machine, add a MACHINE line naming the BSP +to the local.conf file: +``` +MACHINE ?= "intel-corei7-64" +``` + +where this can be replaced by other MACHINE types available: + + - intel-core2-32 + + This BSP is optimized for the Core2 family of CPUs as well as all + Atom CPUs prior to the Silvermont core. + + - intel-corei7-64 + + This BSP is optimized for Nehalem and later Core and Xeon CPUs as + well as Silvermont and later Atom CPUs, such as the Baytrail SoCs. + + - intel-skylake-64 + + This BSP uses [x86-64-v3 tuning](https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html). + +You should then be able to build an image as such: +``` +$ source oe-init-build-env +$ bitbake core-image-sato +``` + +At the end of a successful build, you should have an image that +you can boot from a USB flash drive. + + +## Booting the intel-common BSP images + +If you've built your own image, you'll find the bootable +image in the build/tmp/deploy/images/{MACHINE} directory, where +'MACHINE' refers to the machine name used in the build. + +Under Linux, insert a USB flash drive. Assuming the USB flash drive +takes device /dev/sdf, use dd to copy the image to it. Before the image +can be burned onto a USB drive, it should be un-mounted. Some Linux distros +may automatically mount a USB drive when it is plugged in. Using USB device +/dev/sdf as an example, find all mounted partitions: +``` +$ mount | grep sdf +``` + +and un-mount those that are mounted, for example: +``` +$ umount /dev/sdf1 +$ umount /dev/sdf2 +``` + +Now burn the image onto the USB drive: +``` +$ sudo dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf status=progress +$ sync +$ eject /dev/sdf +``` + +This should give you a bootable USB flash device. Insert the device +into a bootable USB socket on the target, and power on. This should +result in a system booted to the Sato graphical desktop. + +If you want a terminal, use the arrows at the top of the UI to move to +different pages of available applications, one of which is named +'Terminal'. Clicking that should give you a root terminal. + +If you want to ssh into the system, you can use the root terminal to +ifconfig the IP address and use that to ssh in. The root password is +empty, so to log in type 'root' for the user name and hit 'Enter' at +the Password prompt: and you should be in. + +If you find you're getting corrupt images on the USB (it doesn't show +the syslinux boot: prompt, or the boot: prompt contains strange +characters), try doing this first: +``` +$ dd if=/dev/zero of=/dev/sdf bs=1M count=512 +``` + +## Building the installer image + +If you plan to install your image to your target machine, you can build a wic +based installer image instead of default wic image. To build it, you need to +add below configuration to local.conf : + +``` +WKS_FILE = "image-installer.wks.in" +IMAGE_FSTYPES:append = " ext4" +IMAGE_TYPEDEP:wic = "ext4" +INITRD_IMAGE_LIVE="core-image-minimal-initramfs" +do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete" +do_rootfs[depends] += "virtual/kernel:do_deploy" +IMAGE_BOOT_FILES:append = "\ + ${KERNEL_IMAGETYPE} \ + microcode.cpio \ + ${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.rootfs.ext4;rootfs.img \ + ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', 'grub-efi-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \ + ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', '${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg', '', d)} \ + ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', 'systemd-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \ + ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/loader.conf;loader/loader.conf ', '', d)} \ + ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/entries/boot.conf;loader/entries/boot.conf', '', d)} " +``` + +Burn the wic image onto USB flash device, insert the device to target machine +and power on. This should start the installation process. + + 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 @@ +Intel(R) oneAPI DPC++/C++ Compiler (ICX) toolchain +========================================================================== + +Get Started with the Intel oneAPI DPC++/C++ Compiler: + +https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html# + + +Getting Started +=============== + +Clone the required layers and include them in bblayers.conf: + +``` +git clone https://git.openembedded.org/openembedded-core +git clone https://git.openembedded.org/bitbake +git clone https://git.openembedded.org/meta-openembedded +git clone https://github.com/kraj/meta-clang.git +git clone https://git.yoctoproject.org/meta-intel + +$ source openembedded-core/oe-init-build-env + +$ bitbake-layers add-layer ../meta-openembedded/meta-oe/ +$ bitbake-layers add-layer ../meta-intel +$ bitbake-layers add-layer ../meta-clang +``` + +Distro +====== + +Note that oneAPI DPC++/C++ compiler currently only works when the vendor string is "oe". + +``` +DISTRO ?= "nodistro" +``` + +MACHINE configuration +===================== + +``` +MACHINE ?= "intel-skylake-64" +``` + +Package installation +==================== + +``` +# To include OpenCL driver that might be needed when compiling SYCL programs, include: +IMAGE_INSTALL:append = " intel-compute-runtime intel-graphics-compiler" + +# To install only runtime libraries, include: +IMAGE_INSTALL:append = " intel-oneapi-dpcpp-cpp-runtime intel-oneapi-dpcpp-cpp-runtime-dev" + +# To install the toolchain, include: +IMAGE_INSTALL:append = " intel-oneapi-dpcpp-cpp intel-oneapi-dpcpp-cpp-dev" +``` +in local.conf. + +Build an image +============== + +``` +$ bitbake core-image-minimal +``` + +Including oneAPI C++/DPC++ compiler in generated SDK toolchain +============================================================== + +The 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: + +``` +ICXSDK = "1" +``` + +Generate SDK: +``` +bitbake core-image-minimal -c populate_sdk +``` + + +To setup PATH variables on target +================================= + +Once image is booted successfully, some variables would need to be exported to make sure compiler can be used: + +``` +$ source /opt/intel/oneapi/compiler/2022.1.0/env/vars.sh + +$ mkdir -p /lib64 + +$ ln -sf /lib/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 +``` + +Build application and run +========================= + +To compile a sycl application, for example: + +``` +$ icpx --target=x86_64-oe-linux -fsycl simple-sycl-app.c -o simple-sycl-app +``` + +To run: + +``` +$ ./simple-sycl-app +``` 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 @@ +## Reporting bugs + +If you have problems with or questions about a particular BSP, please +contact the maintainer listed in the [Maintainer](../README.md#maintainers) section directly (cc:ing +the Yocto mailing list puts it in the archive and helps other people +who might have the same questions in the future), but please try to do +the following first: + +- look in the [Yocto Project Bugzilla](http://bugzilla.yoctoproject.org/) to see if a + problem has already been reported + +- look through recent entries of the [meta-intel](https://lists.yoctoproject.org/g/meta-intel/messages) + and [Yocto Archives](https://lists.yoctoproject.org/g/yocto/messages) mailing list archives to see + if other people have run into similar problems or had similar questions answered. + +If you believe you have encountered a bug, you can open a new bug and +enter the details in the [Yocto Project Bugzilla](https://bugzilla.yoctoproject.org/). +If you're relatively certain that it's a bug against the BSP itself, please use the +'BSPs | bsps-meta-intel' category for the bug; otherwise, please submit the bug against +the most likely category for the problem. if you're wrong, it's not a big deal and +the bug will be recategorized upon triage. + 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 @@ -Currently, only one implementation of Secure Boot is available out of the box, -which is using a single signed EFI application to directly boot the kernel with -an optional initramfs. - -This can be added to your build either through local.conf, or via your own -custom image recipe. - -If you are adding it via local.conf, set the following variables: - -IMAGE_FEATURES += "secureboot" -WKS_FILE = "generic-bootdisk.wks.in" -SECURE_BOOT_SIGNING_KEY = "/path/to/your/signing/key" -SECURE_BOOT_SIGNING_CERT = "/path/to/your/signing/cert" -IMAGE_CLASSES += "uefi-comboapp" - -If working with an image recipe, you can inherit uefi-comboapp directly instead -of using the IMAGE_CLASSES variable. - -The signing keys and certs can be created via openssl commands. Here's an -example: -openssl req -new -x509 -newkey rsa:2048 -subj "/CN=your-subject/" -keyout \ -your-key.key -out your-key.crt -days 365 -nodes -sha256 -openssl x509 -in your-key.crt -out your-key.cer -outform DER - -The .crt file is your SECURE_BOOT_SIGNING_CERT, and the .key file is your -SECURE_BOOT_SIGNING_KEY. - -You should enroll the .crt key in your firmware under the PK, KEK, and DB -options (methods are different depending on your firmware). If a key should ever -become invalid, enroll it under DBX to blacklist it. - -The comboapp can be further manipulated in a number of ways. You can modify the -kernel command line via the APPEND variable, you can change the default UUID via -the DISK_SIGNATURE_UUID variable, and you can modify the contents of the -initramfs via the INITRD_IMAGE or INITRD_LIVE variables. - -A simple Secure Boot enabled image used for testing can be viewed at: -common/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 @@ +## Guidelines for submitting patches + +Please submit any patches against meta-intel BSPs to the +[meta-intel mailing list](https://lists.yoctoproject.org/g/meta-intel) +(email: meta-intel@lists.yoctoproject.org). Also, if your patches are +available via a public git repository, please also include a URL to +the repo and branch containing your patches as that makes it easier +for maintainers to grab and test your patches. + +The patches should follow the suggestions outlined in the +[Yocto Project and OpenEmbedded Contributor Guide](https://docs.yoctoproject.org/dev/contributor-guide/index.html). +In addition, for any non-trivial patch, provide information about how you +tested the patch, and for any non-trivial or non-obvious testing +setup, provide details of that setup. + +Doing a quick 'git log' in meta-intel will provide you with many +examples of good example commits if you have questions about any +aspect of the preferred format. + +The meta-intel maintainers will do their best to review and/or pull in +a patch or patch sets within 24 hours of the time it was posted. For +larger and/or more involved patches and patch sets, the review process +may take longer. + +Please see the [maintainers](../README.md#maintainers) section for the list of maintainers. It's also +a 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 @@ +## Tested Hardware + +The following undergo regular basic testing with their respective MACHINE types. + +- intel-corei7-64: + * Alder Lake-P + * Alder Lake-S + * Alder Lake-PS + * Elkhart Lake + * Metor Lake-P + * Raptor Lake-P + * Tiger Lake + +- intel-skylake-64: + * Alder Lake-P + * Alder Lake-S + * Alder Lake-PS + * Elkhart Lake + * Metor Lake-P + * Raptor Lake-P + * Tiger Lake + +- intel-core2-32: + * MinnowBoard Turbot diff --git a/recipes-core/mkl-dnn/files/run-ptest b/dynamic-layers/clang-layer/recipes-core/dnn/files/run-ptest index 82d4df58..82d4df58 100755 --- a/recipes-core/mkl-dnn/files/run-ptest +++ b/dynamic-layers/clang-layer/recipes-core/dnn/files/run-ptest diff --git a/dynamic-layers/clang-layer/recipes-core/dnn/onednn_3.4.bb b/dynamic-layers/clang-layer/recipes-core/dnn/onednn_3.4.bb new file mode 100644 index 00000000..afea70df --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-core/dnn/onednn_3.4.bb @@ -0,0 +1,57 @@ +HOMEPAGE = "https://www.oneapi.com" +SUMMARY = "Deep Neural Network Library" +DESCRIPTION = "This software is a user mode library that accelerates\ +deep-learning applications and frameworks on Intel architecture." +LICENSE = "Apache-2.0 & BSD-3-Clause & BSL-1.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b64000f6e7d52516017622a37a94ce9 \ + file://tests/gtests/gtest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a \ + file://src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \ + file://src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \ + " +SECTION = "lib" + +inherit pkgconfig cmake ptest + +DNN_BRANCH = "rls-v${@'.'.join(d.getVar('PV').split('.')[0:2])}" + +S = "${WORKDIR}/git" +SRCREV = "ecd7fb6d5a0df6503d1691c1754a684b9c769c16" +SRC_URI = "git://github.com/oneapi-src/oneDNN.git;branch=${DNN_BRANCH};protocol=https \ + file://run-ptest \ + " + +UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$" + +CVE_PRODUCT = "intel:math_kernel_library" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = 'null' + +EXTRA_OECMAKE += " \ + -DDNNL_LIBRARY_TYPE=SHARED \ + -DDNNL_BUILD_EXAMPLES=ON \ + -DDNNL_BUILD_TESTS=ON \ + -DDNNL_CPU_RUNTIME=OMP \ + -DDNNL_ARCH_OPT_FLAGS="" \ + -DCMAKE_SKIP_RPATH=ON \ + -DONEDNN_BUILD_GRAPH=OFF \ + " + +PACKAGECONFIG ??= "gpu" +PACKAGECONFIG[gpu] = "-DDNNL_GPU_RUNTIME=OCL, , opencl-headers virtual/opencl-icd, intel-compute-runtime" + +do_install:append () { + install -d ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs + install -m 0755 ${B}/tests/benchdnn/benchdnn ${D}${bindir}/mkl-dnn/tests/benchdnn + cp -r ${B}/tests/benchdnn/inputs/* ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs +} + +do_install_ptest () { + install -d ${D}${PTEST_PATH}/tests + install -m 0755 ${B}/tests/api-c ${D}${PTEST_PATH}/tests + install -m 0755 ${B}/tests/test_c_symbols-c ${D}${PTEST_PATH}/tests +} + +PACKAGES =+ "${PN}-test" + +FILES:${PN}-test = "${bindir}/mkl-dnn/*" diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/clang_%.bbappend b/dynamic-layers/clang-layer/recipes-devtools/clang/clang_%.bbappend deleted file mode 100644 index f8d5a252..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/clang_%.bbappend +++ /dev/null @@ -1,13 +0,0 @@ -FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/files:" - -DEPENDS_append = " opencl-clang-native" -LLVM_TARGETS_TO_BUILD = "X86" - -do_install_append_intel-x86-common() { - DESTDIR=${D} ninja -v install-cmake-exports -} - -LIBCPLUSPLUS = "" - -# undefined reference to `__atomic_load' on i*86. -COMPATIBLE_HOST = '(x86_64).*-linux' diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-OpenCL-Change-type-of-block-pointer-for-OpenCL.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-OpenCL-Change-type-of-block-pointer-for-OpenCL.patch deleted file mode 100644 index 1c491402..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-OpenCL-Change-type-of-block-pointer-for-OpenCL.patch +++ /dev/null @@ -1,156 +0,0 @@ -From 39a3ac0065c23d1e2d55dfd8792cc28a146a4307 Mon Sep 17 00:00:00 2001 -From: Alexey Bader <alexey.bader@intel.com> -Date: Tue, 19 Feb 2019 15:19:06 +0000 -Subject: [PATCH 1/2] [OpenCL] Change type of block pointer for OpenCL - -Summary: - -For some reason OpenCL blocks in LLVM IR are represented as function pointers. -These pointers do not point to any real function and never get called. Actually -they point to some structure, which in turn contains pointer to the real block -invoke function. -This patch changes represntation of OpenCL blocks in LLVM IR from function -pointers to pointers to `%struct.__block_literal_generic`. -Such representation allows to avoid unnecessary bitcasts and simplifies -further processing (e.g. translation to SPIR-V ) of the module for targets -which do not support function pointers. - -Patch by: Alexey Sotkin. - -Reviewers: Anastasia, yaxunl, svenvh - -Reviewed By: Anastasia - -Subscribers: alexbatashev, cfe-commits - -Tags: #clang - -Differential Revision: https://reviews.llvm.org/D58277 - -git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354337 91177308-0d34-0410-b5e6-96231b3b80d8 - -Upstream-Status: Backport -[https://github.com/llvm-mirror/clang/commit/283f308bdb5893bab1f36791711346e746045f94] -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - lib/CodeGen/CodeGenTypes.cpp | 4 +++- - test/CodeGenOpenCL/blocks.cl | 18 ++++++++---------- - test/CodeGenOpenCL/cl20-device-side-enqueue.cl | 18 +++++++++--------- - 3 files changed, 20 insertions(+), 20 deletions(-) - -diff --git a/lib/CodeGen/CodeGenTypes.cpp b/lib/CodeGen/CodeGenTypes.cpp -index 2acf1ac..93b3ebf 100644 ---- a/lib/CodeGen/CodeGenTypes.cpp -+++ b/lib/CodeGen/CodeGenTypes.cpp -@@ -637,7 +637,9 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { - - case Type::BlockPointer: { - const QualType FTy = cast<BlockPointerType>(Ty)->getPointeeType(); -- llvm::Type *PointeeType = ConvertTypeForMem(FTy); -+ llvm::Type *PointeeType = CGM.getLangOpts().OpenCL -+ ? CGM.getGenericBlockLiteralType() -+ : ConvertTypeForMem(FTy); - unsigned AS = Context.getTargetAddressSpace(FTy); - ResultType = llvm::PointerType::get(PointeeType, AS); - break; -diff --git a/test/CodeGenOpenCL/blocks.cl b/test/CodeGenOpenCL/blocks.cl -index 675240c..19aacc3 100644 ---- a/test/CodeGenOpenCL/blocks.cl -+++ b/test/CodeGenOpenCL/blocks.cl -@@ -35,11 +35,10 @@ void foo(){ - // SPIR: %[[block_captured:.*]] = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 }>, <{ i32, i32, i8 addrspace(4)*, i32 }>* %[[block]], i32 0, i32 3 - // SPIR: %[[i_value:.*]] = load i32, i32* %i - // SPIR: store i32 %[[i_value]], i32* %[[block_captured]], -- // SPIR: %[[blk_ptr:.*]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32 }>* %[[block]] to i32 ()* -- // SPIR: %[[blk_gen_ptr:.*]] = addrspacecast i32 ()* %[[blk_ptr]] to i32 () addrspace(4)* -- // SPIR: store i32 () addrspace(4)* %[[blk_gen_ptr]], i32 () addrspace(4)** %[[block_B:.*]], -- // SPIR: %[[blk_gen_ptr:.*]] = load i32 () addrspace(4)*, i32 () addrspace(4)** %[[block_B]] -- // SPIR: %[[block_literal:.*]] = bitcast i32 () addrspace(4)* %[[blk_gen_ptr]] to %struct.__opencl_block_literal_generic addrspace(4)* -+ // SPIR: %[[blk_ptr:.*]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32 }>* %[[block]] to %struct.__opencl_block_literal_generic* -+ // SPIR: %[[blk_gen_ptr:.*]] = addrspacecast %struct.__opencl_block_literal_generic* %[[blk_ptr]] to %struct.__opencl_block_literal_generic addrspace(4)* -+ // SPIR: store %struct.__opencl_block_literal_generic addrspace(4)* %[[blk_gen_ptr]], %struct.__opencl_block_literal_generic addrspace(4)** %[[block_B:.*]], -+ // SPIR: %[[block_literal:.*]] = load %struct.__opencl_block_literal_generic addrspace(4)*, %struct.__opencl_block_literal_generic addrspace(4)** %[[block_B]] - // SPIR: %[[invoke_addr:.*]] = getelementptr inbounds %struct.__opencl_block_literal_generic, %struct.__opencl_block_literal_generic addrspace(4)* %[[block_literal]], i32 0, i32 2 - // SPIR: %[[blk_gen_ptr:.*]] = bitcast %struct.__opencl_block_literal_generic addrspace(4)* %[[block_literal]] to i8 addrspace(4)* - // SPIR: %[[invoke_func_ptr:.*]] = load i8 addrspace(4)*, i8 addrspace(4)* addrspace(4)* %[[invoke_addr]] -@@ -50,11 +49,10 @@ void foo(){ - // AMDGCN: %[[block_captured:.*]] = getelementptr inbounds <{ i32, i32, i8*, i32 }>, <{ i32, i32, i8*, i32 }> addrspace(5)* %[[block]], i32 0, i32 3 - // AMDGCN: %[[i_value:.*]] = load i32, i32 addrspace(5)* %i - // AMDGCN: store i32 %[[i_value]], i32 addrspace(5)* %[[block_captured]], -- // AMDGCN: %[[blk_ptr:.*]] = bitcast <{ i32, i32, i8*, i32 }> addrspace(5)* %[[block]] to i32 () addrspace(5)* -- // AMDGCN: %[[blk_gen_ptr:.*]] = addrspacecast i32 () addrspace(5)* %[[blk_ptr]] to i32 ()* -- // AMDGCN: store i32 ()* %[[blk_gen_ptr]], i32 ()* addrspace(5)* %[[block_B:.*]], -- // AMDGCN: %[[blk_gen_ptr:.*]] = load i32 ()*, i32 ()* addrspace(5)* %[[block_B]] -- // AMDGCN: %[[block_literal:.*]] = bitcast i32 ()* %[[blk_gen_ptr]] to %struct.__opencl_block_literal_generic* -+ // AMDGCN: %[[blk_ptr:.*]] = bitcast <{ i32, i32, i8*, i32 }> addrspace(5)* %[[block]] to %struct.__opencl_block_literal_generic addrspace(5)* -+ // AMDGCN: %[[blk_gen_ptr:.*]] = addrspacecast %struct.__opencl_block_literal_generic addrspace(5)* %[[blk_ptr]] to %struct.__opencl_block_literal_generic* -+ // AMDGCN: store %struct.__opencl_block_literal_generic* %[[blk_gen_ptr]], %struct.__opencl_block_literal_generic* addrspace(5)* %[[block_B:.*]], -+ // AMDGCN: %[[block_literal:.*]] = load %struct.__opencl_block_literal_generic*, %struct.__opencl_block_literal_generic* addrspace(5)* %[[block_B]] - // AMDGCN: %[[invoke_addr:.*]] = getelementptr inbounds %struct.__opencl_block_literal_generic, %struct.__opencl_block_literal_generic* %[[block_literal]], i32 0, i32 2 - // AMDGCN: %[[blk_gen_ptr:.*]] = bitcast %struct.__opencl_block_literal_generic* %[[block_literal]] to i8* - // AMDGCN: %[[invoke_func_ptr:.*]] = load i8*, i8** %[[invoke_addr]] -diff --git a/test/CodeGenOpenCL/cl20-device-side-enqueue.cl b/test/CodeGenOpenCL/cl20-device-side-enqueue.cl -index 4732194..8445016 100644 ---- a/test/CodeGenOpenCL/cl20-device-side-enqueue.cl -+++ b/test/CodeGenOpenCL/cl20-device-side-enqueue.cl -@@ -11,7 +11,7 @@ typedef struct {int a;} ndrange_t; - - // For a block global variable, first emit the block literal as a global variable, then emit the block variable itself. - // COMMON: [[BL_GLOBAL:@__block_literal_global[^ ]*]] = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } { i32 {{[0-9]+}}, i32 {{[0-9]+}}, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*)* [[INV_G:@[^ ]+]] to i8*) to i8 addrspace(4)*) } --// COMMON: @block_G = addrspace(1) constant void (i8 addrspace(3)*) addrspace(4)* addrspacecast (void (i8 addrspace(3)*) addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BL_GLOBAL]] to void (i8 addrspace(3)*) addrspace(1)*) to void (i8 addrspace(3)*) addrspace(4)*) -+// COMMON: @block_G = addrspace(1) constant %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BL_GLOBAL]] to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*) - - // For anonymous blocks without captures, emit block literals as global variable. - // COMMON: [[BLG1:@__block_literal_global[^ ]*]] = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } { i32 {{[0-9]+}}, i32 {{[0-9]+}}, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*)* {{@[^ ]+}} to i8*) to i8 addrspace(4)*) } -@@ -77,9 +77,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { - // COMMON: [[DEF_Q:%[0-9]+]] = load %opencl.queue_t{{.*}}*, %opencl.queue_t{{.*}}** %default_queue - // COMMON: [[FLAGS:%[0-9]+]] = load i32, i32* %flags - // COMMON: store i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* [[INVL1:@__device_side_enqueue_block_invoke[^ ]*]] to i8*) to i8 addrspace(4)*), i8 addrspace(4)** %block.invoke -- // B32: [[BL:%[0-9]+]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block to void ()* -- // B64: [[BL:%[0-9]+]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32 addrspace(1)*, i32 }>* %block to void ()* -- // COMMON: [[BL_I8:%[0-9]+]] = addrspacecast void ()* [[BL]] to i8 addrspace(4)* -+ // B32: [[BL:%[0-9]+]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block to %struct.__opencl_block_literal_generic* -+ // B64: [[BL:%[0-9]+]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32 addrspace(1)*, i32 }>* %block to %struct.__opencl_block_literal_generic* -+ // COMMON: [[BL_I8:%[0-9]+]] = addrspacecast %struct.__opencl_block_literal_generic* [[BL]] to i8 addrspace(4)* - // COMMON-LABEL: call i32 @__enqueue_kernel_basic( - // COMMON-SAME: %opencl.queue_t{{.*}}* [[DEF_Q]], i32 [[FLAGS]], %struct.ndrange_t* byval [[NDR]]{{([0-9]+)?}}, - // COMMON-SAME: i8 addrspace(4)* addrspacecast (i8* bitcast ({{.*}} [[INVLK1:[^ ]+_kernel]] to i8*) to i8 addrspace(4)*), -@@ -95,8 +95,8 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { - // COMMON: [[WAIT_EVNT:%[0-9]+]] = addrspacecast %opencl.clk_event_t{{.*}}** %event_wait_list to %opencl.clk_event_t{{.*}}* addrspace(4)* - // COMMON: [[EVNT:%[0-9]+]] = addrspacecast %opencl.clk_event_t{{.*}}** %clk_event to %opencl.clk_event_t{{.*}}* addrspace(4)* - // COMMON: store i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* [[INVL2:@__device_side_enqueue_block_invoke[^ ]*]] to i8*) to i8 addrspace(4)*), i8 addrspace(4)** %block.invoke -- // COMMON: [[BL:%[0-9]+]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32{{.*}}, i32{{.*}}, i32{{.*}} }>* %block3 to void ()* -- // COMMON: [[BL_I8:%[0-9]+]] = addrspacecast void ()* [[BL]] to i8 addrspace(4)* -+ // COMMON: [[BL:%[0-9]+]] = bitcast <{ i32, i32, i8 addrspace(4)*, i32{{.*}}, i32{{.*}}, i32{{.*}} }>* %block3 to %struct.__opencl_block_literal_generic* -+ // COMMON: [[BL_I8:%[0-9]+]] = addrspacecast %struct.__opencl_block_literal_generic* [[BL]] to i8 addrspace(4)* - // COMMON-LABEL: call i32 @__enqueue_kernel_basic_events - // COMMON-SAME: (%opencl.queue_t{{.*}}* [[DEF_Q]], i32 [[FLAGS]], %struct.ndrange_t* {{.*}}, i32 2, %opencl.clk_event_t{{.*}}* addrspace(4)* [[WAIT_EVNT]], %opencl.clk_event_t{{.*}}* addrspace(4)* [[EVNT]], - // COMMON-SAME: i8 addrspace(4)* addrspacecast (i8* bitcast ({{.*}} [[INVLK2:[^ ]+_kernel]] to i8*) to i8 addrspace(4)*), -@@ -300,13 +300,13 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { - // Emits global block literal [[BLG8]] and invoke function [[INVG8]]. - // The full type of these expressions are long (and repeated elsewhere), so we - // capture it as part of the regex for convenience and clarity. -- // COMMON: store void () addrspace(4)* addrspacecast (void () addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to void () addrspace(1)*) to void () addrspace(4)*), void () addrspace(4)** %block_A -+ // COMMON: store %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*), %struct.__opencl_block_literal_generic addrspace(4)** %block_A - void (^const block_A)(void) = ^{ - return; - }; - - // Emits global block literal [[BLG9]] and invoke function [[INVG9]]. -- // COMMON: store void (i8 addrspace(3)*) addrspace(4)* addrspacecast (void (i8 addrspace(3)*) addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG9]] to void (i8 addrspace(3)*) addrspace(1)*) to void (i8 addrspace(3)*) addrspace(4)*), void (i8 addrspace(3)*) addrspace(4)** %block_B -+ // COMMON: store %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG9]] to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*), %struct.__opencl_block_literal_generic addrspace(4)** %block_B - void (^const block_B)(local void *) = ^(local void *a) { - return; - }; -@@ -346,7 +346,7 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { - // COMMON: store i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* [[INVL3:@__device_side_enqueue_block_invoke[^ ]*]] to i8*) to i8 addrspace(4)*), i8 addrspace(4)** %block.invoke - // COMMON: [[DEF_Q:%[0-9]+]] = load %opencl.queue_t{{.*}}*, %opencl.queue_t{{.*}}** %default_queue - // COMMON: [[FLAGS:%[0-9]+]] = load i32, i32* %flags -- // COMMON: [[BL_I8:%[0-9]+]] = addrspacecast void ()* {{.*}} to i8 addrspace(4)* -+ // COMMON: [[BL_I8:%[0-9]+]] = addrspacecast %struct.__opencl_block_literal_generic* {{.*}} to i8 addrspace(4)* - // COMMON-LABEL: call i32 @__enqueue_kernel_basic( - // COMMON-SAME: %opencl.queue_t{{.*}}* [[DEF_Q]], i32 [[FLAGS]], %struct.ndrange_t* byval [[NDR]]{{([0-9]+)?}}, - // COMMON-SAME: i8 addrspace(4)* addrspacecast (i8* bitcast ({{.*}} [[INVLK3:[^ ]+_kernel]] to i8*) to i8 addrspace(4)*), --- -1.8.3.1 - diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-Update-LowerOpenCL-pass-to-handle-new-blocks-represn.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-Update-LowerOpenCL-pass-to-handle-new-blocks-represn.patch deleted file mode 100644 index 4a528674..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-Update-LowerOpenCL-pass-to-handle-new-blocks-represn.patch +++ /dev/null @@ -1,1119 +0,0 @@ -From 9ce0fe02fd6cda5fb29fbb0d5037a1798a810b8a Mon Sep 17 00:00:00 2001 -From: Alexey Sotkin <alexey.sotkin@intel.com> -Date: Thu, 21 Feb 2019 17:14:36 +0300 -Subject: [PATCH 1/3] Update LowerOpenCL pass to handle new blocks - represntation in LLVM IR - -Upstream-Status: Backport -[https://github.com/KhronosGroup/SPIRV-LLVM-Translator/commit/bd6ddfaf7232cd81c7f2fe9877e66f286731bd8e] -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - lib/SPIRV/SPIRVLowerOCLBlocks.cpp | 413 ++++++++---------------------- - test/global_block.ll | 71 ++--- - test/literal-struct.ll | 31 ++- - test/transcoding/block_w_struct_return.ll | 47 ++-- - test/transcoding/enqueue_kernel.ll | 237 ++++++++++------- - 5 files changed, 317 insertions(+), 482 deletions(-) - -diff --git a/lib/SPIRV/SPIRVLowerOCLBlocks.cpp b/lib/SPIRV/SPIRVLowerOCLBlocks.cpp -index 50e1838..b42a4ec 100644 ---- a/lib/SPIRV/SPIRVLowerOCLBlocks.cpp -+++ b/lib/SPIRV/SPIRVLowerOCLBlocks.cpp -@@ -1,303 +1,110 @@ --//===- SPIRVLowerOCLBlocks.cpp - OCL Utilities ----------------------------===//
--//
--// The LLVM/SPIRV Translator
--//
--// This file is distributed under the University of Illinois Open Source
--// License. See LICENSE.TXT for details.
--//
--// Copyright (c) 2018 Intel Corporation. All rights reserved.
--//
--// Permission is hereby granted, free of charge, to any person obtaining a
--// copy of this software and associated documentation files (the "Software"),
--// to deal with the Software without restriction, including without limitation
--// the rights to use, copy, modify, merge, publish, distribute, sublicense,
--// and/or sell copies of the Software, and to permit persons to whom the
--// Software is furnished to do so, subject to the following conditions:
--//
--// Redistributions of source code must retain the above copyright notice,
--// this list of conditions and the following disclaimers.
--// Redistributions in binary form must reproduce the above copyright notice,
--// this list of conditions and the following disclaimers in the documentation
--// and/or other materials provided with the distribution.
--// Neither the names of Intel Corporation, nor the names of its
--// contributors may be used to endorse or promote products derived from this
--// Software without specific prior written permission.
--// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
--// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
--// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
--// CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
--// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
--// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH
--// THE SOFTWARE.
--//
--//===----------------------------------------------------------------------===//
--//
--// SPIR-V specification doesn't allow function pointers, so SPIR-V translator
--// is designed to fail if a value with function type (except calls) is occured.
--// Currently there is only two cases, when function pointers are generating in
--// LLVM IR in OpenCL - block calls and device side enqueue built-in calls.
--//
--// In both cases values with function type used as intermediate representation
--// for block literal structure.
--//
--// This pass is designed to find such cases and simplify them to avoid any
--// function pointer types occurrences in LLVM IR in 4 steps.
--//
--// 1. Find all function pointer allocas, like
--// %block = alloca void () *
--//
--// Then find a single store to that alloca:
--// %blockLit = alloca <{ i32, i32, ...}>, align 4
--// %0 = bitcast <{ i32, i32, ... }>* %blockLit to void ()*
--// > store void ()* %0, void ()** %block, align 4
--//
--// And replace the alloca users by new instructions which used stored value
--// %blockLit itself instead of function pointer alloca %block.
--//
--// 2. Find consecutive casts from block literal type to i8 addrspace(4)*
--// used function pointers as an intermediate type:
--// %0 = bitcast <{ i32, i32 }> %block to void() *
--// %1 = addrspacecast void() * %0 to i8 addrspace(4)*
--// And simplify them:
--// %2 = addrspacecast <{ i32, i32 }> %block to i8 addrspace(4)*
--//
--// 3. Find all unused instructions with function pointer type occured after
--// pp.1-2 and remove them.
--//
--// 4. Find unused globals with function pointer type, like
--// @block = constant void ()*
--// bitcast ({ i32, i32 }* @__block_literal_global to void ()*
--//
--// And remove them.
--//
--//===----------------------------------------------------------------------===//
--#define DEBUG_TYPE "spv-lower-ocl-blocks"
--
--#include "OCLUtil.h"
--#include "SPIRVInternal.h"
--
--#include "llvm/ADT/SetVector.h"
--#include "llvm/Analysis/ValueTracking.h"
--#include "llvm/IR/GlobalVariable.h"
--#include "llvm/IR/InstIterator.h"
--#include "llvm/IR/Module.h"
--#include "llvm/Pass.h"
--#include "llvm/PassSupport.h"
--#include "llvm/Support/Casting.h"
--
--using namespace llvm;
--
--namespace {
--
--static void
--removeUnusedFunctionPtrInst(Instruction *I,
-- SmallSetVector<Instruction *, 16> &FuncPtrInsts) {
-- for (unsigned OpIdx = 0, Ops = I->getNumOperands(); OpIdx != Ops; ++OpIdx) {
-- Instruction *OpI = dyn_cast<Instruction>(I->getOperand(OpIdx));
-- I->setOperand(OpIdx, nullptr);
-- if (OpI && OpI != I && OpI->user_empty())
-- FuncPtrInsts.insert(OpI);
-- }
-- I->eraseFromParent();
--}
--
--static bool isFuncPtrAlloca(const AllocaInst *AI) {
-- auto *ET = dyn_cast<PointerType>(AI->getAllocatedType());
-- return ET && ET->getElementType()->isFunctionTy();
--}
--
--static bool hasFuncPtrType(const Value *V) {
-- auto *PT = dyn_cast<PointerType>(V->getType());
-- return PT && PT->getElementType()->isFunctionTy();
--}
--
--static bool isFuncPtrInst(const Instruction *I) {
-- if (auto *AI = dyn_cast<AllocaInst>(I))
-- return isFuncPtrAlloca(AI);
--
-- for (auto &Op : I->operands()) {
-- if (auto *AI = dyn_cast<AllocaInst>(Op))
-- return isFuncPtrAlloca(AI);
--
-- auto *OpI = dyn_cast<Instruction>(&Op);
-- if (OpI && OpI != I && hasFuncPtrType(OpI))
-- return true;
-- }
-- return false;
--}
--
--static StoreInst *findSingleStore(AllocaInst *AI) {
-- StoreInst *Store = nullptr;
-- for (auto *U : AI->users()) {
-- if (!isa<StoreInst>(U))
-- continue; // not a store
-- if (Store)
-- return nullptr; // there are more than one stores
-- Store = dyn_cast<StoreInst>(U);
-- }
-- return Store;
--}
--
--static void fixFunctionPtrAllocaUsers(AllocaInst *AI) {
-- // Find and remove a single store to alloca
-- auto *SingleStore = findSingleStore(AI);
-- assert(SingleStore && "More than one store to the function pointer alloca");
-- auto *StoredVal = SingleStore->getValueOperand();
-- SingleStore->eraseFromParent();
--
-- // Find loads from the alloca and replace thier users
-- for (auto *U : AI->users()) {
-- auto *LI = dyn_cast<LoadInst>(U);
-- if (!LI)
-- continue;
--
-- for (auto *U : LI->users()) {
-- auto *UInst = cast<Instruction>(U);
-- auto *Cast = CastInst::CreatePointerBitCastOrAddrSpaceCast(
-- StoredVal, UInst->getType(), "", UInst);
-- UInst->replaceAllUsesWith(Cast);
-- }
-- }
--}
--
--static int getBlockLiteralIdx(const Function &F) {
-- StringRef FName = F.getName();
-- if (isEnqueueKernelBI(FName))
-- return FName.contains("events") ? 7 : 4;
-- if (isKernelQueryBI(FName))
-- return FName.contains("for_ndrange") ? 2 : 1;
-- if (FName.startswith("__") && FName.contains("_block_invoke"))
-- return F.hasStructRetAttr() ? 1 : 0;
--
-- return -1; // No block literal argument
--}
--
--static bool hasBlockLiteralArg(const Function &F) {
-- return getBlockLiteralIdx(F) != -1;
--}
--
--static bool simplifyFunctionPtrCasts(Function &F) {
-- bool Changed = false;
-- int BlockLiteralIdx = getBlockLiteralIdx(F);
-- for (auto *U : F.users()) {
-- auto *Call = dyn_cast<CallInst>(U);
-- if (!Call)
-- continue;
-- if (Call->getFunction()->getName() == F.getName().str() + "_kernel")
-- continue; // Skip block invoke function calls inside block invoke kernels
--
-- const DataLayout &DL = F.getParent()->getDataLayout();
-- auto *BlockLiteral = Call->getOperand(BlockLiteralIdx);
-- auto *BlockLiteralVal = GetUnderlyingObject(BlockLiteral, DL);
-- if (isa<GlobalVariable>(BlockLiteralVal))
-- continue; // nothing to do with globals
--
-- auto *BlockLiteralAlloca = cast<AllocaInst>(BlockLiteralVal);
-- assert(!BlockLiteralAlloca->getAllocatedType()->isFunctionTy() &&
-- "Function type shouldn't be there");
--
-- auto *NewBlockLiteral = CastInst::CreatePointerBitCastOrAddrSpaceCast(
-- BlockLiteralAlloca, BlockLiteral->getType(), "", Call);
-- BlockLiteral->replaceAllUsesWith(NewBlockLiteral);
-- Changed |= true;
-- }
-- return Changed;
--}
--
--static void
--findFunctionPtrAllocas(Module &M,
-- SmallVectorImpl<AllocaInst *> &FuncPtrAllocas) {
-- for (auto &F : M) {
-- if (F.isDeclaration())
-- continue;
-- for (auto &I : instructions(F)) {
-- auto *AI = dyn_cast<AllocaInst>(&I);
-- if (!AI || !isFuncPtrAlloca(AI))
-- continue;
-- FuncPtrAllocas.push_back(AI);
-- }
-- }
--}
--
--static void
--findUnusedFunctionPtrInsts(Module &M,
-- SmallSetVector<Instruction *, 16> &FuncPtrInsts) {
-- for (auto &F : M) {
-- if (F.isDeclaration())
-- continue;
-- for (auto &I : instructions(F))
-- if (I.user_empty() && isFuncPtrInst(&I))
-- FuncPtrInsts.insert(&I);
-- }
--}
--
--static void
--findUnusedFunctionPtrGlbs(Module &M,
-- SmallVectorImpl<GlobalVariable *> &FuncPtrGlbs) {
-- for (auto &GV : M.globals()) {
-- if (!GV.user_empty())
-- continue;
-- auto *GVType = dyn_cast<PointerType>(GV.getType()->getElementType());
-- if (GVType && GVType->getElementType()->isFunctionTy())
-- FuncPtrGlbs.push_back(&GV);
-- }
--}
--
--class SPIRVLowerOCLBlocks : public ModulePass {
--
--public:
-- SPIRVLowerOCLBlocks() : ModulePass(ID) {}
--
-- bool runOnModule(Module &M) {
-- bool Changed = false;
--
-- // 1. Find function pointer allocas and fix their users
-- SmallVector<AllocaInst *, 16> FuncPtrAllocas;
-- findFunctionPtrAllocas(M, FuncPtrAllocas);
--
-- Changed |= !FuncPtrAllocas.empty();
-- for (auto *AI : FuncPtrAllocas)
-- fixFunctionPtrAllocaUsers(AI);
--
-- // 2. Simplify consecutive casts which use function pointer types
-- for (auto &F : M)
-- if (hasBlockLiteralArg(F))
-- Changed |= simplifyFunctionPtrCasts(F);
--
-- // 3. Cleanup unused instructions with function pointer type
-- // which are occured after pp. 1-2
-- SmallSetVector<Instruction *, 16> FuncPtrInsts;
-- findUnusedFunctionPtrInsts(M, FuncPtrInsts);
--
-- Changed |= !FuncPtrInsts.empty();
-- while (!FuncPtrInsts.empty()) {
-- Instruction *I = FuncPtrInsts.pop_back_val();
-- removeUnusedFunctionPtrInst(I, FuncPtrInsts);
-- }
--
-- // 4. Find and remove unused global variables with function pointer type
-- SmallVector<GlobalVariable *, 16> FuncPtrGlbs;
-- findUnusedFunctionPtrGlbs(M, FuncPtrGlbs);
--
-- Changed |= !FuncPtrGlbs.empty();
-- for (auto *GV : FuncPtrGlbs)
-- GV->eraseFromParent();
--
-- return Changed;
-- }
--
-- static char ID;
--}; // class SPIRVLowerOCLBlocks
--
--char SPIRVLowerOCLBlocks::ID = 0;
--
--} // namespace
--
--INITIALIZE_PASS(
-- SPIRVLowerOCLBlocks, "spv-lower-ocl-blocks",
-- "Remove function pointers occured in case of using OpenCL blocks", false,
-- false)
--
--llvm::ModulePass *llvm::createSPIRVLowerOCLBlocks() {
-- return new SPIRVLowerOCLBlocks();
--}
-+//===- SPIRVLowerOCLBlocks.cpp - OCL Utilities ----------------------------===// -+// -+// The LLVM/SPIRV Translator -+// -+// This file is distributed under the University of Illinois Open Source -+// License. See LICENSE.TXT for details. -+// -+// Copyright (c) 2018 Intel Corporation. All rights reserved. -+// -+// Permission is hereby granted, free of charge, to any person obtaining a -+// copy of this software and associated documentation files (the "Software"), -+// to deal with the Software without restriction, including without limitation -+// the rights to use, copy, modify, merge, publish, distribute, sublicense, -+// and/or sell copies of the Software, and to permit persons to whom the -+// Software is furnished to do so, subject to the following conditions: -+// -+// Redistributions of source code must retain the above copyright notice, -+// this list of conditions and the following disclaimers. -+// Redistributions in binary form must reproduce the above copyright notice, -+// this list of conditions and the following disclaimers in the documentation -+// and/or other materials provided with the distribution. -+// Neither the names of Intel Corporation, nor the names of its -+// contributors may be used to endorse or promote products derived from this -+// Software without specific prior written permission. -+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+// CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH -+// THE SOFTWARE. -+// -+//===----------------------------------------------------------------------===// -+// -+// SPIR-V specification doesn't allow function pointers, so SPIR-V translator -+// is designed to fail if a value with function type (except calls) is occured. -+// Currently there is only two cases, when function pointers are generating in -+// LLVM IR in OpenCL - block calls and device side enqueue built-in calls. -+// -+// In both cases values with function type used as intermediate representation -+// for block literal structure. -+// -+// In LLVM IR produced by clang, blocks are represented with the following -+// structure: -+// %struct.__opencl_block_literal_generic = type { i32, i32, i8 addrspace(4)* } -+// Pointers to block invoke functions are stored in the third field. Clang -+// replaces inderect function calls in all cases except if block is passed as a -+// function argument. Note that it is somewhat unclear if the OpenCL C spec -+// should allow passing blocks as function argumernts. This pass is not supposed -+// to work correctly with such functions. -+// Clang though has to store function pointers to this structure. Purpose of -+// this pass is to replace store of function pointers(not allowed in SPIR-V) -+// with null pointers. -+// -+//===----------------------------------------------------------------------===// -+#define DEBUG_TYPE "spv-lower-ocl-blocks" -+ -+#include "SPIRVInternal.h" -+ -+#include "llvm/IR/Module.h" -+#include "llvm/Pass.h" -+#include "llvm/Support/Regex.h" -+ -+using namespace llvm; -+ -+namespace { -+ -+static bool isBlockInvoke(Function &F) { -+ static Regex BlockInvokeRegex("_block_invoke_?[0-9]*$"); -+ return BlockInvokeRegex.match(F.getName()); -+} -+ -+class SPIRVLowerOCLBlocks : public ModulePass { -+ -+public: -+ SPIRVLowerOCLBlocks() : ModulePass(ID) {} -+ -+ bool runOnModule(Module &M) { -+ bool Changed = false; -+ for (Function &F : M) { -+ if (!isBlockInvoke(F)) -+ continue; -+ for (User *U : F.users()) { -+ if (!isa<Constant>(U)) -+ continue; -+ Constant *Null = Constant::getNullValue(U->getType()); -+ if (U != Null) { -+ U->replaceAllUsesWith(Null); -+ Changed = true; -+ } -+ } -+ } -+ return Changed; -+ } -+ -+ static char ID; -+}; -+ -+char SPIRVLowerOCLBlocks::ID = 0; -+ -+} // namespace -+ -+INITIALIZE_PASS( -+ SPIRVLowerOCLBlocks, "spv-lower-ocl-blocks", -+ "Remove function pointers occured in case of using OpenCL blocks", false, -+ false) -+ -+llvm::ModulePass *llvm::createSPIRVLowerOCLBlocks() { -+ return new SPIRVLowerOCLBlocks(); -+} -diff --git a/test/global_block.ll b/test/global_block.ll -index a9267d8..efb4cf3 100644 ---- a/test/global_block.ll -+++ b/test/global_block.ll -@@ -16,7 +16,7 @@ - ; RUN: llvm-spirv %t.bc -o %t.spv - ; RUN: llvm-spirv -r %t.spv -o - | llvm-dis | FileCheck %s --check-prefix=CHECK-LLVM - --target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64" -+target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" - target triple = "spir-unknown-unknown" - - ; CHECK-SPIRV: Name [[block_invoke:[0-9]+]] "_block_invoke" -@@ -26,71 +26,56 @@ target triple = "spir-unknown-unknown" - ; CHECK-SPIRV: TypePointer [[int8Ptr:[0-9]+]] 8 [[int8]] - ; CHECK-SPIRV: TypeFunction [[block_invoke_type:[0-9]+]] [[int]] [[int8Ptr]] [[int]] - --;; This variable is not needed in SPIRV --; CHECK-SPIRV-NOT: Name {{[0-9]+}} block_kernel.b1 --; CHECK-LLVM-NOT: @block_kernel.b1 --@block_kernel.b1 = internal addrspace(2) constant i32 (i32) addrspace(4)* addrspacecast (i32 (i32) addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global to i32 (i32) addrspace(1)*) to i32 (i32) addrspace(4)*), align 8 -+%struct.__opencl_block_literal_generic = type { i32, i32, i8 addrspace(4)* } - --@__block_literal_global = internal addrspace(1) constant { i32, i32 } { i32 8, i32 4 }, align 4 -+@block_kernel.b1 = internal addrspace(2) constant %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*), align 4 -+@__block_literal_global = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } { i32 12, i32 4, i8 addrspace(4)* addrspacecast (i8* bitcast (i32 (i8 addrspace(4)*, i32)* @_block_invoke to i8*) to i8 addrspace(4)*) }, align 4 - --; Function Attrs: convergent nounwind --define spir_kernel void @block_kernel(i32 addrspace(1)* %res) #0 !kernel_arg_addr_space !4 !kernel_arg_access_qual !5 !kernel_arg_type !6 !kernel_arg_base_type !6 !kernel_arg_type_qual !7 { -+; Function Attrs: convergent noinline nounwind optnone -+define spir_kernel void @block_kernel(i32 addrspace(1)* %res) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !5 !kernel_arg_base_type !5 !kernel_arg_type_qual !6 { - entry: -- %res.addr = alloca i32 addrspace(1)*, align 8 -- store i32 addrspace(1)* %res, i32 addrspace(1)** %res.addr, align 8, !tbaa !10 -- -+ %res.addr = alloca i32 addrspace(1)*, align 4 -+ store i32 addrspace(1)* %res, i32 addrspace(1)** %res.addr, align 4 - ; CHECK-SPIRV: FunctionCall [[int]] {{[0-9]+}} [[block_invoke]] {{[0-9]+}} [[five]] - ; CHECK-LLVM: %call = call spir_func i32 @_block_invoke(i8 addrspace(4)* {{.*}}, i32 5) -- %call = call spir_func i32 @_block_invoke(i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*), i32 5) #2 -- -- %0 = load i32 addrspace(1)*, i32 addrspace(1)** %res.addr, align 8, !tbaa !10 -- store i32 %call, i32 addrspace(1)* %0, align 4, !tbaa !14 -+ %call = call spir_func i32 @_block_invoke(i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*), i32 5) #2 -+ %0 = load i32 addrspace(1)*, i32 addrspace(1)** %res.addr, align 4 -+ store i32 %call, i32 addrspace(1)* %0, align 4 - ret void - } - --; CHECK-SPIRV: 5 Function [[int]] [[block_invoke]] 0 [[block_invoke_type]] -+; CHECK-SPIRV: 5 Function [[int]] [[block_invoke]] 2 [[block_invoke_type]] - ; CHECK-SPIRV-NEXT: 3 FunctionParameter [[int8Ptr]] {{[0-9]+}} - ; CHECK-SPIRV-NEXT: 3 FunctionParameter [[int]] {{[0-9]+}} - ; CHECK-LLVM: define internal spir_func i32 @_block_invoke(i8 addrspace(4)* {{.*}}, i32 %{{.*}}) --; Function Attrs: convergent nounwind -+; Function Attrs: convergent noinline nounwind optnone - define internal spir_func i32 @_block_invoke(i8 addrspace(4)* %.block_descriptor, i32 %i) #1 { - entry: -- %.block_descriptor.addr = alloca i8 addrspace(4)*, align 8 -+ %.block_descriptor.addr = alloca i8 addrspace(4)*, align 4 - %i.addr = alloca i32, align 4 -- store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 8 -- %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32 }> addrspace(4)* -- store i32 %i, i32* %i.addr, align 4, !tbaa !14 -- %0 = load i32, i32* %i.addr, align 4, !tbaa !14 -+ %block.addr = alloca <{ i32, i32, i8 addrspace(4)* }> addrspace(4)*, align 4 -+ store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 4 -+ %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* -+ store i32 %i, i32* %i.addr, align 4 -+ store <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* %block, <{ i32, i32, i8 addrspace(4)* }> addrspace(4)** %block.addr, align 4 -+ %0 = load i32, i32* %i.addr, align 4 - %add = add nsw i32 %0, 1 - ret i32 %add - } - --attributes #0 = { convergent nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } --attributes #1 = { convergent nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } -+attributes #0 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } -+attributes #1 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } - attributes #2 = { convergent } - - !llvm.module.flags = !{!0} --!opencl.enable.FP_CONTRACT = !{} - !opencl.ocl.version = !{!1} - !opencl.spir.version = !{!1} --!opencl.used.extensions = !{!2} --!opencl.used.optional.core.features = !{!2} --!opencl.compiler.options = !{!2} --!llvm.ident = !{!3} -+!llvm.ident = !{!2} - - !0 = !{i32 1, !"wchar_size", i32 4} - !1 = !{i32 2, i32 0} --!2 = !{} --!3 = !{!"clang version 7.0.0"} --!4 = !{i32 1} --!5 = !{!"none"} --!6 = !{!"int*"} --!7 = !{!""} --!8 = !{i1 false} --!9 = !{i32 0} --!10 = !{!11, !11, i64 0} --!11 = !{!"any pointer", !12, i64 0} --!12 = !{!"omnipotent char", !13, i64 0} --!13 = !{!"Simple C/C++ TBAA"} --!14 = !{!15, !15, i64 0} --!15 = !{!"int", !12, i64 0} -+!2 = !{!"clang version 9.0.0 (https://llvm.org/git/clang 04fb8964a801a5c5d7baa5a22272243a7d183896) (https://llvm.org/git/llvm 384f64397f6ad95a361b72d62c07d7bac9f24163)"} -+!3 = !{i32 1} -+!4 = !{!"none"} -+!5 = !{!"int*"} -+!6 = !{!""} -diff --git a/test/literal-struct.ll b/test/literal-struct.ll -index c52170a..52a731a 100644 ---- a/test/literal-struct.ll -+++ b/test/literal-struct.ll -@@ -2,7 +2,7 @@ - ; structs, i.e. structs whose type has no name. Typicaly clang generate such - ; structs if the kernel contains OpenCL 2.0 blocks. The IR was produced with - ; the following command: --; clang -cc1 -triple spir -cl-std=cl2.0 -O0 -finclude-default-header literal-struct.cl -emit-llvm -o test/literal-struct.ll -+; clang -cc1 -triple spir -cl-std=cl2.0 -O0 literal-struct.cl -emit-llvm -o test/literal-struct.ll - - ; literal-struct.cl: - ; void foo() -@@ -14,25 +14,28 @@ - ; RUN: llvm-as < %s | llvm-spirv -spirv-text -o %t - ; RUN: FileCheck < %t %s - --; CHECK-DAG: TypeInt [[Int:[0-9]+]] 32 0 --; CHECK-DAG: TypeStruct [[StructType:[0-9]+]] [[Int]] [[Int]] {{$}} -+; CHECK: TypeInt [[Int:[0-9]+]] 32 0 -+; CHECK: TypeInt [[Int8:[0-9]+]] 8 0 -+; CHECK: TypePointer [[Int8Ptr:[0-9]+]] 8 [[Int8]] -+; CHECK: TypeStruct [[StructType:[0-9]+]] [[Int]] [[Int]] [[Int8Ptr]] - - target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" - target triple = "spir" - --@__block_literal_global = internal addrspace(1) constant { i32, i32 } { i32 8, i32 4 }, align 4 -+%struct.__opencl_block_literal_generic = type { i32, i32, i8 addrspace(4)* } -+ -+@__block_literal_global = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } { i32 12, i32 4, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* @__foo_block_invoke to i8*) to i8 addrspace(4)*) }, align 4 - ; CHECK: ConstantComposite [[StructType]] - --; This is artificial case is added to cover ConstantNull instrucitions with TypeStruct. --@__block_literal_global.1 = internal addrspace(1) constant { i32, i32 } zeroinitializer, align 4 -+@__block_literal_global.1 = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } zeroinitializer, align 4 - ; CHECK: ConstantNull [[StructType]] - - ; Function Attrs: convergent noinline nounwind optnone - define spir_func void @foo() #0 { - entry: -- %myBlock = alloca void () addrspace(4)*, align 4 -- store void () addrspace(4)* addrspacecast (void () addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global to void () addrspace(1)*) to void () addrspace(4)*), void () addrspace(4)** %myBlock, align 4 -- call spir_func void @__foo_block_invoke(i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*)) #1 -+ %myBlock = alloca %struct.__opencl_block_literal_generic addrspace(4)*, align 4 -+ store %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*), %struct.__opencl_block_literal_generic addrspace(4)** %myBlock, align 4 -+ call spir_func void @__foo_block_invoke(i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*)) #1 - ret void - } - -@@ -40,14 +43,14 @@ entry: - define internal spir_func void @__foo_block_invoke(i8 addrspace(4)* %.block_descriptor) #0 { - entry: - %.block_descriptor.addr = alloca i8 addrspace(4)*, align 4 -- %block.addr = alloca <{ i32, i32 }> addrspace(4)*, align 4 -+ %block.addr = alloca <{ i32, i32, i8 addrspace(4)* }> addrspace(4)*, align 4 - store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 4 -- %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32 }> addrspace(4)* -- store <{ i32, i32 }> addrspace(4)* %block, <{ i32, i32 }> addrspace(4)** %block.addr, align 4 -+ %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* -+ store <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* %block, <{ i32, i32, i8 addrspace(4)* }> addrspace(4)** %block.addr, align 4 - ret void - } - --attributes #0 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } -+attributes #0 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } - attributes #1 = { convergent } - - !llvm.module.flags = !{!0} -@@ -57,4 +60,4 @@ attributes #1 = { convergent } - - !0 = !{i32 1, !"wchar_size", i32 4} - !1 = !{i32 2, i32 0} --!2 = !{!"clang version 8.0.0 "} -+!2 = !{!"clang version 9.0.0 (https://llvm.org/git/clang 04fb8964a801a5c5d7baa5a22272243a7d183896) (https://llvm.org/git/llvm 384f64397f6ad95a361b72d62c07d7bac9f24163)"} -diff --git a/test/transcoding/block_w_struct_return.ll b/test/transcoding/block_w_struct_return.ll -index 76e29f0..df89b13 100644 ---- a/test/transcoding/block_w_struct_return.ll -+++ b/test/transcoding/block_w_struct_return.ll -@@ -16,6 +16,8 @@ - ; res[tid] = kernelBlock(aa).a - 6; - ; } - -+; clang -cc1 -triple spir -cl-std=cl2.0 -disable-llvm-passes -finclude-default-header block_w_struct_return.cl -emit-llvm -o test/transcoding/block_w_struct_return.ll -+ - ; RUN: llvm-as %s -o %t.bc - ; RUN: llvm-spirv %t.bc -spirv-text -o %t.spv.txt - ; RUN: FileCheck < %t.spv.txt %s --check-prefix=CHECK-SPIRV -@@ -27,12 +29,14 @@ - ; CHECK-SPIRV: Name [[BlockInv:[0-9]+]] "__block_ret_struct_block_invoke" - - ; CHECK-SPIRV: 4 TypeInt [[IntTy:[0-9]+]] 32 -+; CHECK-SPIRV: 4 TypeInt [[Int8Ty:[0-9]+]] 8 -+; CHECK-SPIRV: 4 TypePointer [[Int8Ptr:[0-9]+]] 8 [[Int8Ty]] - ; CHECK-SPIRV: 3 TypeStruct [[StructTy:[0-9]+]] [[IntTy]] - ; CHECK-SPIRV: 4 TypePointer [[StructPtrTy:[0-9]+]] 7 [[StructTy]] - - ; CHECK-SPIRV: 4 Variable [[StructPtrTy]] [[StructArg:[0-9]+]] 7 - ; CHECK-SPIRV: 4 Variable [[StructPtrTy]] [[StructRet:[0-9]+]] 7 --; CHECK-SPIRV: 4 PtrCastToGeneric {{[0-9]+}} [[BlockLit:[0-9]+]] {{[0-9]+}} -+; CHECK-SPIRV: 4 PtrCastToGeneric [[Int8Ptr]] [[BlockLit:[0-9]+]] {{[0-9]+}} - ; CHECK-SPIRV: 7 FunctionCall {{[0-9]+}} {{[0-9]+}} [[BlockInv]] [[StructRet]] [[BlockLit]] [[StructArg]] - - ; CHECK-LLVM: %[[StructA:.*]] = type { i32 } -@@ -41,20 +45,21 @@ - target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" - target triple = "spir64-unknown-unknown" - -+%struct.__opencl_block_literal_generic = type { i32, i32, i8 addrspace(4)* } - %struct.A = type { i32 } - --@__block_literal_global = internal addrspace(1) constant { i32, i32 } { i32 8, i32 4 }, align 4 -+@__block_literal_global = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } { i32 16, i32 8, i8 addrspace(4)* addrspacecast (i8* bitcast (void (%struct.A*, i8 addrspace(4)*, %struct.A*)* @__block_ret_struct_block_invoke to i8*) to i8 addrspace(4)*) }, align 8 - - ; Function Attrs: convergent noinline nounwind optnone --define spir_kernel void @block_ret_struct(i32 addrspace(1)* %res) #0 !kernel_arg_addr_space !4 !kernel_arg_access_qual !5 !kernel_arg_type !6 !kernel_arg_base_type !6 !kernel_arg_type_qual !7 !kernel_arg_host_accessible !8 !kernel_arg_pipe_depth !9 !kernel_arg_pipe_io !7 !kernel_arg_buffer_location !7 { -+define spir_kernel void @block_ret_struct(i32 addrspace(1)* %res) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !5 !kernel_arg_base_type !5 !kernel_arg_type_qual !6 { - entry: - %res.addr = alloca i32 addrspace(1)*, align 8 -- %kernelBlock = alloca void (%struct.A*, %struct.A*) addrspace(4)*, align 8 -+ %kernelBlock = alloca %struct.__opencl_block_literal_generic addrspace(4)*, align 8 - %tid = alloca i64, align 8 - %aa = alloca %struct.A, align 4 - %tmp = alloca %struct.A, align 4 - store i32 addrspace(1)* %res, i32 addrspace(1)** %res.addr, align 8 -- store void (%struct.A*, %struct.A*) addrspace(4)* addrspacecast (void (%struct.A*, %struct.A*) addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global to void (%struct.A*, %struct.A*) addrspace(1)*) to void (%struct.A*, %struct.A*) addrspace(4)*), void (%struct.A*, %struct.A*) addrspace(4)** %kernelBlock, align 8 -+ store %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*), %struct.__opencl_block_literal_generic addrspace(4)** %kernelBlock, align 8 - %call = call spir_func i64 @_Z13get_global_idj(i32 0) #4 - store i64 %call, i64* %tid, align 8 - %0 = load i32 addrspace(1)*, i32 addrspace(1)** %res.addr, align 8 -@@ -63,7 +68,7 @@ entry: - store i32 -1, i32 addrspace(1)* %arrayidx, align 4 - %a = getelementptr inbounds %struct.A, %struct.A* %aa, i32 0, i32 0 - store i32 5, i32* %a, align 4 -- call spir_func void @__block_ret_struct_block_invoke(%struct.A* sret %tmp, i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*), %struct.A* byval align 4 %aa) #5 -+ call spir_func void @__block_ret_struct_block_invoke(%struct.A* sret %tmp, i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*), %struct.A* byval align 4 %aa) #5 - %a1 = getelementptr inbounds %struct.A, %struct.A* %tmp, i32 0, i32 0 - %2 = load i32, i32* %a1, align 4 - %sub = sub nsw i32 %2, 6 -@@ -78,10 +83,10 @@ entry: - define internal spir_func void @__block_ret_struct_block_invoke(%struct.A* noalias sret %agg.result, i8 addrspace(4)* %.block_descriptor, %struct.A* byval align 4 %a) #1 { - entry: - %.block_descriptor.addr = alloca i8 addrspace(4)*, align 8 -- %block.addr = alloca <{ i32, i32 }> addrspace(4)*, align 8 -+ %block.addr = alloca <{ i32, i32, i8 addrspace(4)* }> addrspace(4)*, align 8 - store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 8 -- %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32 }> addrspace(4)* -- store <{ i32, i32 }> addrspace(4)* %block, <{ i32, i32 }> addrspace(4)** %block.addr, align 8 -+ %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* -+ store <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* %block, <{ i32, i32, i8 addrspace(4)* }> addrspace(4)** %block.addr, align 8 - %a1 = getelementptr inbounds %struct.A, %struct.A* %a, i32 0, i32 0 - store i32 6, i32* %a1, align 4 - %0 = bitcast %struct.A* %agg.result to i8* -@@ -96,30 +101,22 @@ declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture r - ; Function Attrs: convergent nounwind readnone - declare spir_func i64 @_Z13get_global_idj(i32) #3 - --attributes #0 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } --attributes #1 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } -+attributes #0 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } -+attributes #1 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } - attributes #2 = { argmemonly nounwind } - attributes #3 = { convergent nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } - attributes #4 = { convergent nounwind readnone } - attributes #5 = { convergent } - - !llvm.module.flags = !{!0} --!opencl.enable.FP_CONTRACT = !{} - !opencl.ocl.version = !{!1} - !opencl.spir.version = !{!1} --!opencl.used.extensions = !{!2} --!opencl.used.optional.core.features = !{!2} --!opencl.compiler.options = !{!2} --!llvm.ident = !{!3} -+!llvm.ident = !{!2} - - !0 = !{i32 1, !"wchar_size", i32 4} - !1 = !{i32 2, i32 0} --!2 = !{} --!3 = !{!"clang version 7.0.0"} --!4 = !{i32 1} --!5 = !{!"none"} --!6 = !{!"int*"} --!7 = !{!""} --!8 = !{i1 false} --!9 = !{i32 0} -- -+!2 = !{!"clang version 9.0.0 (https://llvm.org/git/clang 04fb8964a801a5c5d7baa5a22272243a7d183896) (https://llvm.org/git/llvm 384f64397f6ad95a361b72d62c07d7bac9f24163)"} -+!3 = !{i32 1} -+!4 = !{!"none"} -+!5 = !{!"int*"} -+!6 = !{!""} -diff --git a/test/transcoding/enqueue_kernel.ll b/test/transcoding/enqueue_kernel.ll -index 0d29c71..435871d 100644 ---- a/test/transcoding/enqueue_kernel.ll -+++ b/test/transcoding/enqueue_kernel.ll -@@ -51,11 +51,12 @@ - ; ModuleID = 'enqueue_kernel.cl' - source_filename = "enqueue_kernel.cl" - target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024" --target triple = "spir-unknown-unknown" -+target triple = "spir" - - %opencl.queue_t = type opaque - %struct.ndrange_t = type { i32 } - %opencl.clk_event_t = type opaque -+%struct.__opencl_block_literal_generic = type { i32, i32, i8 addrspace(4)* } - - ; CHECK-SPIRV: EntryPoint {{[0-9]+}} [[BlockKer1:[0-9]+]] "__device_side_enqueue_block_invoke_kernel" - ; CHECK-SPIRV: EntryPoint {{[0-9]+}} [[BlockKer2:[0-9]+]] "__device_side_enqueue_block_invoke_2_kernel" -@@ -66,89 +67,123 @@ target triple = "spir-unknown-unknown" - - ; CHECK-SPIRV: TypeInt [[Int32Ty:[0-9]+]] 32 - ; CHECK-SPIRV: TypeInt [[Int8Ty:[0-9]+]] 8 --; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt8:[0-9]+]] 8 - ; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt0:[0-9]+]] 0 --; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt17:[0-9]+]] 17 -+; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt17:[0-9]+]] 21 - ; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt2:[0-9]+]] 2 --; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt20:[0-9]+]] 20 --; CHECK-SPIRV: TypeVoid [[VoidTy:[0-9]+]] -+; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt8:[0-9]+]] 8 -+; CHECK-SPIRV: Constant [[Int32Ty]] [[ConstInt20:[0-9]+]] 24 - - ; CHECK-SPIRV: TypePointer {{[0-9]+}} 7 {{[0-9]+}} -+; CHECK-SPIRV: TypePointer [[Int8PtrGenTy:[0-9]+]] 8 [[Int8Ty]] -+; CHECK-SPIRV: TypeVoid [[VoidTy:[0-9]+]] - ; CHECK-SPIRV: TypePointer [[Int32LocPtrTy:[0-9]+]] 7 [[Int32Ty]] - ; CHECK-SPIRV: TypeDeviceEvent [[EventTy:[0-9]+]] --; CHECK-SPIRV: TypePointer [[Int8PtrGenTy:[0-9]+]] 8 [[Int8Ty]] - ; CHECK-SPIRV: TypePointer [[EventPtrTy:[0-9]+]] 8 [[EventTy]] - ; CHECK-SPIRV: TypeFunction [[BlockTy1:[0-9]+]] [[VoidTy]] [[Int8PtrGenTy]] - ; CHECK-SPIRV: TypeFunction [[BlockTy2:[0-9]+]] [[VoidTy]] [[Int8PtrGenTy]] - ; CHECK-SPIRV: TypeFunction [[BlockTy3:[0-9]+]] [[VoidTy]] [[Int8PtrGenTy]] - ; CHECK-SPIRV: ConstantNull [[EventPtrTy]] [[EventNull:[0-9]+]] - --; CHECK-LLVM: [[BlockTy1:%[0-9]+]] = type { i32, i32 } --; CHECK-LLVM: [[BlockTy2:%[0-9]+]] = type <{ i32, i32, i32 addrspace(1)*, i32, i8 }> --; CHECK-LLVM: [[BlockTy3:%[0-9]+]] = type <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> --; CHECK-LLVM: [[BlockTy4:%[0-9]+]] = type <{ i32, i32 }> -+; CHECK-LLVM: [[BlockTy1:%[0-9]+]] = type { i32, i32, i8 addrspace(4)* } -+; CHECK-LLVM: [[BlockTy2:%[0-9]+]] = type <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> -+; CHECK-LLVM: [[BlockTy3:%[0-9]+]] = type <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> -+; CHECK-LLVM: [[BlockTy4:%[0-9]+]] = type <{ i32, i32, i8 addrspace(4)* }> - --; CHECK-LLVM: @__block_literal_global = internal addrspace(1) constant [[BlockTy1]] { i32 8, i32 4 }, align 4 --; CHECK-LLVM: @__block_literal_global.1 = internal addrspace(1) constant [[BlockTy1]] { i32 8, i32 4 }, align 4 -+; CHECK-LLVM: @__block_literal_global = internal addrspace(1) constant [[BlockTy1]] { i32 12, i32 4, i8 addrspace(4)* addrspacecast (i8* null to i8 addrspace(4)*) }, align 4 -+; CHECK-LLVM: @__block_literal_global.1 = internal addrspace(1) constant [[BlockTy1]] { i32 12, i32 4, i8 addrspace(4)* addrspacecast (i8* null to i8 addrspace(4)*) }, align 4 - --@__block_literal_global = internal addrspace(1) constant { i32, i32 } { i32 8, i32 4 }, align 4 --@__block_literal_global.1 = internal addrspace(1) constant { i32, i32 } { i32 8, i32 4 }, align 4 -+@__block_literal_global = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } { i32 12, i32 4, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_3 to i8*) to i8 addrspace(4)*) }, align 4 -+@__block_literal_global.1 = internal addrspace(1) constant { i32, i32, i8 addrspace(4)* } { i32 12, i32 4, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*, i8 addrspace(3)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_4 to i8*) to i8 addrspace(4)*) }, align 4 - - ; Function Attrs: convergent noinline nounwind optnone --define spir_kernel void @device_side_enqueue(i32 addrspace(1)* %a, i32 addrspace(1)* %b, i32 %i, i8 signext %c0) #0 !kernel_arg_addr_space !4 !kernel_arg_access_qual !5 !kernel_arg_type !6 !kernel_arg_base_type !6 !kernel_arg_type_qual !7 { -+define spir_kernel void @device_side_enqueue(i32 addrspace(1)* %a, i32 addrspace(1)* %b, i32 %i, i8 signext %c0) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !5 !kernel_arg_base_type !5 !kernel_arg_type_qual !6 { - entry: -+ %a.addr = alloca i32 addrspace(1)*, align 4 -+ %b.addr = alloca i32 addrspace(1)*, align 4 -+ %i.addr = alloca i32, align 4 -+ %c0.addr = alloca i8, align 1 - %default_queue = alloca %opencl.queue_t*, align 4 - %flags = alloca i32, align 4 - %ndrange = alloca %struct.ndrange_t, align 4 - %clk_event = alloca %opencl.clk_event_t*, align 4 - %event_wait_list = alloca %opencl.clk_event_t*, align 4 - %event_wait_list2 = alloca [1 x %opencl.clk_event_t*], align 4 -- %block = alloca <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, align 4 -- %block3 = alloca <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, align 4 -+ %block = alloca <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, align 4 -+ %tmp = alloca %struct.ndrange_t, align 4 -+ %block3 = alloca <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, align 4 -+ %tmp4 = alloca %struct.ndrange_t, align 4 - %c = alloca i8, align 1 -+ %tmp11 = alloca %struct.ndrange_t, align 4 -+ %block_sizes = alloca [1 x i32], align 4 -+ %tmp12 = alloca %struct.ndrange_t, align 4 -+ %block_sizes13 = alloca [3 x i32], align 4 -+ store i32 addrspace(1)* %a, i32 addrspace(1)** %a.addr, align 4 -+ store i32 addrspace(1)* %b, i32 addrspace(1)** %b.addr, align 4 -+ store i32 %i, i32* %i.addr, align 4 -+ store i8 %c0, i8* %c0.addr, align 1 - store i32 0, i32* %flags, align 4 - %arrayinit.begin = getelementptr inbounds [1 x %opencl.clk_event_t*], [1 x %opencl.clk_event_t*]* %event_wait_list2, i32 0, i32 0 - %0 = load %opencl.clk_event_t*, %opencl.clk_event_t** %clk_event, align 4 - store %opencl.clk_event_t* %0, %opencl.clk_event_t** %arrayinit.begin, align 4 - %1 = load %opencl.queue_t*, %opencl.queue_t** %default_queue, align 4 - %2 = load i32, i32* %flags, align 4 -- %block.size = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 0 -- store i32 17, i32* %block.size, align 4 -- %block.align = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 1 -+ %3 = bitcast %struct.ndrange_t* %tmp to i8* -+ %4 = bitcast %struct.ndrange_t* %ndrange to i8* -+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %3, i8* align 4 %4, i32 4, i1 false) -+ %block.size = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 0 -+ store i32 21, i32* %block.size, align 4 -+ %block.align = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 1 - store i32 4, i32* %block.align, align 4 -- %block.captured = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 2 -- store i32 addrspace(1)* %a, i32 addrspace(1)** %block.captured, align 4 -- %block.captured1 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 3 -- store i32 %i, i32* %block.captured1, align 4 -- %block.captured2 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 4 -- store i8 %c0, i8* %block.captured2, align 4 -- %3 = bitcast <{ i32, i32, i32 addrspace(1)*, i32, i8 }>* %block to void ()* -- %4 = addrspacecast void ()* %3 to i8 addrspace(4)* -+ %block.invoke = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 2 -+ store i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke to i8*) to i8 addrspace(4)*), i8 addrspace(4)** %block.invoke, align 4 -+ %block.captured = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 3 -+ %5 = load i32 addrspace(1)*, i32 addrspace(1)** %a.addr, align 4 -+ store i32 addrspace(1)* %5, i32 addrspace(1)** %block.captured, align 4 -+ %block.captured1 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 4 -+ %6 = load i32, i32* %i.addr, align 4 -+ store i32 %6, i32* %block.captured1, align 4 -+ %block.captured2 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>* %block, i32 0, i32 5 -+ %7 = load i8, i8* %c0.addr, align 1 -+ store i8 %7, i8* %block.captured2, align 4 -+ %8 = bitcast <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>* %block to %struct.__opencl_block_literal_generic* -+ %9 = addrspacecast %struct.__opencl_block_literal_generic* %8 to i8 addrspace(4)* - - ; CHECK-SPIRV: PtrCastToGeneric [[Int8PtrGenTy]] [[BlockLit1:[0-9]+]] - ; CHECK-SPIRV: EnqueueKernel [[Int32Ty]] {{[0-9]+}} {{[0-9]+}} {{[0-9]+}} {{[0-9]+}} - ; [[ConstInt0]] [[EventNull]] [[EventNull]] - ; [[BlockKer1]] [[BlockLit1]] [[ConstInt17]] [[ConstInt8]] - --; CHECK-LLVM: [[Block2:%[0-9]+]] = addrspacecast [[BlockTy2]]* %block to i8 addrspace(4)* -+; CHECK-LLVM: [[Block2:%[0-9]+]] = bitcast [[BlockTy2]]* %block to %struct.__opencl_block_literal_generic* -+; CHECK-LLVM: [[Block2Ptr:%[0-9]+]] = addrspacecast %struct.__opencl_block_literal_generic* [[Block2]] to i8 addrspace(4)* - ; CHECK-LLVM: [[BlockInv2:%[0-9]+]] = addrspacecast void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke_kernel to i8 addrspace(4)* --; CHECK-LLVM: call i32 @__enqueue_kernel_basic_events(%opencl.queue_t* {{.*}}, i32 {{.*}}, %struct.ndrange_t* {{.*}}, i32 0, %opencl.clk_event_t* addrspace(4)* null, %opencl.clk_event_t* addrspace(4)* null, i8 addrspace(4)* [[BlockInv2]], i8 addrspace(4)* [[Block2]]) -- -- %5 = call i32 @__enqueue_kernel_basic(%opencl.queue_t* %1, i32 %2, %struct.ndrange_t* byval %ndrange, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* %4) -- %6 = addrspacecast %opencl.clk_event_t** %event_wait_list to %opencl.clk_event_t* addrspace(4)* -- %7 = addrspacecast %opencl.clk_event_t** %clk_event to %opencl.clk_event_t* addrspace(4)* -- %block.size5 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 0 -- store i32 20, i32* %block.size5, align 4 -- %block.align6 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 1 -+; CHECK-LLVM: call i32 @__enqueue_kernel_basic_events(%opencl.queue_t* {{.*}}, i32 {{.*}}, %struct.ndrange_t* {{.*}}, i32 0, %opencl.clk_event_t* addrspace(4)* null, %opencl.clk_event_t* addrspace(4)* null, i8 addrspace(4)* [[BlockInv2]], i8 addrspace(4)* [[Block2Ptr]]) -+ -+ %10 = call i32 @__enqueue_kernel_basic(%opencl.queue_t* %1, i32 %2, %struct.ndrange_t* byval %tmp, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* %9) -+ %11 = load %opencl.queue_t*, %opencl.queue_t** %default_queue, align 4 -+ %12 = load i32, i32* %flags, align 4 -+ %13 = bitcast %struct.ndrange_t* %tmp4 to i8* -+ %14 = bitcast %struct.ndrange_t* %ndrange to i8* -+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %13, i8* align 4 %14, i32 4, i1 false) -+ %15 = addrspacecast %opencl.clk_event_t** %event_wait_list to %opencl.clk_event_t* addrspace(4)* -+ %16 = addrspacecast %opencl.clk_event_t** %clk_event to %opencl.clk_event_t* addrspace(4)* -+ %block.size5 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 0 -+ store i32 24, i32* %block.size5, align 4 -+ %block.align6 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 1 - store i32 4, i32* %block.align6, align 4 -- %block.captured7 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 2 -- store i32 addrspace(1)* %a, i32 addrspace(1)** %block.captured7, align 4 -- %block.captured8 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 3 -- store i32 %i, i32* %block.captured8, align 4 -- %block.captured9 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 4 -- store i32 addrspace(1)* %b, i32 addrspace(1)** %block.captured9, align 4 -- %8 = bitcast <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3 to void ()* -- %9 = addrspacecast void ()* %8 to i8 addrspace(4)* -+ %block.invoke7 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 2 -+ store i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke_2 to i8*) to i8 addrspace(4)*), i8 addrspace(4)** %block.invoke7, align 4 -+ %block.captured8 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 3 -+ %17 = load i32 addrspace(1)*, i32 addrspace(1)** %a.addr, align 4 -+ store i32 addrspace(1)* %17, i32 addrspace(1)** %block.captured8, align 4 -+ %block.captured9 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 4 -+ %18 = load i32, i32* %i.addr, align 4 -+ store i32 %18, i32* %block.captured9, align 4 -+ %block.captured10 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3, i32 0, i32 5 -+ %19 = load i32 addrspace(1)*, i32 addrspace(1)** %b.addr, align 4 -+ store i32 addrspace(1)* %19, i32 addrspace(1)** %block.captured10, align 4 -+ %20 = bitcast <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>* %block3 to %struct.__opencl_block_literal_generic* -+ %21 = addrspacecast %struct.__opencl_block_literal_generic* %20 to i8 addrspace(4)* -+ - - ; CHECK-SPIRV: PtrCastToGeneric [[EventPtrTy]] [[Event1:[0-9]+]] - ; CHECK-SPIRV: PtrCastToGeneric [[EventPtrTy]] [[Event2:[0-9]+]] -@@ -158,16 +193,24 @@ entry: - ; [[ConstInt2]] [[Event1]] [[Event2]] - ; [[BlockKer2]] [[BlockLit2]] [[ConstInt20]] [[ConstInt8]] - --; CHECK-LLVM: [[Block3:%[0-9]+]] = addrspacecast [[BlockTy3]]* %block3 to i8 addrspace(4)* -+; CHECK-LLVM: [[Block3:%[0-9]+]] = bitcast [[BlockTy3]]* %block3 to %struct.__opencl_block_literal_generic* -+; CHECK-LLVM: [[Block3Ptr:%[0-9]+]] = addrspacecast %struct.__opencl_block_literal_generic* [[Block3]] to i8 addrspace(4) - ; CHECK-LLVM: [[BlockInv3:%[0-9]+]] = addrspacecast void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke_2_kernel to i8 addrspace(4)* --; CHECK-LLVM: call i32 @__enqueue_kernel_basic_events(%opencl.queue_t* {{.*}}, i32 {{.*}}, %struct.ndrange_t* {{.*}}, i32 2, %opencl.clk_event_t* addrspace(4)* {{.*}}, %opencl.clk_event_t* addrspace(4)* {{.*}}, i8 addrspace(4)* [[BlockInv3]], i8 addrspace(4)* [[Block3]]) -- -- %10 = call i32 @__enqueue_kernel_basic_events(%opencl.queue_t* %1, i32 %2, %struct.ndrange_t* %ndrange, i32 2, %opencl.clk_event_t* addrspace(4)* %6, %opencl.clk_event_t* addrspace(4)* %7, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke_2_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* %9) -- %11 = alloca [1 x i32] -- %12 = getelementptr [1 x i32], [1 x i32]* %11, i32 0, i32 0 -- %13 = load i8, i8* %c, align 1 -- %14 = zext i8 %13 to i32 -- store i32 %14, i32* %12, align 4 -+; CHECK-LLVM: call i32 @__enqueue_kernel_basic_events(%opencl.queue_t* {{.*}}, i32 {{.*}}, %struct.ndrange_t* {{.*}}, i32 2, %opencl.clk_event_t* addrspace(4)* {{.*}}, %opencl.clk_event_t* addrspace(4)* {{.*}}, i8 addrspace(4)* [[BlockInv3]], i8 addrspace(4)* [[Block3Ptr]]) -+ -+ %22 = call i32 @__enqueue_kernel_basic_events(%opencl.queue_t* %11, i32 %12, %struct.ndrange_t* %tmp4, i32 2, %opencl.clk_event_t* addrspace(4)* %15, %opencl.clk_event_t* addrspace(4)* %16, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* @__device_side_enqueue_block_invoke_2_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* %21) -+ %23 = load %opencl.queue_t*, %opencl.queue_t** %default_queue, align 4 -+ %24 = load i32, i32* %flags, align 4 -+ %25 = bitcast %struct.ndrange_t* %tmp11 to i8* -+ %26 = bitcast %struct.ndrange_t* %ndrange to i8* -+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %25, i8* align 4 %26, i32 4, i1 false) -+ %arraydecay = getelementptr inbounds [1 x %opencl.clk_event_t*], [1 x %opencl.clk_event_t*]* %event_wait_list2, i32 0, i32 0 -+ %27 = addrspacecast %opencl.clk_event_t** %arraydecay to %opencl.clk_event_t* addrspace(4)* -+ %28 = addrspacecast %opencl.clk_event_t** %clk_event to %opencl.clk_event_t* addrspace(4)* -+ %29 = getelementptr [1 x i32], [1 x i32]* %block_sizes, i32 0, i32 0 -+ %30 = load i8, i8* %c, align 1 -+ %31 = zext i8 %30 to i32 -+ store i32 %31, i32* %29, align 4 - - ; CHECK-SPIRV: PtrAccessChain [[Int32LocPtrTy]] [[LocalBuf31:[0-9]+]] - ; CHECK-SPIRV: Bitcast {{[0-9]+}} [[BlockLit3Tmp:[0-9]+]] [[BlockGlb1:[0-9]+]] -@@ -182,14 +225,18 @@ entry: - ; CHECK-LLVM: [[BlockInv0:%[0-9]+]] = addrspacecast void (i8 addrspace(4)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_3_kernel to i8 addrspace(4)* - ; CHECK-LLVM: call i32 @__enqueue_kernel_events_varargs(%opencl.queue_t* {{.*}}, i32 {{.*}}, %struct.ndrange_t* {{.*}}, i32 2, %opencl.clk_event_t* addrspace(4)* {{.*}}, %opencl.clk_event_t* addrspace(4)* {{.*}}, i8 addrspace(4)* [[BlockInv0]], i8 addrspace(4)* [[Block0]], i32 1, i32* {{.*}}) - -- %15 = call i32 @__enqueue_kernel_events_varargs(%opencl.queue_t* %1, i32 %2, %struct.ndrange_t* %ndrange, i32 2, %opencl.clk_event_t* addrspace(4)* %6, %opencl.clk_event_t* addrspace(4)* %7, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_3_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*), i32 1, i32* %12) -- %16 = alloca [3 x i32] -- %17 = getelementptr [3 x i32], [3 x i32]* %16, i32 0, i32 0 -- store i32 1, i32* %17, align 4 -- %18 = getelementptr [3 x i32], [3 x i32]* %16, i32 0, i32 1 -- store i32 2, i32* %18, align 4 -- %19 = getelementptr [3 x i32], [3 x i32]* %16, i32 0, i32 2 -- store i32 4, i32* %19, align 4 -+ %32 = call i32 @__enqueue_kernel_events_varargs(%opencl.queue_t* %23, i32 %24, %struct.ndrange_t* %tmp11, i32 2, %opencl.clk_event_t* addrspace(4)* %27, %opencl.clk_event_t* addrspace(4)* %28, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_3_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global to i8 addrspace(1)*) to i8 addrspace(4)*), i32 1, i32* %29) -+ %33 = load %opencl.queue_t*, %opencl.queue_t** %default_queue, align 4 -+ %34 = load i32, i32* %flags, align 4 -+ %35 = bitcast %struct.ndrange_t* %tmp12 to i8* -+ %36 = bitcast %struct.ndrange_t* %ndrange to i8* -+ call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %35, i8* align 4 %36, i32 4, i1 false) -+ %37 = getelementptr [3 x i32], [3 x i32]* %block_sizes13, i32 0, i32 0 -+ store i32 1, i32* %37, align 4 -+ %38 = getelementptr [3 x i32], [3 x i32]* %block_sizes13, i32 0, i32 1 -+ store i32 2, i32* %38, align 4 -+ %39 = getelementptr [3 x i32], [3 x i32]* %block_sizes13, i32 0, i32 2 -+ store i32 4, i32* %39, align 4 - - ; CHECK-SPIRV: PtrAccessChain [[Int32LocPtrTy]] [[LocalBuf41:[0-9]+]] - ; CHECK-SPIRV: PtrAccessChain [[Int32LocPtrTy]] [[LocalBuf42:[0-9]+]] -@@ -206,24 +253,27 @@ entry: - ; CHECK-LLVM: [[BlockInv1:%[0-9]+]] = addrspacecast void (i8 addrspace(4)*, i8 addrspace(3)*, i8 addrspace(3)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_4_kernel to i8 addrspace(4)* - ; CHECK-LLVM: call i32 @__enqueue_kernel_events_varargs(%opencl.queue_t* {{.*}}, i32 {{.*}}, %struct.ndrange_t* {{.*}}, i32 0, %opencl.clk_event_t* addrspace(4)* null, %opencl.clk_event_t* addrspace(4)* null, i8 addrspace(4)* [[BlockInv1]], i8 addrspace(4)* [[Block1]], i32 3, i32* {{.*}}) - -- %20 = call i32 @__enqueue_kernel_varargs(%opencl.queue_t* %1, i32 %2, %struct.ndrange_t* %ndrange, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*, i8 addrspace(3)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_4_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32 } addrspace(1)* @__block_literal_global.1 to i8 addrspace(1)*) to i8 addrspace(4)*), i32 3, i32* %17) -+ %40 = call i32 @__enqueue_kernel_varargs(%opencl.queue_t* %33, i32 %34, %struct.ndrange_t* %tmp12, i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*, i8 addrspace(3)*, i8 addrspace(3)*, i8 addrspace(3)*)* @__device_side_enqueue_block_invoke_4_kernel to i8*) to i8 addrspace(4)*), i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* @__block_literal_global.1 to i8 addrspace(1)*) to i8 addrspace(4)*), i32 3, i32* %37) - ret void - } - -+; Function Attrs: argmemonly nounwind -+declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) #1 -+ - ; Function Attrs: convergent noinline nounwind optnone - define internal spir_func void @__device_side_enqueue_block_invoke(i8 addrspace(4)* %.block_descriptor) #2 { - entry: - %.block_descriptor.addr = alloca i8 addrspace(4)*, align 4 -- %block.addr = alloca <{ i32, i32, i32 addrspace(1)*, i32, i8 }> addrspace(4)*, align 4 -+ %block.addr = alloca <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> addrspace(4)*, align 4 - store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 4 -- %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i32 addrspace(1)*, i32, i8 }> addrspace(4)* -- store <{ i32, i32, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, <{ i32, i32, i32 addrspace(1)*, i32, i8 }> addrspace(4)** %block.addr, align 4 -- %block.capture.addr = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, i32 0, i32 4 -+ %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> addrspace(4)* -+ store <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> addrspace(4)** %block.addr, align 4 -+ %block.capture.addr = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, i32 0, i32 5 - %0 = load i8, i8 addrspace(4)* %block.capture.addr, align 4 - %conv = sext i8 %0 to i32 -- %block.capture.addr1 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, i32 0, i32 2 -+ %block.capture.addr1 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, i32 0, i32 3 - %1 = load i32 addrspace(1)*, i32 addrspace(1)* addrspace(4)* %block.capture.addr1, align 4 -- %block.capture.addr2 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, i32 0, i32 3 -+ %block.capture.addr2 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i8 }> addrspace(4)* %block, i32 0, i32 4 - %2 = load i32, i32 addrspace(4)* %block.capture.addr2, align 4 - %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %1, i32 %2 - store i32 %conv, i32 addrspace(1)* %arrayidx, align 4 -@@ -243,19 +293,19 @@ declare i32 @__enqueue_kernel_basic(%opencl.queue_t*, i32, %struct.ndrange_t*, i - define internal spir_func void @__device_side_enqueue_block_invoke_2(i8 addrspace(4)* %.block_descriptor) #2 { - entry: - %.block_descriptor.addr = alloca i8 addrspace(4)*, align 4 -- %block.addr = alloca <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)*, align 4 -+ %block.addr = alloca <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)*, align 4 - store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 4 -- %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* -- store <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)** %block.addr, align 4 -- %block.capture.addr = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 4 -+ %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* -+ store <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)** %block.addr, align 4 -+ %block.capture.addr = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 5 - %0 = load i32 addrspace(1)*, i32 addrspace(1)* addrspace(4)* %block.capture.addr, align 4 -- %block.capture.addr1 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 3 -+ %block.capture.addr1 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 4 - %1 = load i32, i32 addrspace(4)* %block.capture.addr1, align 4 - %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %0, i32 %1 - %2 = load i32, i32 addrspace(1)* %arrayidx, align 4 -- %block.capture.addr2 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 2 -+ %block.capture.addr2 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 3 - %3 = load i32 addrspace(1)*, i32 addrspace(1)* addrspace(4)* %block.capture.addr2, align 4 -- %block.capture.addr3 = getelementptr inbounds <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 3 -+ %block.capture.addr3 = getelementptr inbounds <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }>, <{ i32, i32, i8 addrspace(4)*, i32 addrspace(1)*, i32, i32 addrspace(1)* }> addrspace(4)* %block, i32 0, i32 4 - %4 = load i32, i32 addrspace(4)* %block.capture.addr3, align 4 - %arrayidx4 = getelementptr inbounds i32, i32 addrspace(1)* %3, i32 %4 - store i32 %2, i32 addrspace(1)* %arrayidx4, align 4 -@@ -276,11 +326,11 @@ define internal spir_func void @__device_side_enqueue_block_invoke_3(i8 addrspac - entry: - %.block_descriptor.addr = alloca i8 addrspace(4)*, align 4 - %p.addr = alloca i8 addrspace(3)*, align 4 -- %block.addr = alloca <{ i32, i32 }> addrspace(4)*, align 4 -+ %block.addr = alloca <{ i32, i32, i8 addrspace(4)* }> addrspace(4)*, align 4 - store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 4 -- %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32 }> addrspace(4)* -+ %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* - store i8 addrspace(3)* %p, i8 addrspace(3)** %p.addr, align 4 -- store <{ i32, i32 }> addrspace(4)* %block, <{ i32, i32 }> addrspace(4)** %block.addr, align 4 -+ store <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* %block, <{ i32, i32, i8 addrspace(4)* }> addrspace(4)** %block.addr, align 4 - ret void - } - -@@ -300,13 +350,13 @@ entry: - %p1.addr = alloca i8 addrspace(3)*, align 4 - %p2.addr = alloca i8 addrspace(3)*, align 4 - %p3.addr = alloca i8 addrspace(3)*, align 4 -- %block.addr = alloca <{ i32, i32 }> addrspace(4)*, align 4 -+ %block.addr = alloca <{ i32, i32, i8 addrspace(4)* }> addrspace(4)*, align 4 - store i8 addrspace(4)* %.block_descriptor, i8 addrspace(4)** %.block_descriptor.addr, align 4 -- %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32 }> addrspace(4)* -+ %block = bitcast i8 addrspace(4)* %.block_descriptor to <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* - store i8 addrspace(3)* %p1, i8 addrspace(3)** %p1.addr, align 4 - store i8 addrspace(3)* %p2, i8 addrspace(3)** %p2.addr, align 4 - store i8 addrspace(3)* %p3, i8 addrspace(3)** %p3.addr, align 4 -- store <{ i32, i32 }> addrspace(4)* %block, <{ i32, i32 }> addrspace(4)** %block.addr, align 4 -+ store <{ i32, i32, i8 addrspace(4)* }> addrspace(4)* %block, <{ i32, i32, i8 addrspace(4)* }> addrspace(4)** %block.addr, align 4 - ret void - } - -@@ -329,27 +379,20 @@ declare i32 @__enqueue_kernel_varargs(%opencl.queue_t*, i32, %struct.ndrange_t*, - ; CHECK-LLVM-DAG: define spir_kernel void @__device_side_enqueue_block_invoke_3_kernel(i8 addrspace(4)*, i8 addrspace(3)*) - ; CHECK-LLVM-DAG: define spir_kernel void @__device_side_enqueue_block_invoke_4_kernel(i8 addrspace(4)*, i8 addrspace(3)*, i8 addrspace(3)*, i8 addrspace(3)*) - --attributes #0 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } -+attributes #0 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" "unsafe-fp-math"="false" "use-soft-float"="false" } - attributes #1 = { argmemonly nounwind } --attributes #2 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } -+attributes #2 = { convergent noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "denorms-are-zero"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } - attributes #3 = { nounwind } - - !llvm.module.flags = !{!0} --!opencl.enable.FP_CONTRACT = !{} - !opencl.ocl.version = !{!1} - !opencl.spir.version = !{!1} --!opencl.used.extensions = !{!2} --!opencl.used.optional.core.features = !{!2} --!opencl.compiler.options = !{!2} --!llvm.ident = !{!3} -+!llvm.ident = !{!2} - - !0 = !{i32 1, !"wchar_size", i32 4} - !1 = !{i32 2, i32 0} --!2 = !{} --!3 = !{!"clang version 7.0.0"} --!4 = !{i32 1, i32 1, i32 0, i32 0} --!5 = !{!"none", !"none", !"none", !"none"} --!6 = !{!"int*", !"int*", !"int", !"char"} --!7 = !{!"", !"", !"", !""} --!8 = !{i1 false, i1 false, i1 false, i1 false} --!9 = !{i32 0, i32 0, i32 0, i32 0} -+!2 = !{!"clang version 9.0.0 (https://llvm.org/git/clang 04fb8964a801a5c5d7baa5a22272243a7d183896) (https://llvm.org/git/llvm 384f64397f6ad95a361b72d62c07d7bac9f24163)"} -+!3 = !{i32 1, i32 1, i32 0, i32 0} -+!4 = !{!"none", !"none", !"none", !"none"} -+!5 = !{!"int*", !"int*", !"int", !"char"} -+!6 = !{!"", !"", !"", !""} --- -1.8.3.1 - diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-dont-export-targets-for-binaries.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-dont-export-targets-for-binaries.patch deleted file mode 100644 index 9d25bbad..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-dont-export-targets-for-binaries.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 7bbd0058362ac3bb5edd7a82d43e1785810776b3 Mon Sep 17 00:00:00 2001 -From: Anuj Mittal <anuj.mittal@intel.com> -Date: Fri, 29 Mar 2019 08:56:53 +0800 -Subject: [PATCH] dont export targets for binaries - -The projects using LLVM cmake modules look for target binaries in -sysroot as a result which isn't desirable in this case and isn't needed -either. - -Upstream-Status: Inappropriate [cross-compile specific] - -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - llvm/cmake/modules/AddLLVM.cmake | 9 --------- - llvm/cmake/modules/TableGen.cmake | 6 ------ - 2 files changed, 15 deletions(-) - -diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake -index 0df6845..b79f4fa 100644 ---- a/llvm/cmake/modules/AddLLVM.cmake -+++ b/llvm/cmake/modules/AddLLVM.cmake -@@ -866,12 +866,6 @@ macro(add_llvm_tool name) - - if ( ${name} IN_LIST LLVM_TOOLCHAIN_TOOLS OR NOT LLVM_INSTALL_TOOLCHAIN_ONLY) - if( LLVM_BUILD_TOOLS ) -- if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR -- NOT LLVM_DISTRIBUTION_COMPONENTS) -- set(export_to_llvmexports EXPORT LLVMExports) -- set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True) -- endif() -- - install(TARGETS ${name} - ${export_to_llvmexports} - RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR} -@@ -884,9 +878,6 @@ macro(add_llvm_tool name) - endif() - endif() - endif() -- if( LLVM_BUILD_TOOLS ) -- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name}) -- endif() - set_target_properties(${name} PROPERTIES FOLDER "Tools") - endmacro(add_llvm_tool name) - -diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake -index 3c84ae7..141219f 100644 ---- a/llvm/cmake/modules/TableGen.cmake -+++ b/llvm/cmake/modules/TableGen.cmake -@@ -164,14 +164,8 @@ macro(add_tablegen target project) - endif() - - if (${project} STREQUAL LLVM AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY) -- if(${target} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR -- NOT LLVM_DISTRIBUTION_COMPONENTS) -- set(export_to_llvmexports EXPORT LLVMExports) -- endif() -- - install(TARGETS ${target} - ${export_to_llvmexports} - RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR}) - endif() -- set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target}) - endmacro() --- -2.7.4 - diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-point-to-correct-clang.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-point-to-correct-clang.patch deleted file mode 100644 index 0dfc537b..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0001-point-to-correct-clang.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 6c33fb58869ffb17106047c45ab8d3856966eaf7 Mon Sep 17 00:00:00 2001 -From: Anuj Mittal <anuj.mittal@intel.com> -Date: Tue, 26 Mar 2019 14:11:29 +0800 -Subject: [PATCH] point to correct clang project and tblgen - -Point to correct path for clang project as per the way we unpack. Also -let llvm-tblgen path be passed from recipe itself. - -Also since we're going to do the patching ourselves, no need to look for -git through cmake. - -Upstream-Status: Inappropriate [OE specific] ---- - CMakeLists.txt | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 174133b..c769f08 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -53,7 +53,7 @@ endif(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) - include(AddLLVM) - include(TableGen) - --find_package(Git REQUIRED) -+#find_package(Git REQUIRED) - - if (NOT WIN32) - add_subdirectory( linux_linker ) -@@ -80,7 +80,7 @@ set(TARGET_NAME ${COMMON_CLANG_LIBRARY_NAME}${BUILD_PLATFORM} ) - - if(NOT USE_PREBUILT_LLVM) - set(TARGET_BRANCH "ocl-open-80") -- set(CLANG_SOURCE_DIR ${LLVM_SOURCE_DIR}/tools/clang) -+ set(CLANG_SOURCE_DIR ${LLVM_SOURCE_DIR}/../clang) - set(CLANG_BASE_REVISION a03da8be08a208122e292016cb6cea1f30229677) - - set(SPIRV_SOURCE_DIR ${LLVM_SOURCE_DIR}/projects/llvm-spirv) -@@ -102,7 +102,7 @@ endif(NOT USE_PREBUILT_LLVM) - set (COMPILE_OPTIONS_TD opencl_clang_options.td) - set (COMPILE_OPTIONS_INC opencl_clang_options.inc) - --set(LLVM_TABLEGEN_EXE "llvm-tblgen") -+#set(LLVM_TABLEGEN_EXE "llvm-tblgen") - set(LLVM_TARGET_DEFINITIONS ${COMPILE_OPTIONS_TD}) - if(USE_PREBUILT_LLVM) - set(TABLEGEN_ADDITIONAL -I ${LLVM_INCLUDE_DIRS}) -@@ -153,7 +153,7 @@ endif() - - if(NOT USE_PREBUILT_LLVM) - set(CLANG_BINARY_DIR ${LLVM_BINARY_DIR}/tools/clang/) -- set(CLANG_SOURCE_DIR ${LLVM_MAIN_SRC_DIR}/tools/clang/) -+ set(CLANG_SOURCE_DIR ${LLVM_MAIN_SRC_DIR}/../clang/) - include_directories( - ${CLANG_BINARY_DIR}/include # for tablegened includes - ${CLANG_SOURCE_DIR}/include # for basic headers --- -2.19.1 - diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0002-OpenCL-Simplify-LLVM-IR-generated-for-OpenCL-blocks.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/0002-OpenCL-Simplify-LLVM-IR-generated-for-OpenCL-blocks.patch deleted file mode 100644 index 2e935a13..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0002-OpenCL-Simplify-LLVM-IR-generated-for-OpenCL-blocks.patch +++ /dev/null @@ -1,294 +0,0 @@ -From c94ec28600255098ffb9d73d1b386a7c8a535590 Mon Sep 17 00:00:00 2001 -From: Andrew Savonichev <andrew.savonichev@intel.com> -Date: Thu, 21 Feb 2019 11:02:10 +0000 -Subject: [PATCH 2/2] [OpenCL] Simplify LLVM IR generated for OpenCL blocks - -Summary: -Emit direct call of block invoke functions when possible, i.e. in case the -block is not passed as a function argument. -Also doing some refactoring of `CodeGenFunction::EmitBlockCallExpr()` - -Reviewers: Anastasia, yaxunl, svenvh - -Reviewed By: Anastasia - -Subscribers: cfe-commits - -Tags: #clang - -Differential Revision: https://reviews.llvm.org/D58388 - -git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354568 91177308-0d34-0410-b5e6-96231b3b80d8 - -Upstream-Status: Backport -[https://github.com/llvm-mirror/clang/commit/eae71f8d05ce550c4e2595c9b7082cc2c7882c58] -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - lib/CodeGen/CGBlocks.cpp | 77 +++++++++++++------------- - lib/CodeGen/CGOpenCLRuntime.cpp | 30 +++++++--- - lib/CodeGen/CGOpenCLRuntime.h | 4 ++ - test/CodeGenOpenCL/blocks.cl | 10 +--- - test/CodeGenOpenCL/cl20-device-side-enqueue.cl | 34 +++++++++--- - 5 files changed, 91 insertions(+), 64 deletions(-) - -diff --git a/lib/CodeGen/CGBlocks.cpp b/lib/CodeGen/CGBlocks.cpp -index fa3c3ee..10a0238 100644 ---- a/lib/CodeGen/CGBlocks.cpp -+++ b/lib/CodeGen/CGBlocks.cpp -@@ -1261,52 +1261,49 @@ RValue CodeGenFunction::EmitBlockCallExpr(const CallExpr *E, - ReturnValueSlot ReturnValue) { - const BlockPointerType *BPT = - E->getCallee()->getType()->getAs<BlockPointerType>(); -- - llvm::Value *BlockPtr = EmitScalarExpr(E->getCallee()); -- -- // Get a pointer to the generic block literal. -- // For OpenCL we generate generic AS void ptr to be able to reuse the same -- // block definition for blocks with captures generated as private AS local -- // variables and without captures generated as global AS program scope -- // variables. -- unsigned AddrSpace = 0; -- if (getLangOpts().OpenCL) -- AddrSpace = getContext().getTargetAddressSpace(LangAS::opencl_generic); -- -- llvm::Type *BlockLiteralTy = -- llvm::PointerType::get(CGM.getGenericBlockLiteralType(), AddrSpace); -- -- // Bitcast the callee to a block literal. -- BlockPtr = -- Builder.CreatePointerCast(BlockPtr, BlockLiteralTy, "block.literal"); -- -- // Get the function pointer from the literal. -- llvm::Value *FuncPtr = -- Builder.CreateStructGEP(CGM.getGenericBlockLiteralType(), BlockPtr, -- CGM.getLangOpts().OpenCL ? 2 : 3); -- -- // Add the block literal. -+ llvm::Type *GenBlockTy = CGM.getGenericBlockLiteralType(); -+ llvm::Value *Func = nullptr; -+ QualType FnType = BPT->getPointeeType(); -+ ASTContext &Ctx = getContext(); - CallArgList Args; - -- QualType VoidPtrQualTy = getContext().VoidPtrTy; -- llvm::Type *GenericVoidPtrTy = VoidPtrTy; - if (getLangOpts().OpenCL) { -- GenericVoidPtrTy = CGM.getOpenCLRuntime().getGenericVoidPointerType(); -- VoidPtrQualTy = -- getContext().getPointerType(getContext().getAddrSpaceQualType( -- getContext().VoidTy, LangAS::opencl_generic)); -- } -- -- BlockPtr = Builder.CreatePointerCast(BlockPtr, GenericVoidPtrTy); -- Args.add(RValue::get(BlockPtr), VoidPtrQualTy); -- -- QualType FnType = BPT->getPointeeType(); -+ // For OpenCL, BlockPtr is already casted to generic block literal. -+ -+ // First argument of a block call is a generic block literal casted to -+ // generic void pointer, i.e. i8 addrspace(4)* -+ llvm::Value *BlockDescriptor = Builder.CreatePointerCast( -+ BlockPtr, CGM.getOpenCLRuntime().getGenericVoidPointerType()); -+ QualType VoidPtrQualTy = Ctx.getPointerType( -+ Ctx.getAddrSpaceQualType(Ctx.VoidTy, LangAS::opencl_generic)); -+ Args.add(RValue::get(BlockDescriptor), VoidPtrQualTy); -+ // And the rest of the arguments. -+ EmitCallArgs(Args, FnType->getAs<FunctionProtoType>(), E->arguments()); -+ -+ // We *can* call the block directly unless it is a function argument. -+ if (!isa<ParmVarDecl>(E->getCalleeDecl())) -+ Func = CGM.getOpenCLRuntime().getInvokeFunction(E->getCallee()); -+ else { -+ llvm::Value *FuncPtr = Builder.CreateStructGEP(GenBlockTy, BlockPtr, 2); -+ Func = Builder.CreateAlignedLoad(FuncPtr, getPointerAlign()); -+ } -+ } else { -+ // Bitcast the block literal to a generic block literal. -+ BlockPtr = Builder.CreatePointerCast( -+ BlockPtr, llvm::PointerType::get(GenBlockTy, 0), "block.literal"); -+ // Get pointer to the block invoke function -+ llvm::Value *FuncPtr = Builder.CreateStructGEP(GenBlockTy, BlockPtr, 3); - -- // And the rest of the arguments. -- EmitCallArgs(Args, FnType->getAs<FunctionProtoType>(), E->arguments()); -+ // First argument is a block literal casted to a void pointer -+ BlockPtr = Builder.CreatePointerCast(BlockPtr, VoidPtrTy); -+ Args.add(RValue::get(BlockPtr), Ctx.VoidPtrTy); -+ // And the rest of the arguments. -+ EmitCallArgs(Args, FnType->getAs<FunctionProtoType>(), E->arguments()); - -- // Load the function. -- llvm::Value *Func = Builder.CreateAlignedLoad(FuncPtr, getPointerAlign()); -+ // Load the function. -+ Func = Builder.CreateAlignedLoad(FuncPtr, getPointerAlign()); -+ } - - const FunctionType *FuncTy = FnType->castAs<FunctionType>(); - const CGFunctionInfo &FnInfo = -diff --git a/lib/CodeGen/CGOpenCLRuntime.cpp b/lib/CodeGen/CGOpenCLRuntime.cpp -index 7f6f595..75003e5 100644 ---- a/lib/CodeGen/CGOpenCLRuntime.cpp -+++ b/lib/CodeGen/CGOpenCLRuntime.cpp -@@ -123,6 +123,23 @@ llvm::PointerType *CGOpenCLRuntime::getGenericVoidPointerType() { - CGM.getContext().getTargetAddressSpace(LangAS::opencl_generic)); - } - -+// Get the block literal from an expression derived from the block expression. -+// OpenCL v2.0 s6.12.5: -+// Block variable declarations are implicitly qualified with const. Therefore -+// all block variables must be initialized at declaration time and may not be -+// reassigned. -+static const BlockExpr *getBlockExpr(const Expr *E) { -+ const Expr *Prev = nullptr; // to make sure we do not stuck in infinite loop. -+ while(!isa<BlockExpr>(E) && E != Prev) { -+ Prev = E; -+ E = E->IgnoreCasts(); -+ if (auto DR = dyn_cast<DeclRefExpr>(E)) { -+ E = cast<VarDecl>(DR->getDecl())->getInit(); -+ } -+ } -+ return cast<BlockExpr>(E); -+} -+ - /// Record emitted llvm invoke function and llvm block literal for the - /// corresponding block expression. - void CGOpenCLRuntime::recordBlockInfo(const BlockExpr *E, -@@ -137,20 +154,17 @@ void CGOpenCLRuntime::recordBlockInfo(const BlockExpr *E, - EnqueuedBlockMap[E].Kernel = nullptr; - } - -+llvm::Function *CGOpenCLRuntime::getInvokeFunction(const Expr *E) { -+ return EnqueuedBlockMap[getBlockExpr(E)].InvokeFunc; -+} -+ - CGOpenCLRuntime::EnqueuedBlockInfo - CGOpenCLRuntime::emitOpenCLEnqueuedBlock(CodeGenFunction &CGF, const Expr *E) { - CGF.EmitScalarExpr(E); - - // The block literal may be assigned to a const variable. Chasing down - // to get the block literal. -- if (auto DR = dyn_cast<DeclRefExpr>(E)) { -- E = cast<VarDecl>(DR->getDecl())->getInit(); -- } -- E = E->IgnoreImplicit(); -- if (auto Cast = dyn_cast<CastExpr>(E)) { -- E = Cast->getSubExpr(); -- } -- auto *Block = cast<BlockExpr>(E); -+ const BlockExpr *Block = getBlockExpr(E); - - assert(EnqueuedBlockMap.find(Block) != EnqueuedBlockMap.end() && - "Block expression not emitted"); -diff --git a/lib/CodeGen/CGOpenCLRuntime.h b/lib/CodeGen/CGOpenCLRuntime.h -index 750721f..4effc7e 100644 ---- a/lib/CodeGen/CGOpenCLRuntime.h -+++ b/lib/CodeGen/CGOpenCLRuntime.h -@@ -92,6 +92,10 @@ public: - /// \param Block block literal emitted for the block expression. - void recordBlockInfo(const BlockExpr *E, llvm::Function *InvokeF, - llvm::Value *Block); -+ -+ /// \return LLVM block invoke function emitted for an expression derived from -+ /// the block expression. -+ llvm::Function *getInvokeFunction(const Expr *E); - }; - - } -diff --git a/test/CodeGenOpenCL/blocks.cl b/test/CodeGenOpenCL/blocks.cl -index 19aacc3..ab5a2c6 100644 ---- a/test/CodeGenOpenCL/blocks.cl -+++ b/test/CodeGenOpenCL/blocks.cl -@@ -39,11 +39,8 @@ void foo(){ - // SPIR: %[[blk_gen_ptr:.*]] = addrspacecast %struct.__opencl_block_literal_generic* %[[blk_ptr]] to %struct.__opencl_block_literal_generic addrspace(4)* - // SPIR: store %struct.__opencl_block_literal_generic addrspace(4)* %[[blk_gen_ptr]], %struct.__opencl_block_literal_generic addrspace(4)** %[[block_B:.*]], - // SPIR: %[[block_literal:.*]] = load %struct.__opencl_block_literal_generic addrspace(4)*, %struct.__opencl_block_literal_generic addrspace(4)** %[[block_B]] -- // SPIR: %[[invoke_addr:.*]] = getelementptr inbounds %struct.__opencl_block_literal_generic, %struct.__opencl_block_literal_generic addrspace(4)* %[[block_literal]], i32 0, i32 2 - // SPIR: %[[blk_gen_ptr:.*]] = bitcast %struct.__opencl_block_literal_generic addrspace(4)* %[[block_literal]] to i8 addrspace(4)* -- // SPIR: %[[invoke_func_ptr:.*]] = load i8 addrspace(4)*, i8 addrspace(4)* addrspace(4)* %[[invoke_addr]] -- // SPIR: %[[invoke_func:.*]] = addrspacecast i8 addrspace(4)* %[[invoke_func_ptr]] to i32 (i8 addrspace(4)*)* -- // SPIR: call {{.*}}i32 %[[invoke_func]](i8 addrspace(4)* %[[blk_gen_ptr]]) -+ // SPIR: call {{.*}}i32 @__foo_block_invoke(i8 addrspace(4)* %[[blk_gen_ptr]]) - // AMDGCN: %[[block_invoke:.*]] = getelementptr inbounds <{ i32, i32, i8*, i32 }>, <{ i32, i32, i8*, i32 }> addrspace(5)* %[[block:.*]], i32 0, i32 2 - // AMDGCN: store i8* bitcast (i32 (i8*)* @__foo_block_invoke to i8*), i8* addrspace(5)* %[[block_invoke]] - // AMDGCN: %[[block_captured:.*]] = getelementptr inbounds <{ i32, i32, i8*, i32 }>, <{ i32, i32, i8*, i32 }> addrspace(5)* %[[block]], i32 0, i32 3 -@@ -53,11 +50,8 @@ void foo(){ - // AMDGCN: %[[blk_gen_ptr:.*]] = addrspacecast %struct.__opencl_block_literal_generic addrspace(5)* %[[blk_ptr]] to %struct.__opencl_block_literal_generic* - // AMDGCN: store %struct.__opencl_block_literal_generic* %[[blk_gen_ptr]], %struct.__opencl_block_literal_generic* addrspace(5)* %[[block_B:.*]], - // AMDGCN: %[[block_literal:.*]] = load %struct.__opencl_block_literal_generic*, %struct.__opencl_block_literal_generic* addrspace(5)* %[[block_B]] -- // AMDGCN: %[[invoke_addr:.*]] = getelementptr inbounds %struct.__opencl_block_literal_generic, %struct.__opencl_block_literal_generic* %[[block_literal]], i32 0, i32 2 - // AMDGCN: %[[blk_gen_ptr:.*]] = bitcast %struct.__opencl_block_literal_generic* %[[block_literal]] to i8* -- // AMDGCN: %[[invoke_func_ptr:.*]] = load i8*, i8** %[[invoke_addr]] -- // AMDGCN: %[[invoke_func:.*]] = bitcast i8* %[[invoke_func_ptr]] to i32 (i8*)* -- // AMDGCN: call {{.*}}i32 %[[invoke_func]](i8* %[[blk_gen_ptr]]) -+ // AMDGCN: call {{.*}}i32 @__foo_block_invoke(i8* %[[blk_gen_ptr]]) - - int (^ block_B)(void) = ^{ - return i; -diff --git a/test/CodeGenOpenCL/cl20-device-side-enqueue.cl b/test/CodeGenOpenCL/cl20-device-side-enqueue.cl -index 8445016..1566912 100644 ---- a/test/CodeGenOpenCL/cl20-device-side-enqueue.cl -+++ b/test/CodeGenOpenCL/cl20-device-side-enqueue.cl -@@ -312,9 +312,7 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { - }; - - // Uses global block literal [[BLG8]] and invoke function [[INVG8]]. -- // COMMON: [[r1:%.*]] = load i8 addrspace(4)*, i8 addrspace(4)* addrspace(4)* getelementptr inbounds (%struct.__opencl_block_literal_generic, %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*), i32 0, i32 2) -- // COMMON: [[r2:%.*]] = addrspacecast i8 addrspace(4)* [[r1]] to void (i8 addrspace(4)*)* -- // COMMON: call spir_func void [[r2]](i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to i8 addrspace(1)*) to i8 addrspace(4)*)) -+ // COMMON: call spir_func void @__device_side_enqueue_block_invoke_11(i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to i8 addrspace(1)*) to i8 addrspace(4)*)) - block_A(); - - // Emits global block literal [[BLG8]] and block kernel [[INVGK8]]. [[INVGK8]] calls [[INVG8]]. -@@ -333,15 +331,35 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { - unsigned size = get_kernel_work_group_size(block_A); - - // Uses global block literal [[BLG8]] and invoke function [[INVG8]]. Make sure no redundant block literal and invoke functions are emitted. -- // COMMON: [[r1:%.*]] = load i8 addrspace(4)*, i8 addrspace(4)* addrspace(4)* getelementptr inbounds (%struct.__opencl_block_literal_generic, %struct.__opencl_block_literal_generic addrspace(4)* addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to %struct.__opencl_block_literal_generic addrspace(1)*) to %struct.__opencl_block_literal_generic addrspace(4)*), i32 0, i32 2) -- // COMMON: [[r2:%.*]] = addrspacecast i8 addrspace(4)* [[r1]] to void (i8 addrspace(4)*)* -- // COMMON: call spir_func void [[r2]](i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to i8 addrspace(1)*) to i8 addrspace(4)*)) -+ // COMMON: call spir_func void @__device_side_enqueue_block_invoke_11(i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BLG8]] to i8 addrspace(1)*) to i8 addrspace(4)*)) - block_A(); - -+ // Make sure that block invoke function is resolved correctly after sequence of assignements. -+ // COMMON: store %struct.__opencl_block_literal_generic addrspace(4)* -+ // COMMON-SAME: addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* -+ // COMMON-SAME: bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BL_GLOBAL]] to %struct.__opencl_block_literal_generic addrspace(1)*) -+ // COMMON-SAME: to %struct.__opencl_block_literal_generic addrspace(4)*), -+ // COMMON-SAME: %struct.__opencl_block_literal_generic addrspace(4)** %b1, -+ bl_t b1 = block_G; -+ // COMMON: store %struct.__opencl_block_literal_generic addrspace(4)* -+ // COMMON-SAME: addrspacecast (%struct.__opencl_block_literal_generic addrspace(1)* -+ // COMMON-SAME: bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BL_GLOBAL]] to %struct.__opencl_block_literal_generic addrspace(1)*) -+ // COMMON-SAME: to %struct.__opencl_block_literal_generic addrspace(4)*), -+ // COMMON-SAME: %struct.__opencl_block_literal_generic addrspace(4)** %b2, -+ bl_t b2 = b1; -+ // COMMON: call spir_func void @block_G_block_invoke(i8 addrspace(4)* addrspacecast (i8 addrspace(1)* -+ // COMMON-SAME: bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BL_GLOBAL]] to i8 addrspace(1)*) -+ // COOMON-SAME: to i8 addrspace(4)*), i8 addrspace(3)* null) -+ b2(0); -+ // Uses global block literal [[BL_GLOBAL]] and block kernel [[INV_G_K]]. [[INV_G_K]] calls [[INV_G]]. -+ // COMMON: call i32 @__get_kernel_preferred_work_group_size_multiple_impl( -+ // COMMON-SAME: i8 addrspace(4)* addrspacecast (i8* bitcast ({{.*}} [[INV_G_K:[^ ]+_kernel]] to i8*) to i8 addrspace(4)*), -+ // COMMON-SAME: i8 addrspace(4)* addrspacecast (i8 addrspace(1)* bitcast ({ i32, i32, i8 addrspace(4)* } addrspace(1)* [[BL_GLOBAL]] to i8 addrspace(1)*) to i8 addrspace(4)*)) -+ size = get_kernel_preferred_work_group_size_multiple(b2); -+ - void (^block_C)(void) = ^{ - callee(i, a); - }; -- - // Emits block literal on stack and block kernel [[INVLK3]]. - // COMMON: store i8 addrspace(4)* addrspacecast (i8* bitcast (void (i8 addrspace(4)*)* [[INVL3:@__device_side_enqueue_block_invoke[^ ]*]] to i8*) to i8 addrspace(4)*), i8 addrspace(4)** %block.invoke - // COMMON: [[DEF_Q:%[0-9]+]] = load %opencl.queue_t{{.*}}*, %opencl.queue_t{{.*}}** %default_queue -@@ -404,8 +422,8 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { - // COMMON: define internal spir_func void [[INVG8]](i8 addrspace(4)*{{.*}}) - // COMMON: define internal spir_func void [[INVG9]](i8 addrspace(4)*{{.*}}, i8 addrspace(3)* %{{.*}}) - // COMMON: define internal spir_kernel void [[INVGK8]](i8 addrspace(4)*{{.*}}) -+// COMMON: define internal spir_kernel void [[INV_G_K]](i8 addrspace(4)*{{.*}}, i8 addrspace(3)*{{.*}}) - // COMMON: define internal spir_kernel void [[INVLK3]](i8 addrspace(4)*{{.*}}) - // COMMON: define internal spir_kernel void [[INVGK9]](i8 addrspace(4)*{{.*}}, i8 addrspace(3)*{{.*}}) --// COMMON: define internal spir_kernel void [[INV_G_K]](i8 addrspace(4)*{{.*}}, i8 addrspace(3)*{{.*}}) - // COMMON: define internal spir_kernel void [[INVGK10]](i8 addrspace(4)*{{.*}}) - // COMMON: define internal spir_kernel void [[INVGK11]](i8 addrspace(4)*{{.*}}) --- -1.8.3.1 - diff --git a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0003-OpenCL-Fix-assertion-due-to-blocks.patch b/dynamic-layers/clang-layer/recipes-devtools/clang/files/0003-OpenCL-Fix-assertion-due-to-blocks.patch deleted file mode 100644 index 510c7c6e..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/files/0003-OpenCL-Fix-assertion-due-to-blocks.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 29e2813a2ab7d5569860bb07892dfef7b5374d96 Mon Sep 17 00:00:00 2001 -From: Yaxun Liu <Yaxun.Liu@amd.com> -Date: Tue, 26 Feb 2019 16:20:41 +0000 -Subject: [PATCH] [OpenCL] Fix assertion due to blocks - -A recent change caused assertion in CodeGenFunction::EmitBlockCallExpr when a block is called. - -There is code - - Func = CGM.getOpenCLRuntime().getInvokeFunction(E->getCallee()); -getCalleeDecl calls Expr::getReferencedDeclOfCallee, which does not handle -BlockExpr and returns nullptr, which causes isa to assert. - -This patch fixes that. - -Differential Revision: https://reviews.llvm.org/D58658 - - -git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354893 91177308-0d34-0410-b5e6-96231b3b80d8 - -Upstream-Status: Backport -[https://github.com/llvm-mirror/clang/commit/29e2813a2ab7d5569860bb07892dfef7b5374d96] -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - lib/AST/Expr.cpp | 2 ++ - test/CodeGenOpenCL/blocks.cl | 6 ++++++ - 2 files changed, 8 insertions(+) - -diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp -index aef1eab..85690c7 100644 ---- a/lib/AST/Expr.cpp -+++ b/lib/AST/Expr.cpp -@@ -1358,6 +1358,8 @@ Decl *Expr::getReferencedDeclOfCallee() { - return DRE->getDecl(); - if (MemberExpr *ME = dyn_cast<MemberExpr>(CEE)) - return ME->getMemberDecl(); -+ if (auto *BE = dyn_cast<BlockExpr>(CEE)) -+ return BE->getBlockDecl(); - - return nullptr; - } -diff --git a/test/CodeGenOpenCL/blocks.cl b/test/CodeGenOpenCL/blocks.cl -index ab5a2c6..c3e2685 100644 ---- a/test/CodeGenOpenCL/blocks.cl -+++ b/test/CodeGenOpenCL/blocks.cl -@@ -90,6 +90,12 @@ int get42() { - return blockArgFunc(^{return 42;}); - } - -+// COMMON-LABEL: define {{.*}}@call_block -+// call {{.*}}@__call_block_block_invoke -+int call_block() { -+ return ^int(int num) { return num; } (11); -+} -+ - // CHECK-DEBUG: !DIDerivedType(tag: DW_TAG_member, name: "__size" - // CHECK-DEBUG: !DIDerivedType(tag: DW_TAG_member, name: "__align" - --- -1.8.3.1 - 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 f536f0f2..00000000 --- a/dynamic-layers/clang-layer/recipes-devtools/clang/llvm-project-source.bbappend +++ /dev/null @@ -1,16 +0,0 @@ -FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/files:" - -SRC_URI_append_intel-x86-common = " \ - git://github.com/intel/opencl-clang.git;protocol=https;branch=ocl-open-80;destsuffix=git/llvm/projects/opencl-clang;name=opencl-clang \ - git://github.com/KhronosGroup/SPIRV-LLVM-Translator.git;protocol=https;branch=llvm_release_80;destsuffix=git/llvm/projects/llvm-spirv;name=spirv \ - file://0001-point-to-correct-clang.patch;patchdir=llvm/projects/opencl-clang \ - file://0001-OpenCL-Change-type-of-block-pointer-for-OpenCL.patch;patchdir=clang \ - file://0002-OpenCL-Simplify-LLVM-IR-generated-for-OpenCL-blocks.patch;patchdir=clang \ - file://0003-OpenCL-Fix-assertion-due-to-blocks.patch;patchdir=clang \ - file://0001-dont-export-targets-for-binaries.patch \ - file://0001-Update-LowerOpenCL-pass-to-handle-new-blocks-represn.patch;patchdir=llvm/projects/llvm-spirv \ - " - -SRCREV_opencl-clang = "daf5e4dd718477ae8cf89a283c653939d9182f15" -SRCREV_spirv = "bd0f28fb92061d49c0f120b4dac3fd8956006745" - 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 new file mode 100644 index 00000000..265fcfa2 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/allow-to-find-cpp-generation-tool.patch @@ -0,0 +1,51 @@ +From a6361d635e5f3046853883f3ac06fb175116933c Mon Sep 17 00:00:00 2001 +From: Dongwon Kim <dongwon.kim@intel.com> +Date: Sat, 21 Aug 2021 16:09:39 -0700 +Subject: [PATCH] Build not able to locate cpp_generation_tool. + +Upstream-Status: Inappropriate [oe specific] + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> +--- + shared/source/built_ins/kernels/CMakeLists.txt | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/shared/source/built_ins/kernels/CMakeLists.txt b/shared/source/built_ins/kernels/CMakeLists.txt +index ed85a37c52..f7c9e79137 100644 +--- a/shared/source/built_ins/kernels/CMakeLists.txt ++++ b/shared/source/built_ins/kernels/CMakeLists.txt +@@ -107,9 +107,9 @@ function(compile_builtin core_type platform_it builtin bits builtin_options mode + ) + add_custom_command( + OUTPUT ${OUTPUT_FILE_CPP} +- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${BINARY_OUTPUT}.bin --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --device ${RELEASE_FILENAME} ++ COMMAND cpp_generate_tool --file ${BINARY_OUTPUT}.bin --output ${OUTPUT_FILE_CPP} --array ${mode}_${BASENAME} --device ${RELEASE_FILENAME} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- DEPENDS ${OUTPUT_FILES_BINARIES} $<TARGET_FILE:cpp_generate_tool> ++ DEPENDS ${OUTPUT_FILES_BINARIES} cpp_generate_tool + ) + list(APPEND BUILTINS_COMMANDS "${OUTPUT_FILE_CPP}") + else() +@@ -159,9 +159,9 @@ function(generate_cpp_spirv builtin) + ) + add_custom_command( + OUTPUT ${OUTPUT_FILE_CPP} +- COMMAND $<TARGET_FILE:cpp_generate_tool> --file ${GENERATED_SPV_INPUT} --output ${OUTPUT_FILE_CPP} --array ${BASENAME} ++ COMMAND cpp_generate_tool --file ${GENERATED_SPV_INPUT} --output ${OUTPUT_FILE_CPP} --array ${BASENAME} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +- DEPENDS ${GENERATED_SPV_INPUT} $<TARGET_FILE:cpp_generate_tool> ++ DEPENDS ${GENERATED_SPV_INPUT} cpp_generate_tool + ) + set(OUTPUT_LIST_CPP_FILES ${OUTPUT_LIST_CPP_FILES} ${OUTPUT_FILE_CPP} PARENT_SCOPE) + else() +@@ -277,4 +277,4 @@ if(NOT "${OUTPUT_LIST_CPP_FILES}" STREQUAL "") + ) + endif() + +-apply_macro_for_each_core_type("SUPPORTED") +\ No newline at end of file ++apply_macro_for_each_core_type("SUPPORTED") +-- +2.43.2 + 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 @@ +Upstream-Status: Inappropriate +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d52e089778..bc0cf35014 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -727,7 +727,7 @@ if(NOT MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-noexcept-type") # Added for gtest + endif() + endif() +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Werror=vla") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=vla") + + if(USE_SANITIZE_UB) + 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 new file mode 100644 index 00000000..5f93b7b6 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime/external-ocloc.patch @@ -0,0 +1,40 @@ +From 1f58c22992ddea4167b01b44448528de427f50d5 Mon Sep 17 00:00:00 2001 +From: Dongwon Kim <dongwon.kim@intel.com> +Date: Wed, 2 Mar 2022 15:52:45 -0800 +Subject: [PATCH] external ocloc + +Upstream-Status: Inappropriate + +Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> +--- + cmake/ocloc_cmd_prefix.cmake | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/cmake/ocloc_cmd_prefix.cmake b/cmake/ocloc_cmd_prefix.cmake +index 2b44330831..03067c9df0 100644 +--- a/cmake/ocloc_cmd_prefix.cmake ++++ b/cmake/ocloc_cmd_prefix.cmake +@@ -4,12 +4,14 @@ + # SPDX-License-Identifier: MIT + # + +-if(WIN32) +- set(ocloc_cmd_prefix ocloc) +-else() +- if(DEFINED NEO__IGC_LIBRARY_PATH) +- 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>) ++if(NOT DEFINED ocloc_cmd_prefix) ++ if(WIN32) ++ set(ocloc_cmd_prefix ocloc) + else() +- set(ocloc_cmd_prefix ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib>" $<TARGET_FILE:ocloc>) ++ if(DEFINED NEO__IGC_LIBRARY_PATH) ++ set(ocloc_cmd_prefix LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NEO__IGC_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>) ++ else() ++ set(ocloc_cmd_prefix LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$<TARGET_FILE_DIR:ocloc_lib> $<TARGET_FILE:ocloc>) ++ endif() + endif() + endif() +-- +2.37.3 + diff --git a/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_24.05.28454.6.bb b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_24.05.28454.6.bb new file mode 100644 index 00000000..60125171 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/compute-runtime/intel-compute-runtime_24.05.28454.6.bb @@ -0,0 +1,64 @@ +SUMMARY = "The Intel(R) Graphics Compute Runtime for OpenCL(TM)" +DESCRIPTION = "The Intel(R) Graphics Compute Runtime for OpenCL(TM) \ +is an open source project to converge Intel's development efforts \ +on OpenCL(TM) compute stacks supporting the GEN graphics hardware \ +architecture." + +LICENSE = "MIT & Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=eca6ec6997e18db166db7109cdbe611c \ + file://third_party/opencl_headers/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "git://github.com/intel/compute-runtime.git;protocol=https;branch=releases/24.05 \ + file://disable-werror.patch \ + file://allow-to-find-cpp-generation-tool.patch \ + file://external-ocloc.patch \ + " + +SRCREV = "23a9725e62c8181193c90e5e5207507a1f136587" + +S = "${WORKDIR}/git" + +DEPENDS += " intel-graphics-compiler gmmlib libva qemu-native" + +RDEPENDS:${PN} += " intel-graphics-compiler gmmlib" + +inherit cmake pkgconfig qemu + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +EXTRA_OECMAKE = " \ + -DIGC_DIR=${STAGING_INCDIR}/igc \ + -DBUILD_TYPE=Release \ + -DSKIP_UNIT_TESTS=1 \ + -DCCACHE_ALLOWED=FALSE \ + -DNEO_DISABLE_LD_LLD=ON \ + -DNEO_DISABLE_LD_GOLD=ON \ + " + +EXTRA_OECMAKE:append:class-target = " \ + -Docloc_cmd_prefix=ocloc \ + -DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \ + " + +PACKAGECONFIG ??= "" +PACKAGECONFIG[levelzero] = "-DBUILD_WITH_L0=ON, -DBUILD_WITH_L0=OFF, level-zero" + +do_configure:prepend:class-target () { + # Write out a qemu wrapper that will be used by cmake. + 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}')])}" + cat > ${WORKDIR}/qemuwrapper << EOF +#!/bin/sh +$qemu_binary "\$@" +EOF + chmod +x ${WORKDIR}/qemuwrapper +} + +FILES:${PN} += " \ + ${libdir}/intel-opencl/libigdrcl.so \ + ${libdir}/libocloc.so \ + " + +FILES:${PN}-dev = "${includedir}" + +UPSTREAM_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 new file mode 100644 index 00000000..377081fd --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch @@ -0,0 +1,35 @@ +From 3d71670f8ad5b54d434c2f5f71713bb1d5433ae4 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Tue, 12 Oct 2021 23:46:42 +0800 +Subject: [PATCH] BiF/CMakeLists.txt: remove opt from DEPENDS + +Otherwise it starts failing with: + +| ninja: error: 'IGC/VectorCompiler/lib/BiF/opt', needed by 'IGC/VectorCompiler/lib/BiF/VCBiFPrintfOCL32.opt.bc', missing and no known rule to make it + +We don't need to explicitly make sure opt is built when +using prebuilt binaries. + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake b/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake +index d20d7f887..882e09fea 100644 +--- a/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake ++++ b/IGC/VectorCompiler/lib/BiF/cmake/Functions.cmake +@@ -109,7 +109,7 @@ function(vc_build_bif TARGET RES_FILE CMCL_SRC_PATH BIF_NAME PTR_BIT_SIZE) + COMMENT "vc_build_bif: Translating CMCL builtins: ${BIF_CLANG_BC_NAME_FINAL} -> ${BIF_OPT_BC_NAME}" + COMMAND CMCLTranslatorTool -o ${BIF_CMCL_BC_NAME} ${BIF_CLANG_BC_NAME_FINAL} + COMMAND ${LLVM_OPT_EXE} ${IGC_LLVM_DEPENDENT_OPT_FLAGS} --O2 -o ${BIF_OPT_BC_NAME} ${BIF_CMCL_BC_NAME} +- DEPENDS CMCLTranslatorTool ${LLVM_OPT_EXE} ${BIF_CLANG_BC_PATH_FINAL} ++ DEPENDS CMCLTranslatorTool ${BIF_CLANG_BC_PATH_FINAL} + BYPRODUCTS ${BIF_OPT_BC_PATH} + SOURCES ${CMCL_SRC_PATH}) + set(${RES_FILE} ${BIF_OPT_BC_NAME} PARENT_SCOPE) +-- +2.43.2 + 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 @@ +From e69a3181482e5f442756a61c7b683914072884f1 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Mon, 9 Jan 2023 11:43:05 +0800 +Subject: [PATCH] external/SPIRV-Tools: change path to tools and headers + +We clone the SPIRV headers and tools in a different directory to ensure +file path substitutions take place. + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +--- + external/SPIRV-Tools/CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/external/SPIRV-Tools/CMakeLists.txt b/external/SPIRV-Tools/CMakeLists.txt +index 9afa5746c..7ca24d5dc 100644 +--- a/external/SPIRV-Tools/CMakeLists.txt ++++ b/external/SPIRV-Tools/CMakeLists.txt +@@ -43,8 +43,8 @@ else() #By default use build from sources + message(STATUS "[SPIRV-Tools] : Building from source") + message(STATUS "[SPIRV-Tools] : Current source dir: ${CMAKE_CURRENT_SOURCE_DIR}") + +- set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Headers") # used in subdirectory +- set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../SPIRV-Tools") ++ set(SPIRV-Headers_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Headers") # used in subdirectory ++ set(SPIRV-Tools_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../SPIRV-Tools") + + set(SPIRV-Tools_OUTPUT_DIR "${IGC_OPTION__OUTPUT_DIR}/external/SPIRV-Tools/build") + 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 new file mode 100644 index 00000000..39443931 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0001-fix-tblgen.patch @@ -0,0 +1,24 @@ +From 5648568e597acd0fed82aac3e6aef0f95a1b78d1 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Thu, 19 May 2022 22:50:09 +0800 +Subject: [PATCH] fix tblgen + +Upstream-Status: Inappropriate [OE specific] + +--- + IGC/cmake/igc_llvm.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/IGC/cmake/igc_llvm.cmake b/IGC/cmake/igc_llvm.cmake +index 10322533c..9020cb3c8 100644 +--- a/IGC/cmake/igc_llvm.cmake ++++ b/IGC/cmake/igc_llvm.cmake +@@ -52,7 +52,7 @@ else() + set(LLVM_OPT_EXE "opt" CACHE STRING "") + + set(LLVM_TABLEGEN_EXE "llvm-tblgen") +- if(CMAKE_CROSSCOMPILING) ++ if(TRUE) + if(DEFINED LLVM_TABLEGEN) + set(LLVM_TABLEGEN_EXE ${LLVM_TABLEGEN}) + else() 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 new file mode 100644 index 00000000..650130a8 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/files/0003-Improve-Reproducibility-for-src-package.patch @@ -0,0 +1,34 @@ +From 0559332abd04b6c8bc70171d201f43d2e4735336 Mon Sep 17 00:00:00 2001 +From: Lee Chee Yang <chee.yang.lee@intel.com> +Date: Wed, 2 Sep 2020 08:28:35 +0800 +Subject: [PATCH] Improve Reproducibility for src package + +Improve reproducibility for intel-graphics-compiler-src package. +needs to pass build path as environment variable to the build. +this only works on bison 3.7 onward, hence check for bison version +before adding the flags. +Upstream-Status: Inappropriate [applying --file-prefix-map in such way does not work for upstream] +Signed-off-by: Lee Chee Yang <chee.yang.lee@intel.com> + +--- + visa/CMakeLists.txt | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/visa/CMakeLists.txt b/visa/CMakeLists.txt +index 6be467587..930c386a6 100644 +--- a/visa/CMakeLists.txt ++++ b/visa/CMakeLists.txt +@@ -123,8 +123,11 @@ endif() + set(bison_output_file ${CMAKE_CURRENT_BINARY_DIR}/CISA.tab.cpp) + set(flex_output_file ${CMAKE_CURRENT_BINARY_DIR}/lex.CISA.cpp) + +-BISON_TARGET(CISAParser CISA.y ${bison_output_file} COMPILE_FLAGS "-vt -p CISA") +-FLEX_TARGET(CISAScanner CISA.l ${flex_output_file} COMPILE_FLAGS "-PCISA ${WIN_FLEX_FLAG}") ++if(BISON_VERSION VERSION_GREATER_EQUAL "3.7.0") ++ set(BISON_EXTRA_FLAGS " --file-prefix-map=$ENV{B}=/igc/ ") ++endif() ++BISON_TARGET(CISAParser CISA.y ${bison_output_file} COMPILE_FLAGS "-l -vt -p CISA ${BISON_EXTRA_FLAGS} ") ++FLEX_TARGET(CISAScanner CISA.l ${flex_output_file} COMPILE_FLAGS "-PCISA -L ${WIN_FLEX_FLAG} ") + ADD_FLEX_BISON_DEPENDENCY(CISAScanner CISAParser) + set(CISAScanner_dependencies) + diff --git a/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.15985.7.bb b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.15985.7.bb new file mode 100644 index 00000000..96d828b6 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/igc/intel-graphics-compiler_1.0.15985.7.bb @@ -0,0 +1,75 @@ +SUMMARY = "The Intel(R) Graphics Compiler for OpenCL(TM)" +DESCRIPTION = "The Intel(R) Graphics Compiler for OpenCL(TM) is an \ +llvm based compiler for OpenCL(TM) targeting Intel Gen graphics \ +hardware architecture." + +LICENSE = "MIT & Apache-2.0" +LIC_FILES_CHKSUM = "file://IGC/BiFModule/Implementation/ExternalLibraries/libclc/LICENSE.TXT;md5=311cfc1a5b54bab8ed34a0b5fba4373e \ + file://LICENSE.md;md5=488d74376edf2765f6e78d271543dde3 \ + file://NOTICES.txt;md5=7f4fbc3eb2c34807465e63b1ec3c9d1a" + +SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https;name=igc;branch=releases/igc-1.0.15985 \ + git://github.com/intel/vc-intrinsics.git;protocol=https;destsuffix=git/vc-intrinsics;name=vc;nobranch=1 \ + git://github.com/KhronosGroup/SPIRV-Tools.git;protocol=https;destsuffix=git/SPIRV-Tools;name=spirv-tools;branch=main \ + git://github.com/KhronosGroup/SPIRV-Headers.git;protocol=https;destsuffix=git/SPIRV-Headers;name=spirv-headers;branch=main \ + file://0003-Improve-Reproducibility-for-src-package.patch \ + file://0001-BiF-CMakeLists.txt-remove-opt-from-DEPENDS.patch \ + file://0001-external-SPIRV-Tools-change-path-to-tools-and-header.patch \ + " + +SRC_URI:append:class-native = " file://0001-fix-tblgen.patch" + +SRCREV_igc = "6cc111d262e1c3abcf4bc6b6d8a589ebf821a5c0" +SRCREV_vc = "da892e1982b6c25b9a133f85b4ac97142d8a3def" +SRCREV_spirv-tools = "f0cc85efdbbe3a46eae90e0f915dc1509836d0fc" +SRCREV_spirv-headers = "cca08c63cefa129d082abca0302adcb81610b465" + +SRCREV_FORMAT = "igc_vc_spirv-tools_spirv-headers" + +# Used to replace with relative path in reproducibility patch +export B + +S = "${WORKDIR}/git" + +inherit cmake pkgconfig qemu python3native + +CXXFLAGS:append = " -Wno-error=nonnull" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +DEPENDS += " flex-native bison-native clang clang-cross-x86_64 opencl-clang qemu-native python3-mako-native" + +RDEPENDS:${PN} += "opencl-clang" + +PACKAGECONFIG ??= "vc" +PACKAGECONFIG[vc] = "-DIGC_BUILD__VC_ENABLED=ON -DIGC_OPTION__LINK_KHRONOS_SPIRV_TRANSLATOR=ON -DIGC_OPTION__SPIRV_TRANSLATOR_MODE=Prebuilds,-DIGC_BUILD__VC_ENABLED=OFF," + +EXTRA_OECMAKE = " \ + -DIGC_OPTION__LLVM_PREFERRED_VERSION=${LLVMVERSION} \ + -DVC_INTRINSICS_SRC="${S}/vc-intrinsics" \ + -DIGC_OPTION__LLVM_MODE=Prebuilds \ + -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ + -DLLVM_LINK_EXE=${STAGING_BINDIR_NATIVE}/llvm-link \ + -DCLANG_EXE=${STAGING_BINDIR_NATIVE}/clang \ + -DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \ + " + +do_configure:prepend:class-target () { + # Write out a qemu wrapper that will be used by cmake. + qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" + cat > ${WORKDIR}/qemuwrapper << EOF +#!/bin/sh +$qemu_binary "\$@" +EOF + chmod +x ${WORKDIR}/qemuwrapper +} + +UPSTREAM_CHECK_GITTAGREGEX = "^igc-(?P<pver>(?!19\..*)\d+(\.\d+)+)$" + +FILES:${PN} += " \ + ${libdir}/igc/NOTICES.txt \ + " + +# libigc.so contains buildpaths +INSANE_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 @@ +From 5aea653e611b59c70e529a1bd71885a509831557 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Tue, 1 Aug 2023 11:15:31 +0800 +Subject: [PATCH] cl_headers/CMakeLists.txt: use clang from native sysroot + +Allow clang to be found in target sysroot for target builds and dont try +to compile cross binaries, we do that ourselves. + +Upstream-Status: Inappropriate [oe-specific] +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + CMakeLists.txt | 8 ++++---- + cl_headers/CMakeLists.txt | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5864009..60ba39e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -35,10 +35,10 @@ set(CMAKE_MODULE_PATH + + include(CMakeFunctions) + +-if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL) +- include(CrossCompile) +- llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release) +-endif() ++#if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL) ++# include(CrossCompile) ++# llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release) ++#endif() + + if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(USE_PREBUILT_LLVM ON) +diff --git a/cl_headers/CMakeLists.txt b/cl_headers/CMakeLists.txt +index 16cabb7..4423536 100644 +--- a/cl_headers/CMakeLists.txt ++++ b/cl_headers/CMakeLists.txt +@@ -1,6 +1,6 @@ + set(CL_HEADERS_LIB cl_headers) + if(USE_PREBUILT_LLVM) +- find_program(CLANG_COMMAND clang PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH) ++ find_program(CLANG_COMMAND clang PATHS ${LLVM_TOOLS_BINARY_DIR}) + else() + set(CLANG_COMMAND $<TARGET_FILE:clang>) + endif() +-- +2.37.3 + 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 @@ +From 43c806ef321b1f677a49d28c89fb7ffecf539c2d Mon Sep 17 00:00:00 2001 +From: Tim Creech <timothy.m.creech@intel.com> +Date: Wed, 28 Jun 2023 03:45:51 -0400 +Subject: [PATCH 2/2] Request native clang only when cross-compiling (#464) + +* Request native clang only when cross-compiling + +LLVM_USE_HOST_TOOLS may be set if LLVM is configured with +LLVM_OPTIMIZED_TABLEGEN, which does not necessarily indicate +cross-compilation or that clang will only execute on the target. + +By checking that CMAKE_CROSSCOMPILING is set, we ensure that we only +build/use clang again if necessary for host execution. + +* fixup: CMAKE_CROSSCOMPILING implies LLVM_USE_HOST_TOOLS + +Co-authored-by: Wenju He <wenju.he@intel.com> + +* fixup: also use CMAKE_CROSSCOMPILING in top-level CMakeLists.txt + +--------- + +Co-authored-by: Wenju He <wenju.he@intel.com> + +Upstream-Status: Backport [https://github.com/intel/opencl-clang/commit/53843eee13cfb2357919ee02714a43bef1af0f86] +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + CMakeLists.txt | 2 +- + cl_headers/CMakeLists.txt | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e772de9..5864009 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -35,7 +35,7 @@ set(CMAKE_MODULE_PATH + + include(CMakeFunctions) + +-if(LLVM_USE_HOST_TOOLS AND OPENCL_CLANG_BUILD_EXTERNAL) ++if(CMAKE_CROSSCOMPILING AND OPENCL_CLANG_BUILD_EXTERNAL) + include(CrossCompile) + llvm_create_cross_target(${PROJECT_NAME} NATIVE "" Release) + endif() +diff --git a/cl_headers/CMakeLists.txt b/cl_headers/CMakeLists.txt +index 18296c2..16cabb7 100644 +--- a/cl_headers/CMakeLists.txt ++++ b/cl_headers/CMakeLists.txt +@@ -4,7 +4,7 @@ if(USE_PREBUILT_LLVM) + else() + set(CLANG_COMMAND $<TARGET_FILE:clang>) + endif() +-if(LLVM_USE_HOST_TOOLS AND NOT OPENCL_CLANG_BUILD_EXTERNAL) ++if(CMAKE_CROSSCOMPILING AND NOT OPENCL_CLANG_BUILD_EXTERNAL) + build_native_tool(clang CLANG_COMMAND) + endif() + +-- +2.37.3 + 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 new file mode 100644 index 00000000..31a3fb21 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang.inc @@ -0,0 +1,34 @@ +SUMMARY = "Common clang is a thin wrapper library around clang" +DESCRIPTION = "Common clang has OpenCL-oriented API and is capable \ + to compile OpenCL C kernels to SPIR-V modules." + +LICENSE = "NCSA" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c" + +SRC_URI = "git://github.com/intel/opencl-clang.git;branch=${BRANCH};protocol=https \ + file://0002-Request-native-clang-only-when-cross-compiling-464.patch \ + file://0001-cl_headers-CMakeLists.txt-use-clang-from-native-sysr.patch \ + " +S = "${WORKDIR}/git" + +inherit cmake +DEPENDS += "clang" +DEPENDS:append:class-target = " opencl-clang-native" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +DEPENDS += " spirv-llvm-translator" + +EXTRA_OECMAKE += "\ + -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ + -DCMAKE_SKIP_RPATH=TRUE \ + -DPREFERRED_LLVM_VERSION=${LLVMVERSION} \ + " + +do_install:append:class-native() { + install -d ${D}${bindir} + install -m 0755 ${B}/bin/linux_resource_linker ${D}${bindir}/ +} + +BBCLASSEXTEND = "native nativesdk" 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 new file mode 100644 index 00000000..7e56af75 --- /dev/null +++ b/dynamic-layers/clang-layer/recipes-opencl/opencl-clang/opencl-clang_14.0.0.bb @@ -0,0 +1,5 @@ +require opencl-clang.inc + +SRCREV = "980f1691c5babcf824ee10375a04a0d0c5d7d44a" + +BRANCH = "ocl-open-140" 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 @@ +require opencl-clang.inc + +SRCREV = "60fd799cc58755c16d951f9ebfde6d0f9b8554dd" + +BRANCH = "ocl-open-150" diff --git a/dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2024.0.0.bb b/dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2024.0.0.bb new file mode 100644 index 00000000..70177c28 --- /dev/null +++ b/dynamic-layers/meta-python/recipes-opencv/dldt/openvino-model-optimizer_2024.0.0.bb @@ -0,0 +1,33 @@ +SUMMARY = "OpenVINO Model Optimzer" +DESCRIPTION = "Model Optimizer is a cross-platform command-line tool that \ +facilitates the transition between the training and deployment \ +environment, performs static model analysis, and adjusts deep \ +learning models for optimal execution on end-point target devices." +HOMEPAGE = "https://01.org/openvinotoolkit" + +SRC_URI = "git://github.com/openvinotoolkit/openvino.git;protocol=https;branch=releases/2024/0;lfs=0 \ + " +SRCREV = "34caeefd07800b59065345d651949efbe8ab6649" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +CVE_PRODUCT = "intel:openvino" +S = "${WORKDIR}/git" + +inherit setuptools3 + +SETUPTOOLS_SETUP_PATH = "${WORKDIR}/git/tools/mo" + +RDEPENDS:${PN} += " \ + python3-defusedxml \ + python3-fastjsonschema \ + python3-networkx \ + python3-numpy \ + python3-protobuf \ + python3-requests \ + python3-urllib3 \ + bash \ + " + +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+\.\d+\.\d+))$" diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/amt/files/lms_drop_rpath_1921.0.0.0.diff b/dynamic-layers/openembedded-layer/recipes-bsp/amt/files/lms_drop_rpath_1921.0.0.0.diff deleted file mode 100644 index b68924a5..00000000 --- a/dynamic-layers/openembedded-layer/recipes-bsp/amt/files/lms_drop_rpath_1921.0.0.0.diff +++ /dev/null @@ -1,31 +0,0 @@ -From b92a5bda8015454a570990a3d9c4fba87010f1af Mon Sep 17 00:00:00 2001 -From: Alexander Usyskin <alexander.usyskin@intel.com> -Date: Mon, 17 Jun 2019 13:27:33 +0300 -Subject: [PATCH] lms: drop rpath definitions - -Yocto fail to compile with this definitions. - -Upstream-Status: Inappropriate [configuration] -Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com> ---- - CMakeLists.txt | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 04257fb..85d0445 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -107,10 +107,6 @@ install (DIRECTORY Docs/Licenses - FILES_MATCHING PATTERN "LICENSE.*" - ) - --list (APPEND CMAKE_INSTALL_RPATH "${PROJECT_BINARY_DIR}/UNS/GMS_COMMON") --list (APPEND CMAKE_INSTALL_RPATH "${PROJECT_BINARY_DIR}/WsmanClient") --list (APPEND CMAKE_INSTALL_RPATH "${PROJECT_BINARY_DIR}/UNS/StatusEventHandler") -- - if (BUILD_TESTS) - include (gtest.cmake) - endif (BUILD_TESTS) --- -2.7.4 - diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_1921.0.0.0.bb b/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_1921.0.0.0.bb deleted file mode 100644 index 8ed74486..00000000 --- a/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_1921.0.0.0.bb +++ /dev/null @@ -1,39 +0,0 @@ -SUMMARY = "Intel(R) Local Managability Service" -DESCRIPTION = "Intel Local Manageability Service allows applications \ -to access the Intel Active Management Technology (AMT) firmware via \ -the Intel Management Engine Interface (MEI)." - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://COPYING;md5=2ee41112a44fe7014dce33e26468ba93" - -COMPATIBLE_HOST = '(i.86|x86_64).*-linux' - -inherit cmake systemd - -DEPENDS = "metee ace xerces-c libnl libxml2 glib-2.0 glib-2.0-native connman" - -EXTRA_OECMAKE += "-DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python3" - -REQUIRED_DISTRO_FEATURES= "systemd" - -FILES_${PN} += "${datadir}/dbus-1/system-services/*.service" - -FILES_${PN} += "${libdir}/libLms*.so" -FILES_SOLIBSDEV = "" -INSANE_SKIP_${PN} += "dev-so" - -S = "${WORKDIR}/git" - -SYSTEMD_SERVICE_${PN} = "lms.service" - -SRC_URI = "git://github.com/intel/lms.git" -SRCREV = "f7c374745ae7efb3ed7860fdc3f8abbb52dc9f8f" - -SRC_URI_append = " file://lms_drop_rpath_${PV}.diff" - -do_install_append() { - install -d ${D}${systemd_system_unitdir} - install -m 0644 ${B}/UNS/lms.service ${D}${systemd_system_unitdir} -} - -RDEPENDS_${PN} += "ace" diff --git a/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2406.0.0.0.bb b/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2406.0.0.0.bb new file mode 100644 index 00000000..bdf32576 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-bsp/amt/lms_2406.0.0.0.bb @@ -0,0 +1,44 @@ +SUMMARY = "Intel(R) Local Managability Service" +DESCRIPTION = "Intel Local Manageability Service allows applications \ +to access the Intel Active Management Technology (AMT) firmware via \ +the Intel Management Engine Interface (MEI)." + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=2ee41112a44fe7014dce33e26468ba93" + +COMPATIBLE_HOST = '(i.86|x86_64).*-linux' + +COMPATIBLE_HOST:libc-musl = "null" + +inherit cmake systemd features_check python3native + +DEPENDS = "metee ace xerces-c libnl libxml2 glib-2.0 glib-2.0-native pkgconfig-native python3-packaging-native" + +# Enable either connman or networkmanager or none but not both. +PACKAGECONFIG ??= "connman" +PACKAGECONFIG[connman] = "-DNETWORK_CN=ON, -DNETWORK_CN=OFF, connman" +PACKAGECONFIG[networkmanager] = "-DNETWORK_NM=ON, -DNETWORK_NM=OFF, networkmanager" + +REQUIRED_DISTRO_FEATURES= "systemd" + +FILES:${PN} += "${datadir}/dbus-1/system-services/*.service" + +S = "${WORKDIR}/git" + +SYSTEMD_SERVICE:${PN} = "lms.service" + +SRC_URI = "git://github.com/intel/lms.git;branch=master;protocol=https \ + " +SRCREV = "388f115b2aeb3ea11499971c65f828daefd32c47" + +do_install:append() { + install -d ${D}${sysconfdir}/lms + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${B}/UNS/lms.service ${D}${systemd_system_unitdir} + install -d ${D}${sysconfdir}/udev/rules.d + install -m 0644 ${S}/UNS/linux_scripts/70-mei-wdt.rules ${D}${sysconfdir}/udev/rules.d/70-mei-wdt.rules +} + +RDEPENDS:${PN} += "ace" + +CVE_STATUS[CVE-2018-1000535] = "cpe-incorrect: This CVE is for a different LMS - Lan Management System." 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 @@ +From c4c049481d48f33319b1d04cad56d622c4eed65f Mon Sep 17 00:00:00 2001 +From: Yogesh Tyagi <yogesh.tyagi@intel.com> +Date: Mon, 11 Mar 2024 13:13:32 +0800 +Subject: [PATCH] Makefile: Fix build Issue +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In case build directory is different from source, make sure make is able to find the correct input files. + +Fixes: +| dbus-binding-tool --prefix=thd_dbus_interface --mode=glib-server --output=thd_dbus_interface.h ../git/src/thd_dbus_interface.xml +| glib-compile-resources --generate-source thermald-resource.gresource.xml +| Failed to open file “thermald-resource.gresource.xml”: No such file or directory + + +Upstream-Status: Submitted +https://github.com/intel/thermal_daemon/pull/436 + +Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index a0c051a..772e280 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -95,6 +95,6 @@ thd_dbus_interface.h: $(top_srcdir)/src/thd_dbus_interface.xml + $(AM_V_GEN) dbus-binding-tool --prefix=thd_dbus_interface --mode=glib-server --output=$@ $< + + thermald-resource.c: $(top_srcdir)/thermald-resource.gresource.xml +- $(AM_V_GEN) glib-compile-resources --generate-source thermald-resource.gresource.xml ++ $(AM_V_GEN) glib-compile-resources --generate-source --sourcedir=${top_srcdir} $< + + CLEANFILES = $(BUILT_SOURCES) +-- +2.34.1 + diff --git a/recipes-bsp/thermald/thermald_1.8.bb b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.5.6.bb index f7725f31..df242cdf 100644 --- a/recipes-bsp/thermald/thermald_1.8.bb +++ b/dynamic-layers/openembedded-layer/recipes-bsp/thermald/thermald_2.5.6.bb @@ -6,28 +6,38 @@ compensation using available cooling methods." HOMEPAGE = "https://github.com/01org/thermal_daemon" -DEPENDS = "dbus dbus-glib dbus-glib-native libxml2 glib-2.0 glib-2.0-native" -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}" -DEPENDS_append_libc-musl = " argp-standalone" -DEPENDS_append_toolchain-clang = " openmp" -LICENSE = "GPLv2" +DEPENDS = "dbus dbus-glib dbus-glib-native libxml2 glib-2.0 glib-2.0-native upower libevdev" +DEPENDS += "autoconf-archive-native" + +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=ea8831610e926e2e469075b52bf08848" -SRC_URI = "git://github.com/intel/thermal_daemon/ \ - file://0001-Use-correct-format-specifier-for-size_t.patch \ +SRC_URI = "git://github.com/intel/thermal_daemon/;branch=master;protocol=https \ + file://0001-Makefile-Fix-build-Issue.patch \ " -SRCREV = "517c0e5f92d49aeeef3a22b04caf40d588216827" + +SRCREV = "3990ce2391e5c07293758c056e09e4f2453691b4" S = "${WORKDIR}/git" -inherit pkgconfig autotools systemd +inherit pkgconfig autotools systemd gtk-doc + +# gtkdocsize runs before autotools do_configure and it copies gtk-doc.m4 and fails +# to copy becuase there is no m4 dir yet. +do_configure:prepend () { + mkdir -p ${S}/m4 +} + +EXTRA_OECONF = " \ + --with-systemdsystemunitdir=${systemd_system_unitdir} \ + " -FILES_${PN} += "${datadir}/dbus-1/system-services/*.service" +FILES:${PN} += "${datadir}/dbus-1" -SYSTEMD_SERVICE_${PN} = "thermald.service" +SYSTEMD_SERVICE:${PN} = "thermald.service" COMPATIBLE_HOST = '(i.86|x86_64).*-linux' -CONFFILES_${PN} = " \ +CONFFILES:${PN} = " \ ${sysconfdir}/thermald/thermal-conf.xml \ ${sysconfdir}/thermald/thermal-cpu-cdev-order.xml \ " 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 @@ +From deccc0c69c2c8759c52885be8bdda54d3cee481c Mon Sep 17 00:00:00 2001 +From: Yogesh Tyagi <yogesh.tyagi@intel.com> +Date: Sun, 11 Dec 2022 22:34:15 +0800 +Subject: [PATCH] Add print function to print test run status in ptest format + +Upstream-Status: Inappropriate [OE ptest specific] + +Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> +--- + run_tests.py | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/run_tests.py b/run_tests.py +index 1cd796dd..e3ffd1ab 100755 +--- a/run_tests.py ++++ b/run_tests.py +@@ -327,6 +327,9 @@ def run_test(testname, host, target): + else: + ispc_exe_rel = add_prefix(host.ispc_cmd, host, target) + ++ # to reslove the error '.rodata' can not be used when making a PIE object ++ ispc_exe_rel = ispc_exe_rel + " --pic" ++ + # is this a test to make sure an error is issued? + want_error = (filename.find("tests_errors") != -1) + if want_error == True: +@@ -795,6 +798,17 @@ def check_compiler_exists(compiler_exe): + return + error("missing the required compiler: %s \n" % compiler_exe, 1) + ++def print_test_run_status(results): ++ for fstatus in results: ++ if (fstatus[1] == Status.Success): ++ print( "%s: %s" % ("PASS", fstatus[0])) ++ elif (fstatus[1] == Status.Compfail): ++ print( "%s: %s" % ("FAIL", fstatus[0])) ++ elif (fstatus[1] == Status.Runfail): ++ print( "%s: %s" % ("FAIL", fstatus[0])) ++ elif (fstatus[1] == Status.Skip): ++ print( "%s: %s" % ("SKIP", fstatus[0])) ++ + def print_result(status, results, s, run_tests_log, csv): + title = StatusStr[status] + file_list = [fname for fname, fstatus in results if status == fstatus] +@@ -938,6 +952,8 @@ def run_tests(options1, args, print_version): + pass_rate = -1 + print_debug("PASSRATE (%d/%d) = %d%% \n\n" % (len(run_succeed_files), total_tests_executed, pass_rate), s, run_tests_log) + ++ print_test_run_status(results) ++ + for status in Status: + print_result(status, results, s, run_tests_log, options.csv) + 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 @@ +From 7beff95c11071170eb27b6fa7d0cc77588caee8e Mon Sep 17 00:00:00 2001 +From: Yogesh Tyagi <yogesh.tyagi@intel.com> +Date: Tue, 26 Jul 2022 15:25:10 +0800 +Subject: [PATCH] Fix QA Issues + +Stop ispc from inserting host file path in generated headers which leads to reproducibility problems. + +Upstream-Status: Inappropriate [OE build specific] + +Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> +--- + src/module.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/module.cpp b/src/module.cpp +index e2084d2e..e2626865 100644 +--- a/src/module.cpp ++++ b/src/module.cpp +@@ -2555,7 +2555,7 @@ bool Module::writeHeader(const char *fn) { + perror("fopen"); + return false; + } +- fprintf(f, "//\n// %s\n// (Header automatically generated by the ispc compiler.)\n", fn); ++ fprintf(f, "//\n// \n// (Header automatically generated by the ispc compiler.)\n"); + fprintf(f, "// DO NOT EDIT THIS FILE.\n//\n\n"); + + // Create a nice guard string from the filename, turning any +@@ -2677,7 +2677,7 @@ bool Module::writeDispatchHeader(DispatchHeaderInfo *DHI) { + FILE *f = DHI->file; + + if (DHI->EmitFrontMatter) { +- fprintf(f, "//\n// %s\n// (Header automatically generated by the ispc compiler.)\n", DHI->fn); ++ fprintf(f, "//\n// \n// (Header automatically generated by the ispc compiler.)\n"); + fprintf(f, "// DO NOT EDIT THIS FILE.\n//\n\n"); + } + // Create a nice guard string from the filename, turning any diff --git a/dynamic-layers/openembedded-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 new file mode 100644 index 00000000..f452dc50 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-core/ispc/ispc/0002-cmake-don-t-build-for-32-bit-targets.patch @@ -0,0 +1,52 @@ +From 16a2c22339287122d2c25d8bb33a5a51b4e6ee51 Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Thu, 24 Feb 2022 20:01:11 +0530 +Subject: [PATCH] cmake: don't build for 32-bit targets + +Error log: +| tmp/work/corei7-64-poky-linux/ispc/1.16.0-r0/recipe-sysroot/usr/include/bits/long-double.h:23:10: fatal error: 'bits/long-double-32.h' file not found +| #include <bits/long-double-32.h> +| ^~~~~~~~~~~~~~~~~~~~~~~ +| 1 error generated. + +Remove SYSTEM include search path and set -isysroot dir path +for root dir for cross compilation. + +Upstream-Status: Inappropriate + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + cmake/GenerateBuiltins.cmake | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/cmake/GenerateBuiltins.cmake b/cmake/GenerateBuiltins.cmake +index f84494ed..d90cb1ec 100644 +--- a/cmake/GenerateBuiltins.cmake ++++ b/cmake/GenerateBuiltins.cmake +@@ -253,7 +253,7 @@ function(builtin_to_cpp bit os_name arch supported_archs supported_oses resultFi + # In this case headers will be installed in /usr/arm-linux-gnueabihf/include and will not be picked up + # by clang by default. So the following line adds such path explicitly. If this path doesn't exist and + # the headers can be found in other locations, this should not be a problem. +- set(includePath -isystem/usr/${debian_triple}/include) ++ set(includePath -isysroot${SYSROOT_DIR}) + endif() + endif() + +@@ -339,7 +339,7 @@ function (generate_target_builtins resultList) + set(regular_targets ${ARGN}) + list(FILTER regular_targets EXCLUDE REGEX wasm) + foreach (ispc_target ${regular_targets}) +- foreach (bit 32 64) ++ foreach (bit 64) + foreach (os_name ${TARGET_OS_LIST_FOR_LL}) + target_ll_to_cpp(target-${ispc_target} ${bit} ${os_name} output${os_name}${bit}) + list(APPEND tmpList ${output${os_name}${bit}}) +@@ -405,7 +405,7 @@ function (generate_common_builtins resultList) + endif() + + message (STATUS "ISPC will be built with support of ${supported_oses} for ${supported_archs}") +- foreach (bit 32 64) ++ foreach (bit 64) + foreach (os_name "windows" "linux" "freebsd" "macos" "android" "ios" "ps4" "web") + foreach (arch "x86" "arm" "wasm") + builtin_to_cpp(${bit} ${os_name} ${arch} "${supported_archs}" "${supported_oses}" res${bit}${os_name}${arch}) 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 @@ +#!/bin/sh +python3 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 @@ +SUMMARY = "Intel(R) Implicit SPMD Program Compiler" +DESCRIPTION = "ispc is a compiler for a variant of the C programming language, \ +with extensions for single program, multiple data programming." +HOMEPAGE = "https://github.com/ispc/ispc" + +LICENSE = "BSD-3-Clause & Apache-2.0-with-LLVM-exception" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=da5ecffdd210b3cf776b32b41c182e87 \ + file://third-party-programs.txt;md5=2061218c7be521556719c8b504bf9ddd" + +inherit cmake python3native ptest + +S = "${WORKDIR}/git" + +SRC_URI = "git://github.com/ispc/ispc.git;protocol=https;branch=main \ + file://0002-cmake-don-t-build-for-32-bit-targets.patch \ + file://0001-Fix-QA-Issues.patch \ + file://0001-Add-print-function-to-print-test-run-status-in-ptest.patch \ + file://run-ptest \ + " + +SRCREV = "bcb2cf896c00f9a802a11cbf291ef6e44b205416" + +COMPATIBLE_HOST = '(x86_64).*-linux' + +DEPENDS += " clang-native bison-native flex-native" +DEPENDS:append:class-target = " clang" +RDEPENDS:${PN}-ptest += " python3-multiprocessing" + +PACKAGECONFIG ??= "tbb" +PACKAGECONFIG[tbb] = "-DISPCRT_BUILD_TASK_MODEL=TBB, -DISPCRT_BUILD_TASK_MODEL=OpenMP, tbb" + +YFLAGS='-d -t -v -y --file-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}' + +do_configure:prepend() { + sed -i -e 's#\${BISON_EXECUTABLE}.*#\${BISON_EXECUTABLE} ${YFLAGS} #g' ${S}/CMakeLists.txt + sed -i -e 's#\${FLEX_EXECUTABLE}.*#\${FLEX_EXECUTABLE} \-L #g' ${S}/CMakeLists.txt +} + +do_install_ptest() { + cp -rf ${S}/run_tests.py ${D}${PTEST_PATH} + cp -rf ${S}/common.py ${D}${PTEST_PATH} + cp -rf ${S}/tests ${D}${PTEST_PATH} + cp -rf ${S}/test_static.isph ${D}${PTEST_PATH} + cp -rf ${S}/fail_db.txt ${D}${PTEST_PATH} + cp -rf ${S}/test_static.cpp ${D}${PTEST_PATH} +} + +EXTRA_OECMAKE += " \ + -DISPC_INCLUDE_TESTS=OFF \ + -DISPC_INCLUDE_EXAMPLES=OFF \ + -DARM_ENABLED=OFF \ + -DISPC_CROSS=ON \ + -DISPC_ANDROID_TARGET=OFF \ + -DISPC_FREEBSD_TARGET=OFF \ + -DISPC_WINDOWS_TARGET=OFF \ + -DISPC_IOS_TARGET=OFF \ + -DISPC_PS_TARGET=OFF \ + -DSYSROOT_DIR=${STAGING_DIR} \ + -DCLANG_EXECUTABLE=${STAGING_BINDIR_NATIVE}/clang \ + -DCLANGPP_EXECUTABLE=${STAGING_BINDIR_NATIVE}/clang++ \ + -DLLVM_AS_EXECUTABLE=${STAGING_BINDIR_NATIVE}/llvm-as \ + " + +BBCLASSEXTEND = "native nativesdk" diff --git a/dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.15.8.bb b/dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.15.8.bb new file mode 100644 index 00000000..8bade9f4 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-core/levelzero/level-zero_1.15.8.bb @@ -0,0 +1,33 @@ +SUMMARY = "oneAPI Level Zero Specification Headers and Loader" +HOMEPAGE = "https://github.com/oneapi-src/level-zero" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=97957beb2f7808ffa247e5d93e6442cc" + +SRC_URI = "git://github.com/oneapi-src/level-zero.git;protocol=https;branch=master" +SRCREV = "1685d01497428ca4d8b99200972b64685424d5c9" +S = "${WORKDIR}/git" + +inherit cmake +DEPENDS += "opencl-headers" + +UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$" + +PACKAGES =+ "${PN}-headers ${PN}-samples ${PN}-loader" + +do_install:append () { + install -d ${D}${bindir} ${D}${libdir} + install -m 755 ${B}/bin/zello* ${D}${bindir} + + oe_libinstall -C lib libze_null ${D}${libdir} +} + + +FILES:${PN}-headers = "${includedir}" +FILES:${PN}-samples = "${bindir} ${libdir}/libze_null* ${libdir}/libze_validation*" +FILES:${PN}-loader = "${libdir}" + +# PN-loader (non -dev/-dbg/nativesdk- package) contains symlink .so +INSANE_SKIP:${PN}-loader = "dev-so" +INSANE_SKIP:${PN}-samples = "dev-so" +ALLOW_EMPTY:${PN} = "1" +BBCLASSEXTEND = "native nativesdk" 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 @@ +SUMMARY = "Intel® oneAPI DPC++/C++ Compiler runtime files" +DESCRIPTION = "The Intel® oneAPI DPC++/C++ Compiler provides optimizations \ +that help your applications run faster on Intel® 64 architectures with support \ +for the latest C, C++, and SYCL language standards. This compiler produces \ +optimized code that can run significantly faster by taking advantage of the \ +ever-increasing core count and vector register width in Intel® Xeon® processors \ +and compatible processors." + +HOMEPAGE = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html" + +LICENSE="EULA" + +COMPILERMAINVER = "2024.0" + +LIC_FILES_CHKSUM = " \ + file://opt/intel/oneapi/licensing/${COMPILERMAINVER}/licensing/${COMPILERMAINVER}/license.htm;md5=5ff64c6ff3ef98089ed69360e7a84c39 \ + " +COMPILERDOTVER = "2024.0.0-49406" +DEVUTILITVERSION = "2024.0-2024.0.0-49320" +SRC_URI = " \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-dpcpp-cpp-runtime-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=dpcpp-runtime \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-dpcpp-cpp-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=dpcpp-common \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-runtime-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=compiler-shared-runtime \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-common-vars-${COMPILERDOTVER}_all.deb;subdir=${BPN};name=common-vars \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-openmp-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=openmp \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-openmp-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=openmp-common \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-common-licensing-${COMPILERMAINVER}-${COMPILERDOTVER}_all.deb;subdir=${BPN};name=license \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-dev-utilities-${DEVUTILITVERSION}_amd64.deb;subdir=${BPN};name=dev-utils \ + " + +SRC_URI[dpcpp-runtime.sha256sum] = "e24f0ba69daf3f66ceaf23d5e632f183cdb90bac69f65407fdb4407fc9034f33" +SRC_URI[dpcpp-common.sha256sum] = "f5a3db6a725598224edf1099260955aee3e36beadcaed2af5b8b453e873a82fa" +SRC_URI[compiler-shared-runtime.sha256sum] = "bce010cbe076259ddd3feb8e69792869e22fccd5b4e2c9af9e815826f2c1a394" +SRC_URI[common-vars.sha256sum] = "368553c99db1b52060b8225355336778be0b00e5991d0f769c42f891c6328750" +SRC_URI[openmp.sha256sum] = "154ff1e81adfdc872ba1d47bd860de70d62188417c7128422435dfd0ceca62fe" +SRC_URI[openmp-common.sha256sum] = "8217001d78311cbef97dd139e684c6767932b532309c3843ba57d7894d15c07d" +SRC_URI[license.sha256sum] = "9f9c8a12fc0bc82ab5b71e118e66745eff23f42224eba304068225b366cd74b6" +SRC_URI[dev-utils.sha256sum] = "c675d960a5abca361cead9217d6e74adee499ee0a095c4e44092bd710b304d50" + +S = "${WORKDIR}/${BPN}" + +inherit bin_package + +RDEPENDS:${PN} += "virtual-opencl-icd zlib tbb level-zero-loader bash tcsh" +SKIP_FILEDEPS:${PN} = '1' + +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +# doesn't have GNU_HASH (didn't pass LDFLAGS?) +INSANE_SKIP:${PN} += "textrel dev-so dev-elf ldflags already-stripped staticdev rpaths arch useless-rpaths file-rdeps" + +FILES_SOLIBSDEV = "" +BBCLASSEXTEND = "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 @@ +SUMMARY = "Intel® oneAPI DPC++/C++ Compiler" +DESCRIPTION = "The Intel® oneAPI DPC++/C++ Compiler provides optimizations \ +that help your applications run faster on Intel® 64 architectures with support \ +for the latest C, C++, and SYCL language standards. This compiler produces \ +optimized code that can run significantly faster by taking advantage of the \ +ever-increasing core count and vector register width in Intel® Xeon® processors \ +and compatible processors." + +HOMEPAGE = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html" + +LICENSE="EULA" + +COMPILERMAINVER = "2024.0" + +LIC_FILES_CHKSUM = " \ + file://opt/intel/oneapi/compiler/${COMPILERMAINVER}/share/doc/compiler/credist.txt;md5=b41f55af9f479b9570fc35b955d5ba1a \ + " + +SRC_URI = " \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-dpcpp-cpp-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=icx-compiler \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-${COMPILERMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=compiler-linker \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-compiler-shared-common-${COMPILERMAINVER}-${PV}_all.deb;subdir=${BPN};name=shared-common \ + " + +SRC_URI[icx-compiler.sha256sum] = "0dcbac766d5a1519d4cf393f5a85e71d19024fef65f77638f3f849796b62cd82" +SRC_URI[compiler-linker.sha256sum] = "e00faea6d797934d62143e4aa70b727ce30f80fdf30769d22122b3051140c236" +SRC_URI[shared-common.sha256sum] = "cf490a4a790f349da79e618359598d3b32312ca3b2639e5d4c84e1cfa2745558" + +S = "${WORKDIR}/${BPN}" + +inherit bin_package + +RDEPENDS:${PN} += "intel-oneapi-dpcpp-cpp-runtime" +SKIP_FILEDEPS:${PN} = '1' + +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +# doesn't have GNU_HASH (didn't pass LDFLAGS?) +INSANE_SKIP:${PN} += "textrel dev-so dev-elf ldflags already-stripped file-rdeps staticdev rpaths arch useless-rpaths" + +FILES_SOLIBSDEV = "" + +EXCLUDE_FROM_SHLIBS = "1" +BBCLASSEXTEND = "native nativesdk" diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_4.3.1.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_4.3.1.bb new file mode 100644 index 00000000..fb341b01 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-oneapi/embree/embree_4.3.1.bb @@ -0,0 +1,30 @@ +SUMMARY = "Collection of high-performance ray tracing kernels" +DESCRIPTION = "A collection of high-performance ray tracing kernels \ +intended to graphics application engineers that want to improve the \ +performance of their application." +HOMEPAGE = "https://github.com/embree/embree" + +LICENSE = "Apache-2.0 & syrah" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \ + file://third-party-programs.txt;md5=f989f5b74cfff0d45d3ccf0e1366cbdc \ + file://common/math/transcendental.h;beginline=6;endline=8;md5=73380bb2ab6613b30b8464f114bd0ca8" + +inherit pkgconfig cmake + +S = "${WORKDIR}/git" + +SRC_URI = "git://github.com/embree/embree.git;protocol=https;branch=master" +SRCREV = "daa8de0e714e18ad5e5c9841b67c1950d9c91c51" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +DEPENDS = "tbb jpeg libpng glfw ispc-native" + +EXTRA_OECMAKE += " \ + -DEMBREE_IGNORE_CMAKE_CXX_FLAGS=OFF \ + -DEMBREE_MAX_ISA=DEFAULT \ + -DEMBREE_TUTORIALS=OFF \ + -DEMBREE_ISPC_SUPPORT=ON \ + -DEMBREE_ZIP_MODE=OFF \ + " 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 @@ +DESCRIPTION = "Intel® Integrated Performance Primitives are production-ready \ + building blocks for cross-platform performance. Develop high-performance vision, \ + signal, security, and storage applications with this multithreaded software library." +HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html" + +LICENSE = "ISSL" + +MAXVER = "2021.10" + +LIC_FILES_CHKSUM = " \ + file://opt/intel/oneapi/ipp/${MAXVER}/share/doc/ipp/licensing/license.txt;md5=d7cdc92ed6c4de1263da879599ddc3e2 \ + file://opt/intel/oneapi/ipp/${MAXVER}/share/doc/ipp/licensing/third-party-programs.txt;md5=22bd13987911dcf790907041b43081f3 \ + " +SRC_URI = " \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-${MAXVER}-${PV}_amd64.deb;subdir=${BPN};name=ipp \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-common-devel-${MAXVER}-${PV}_all.deb;subdir=${BPN};name=headers \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-ipp-common-${MAXVER}-${PV}_all.deb;subdir=${BPN};name=env \ + " + +SRC_URI[ipp.sha256sum] = "b51e45c6e691aa46c7136b0ab61f5abe346388433e017a30cf53fd23e92bea07" +SRC_URI[headers.sha256sum] = "342f37ab2f82bc9f4498435f848ee660591c2488b44d988bf6ee96b2a71fd005" +SRC_URI[env.sha256sum] = "731e8c28a3b8b757730cd874d0941de2eb744856128f24ade59d36c12b415bf6" + +S = "${WORKDIR}/${BPN}" + +COMPATIBLE_HOST:libc-musl = "null" + +inherit bin_package + +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" +INHIBIT_DEFAULT_DEPS = "" + +RDEPENDS:${PN} += "tbb setup-intel-oneapi-env" +INSANE_SKIP:${PN} += "ldflags 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 @@ +SUMMARY = "Intel® oneAPI Math Kernel Library (oneMKL)" +DESCRIPTION = "The Intel® oneAPI Math Kernel Library (oneMKL) is a computing \ + math library of highly optimized and extensively parallelized routines \ + for applications that require maximum performance. oneMKL contains \ + the high-performance optimizations from the full Intel® Math Kernel Library \ + for CPU architectures (with C/Fortran programming language interfaces)\ + and adds to them a set of DPC++ programming language interfaces for \ + achieving performance on various CPU architectures \ + and Intel Graphics Technology for certain key functionalities." +HOMEPAGE = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html" + +LICENSE = "ISSL" + +MKLMAINVER = "2024.0" + +LIC_FILES_CHKSUM = " \ + file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/license.txt;md5=8510d21bf355a76e378c3216c3929ccd \ + file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-benchmarks.txt;md5=cb98e1a1f14c05ea85a979ea8982e7a4 \ + file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-ipp.txt;md5=a4b2bf15e38f5c1267cdafed18bc0b09 \ + file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-openmp.txt;md5=6b3c1aa2a11393060074c0346ce21e49 \ + file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs-safestring.txt;md5=c3aeee91c6d35a0f0753aed6c2633b82 \ + file://opt/intel/oneapi/mkl/${MKLMAINVER}/share/doc/mkl/licensing/third-party-programs.txt;md5=27de873e4084d62530fe828406b33ca9 \ + " + +SRC_URI = " \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-${MKLMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=runtime \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-common-devel-${MKLMAINVER}-${PV}_all.deb;subdir=${BPN};name=common-devel \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-devel-${MKLMAINVER}-${PV}_amd64.deb;subdir=${BPN};name=devel \ + https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-common-${MKLMAINVER}-${PV}_all.deb;subdir=${BPN};name=common-vars \ + " + +SRC_URI[runtime.sha256sum] = "10a86e24051d6ef4a80fd839c570e629190638a3c0ac9bcca99ab855f534b959" +SRC_URI[common-devel.sha256sum] = "adbf0ea946f63946d29b7f9c750c38a42ea7a65d8c81655b268aa2c7bb908192" +SRC_URI[devel.sha256sum] = "fab2a6f15e18bfd9b4d425f2703e4e98928c57f52c4feebc9ed886f097062e84" +SRC_URI[common-vars.sha256sum] = "ec2b67813739fa4a2895f63479a41acba2174afe2d0cb8a0c1c9119d1317d8ef" + +S = "${WORKDIR}/${BPN}" + +inherit bin_package + +do_install:append () { + install -d ${D}${bindir} + (cd ${D}${bindir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/bin/* .) + install -d ${D}${libdir} + (cd ${D}${libdir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/intel64/*.so* .) + (cd ${D}${libdir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/intel64/*.a* .) + install -d ${D}${libdir}/pkgconfig + (cd ${D}${libdir}/pkgconfig ; ln -s ../../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/pkgconfig/* .) + install -d ${D}${libdir}/cmake + (cd ${D}${libdir}/cmake ; ln -s ../../../opt/intel/oneapi/mkl/${MKLMAINVER}/lib/cmake/* .) + + install -d ${D}${includedir} + find ${D}/opt/intel/oneapi/mkl/${MKLMAINVER}/include/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read srcdir; do + install -d ${D}${includedir}/$srcdir + (cd ${D}${includedir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/include/$srcdir/* ./$srcdir/) + done + + find ${D}/opt/intel/oneapi/mkl/${MKLMAINVER}/include/ -mindepth 1 -maxdepth 1 -type f -printf '%f\n' | while read srcfile; do + (cd ${D}${includedir} ; ln -s ../../opt/intel/oneapi/mkl/${MKLMAINVER}/include/$srcfile .) + done +} + +AUTO_LIBNAME_PKGS = "" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +RDEPENDS:${PN} += "bash tbb intel-oneapi-dpcpp-cpp-runtime setup-intel-oneapi-env virtual-opencl-icd" +INSANE_SKIP:${PN} = "ldflags textrel dev-so staticdev arch already-stripped" + +FILES:${PN}-staticdev += "/opt/intel/oneapi/mkl/${MKLMAINVER}/lib/*.a*" + +SKIP_FILEDEPS:${PN} = '1' + +SYSROOT_DIRS += "/opt" diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_2.1.0.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_2.1.0.bb new file mode 100644 index 00000000..4ea6ffbe --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-oneapi/oidn/oidn_2.1.0.bb @@ -0,0 +1,23 @@ +SUMMARY = "Intel® Open Image Denoise" +DESCRIPTION = "Intel Open Image Denoise is an open source library of \ +high-performance, high-quality denoising filters for images \ +rendered with ray tracing. Intel Open Image Denoise is part \ +of the Intel® oneAPI Rendering Toolkit" +HOMEPAGE = "https://www.openimagedenoise.org/" + +LICENSE = "Apache-2.0 & BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \ + file://external/mkl-dnn/LICENSE;md5=b48e3de3bfd47c27882a0d85b20823f5 \ + file://external/mkl-dnn/src/cpu/x64/xbyak/COPYRIGHT;md5=3b9bf048d063d54cdb28964db558bcc7 \ + file://external/mkl-dnn/src/common/ittnotify/LICENSE.BSD;md5=e671ff178b24a95a382ba670503c66fb \ + file://weights/LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = "https://github.com/OpenImageDenoise/${BPN}/releases/download/v${PV}/${BP}.src.tar.gz\ + " +SRC_URI[sha256sum] = "ce144ba582ff36563d9442ee07fa2a4d249bc85aa93e5b25fc527ff4ee755ed6" + +inherit cmake + +DEPENDS += "tbb ispc-native" + +UPSTREAM_CHECK_URI = "https://github.com/OpenImageDenoise/oidn/releases" diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_2.0.1.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_2.0.1.bb new file mode 100644 index 00000000..a2d709a1 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-oneapi/openvkl/openvkl_2.0.1.bb @@ -0,0 +1,42 @@ +SUMMARY = "Intel(R) Open Volume Kernel Library" +DESCRIPTION = "Intel(R) Open Volume Kernel Library (Intel(R) Open VKL) is a \ +collection of high-performance volume computation kernels. The target users \ +of Open VKL are graphics application engineers who want to improve the \ +performance of their volume rendering applications by leveraging Open VKL’s \ +performance-optimized kernels, which include volume traversal and sampling \ +functionality for a variety of volumetric data formats. The kernels are optimized \ +for the latest Intel(R) processors with support for SSE, AVX, AVX2, and AVX-512 \ +instructions." +HOMEPAGE = "https://www.openvkl.org/" + +LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & Zlib" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57 \ + file://third-party-programs.txt;md5=69ec7caf49616c471161b921f53d5ec0 \ + file://testing/external/half.hpp;beginline=1;endline=17;md5=4b60058493630c3bd0ef145470f04a7b" + +inherit pkgconfig cmake + +S = "${WORKDIR}/git" + +SRC_URI = "git://github.com/openvkl/openvkl.git;protocol=https;branch=master \ + " +SRCREV = "8c6ba526813b871a624cb9d73d4cbb689ac7f4ce" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +DEPENDS = "ispc ispc-native rkcommon embree" + +EXTRA_OECMAKE += " \ + -DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \ + " +EXTRA_OECMAKE:intel-corei7-64 += " \ + -DOPENVKL_ISA_AVX=OFF \ + -DOPENVKL_ISA_AVX2=OFF \ + -DOPENVKL_ISA_AVX512SKX=OFF \ + " + +PACKAGES =+ "${PN}-examples" +FILES:${PN}-examples = "\ + ${bindir} \ + " diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray/0001-Fix-GCC11-Compile-Error-in-benchmark_register.h.patch b/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray/0001-Fix-GCC11-Compile-Error-in-benchmark_register.h.patch new file mode 100644 index 00000000..c2136321 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray/0001-Fix-GCC11-Compile-Error-in-benchmark_register.h.patch @@ -0,0 +1,28 @@ +From 09e6b6615d9a16e9555eff9d569356e32bd26aa4 Mon Sep 17 00:00:00 2001 +From: benradel <86351445+benradel@users.noreply.github.com> +Date: Wed, 23 Jun 2021 11:56:03 +0200 +Subject: [PATCH] Fix GCC11 Compile Error in benchmark_register.h + +Fix GCC11 compilation error due to missing header "limits" in benchmark_register.h + +Upstream-Status: Submitted [https://github.com/ospray/ospray/pull/484/files] +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + apps/common/external/benchmark/src/benchmark_register.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/apps/common/external/benchmark/src/benchmark_register.h b/apps/common/external/benchmark/src/benchmark_register.h +index 61377d742..8f1bb7795 100644 +--- a/apps/common/external/benchmark/src/benchmark_register.h ++++ b/apps/common/external/benchmark/src/benchmark_register.h +@@ -2,6 +2,7 @@ + #define BENCHMARK_REGISTER_H + + #include <vector> ++#include <limits> + + #include "check.h" + +-- +2.32.0 + diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_3.1.0.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_3.1.0.bb new file mode 100644 index 00000000..3e03dcc2 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-oneapi/ospray/ospray_3.1.0.bb @@ -0,0 +1,37 @@ +SUMMARY = "Intel OSPray, Ray Tracing based Rendering Engine" +DESCRIPTION = "Intel OSPRay is an open source, scalable, and portable ray \ +tracing engine for high-performance, high-fidelity visualization on \ +Intel Architecture CPUs." +HOMEPAGE = "https://www.ospray.org/" + +LICENSE = "Apache-2.0 & BSD-3-Clause & MIT & Zlib" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1dece7821bf3fd70fe1309eaa37d52a2 \ + file://third-party-programs.txt;md5=e37b77e3bd997abccc359c710fb1f1db \ + " + +inherit pkgconfig cmake + +S = "${WORKDIR}/git" + +SRC_URI = "git://github.com/ospray/ospray.git;protocol=https;branch=master \ + " +SRCREV = "f2a61c2eb58ccd666e34abfdb0fd7049ea073194" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +DEPENDS = "rkcommon ispc ispc-native openvkl embree" + +EXTRA_OECMAKE += " \ + -DISPC_EXECUTABLE=${STAGING_BINDIR_NATIVE}/ispc \ + -DOSPRAY_ENABLE_APPS_BENCHMARK=OFF \ + -DOSPRAY_ENABLE_APPS_TESTING=OFF \ + -DOSPRAY_ENABLE_APPS_EXAMPLES=OFF \ + " + +PACKAGES =+ "${PN}-apps" +FILES:${PN}-apps = "\ + ${bindir} \ + " + +UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$" diff --git a/dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.13.0.bb b/dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.13.0.bb new file mode 100644 index 00000000..fe6b23ea --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-oneapi/rkcommon/rkcommon_1.13.0.bb @@ -0,0 +1,19 @@ +SUMMARY = "rkcommon - C++/CMake infrastructure" +DESCRIPTION = "A common set of C++ infrastructure and CMake utilities \ +used by various components of Intel® oneAPI Rendering Toolkit." +HOMEPAGE = "https://github.com/ospray/rkcommon" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57" + +inherit pkgconfig cmake + +S = "${WORKDIR}/git" + +SRC_URI = "git://github.com/ospray/rkcommon.git;protocol=https;branch=master \ + " +SRCREV = "7ebfa0765ea590767202b328e7da38102c2f5a15" + +DEPENDS = "tbb" + +EXTRA_OECMAKE += " -DBUILD_TESTING=OFF" diff --git a/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-CMakeLists-disable-Werror.patch b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-CMakeLists-disable-Werror.patch new file mode 100644 index 00000000..4474aa3c --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-CMakeLists-disable-Werror.patch @@ -0,0 +1,38 @@ +From ef56be8e6bf2ea273cbeb960f3131164e7b517b6 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 18 May 2022 12:24:03 +0800 +Subject: [PATCH] CMakeLists: disable Werror + +gcc12 highlights minor warnings that cause the build to fail. Ignore +those until they aren't fixed upstream. + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 418483f7..c019fea0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -146,7 +146,7 @@ else() + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fno-strict-aliasing -D_FORTIFY_SOURCE=2") + if(LNX_BUILD) + #A few warnings yet to resolve under esx +- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Werror") ++ #set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Werror") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Werror") + endif() + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -ggdb") +@@ -791,4 +791,4 @@ if(ESX_BUILD) + include(CMake/esx.cmake) + endif() + +-add_subdirectory(src/os/nvm_api_sample) +\ No newline at end of file ++add_subdirectory(src/os/nvm_api_sample) +-- +2.35.3 + 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 new file mode 100644 index 00000000..11305e83 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl/0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch @@ -0,0 +1,59 @@ +Subject: [PATCH] [PATCH]: ignore static asserts and null define for os and ut + builds +Upstream-Status: Backport +Signed-off-by: Teoh Suh Haw <suh.haw.teoh@intel.com> +--- + MdePkg/Include/Base.h | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h +index d209e6de28..6e61b8f3d3 100644 +--- a/MdePkg/Include/Base.h ++++ b/MdePkg/Include/Base.h +@@ -316,8 +316,12 @@ struct _LIST_ENTRY { + #define NULL __null + #endif + #else ++#ifndef OS_BUILD ++#ifndef UNIT_TEST_UEFI_BUILD + #define NULL ((VOID *) 0) + #endif ++#endif ++#endif + + // + // Null character +@@ -779,6 +783,8 @@ typedef UINTN *BASE_LIST; + // Section 2.3.1 of the UEFI 2.3 Specification. + // + ++#ifndef OS_BUILD ++#ifndef UNIT_TEST_UEFI_BUILD + STATIC_ASSERT (sizeof (BOOLEAN) == 1, "sizeof (BOOLEAN) does not meet UEFI Specification Data Type requirements"); + STATIC_ASSERT (sizeof (INT8) == 1, "sizeof (INT8) does not meet UEFI Specification Data Type requirements"); + STATIC_ASSERT (sizeof (UINT8) == 1, "sizeof (UINT8) does not meet UEFI Specification Data Type requirements"); +@@ -792,6 +798,8 @@ STATIC_ASSERT (sizeof (CHAR8) == 1, "sizeof (CHAR8) does not meet UEFI Specifi + STATIC_ASSERT (sizeof (CHAR16) == 2, "sizeof (CHAR16) does not meet UEFI Specification Data Type requirements"); + STATIC_ASSERT (sizeof (L'A') == 2, "sizeof (L'A') does not meet UEFI Specification Data Type requirements"); + STATIC_ASSERT (sizeof (L"A") == 4, "sizeof (L\"A\") does not meet UEFI Specification Data Type requirements"); ++#endif ++#endif + + // + // The following three enum types are used to verify that the compiler +@@ -812,9 +820,13 @@ typedef enum { + __VerifyUint32EnumValue = 0xffffffff + } __VERIFY_UINT32_ENUM_SIZE; + ++#ifndef OS_BUILD ++#ifndef UNIT_TEST_UEFI_BUILD + STATIC_ASSERT (sizeof (__VERIFY_UINT8_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements"); + STATIC_ASSERT (sizeof (__VERIFY_UINT16_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements"); + STATIC_ASSERT (sizeof (__VERIFY_UINT32_ENUM_SIZE) == 4, "Size of enum does not meet UEFI Specification Data Type requirements"); ++#endif ++#endif + + /** + Macro that returns a pointer to the data structure that contains a specified field of +-- +2.37.3 diff --git a/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0485.bb b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0485.bb new file mode 100644 index 00000000..c4743d1c --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-support/ipmctl/ipmctl_03.00.00.0485.bb @@ -0,0 +1,47 @@ +SUMMARY = "Utility for managing Intel Optane DC persistent memory modules" +DESCRIPTION = "Utility for configuring and managing Intel Optane Persistent \ +Memory modules (PMem). It supports functionality to: \ +Discover DCPMMs on the platform. \ +Provision the platform memory configuration. \ +View and update the firmware on DCPMMs. \ +Configure data-at-rest security on DCPMMs. \ +Track health and performance of DCPMMs. \ +Debug and troubleshoot DCPMMs." + +HOMEPAGE = "https://github.com/intel/ipmctl" +BUGTRACKER = "https://github.com/intel/ipmctl/issues" + +LICENSE = "BSD-3-Clause | BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=72b9da60da6219d612ce30b746a0fe71 \ + file://edk2/License.txt;md5=6123e5bf044a66db96c4ce88a36b2d08" + +SRC_URI = "git://github.com/intel/ipmctl.git;protocol=https;branch=master;name=ipmctl; \ + git://github.com/tianocore/edk2.git;protocol=https;name=edk2;destsuffix=git/edk2;branch=master \ + file://0001-Ignore-STATIC_ASSERTs-and-NULL-define-for-os-and-ut-builds.patch;patchdir=edk2 \ + file://0001-CMakeLists-disable-Werror.patch \ +" + +SRCREV_ipmctl = "c75bd840ea7820c8f93a5488fcff75d08beedd51" +#tag edk2-stable202302 +SRCREV_edk2 = "f80f052277c88a67c55e107b550f504eeea947d3" +SRCREV_FORMAT = "ipmctl_edk2" + +S = "${WORKDIR}/git" + +inherit cmake dos2unix + +DEPENDS = "ndctl pkgconfig-native" + +EXTRA_OECMAKE = "-DRELEASE=ON" + +do_configure:prepend() { + for dir in BaseTools MdeModulePkg MdePkg ShellPkg ; do + ln -sf edk2/${dir} ${S} + done +} + +do_install:append() { + # Remove /var/log/ipmctl as anything created in /var/log will not be + # available when tmpfs is mounted at /var/volatile/log. + rm -rf ${D}${localstatedir}/log +} 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 @@ +From b8c3bae71e6d3417ade5cb537cb1785fd75a75c8 Mon Sep 17 00:00:00 2001 +From: Razvan Apetroaie <117895604+razvanapetroaie@users.noreply.github.com> +Date: Tue, 20 Feb 2024 02:28:14 +0200 +Subject: [PATCH] [CPU] Solving the build failure caused by setting the + "ENABLE_OV_ONNX_FRONTEND" option to "OFF" (#22934) + +### Details: +See the [ticket +description](https://jira.devtools.intel.com/browse/CVS-132119). The +solution was checked only on a local setup on Ubuntu, if there's a way +to check that using the CI please let me know (or if you could run the +job and paste the link in the comments I would be grateful). + +Disclaimer: I'm not a CPU plugin developer, so I can't tell for sure if +this is the ideal fix and no side effects are introduced. Please take +that into account when reviewing/merging. + +### Tickets: + - [CVS-132119](https://jira.devtools.intel.com/browse/CVS-132119) + +Upstream-Status: Backport [https://github.com/openvinotoolkit/openvino/commit/b8c3bae71e6d3417ade5cb537cb1785fd75a75c8] + +Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> +--- + src/plugins/intel_cpu/tests/functional/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plugins/intel_cpu/tests/functional/CMakeLists.txt b/src/plugins/intel_cpu/tests/functional/CMakeLists.txt +index db5ae8d01c..6941cb528d 100644 +--- a/src/plugins/intel_cpu/tests/functional/CMakeLists.txt ++++ b/src/plugins/intel_cpu/tests/functional/CMakeLists.txt +@@ -16,7 +16,7 @@ set(LINK_LIBRARIES funcSharedTests cpuSpecificRtInfo openvino::snippets ov_snipp + if(ENABLE_OV_ONNX_FRONTEND) + list(APPEND DEFINES TEST_MODELS="${TEST_MODEL_ZOO}") + else() +- set(EXCLUDED_SOURCE_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/extension ${CMAKE_CURRENT_SOURCE_DIR}/shared_tests_instances/onnx) ++ set(EXCLUDED_SOURCE_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/custom/extension ${CMAKE_CURRENT_SOURCE_DIR}/shared_tests_instances/onnx) + endif() + + if(NOT (ARM OR AARCH64)) +-- +2.34.1 + 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 @@ +From b5dfcf8bc1245e804c847745c237068eb6f19931 Mon Sep 17 00:00:00 2001 +From: Yogesh Tyagi <yogesh.tyagi@intel.com> +Date: Fri, 15 Mar 2024 16:28:41 +0800 +Subject: [PATCH] cmake: fix build when using sysroot + +When cross-compiling against a sysroot, system headers will not be at a place +that starts with /usr. Update conditional check to exclude directories +which have "/usr/include" in them to not add <sysroot>/usr/include as well. + +Upstream-Status: Submitted [https://github.com/openvinotoolkit/openvino/pull/23486] + +Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> +--- + src/cmake/ov_parallel.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cmake/ov_parallel.cmake b/src/cmake/ov_parallel.cmake +index 3793db98e30..819d3410531 100644 +--- a/src/cmake/ov_parallel.cmake ++++ b/src/cmake/ov_parallel.cmake +@@ -296,7 +296,7 @@ function(ov_set_threading_interface_for TARGET_NAME) + if(include_directories) + foreach(include_directory IN LISTS include_directories) + # cannot include /usr/include headers as SYSTEM +- if(NOT "${include_directory}" MATCHES "^/usr.*$") ++ if(NOT "${include_directory}" MATCHES ".*/usr/include.*$") + target_include_directories(${TARGET_NAME} SYSTEM + ${LINK_TYPE} $<BUILD_INTERFACE:${include_directory}>) + else() +-- +2.34.1 + 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 @@ +From bfcf5ae581ca4e7266cf7dc65b1c71754cd78cc0 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 29 Nov 2023 12:42:57 +0530 +Subject: [PATCH 1/4] cmake: yocto specific tweaks to the build process + +* Dont try to detect glibc version as that doesn't work when cross compiling. +* Install sample binaries as well. +* Dont strip binaries. +* Dont try to write triggers for CPack. We package ourselves. +* Fix the installation path for Python modules when baselib = lib64. + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + cmake/developer_package/packaging/rpm/rpm.cmake | 2 +- + cmake/developer_package/target_flags.cmake | 2 +- + samples/cpp/CMakeLists.txt | 6 +++--- + src/bindings/python/CMakeLists.txt | 2 +- + src/bindings/python/wheel/setup.py | 1 - + 5 files changed, 6 insertions(+), 7 deletions(-) + +diff --git a/cmake/developer_package/packaging/rpm/rpm.cmake b/cmake/developer_package/packaging/rpm/rpm.cmake +index a7c0ec2cf61..40448e8a962 100644 +--- a/cmake/developer_package/packaging/rpm/rpm.cmake ++++ b/cmake/developer_package/packaging/rpm/rpm.cmake +@@ -154,7 +154,7 @@ ov_rpm_specific_settings() + # needed to add triggers for packages with libraries + set(def_triggers "${OpenVINO_BINARY_DIR}/_CPack_Packages/triggers") + set(triggers_content "# /bin/sh -p\n/sbin/ldconfig\n") +-file(WRITE "${def_triggers}" "${triggers_content}") ++#file(WRITE "${def_triggers}" "${triggers_content}") + + # + # Functions helpful for packaging your modules with RPM cpack +diff --git a/cmake/developer_package/target_flags.cmake b/cmake/developer_package/target_flags.cmake +index 29f23e713e1..942dd445b19 100644 +--- a/cmake/developer_package/target_flags.cmake ++++ b/cmake/developer_package/target_flags.cmake +@@ -145,4 +145,4 @@ function(ov_glibc_version) + endif() + endfunction() + +-ov_glibc_version() ++#ov_glibc_version() +diff --git a/samples/cpp/CMakeLists.txt b/samples/cpp/CMakeLists.txt +index c814cc37e2c..431e7bd2ed3 100644 +--- a/samples/cpp/CMakeLists.txt ++++ b/samples/cpp/CMakeLists.txt +@@ -206,9 +206,9 @@ macro(ov_add_sample) + target_link_libraries(${SAMPLE_NAME} PRIVATE ${ov_link_libraries} Threads::Threads ${SAMPLE_DEPENDENCIES}) + + install(TARGETS ${SAMPLE_NAME} +- RUNTIME DESTINATION samples_bin/ +- COMPONENT samples_bin +- EXCLUDE_FROM_ALL) ++ DESTINATION ${CMAKE_INSTALL_BINDIR} ++ COMPONENT samples_bin) ++ + + # create global target with all samples / demo apps + if(NOT TARGET ov_samples) +diff --git a/src/bindings/python/CMakeLists.txt b/src/bindings/python/CMakeLists.txt +index 58ff9b74302..4763994ba56 100644 +--- a/src/bindings/python/CMakeLists.txt ++++ b/src/bindings/python/CMakeLists.txt +@@ -356,7 +356,7 @@ if(ENABLE_PYTHON_PACKAGING) + endif() + + set(python_package_prefix "${CMAKE_CURRENT_BINARY_DIR}/install_${pyversion}") +- set(install_lib "${python_package_prefix}/lib/${python_versioned_folder}/${ov_site_packages}") ++ set(install_lib "${python_package_prefix}/${CMAKE_INSTALL_LIBDIR}/${python_versioned_folder}/${ov_site_packages}") + set(meta_info_subdir "openvino-${OpenVINO_VERSION}-py${python_xy}.egg-info") + set(meta_info_file "${install_lib}/${meta_info_subdir}/PKG-INFO") + +diff --git a/src/bindings/python/wheel/setup.py b/src/bindings/python/wheel/setup.py +index 4b056912212..5f05d891310 100644 +--- a/src/bindings/python/wheel/setup.py ++++ b/src/bindings/python/wheel/setup.py +@@ -270,7 +270,6 @@ class CustomBuild(build): + self.spawn(["cmake", "--install", binary_dir, + "--prefix", prefix, + "--config", CONFIG, +- "--strip", + "--component", cpack_comp_name]) + + def run(self): +-- +2.34.1 + 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 @@ +From 900eeeb2953095e651270c0f42ccd8b26fd7885c Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 29 Nov 2023 12:49:35 +0530 +Subject: [PATCH 3/4] cmake: Fix overloaded-virtual error + +* Remove -Werror for: +|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=] +| 129 | virtual JitDefinitions GetDefinitions() const = 0; +| | + +Upstream-Status: Pending + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + src/plugins/intel_gpu/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plugins/intel_gpu/CMakeLists.txt b/src/plugins/intel_gpu/CMakeLists.txt +index b0c66a435d6..a3037147cc2 100644 +--- a/src/plugins/intel_gpu/CMakeLists.txt ++++ b/src/plugins/intel_gpu/CMakeLists.txt +@@ -38,7 +38,7 @@ add_subdirectory(thirdparty) + include(thirdparty/cmake/rapidjson.cmake) + + if(CMAKE_COMPILER_IS_GNUCXX) +- ov_add_compiler_flags(-Werror) ++ #ov_add_compiler_flags(-Werror) + endif() + + add_subdirectory(src/runtime) +-- +2.34.1 + 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 @@ +From 3e288ed876c6bcb6aa3174e52446b479255ddf22 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 29 Nov 2023 12:55:19 +0530 +Subject: [PATCH 4/4] protobuf: allow target protoc to be built + +We can run target binaries using a qemu wrapper so allow these to be +built and run. + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + cmake/developer_package/frontends/frontends.cmake | 2 +- + thirdparty/protobuf/CMakeLists.txt | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cmake/developer_package/frontends/frontends.cmake b/cmake/developer_package/frontends/frontends.cmake +index 49c5b881030..2a1ea8562bc 100644 +--- a/cmake/developer_package/frontends/frontends.cmake ++++ b/cmake/developer_package/frontends/frontends.cmake +@@ -143,7 +143,7 @@ macro(ov_add_frontend) + set(OUTPUT_PB_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${relative_path}/${FILE_WE}.pb.h) + add_custom_command( + OUTPUT "${OUTPUT_PB_SRC}" "${OUTPUT_PB_HEADER}" +- COMMAND ${PROTOC_EXECUTABLE} ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I ${protofiles_root_dir} ${proto_file} ++ COMMAND protoc ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} -I ${protofiles_root_dir} ${proto_file} + DEPENDS ${PROTOC_DEPENDENCY} ${proto_file} + COMMENT "Running C++ protocol buffer compiler (${PROTOC_EXECUTABLE}) on ${proto_file_relative}" + VERBATIM +diff --git a/thirdparty/protobuf/CMakeLists.txt b/thirdparty/protobuf/CMakeLists.txt +index 4b6d6da87f3..409e492a5b3 100644 +--- a/thirdparty/protobuf/CMakeLists.txt ++++ b/thirdparty/protobuf/CMakeLists.txt +@@ -28,7 +28,7 @@ set(ABSL_PROPAGATE_CXX_STD ON CACHE BOOL "Abseil protogate CXX standard to depen + if(CMAKE_CROSSCOMPILING OR + (APPLE AND (HOST_X86_64 AND AARCH64)) OR + (MSVC AND (HOST_X86_64 AND (AARCH64 OR ARM)))) +- set(protobuf_BUILD_PROTOC_BINARIES OFF CACHE BOOL "Build protoc binaries" FORCE) ++ set(protobuf_BUILD_PROTOC_BINARIES ON CACHE BOOL "Build protoc binaries" FORCE) + else() + set(protobuf_BUILD_PROTOC_BINARIES ON CACHE BOOL "Build protoc binaries" FORCE) + endif() +-- +2.34.1 + 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 new file mode 100644 index 00000000..816a98a3 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo/0001-use-oe-gflags.patch @@ -0,0 +1,27 @@ +From 804b08023b3f8e72b8e3eb09e464d6775c11d966 Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Fri, 21 Oct 2022 11:38:23 +0800 +Subject: [PATCH] demos: use gflags from meta-oe + +Upstream-Status: Inappropriate + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> + +--- + demos/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt +index 51767051c..fb7e3d22f 100644 +--- a/demos/CMakeLists.txt ++++ b/demos/CMakeLists.txt +@@ -141,7 +141,7 @@ endmacro() + find_package(OpenCV REQUIRED COMPONENTS core highgui videoio imgproc imgcodecs) + find_package(OpenVINO REQUIRED COMPONENTS Runtime) + +-add_subdirectory(thirdparty/gflags) ++#add_subdirectory(thirdparty/gflags) + add_subdirectory(common/cpp) + + find_package(OpenCV QUIET COMPONENTS gapi) diff --git a/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2024.0.0.bb b/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2024.0.0.bb new file mode 100644 index 00000000..495a4786 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-support/opencv/open-model-zoo_2024.0.0.bb @@ -0,0 +1,54 @@ +SUMMARY = "OpenVINO(TM) Toolkit - Open Model Zoo repository" +HOMEPAGE = "https://github.com/opencv/open_model_zoo" +DESCRIPTION = "This repository includes optimized deep learning \ +models and a set of demos to expedite development of high-performance \ +deep learning inference applications." + +SRC_URI = "git://github.com/opencv/open_model_zoo.git;protocol=https;branch=master \ + file://0001-use-oe-gflags.patch \ + " + +SRCREV = "37f60eb7fe1dcdedc552b2fb184d646723ed5e80" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \ +" + +inherit cmake + +S = "${WORKDIR}/git" +OECMAKE_SOURCEPATH = "${S}/demos" + +DEPENDS += "openvino-inference-engine opencv gflags" + +RDEPENDS:${PN} += " \ + python3-decorator \ + python3-defusedxml \ + python3-networkx \ + python3-protobuf \ + python3-requests \ + python3-pyyaml \ + python3-numpy \ + bash \ +" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +EXTRA_OECMAKE += " \ + -DENABLE_SAMPLES=ON \ + " + +do_install(){ + install -d ${D}${libdir} + install -d ${D}${bindir} + install -d ${D}${datadir}/openvino/open-model-zoo/tools + install -d ${D}${datadir}/openvino/open-model-zoo/demos + cp -rf ${WORKDIR}/build/intel64/Release/*.a ${D}${libdir} + cp -rf ${WORKDIR}/build/intel64/Release/*_demo* ${D}${bindir} + cp -rf ${WORKDIR}/git/models ${D}${datadir}/openvino/open-model-zoo + cp -rf ${WORKDIR}/git/demos ${D}${datadir}/openvino/open-model-zoo + cp -rf ${WORKDIR}/git/tools/model_tools ${D}${datadir}/openvino/open-model-zoo/tools +} + +FILES:${PN} += "${datadir}/openvino" 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 @@ +SUMMARY = "OpenVINO(TM) Toolkit - Deep Learning Deployment Toolkit" +HOMEPAGE = "https://github.com/opencv/dldt" +DESCRIPTION = "This toolkit allows developers to deploy pre-trained \ +deep learning models through a high-level C++ Inference Engine API \ +integrated with application logic." + +SRC_URI = "git://github.com/openvinotoolkit/openvino.git;protocol=https;name=openvino;branch=releases/2024/0;lfs=0 \ + git://github.com/openvinotoolkit/oneDNN.git;protocol=https;destsuffix=git/src/plugins/intel_cpu/thirdparty/onednn;name=mkl;nobranch=1 \ + git://github.com/oneapi-src/oneDNN.git;protocol=https;destsuffix=git/src/plugins/intel_gpu/thirdparty/onednn_gpu;name=onednn;nobranch=1 \ + git://github.com/herumi/xbyak.git;protocol=https;destsuffix=git/thirdparty/xbyak;name=xbyak;branch=master \ + git://github.com/nlohmann/json.git;protocol=https;destsuffix=git/thirdparty/json/nlohmann_json;name=json;branch=develop \ + git://github.com/opencv/ade.git;protocol=https;destsuffix=git/thirdparty/ade;name=ade;nobranch=1 \ + git://github.com/protocolbuffers/protobuf.git;protocol=https;destsuffix=git/thirdparty/protobuf/protobuf;name=protobuf;branch=3.20.x \ + git://github.com/gflags/gflags.git;protocol=https;destsuffix=git/thirdparty/gflags/gflags;name=gflags;nobranch=1 \ + git://github.com/madler/zlib.git;protocol=https;destsuffix=git/thirdparty/zlib/zlib;name=zlib;nobranch=1 \ + git://github.com/openvinotoolkit/mlas.git;protocol=https;destsuffix=git/src/plugins/intel_cpu/thirdparty/mlas;name=mlas;nobranch=1 \ + git://github.com/nodejs/node-api-headers.git;protocol=https;destsuffix=git/node-api-headers-src;name=node-api-headers;nobranch=1 \ + git://github.com/nodejs/node-addon-api.git;protocol=https;destsuffix=git/node-addon-api-src;name=node-addon-api;nobranch=1 \ + file://0001-cmake-yocto-specific-tweaks-to-the-build-process.patch \ + file://0003-cmake-Fix-overloaded-virtual-error.patch \ + file://0004-protobuf-allow-target-protoc-to-be-built.patch \ + file://0001-cmake-fix-build-when-using-sysroot.patch \ + file://0001-CPU-Solving-the-build-failure-caused-by-setting-the-.patch \ + " + +SRCREV_openvino = "34caeefd07800b59065345d651949efbe8ab6649" +SRCREV_mkl = "f82148befdbdc9576ec721c9d500155ee4de8060" +SRCREV_onednn = "494af5f9921bdae98f1a0e2955fa7d76ff386c4f" +SRCREV_xbyak = "740dff2e866f3ae1a70dd42d6e8836847ed95cc2" +SRCREV_json = "9cca280a4d0ccf0c08f47a99aa71d1b0e52f8d03" +SRCREV_ade = "0e8a2ccdd34f29dba55894f5f3c5179809888b9e" +SRCREV_protobuf = "fe271ab76f2ad2b2b28c10443865d2af21e27e0e" +SRCREV_gflags = "e171aa2d15ed9eb17054558e0b3a6a413bb01067" +SRCREV_zlib = "09155eaa2f9270dc4ed1fa13e2b4b2613e6e4851" +SRCREV_mlas = "d1bc25ec4660cddd87804fcf03b2411b5dfb2e94" +SRCREV_node-api-headers = "186e04b5e40e54d7fd1655bc67081cc483f12488" +SRCREV_node-addon-api = "39a25bf27788ff7a7ea5c64978c4dcd1e7b9d80d" +SRCREV_FORMAT = "openvino_mkl_onednn_xbyak_json_ade_protobuf_gflags_zlib_node-api-headers_node-addon-api_mlas" + +LICENSE = "Apache-2.0 & MIT & BSD-3-Clause & Zlib" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \ + file://thirdparty/xbyak/COPYRIGHT;md5=3c98edfaa50a86eeaef4c6109e803f16 \ + file://thirdparty/cnpy/LICENSE;md5=689f10b06d1ca2d4b1057e67b16cd580 \ + file://thirdparty/json/nlohmann_json/LICENSE.MIT;md5=f969127d7b7ed0a8a63c2bbeae002588 \ + file://thirdparty/ade/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \ + file://thirdparty/gflags/gflags/COPYING.txt;md5=c80d1a3b623f72bb85a4c75b556551df \ + file://thirdparty/zlib/zlib/LICENSE;md5=b51a40671bc46e961c0498897742c0b8 \ + file://src/plugins/intel_cpu/thirdparty/mlas/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327 \ + file://src/plugins/intel_cpu/thirdparty/onednn/LICENSE;md5=3b64000f6e7d52516017622a37a94ce9 \ + file://src/plugins/intel_gpu/thirdparty/onednn_gpu/LICENSE;md5=3b64000f6e7d52516017622a37a94ce9 \ + file://node-api-headers-src/LICENSE;md5=6adb2909701d4605b4b2ae1a9b25d8bd \ + file://node-addon-api-src/LICENSE.md;md5=0492ef29a9d558a3e9660e7accc9ca6a \ +" + +inherit cmake python3native pkgconfig qemu + +S = "${WORKDIR}/git" +EXTRA_OECMAKE += " \ + -DCMAKE_CROSSCOMPILING_EMULATOR=${WORKDIR}/qemuwrapper \ + -DENABLE_OPENCV=OFF \ + -DENABLE_INTEL_GNA=OFF \ + -DENABLE_SYSTEM_TBB=ON \ + -DPYTHON_EXECUTABLE=${PYTHON} \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DTHREADING=TBB -DTBB_DIR="${STAGING_LIBDIR}/cmake/TBB" \ + -DTREAT_WARNING_AS_ERROR=FALSE \ + -DENABLE_DATA=FALSE \ + -DENABLE_SYSTEM_PUGIXML=TRUE \ + -DENABLE_OV_ONNX_FRONTEND=FALSE \ + -DUSE_BUILD_TYPE_SUBFOLDER=OFF \ + -DENABLE_FUZZING=OFF \ + -DENABLE_TBBBIND_2_5=OFF \ + -DCPACK_GENERATOR=RPM \ + -DENABLE_SYSTEM_FLATBUFFERS=ON \ + -DENABLE_SYSTEM_SNAPPY=ON \ + -DFETCHCONTENT_BASE_DIR="${S}" \ + " + +DEPENDS += "\ + flatbuffers-native \ + pugixml \ + python3-pybind11 \ + python3-pybind11-native \ + qemu-native \ + snappy \ + tbb \ + " + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +PACKAGECONFIG ?= "opencl samples" +PACKAGECONFIG[opencl] = "-DENABLE_INTEL_GPU=TRUE, -DENABLE_INTEL_GPU=FALSE, virtual/opencl-icd opencl-headers opencl-clhpp," +PACKAGECONFIG[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" +PACKAGECONFIG[samples] = "-DENABLE_SAMPLES=ON -DENABLE_COMPILE_TOOL=ON, -DENABLE_SAMPLES=OFF -DENABLE_COMPILE_TOOL=OFF, opencv" +PACKAGECONFIG[verbose] = "-DVERBOSE_BUILD=1,-DVERBOSE_BUILD=0" + +do_configure:prepend() { + # Dont set PROJECT_ROOT_DIR + sed -i -e 's:\${OpenVINO_SOURCE_DIR}::;' ${S}/src/CMakeLists.txt + + # qemu wrapper that can be used by cmake to run target binaries. + qemu_binary="${@qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST'), [d.expand('${STAGING_DIR_HOST}${libdir}'),d.expand('${STAGING_DIR_HOST}${base_libdir}')])}" + cat > ${WORKDIR}/qemuwrapper << EOF +#!/bin/sh +$qemu_binary "\$@" +EOF + chmod +x ${WORKDIR}/qemuwrapper +} + +do_install:append() { + rm -rf ${D}${prefix}/install_dependencies + rm -rf ${D}${prefix}/setupvars.sh + + find ${B}/src/plugins/intel_cpu/cross-compiled/ -type f -name *_disp.cpp -exec sed -i -e 's%'"${S}"'%'"${TARGET_DBGSRC_DIR}"'%g' {} + +} + +# Otherwise e.g. ros-openvino-toolkit-dynamic-vino-sample when using dldt-inference-engine uses dldt-inference-engine WORKDIR +# instead of RSS +SSTATE_SCAN_FILES:append = " *.cmake" + +FILES:${PN} += "\ + ${libdir}/openvino-${PV}/lib*${SOLIBSDEV} \ + ${libdir}/openvino-${PV}/plugins.xml \ + ${libdir}/openvino-${PV}/cache.json \ + " + +# Move inference engine samples into a separate package +PACKAGES =+ "${PN}-samples" + +FILES:${PN}-samples = "${datadir}/openvino \ + ${bindir} \ + ${libdir}/libformat_reader.a \ + ${libdir}/libopencv_c_wrapper.a \ + " +RDEPENDS:${PN}-samples += "python3-core" + +# Package for inference engine python API +PACKAGES =+ "${PN}-python3" + +FILES:${PN}-python3 = "${PYTHON_SITEPACKAGES_DIR}" + +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+\.\d+\.\d+))$" diff --git a/lib/oeqa/runtime/cases/cyclictest.py b/lib/oeqa/runtime/cases/cyclictest.py new file mode 100644 index 00000000..8890651a --- /dev/null +++ b/lib/oeqa/runtime/cases/cyclictest.py @@ -0,0 +1,39 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.core.decorator.depends import OETestDepends +from oeqa.runtime.decorator.package import OEHasPackage +import os +import subprocess +import datetime + +class CyclicTest(OERuntimeTestCase): + + @OEHasPackage(['rt-tests']) + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_cyclic(self): + # Cyclictest command and argument based on public setup for Intel(R) Core(TM) i7-6700 + # https://www.osadl.org/Latency-plot-of-system-in-rack-9-slot.qa-latencyplot-r9s5.0.html?shadow=1 + # Command line: cyclictest -l100000000 -m -Sp99 -i200 -h400 -q + status, output = self.target.run('cyclictest -l100000000 -m -Sp99 -i200 -h400') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + test_log_dir = self.td.get('TEST_LOG_DIR', '') + + if not test_log_dir: + test_log_dir = os.path.join(self.td.get('WORKDIR', ''), 'testimage') + + cyclic_log_dir = os.path.join(test_log_dir, '%s.%s' % ('cyclic_test', datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) + os.makedirs(cyclic_log_dir) + log_path = os.path.join(cyclic_log_dir, 'cyclic_log') + with open(log_path, 'w') as f: + f.write(output) + + max_latency = subprocess.check_output(('grep "Max Latencies" %s | tr " " "\n" | sort -n | tail -1 | sed s/^0*//') % log_path, shell=True).strip() + max_latency = int(max_latency) + + # Default target latency based on max latency (24us) captured at public execution multiple by 1.2 (20% buffer) + # https://www.osadl.org/Latency-plot-of-system-in-rack-9-slot.qa-latencyplot-r9s5.0.html?shadow=1 + target_latency = 1.2*24 + user_defined_target_latency = self.tc.td.get("RTKERNEL_TARGET_LATENCY") + if user_defined_target_latency: + target_latency = int(user_defined_target_latency) + self.assertTrue(max_latency < target_latency, + msg="Max latency (%sus) is greater than target (%sus)." % (max_latency, target_latency)) diff --git a/lib/oeqa/runtime/cases/dldt_inference_engine.py b/lib/oeqa/runtime/cases/dldt_inference_engine.py new file mode 100644 index 00000000..fb35d52f --- /dev/null +++ b/lib/oeqa/runtime/cases/dldt_inference_engine.py @@ -0,0 +1,109 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.core.decorator.depends import OETestDepends +from oeqa.runtime.miutils.targets.oeqatarget import OEQATarget +from oeqa.runtime.miutils.tests.squeezenet_model_download_test import SqueezenetModelDownloadTest +from oeqa.runtime.miutils.tests.dldt_model_optimizer_test import DldtModelOptimizerTest +from oeqa.runtime.miutils.tests.dldt_inference_engine_test import DldtInferenceEngineTest +from oeqa.runtime.miutils.dldtutils import get_testdata_config + +class DldtInferenceEngine(OERuntimeTestCase): + + @classmethod + def setUpClass(cls): + cls.sqn_download = SqueezenetModelDownloadTest(OEQATarget(cls.tc.target), '/tmp/ie/md') + cls.sqn_download.setup() + cls.dldt_mo = DldtModelOptimizerTest(OEQATarget(cls.tc.target), '/tmp/ie/ir') + cls.dldt_mo.setup() + cls.dldt_ie = DldtInferenceEngineTest(OEQATarget(cls.tc.target), '/tmp/ie/inputs') + cls.dldt_ie.setup() + cls.ir_files_dir = cls.dldt_mo.work_dir + + @classmethod + def tearDownClass(cls): + cls.dldt_ie.tear_down() + cls.dldt_mo.tear_down() + cls.sqn_download.tear_down() + + @OEHasPackage(['dldt-model-optimizer']) + @OEHasPackage(['wget']) + def test_dldt_ie_can_create_ir_and_download_input(self): + proxy_port = get_testdata_config(self.tc.td, 'DLDT_PIP_PROXY') + if not proxy_port: + self.skipTest('Need to configure bitbake configuration (DLDT_PIP_PROXY="proxy.server:port").') + (status, output) = self.sqn_download.test_can_download_squeezenet_model(proxy_port) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + (status, output) = self.sqn_download.test_can_download_squeezenet_prototxt(proxy_port) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + mo_exe_dir = get_testdata_config(self.tc.td, 'DLDT_MO_EXE_DIR') + if not mo_exe_dir: + self.skipTest('Need to configure bitbake configuration (DLDT_MO_EXE_DIR="directory_to_mo.py").') + mo_files_dir = self.sqn_download.work_dir + (status, output) = self.dldt_mo.test_dldt_mo_can_create_ir(mo_exe_dir, mo_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + (status, output) = self.dldt_ie.test_can_download_input_file(proxy_port) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['dldt_inference_engine.DldtInferenceEngine.test_dldt_ie_can_create_ir_and_download_input']) + @OEHasPackage(['dldt-inference-engine']) + @OEHasPackage(['dldt-inference-engine-samples']) + def test_dldt_ie_classification_with_cpu(self): + (status, output) = self.dldt_ie.test_dldt_ie_classification_with_device('CPU', self.ir_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['dldt_inference_engine.DldtInferenceEngine.test_dldt_ie_can_create_ir_and_download_input']) + @OEHasPackage(['dldt-inference-engine']) + @OEHasPackage(['dldt-inference-engine-samples']) + @OEHasPackage(['intel-compute-runtime']) + @OEHasPackage(['ocl-icd']) + def test_dldt_ie_classification_with_gpu(self): + (status, output) = self.dldt_ie.test_dldt_ie_classification_with_device('GPU', self.ir_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['dldt_inference_engine.DldtInferenceEngine.test_dldt_ie_can_create_ir_and_download_input']) + @OEHasPackage(['dldt-inference-engine']) + @OEHasPackage(['dldt-inference-engine-samples']) + @OEHasPackage(['dldt-inference-engine-vpu-firmware']) + def test_dldt_ie_classification_with_myriad(self): + device = 'MYRIAD' + (status, output) = self.dldt_ie.test_check_if_openvino_device_available(device) + if not status: + self.skipTest('OpenVINO %s device not available on target machine(availalbe devices: %s)' % (device, output)) + (status, output) = self.dldt_ie.test_dldt_ie_classification_with_device(device, self.ir_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['dldt_inference_engine.DldtInferenceEngine.test_dldt_ie_can_create_ir_and_download_input']) + @OEHasPackage(['dldt-inference-engine']) + @OEHasPackage(['dldt-inference-engine-python3']) + @OEHasPackage(['python3-opencv']) + @OEHasPackage(['python3-numpy']) + def test_dldt_ie_classification_python_api_with_cpu(self): + (status, output) = self.dldt_ie.test_dldt_ie_classification_python_api_with_device('CPU', self.ir_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['dldt_inference_engine.DldtInferenceEngine.test_dldt_ie_can_create_ir_and_download_input']) + @OEHasPackage(['dldt-inference-engine']) + @OEHasPackage(['dldt-inference-engine-python3']) + @OEHasPackage(['intel-compute-runtime']) + @OEHasPackage(['ocl-icd']) + @OEHasPackage(['python3-opencv']) + @OEHasPackage(['python3-numpy']) + def test_dldt_ie_classification_python_api_with_gpu(self): + (status, output) = self.dldt_ie.test_dldt_ie_classification_python_api_with_device('GPU', self.ir_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['dldt_inference_engine.DldtInferenceEngine.test_dldt_ie_can_create_ir_and_download_input']) + @OEHasPackage(['dldt-inference-engine']) + @OEHasPackage(['dldt-inference-engine-python3']) + @OEHasPackage(['dldt-inference-engine-vpu-firmware']) + @OEHasPackage(['python3-opencv']) + @OEHasPackage(['python3-numpy']) + def test_dldt_ie_classification_python_api_with_myriad(self): + device = 'MYRIAD' + (status, output) = self.dldt_ie.test_check_if_openvino_device_available(device) + if not status: + self.skipTest('OpenVINO %s device not available on target machine(availalbe devices: %s)' % (device, output)) + (status, output) = self.dldt_ie.test_dldt_ie_classification_python_api_with_device(device, self.ir_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) diff --git a/lib/oeqa/runtime/cases/dldt_model_optimizer.py b/lib/oeqa/runtime/cases/dldt_model_optimizer.py new file mode 100644 index 00000000..736ea661 --- /dev/null +++ b/lib/oeqa/runtime/cases/dldt_model_optimizer.py @@ -0,0 +1,38 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.runtime.miutils.targets.oeqatarget import OEQATarget +from oeqa.runtime.miutils.tests.squeezenet_model_download_test import SqueezenetModelDownloadTest +from oeqa.runtime.miutils.tests.dldt_model_optimizer_test import DldtModelOptimizerTest +from oeqa.runtime.miutils.dldtutils import get_testdata_config + +class DldtModelOptimizer(OERuntimeTestCase): + + @classmethod + def setUpClass(cls): + cls.sqn_download = SqueezenetModelDownloadTest(OEQATarget(cls.tc.target), '/tmp/mo/md') + cls.sqn_download.setup() + cls.dldt_mo = DldtModelOptimizerTest(OEQATarget(cls.tc.target), '/tmp/mo/ir') + cls.dldt_mo.setup() + + @classmethod + def tearDownClass(cls): + cls.dldt_mo.tear_down() + cls.sqn_download.tear_down() + + @OEHasPackage(['dldt-model-optimizer']) + @OEHasPackage(['wget']) + def test_dldt_mo_can_create_ir(self): + proxy_port = get_testdata_config(self.tc.td, 'DLDT_PIP_PROXY') + if not proxy_port: + self.skipTest('Need to configure bitbake configuration (DLDT_PIP_PROXY="proxy.server:port").') + (status, output) = self.sqn_download.test_can_download_squeezenet_model(proxy_port) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + (status, output) = self.sqn_download.test_can_download_squeezenet_prototxt(proxy_port) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + mo_exe_dir = get_testdata_config(self.tc.td, 'DLDT_MO_EXE_DIR') + if not mo_exe_dir: + self.skipTest('Need to configure bitbake configuration (DLDT_MO_EXE_DIR="directory_to_mo.py").') + mo_files_dir = self.sqn_download.work_dir + (status, output) = self.dldt_mo.test_dldt_mo_can_create_ir(mo_exe_dir, mo_files_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) diff --git a/lib/oeqa/runtime/cases/intel_mediasdk.py b/lib/oeqa/runtime/cases/intel_mediasdk.py new file mode 100644 index 00000000..4ae7d580 --- /dev/null +++ b/lib/oeqa/runtime/cases/intel_mediasdk.py @@ -0,0 +1,34 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.core.decorator.depends import OETestDepends + +class MsdkTest(OERuntimeTestCase): + + @classmethod + def tearDownClass(cls): + cls.tc.target.run("rm /tmp/mtest_h264.mp4") + + @OEHasPackage(['gstreamer1.0-plugins-base']) + @OEHasPackage(['gstreamer1.0-plugins-good']) + @OEHasPackage(['gstreamer1.0-plugins-bad']) + @OEHasPackage(['intel-mediasdk']) + @OEHasPackage(['intel-media-driver', 'libigfxcmrt7']) + def test_gstreamer_can_encode_with_msdk_and_intel_media_driver(self): + (status, output) = self.target.run('gst-inspect-1.0 msdk') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + (status, output) = self.target.run('export LIBVA_DRIVER_NAME=iHD; ' + 'gst-launch-1.0 -ev videotestsrc num-buffers=120 ! timeoverlay ! ' + 'msdkh264enc ! video/x-h264,profile=main ! h264parse ! ' + 'filesink location=/tmp/mtest_h264.mp4') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['intel_mediasdk.MsdkTest.test_gstreamer_can_encode_with_msdk_and_intel_media_driver']) + def test_gstreamer_can_decode_with_msdk_and_intel_media_driver(self): + (status, output) = self.target.run('export LIBVA_DRIVER_NAME=iHD; ' + 'gst-launch-1.0 filesrc location=/tmp/mtest_h264.mp4 ! ' + 'h264parse ! msdkh264dec ! ' + 'msdkh265enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2 ! ' + 'video/x-h265,profile=main ! h265parse ! fakesink') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + diff --git a/lib/oeqa/runtime/cases/intel_vaapi_driver.py b/lib/oeqa/runtime/cases/intel_vaapi_driver.py new file mode 100644 index 00000000..31e11a81 --- /dev/null +++ b/lib/oeqa/runtime/cases/intel_vaapi_driver.py @@ -0,0 +1,27 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.core.decorator.depends import OETestDepends + +class VaapiDriverTest(OERuntimeTestCase): + + @classmethod + def tearDownClass(cls): + cls.tc.target.run("rm /tmp/vtest_h264.mp4") + + @OEHasPackage(['gstreamer1.0-plugins-base']) + @OEHasPackage(['gstreamer1.0-plugins-good']) + @OEHasPackage(['gstreamer1.0-vaapi']) + @OEHasPackage(['intel-vaapi-driver']) + def test_gstreamer_can_encode_with_intel_vaapi_driver(self): + (status, output) = self.target.run('gst-inspect-1.0 vaapi') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + (status, output) = self.target.run('gst-launch-1.0 -ev videotestsrc num-buffers=60 ! ' + 'timeoverlay ! vaapih264enc ! h264parse ! mp4mux ! filesink location=/tmp/vtest_h264.mp4') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['intel_vaapi_driver.VaapiDriverTest.test_gstreamer_can_encode_with_intel_vaapi_driver']) + def test_gstreamer_can_decode_with_intel_vaapi_driver(self): + (status, output) = self.target.run('gst-launch-1.0 filesrc location=/tmp/vtest_h264.mp4 ! ' + 'qtdemux ! h264parse ! vaapih264dec ! vaapisink') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) diff --git a/lib/oeqa/runtime/cases/isal.py b/lib/oeqa/runtime/cases/isal.py new file mode 100644 index 00000000..5025f986 --- /dev/null +++ b/lib/oeqa/runtime/cases/isal.py @@ -0,0 +1,24 @@ +import os +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.core.decorator.depends import OETestDepends + +class IsalTest(OERuntimeTestCase): + + @OEHasPackage(['isa-l']) + def test_isal_igzip_version(self): + command = 'igzip -V' + (status, output) = self.target.run(command) + self.assertEqual(status, 0, msg="Error messages: %s" % output) + + @OETestDepends(['isal.IsalTest.test_isal_igzip_version']) + def test_isal_igzip_can_compress(self): + command = 'echo "hello" > /tmp/igzip_sample' + (status, output) = self.target.run(command) + self.assertEqual(status, 0, msg="Error messages: %s" % output) + command = 'igzip -z /tmp/igzip_sample' + (status, output) = self.target.run(command) + self.assertEqual(status, 0, msg="Error messages: %s" % output) + command = 'rm /tmp/igzip_sample*' + (status, output) = self.target.run(command) + self.assertEqual(status, 0, msg="Error messages: %s" % output) diff --git a/lib/oeqa/runtime/cases/libipt.py b/lib/oeqa/runtime/cases/libipt.py new file mode 100644 index 00000000..4adb13f0 --- /dev/null +++ b/lib/oeqa/runtime/cases/libipt.py @@ -0,0 +1,23 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.core.decorator.depends import OETestDepends + +class LibiptTest(OERuntimeTestCase): + libipt_bin_dir = '/usr/bin/libipt/' + + @classmethod + def tearDownClass(cls): + cls.tc.target.run('rm /tmp/loop-tnt*') + + @OEHasPackage(['libipt', 'libipt2']) + @OEHasPackage(['libipt-test']) + @OEHasPackage(['yasm']) + def test_libipt_can_generate_trace_packet(self): + (status, output) = self.target.run('cd /tmp; %spttc %s/tests/loop-tnt.ptt' % + (self.libipt_bin_dir, self.libipt_bin_dir)) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['libipt.LibiptTest.test_libipt_can_generate_trace_packet']) + def test_libipt_can_perform_trace_packet_dump(self): + (status, output) = self.target.run('cd /tmp; %sptdump loop-tnt.pt' % self.libipt_bin_dir) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) diff --git a/lib/oeqa/runtime/cases/libxcam.py b/lib/oeqa/runtime/cases/libxcam.py new file mode 100644 index 00000000..57192f07 --- /dev/null +++ b/lib/oeqa/runtime/cases/libxcam.py @@ -0,0 +1,37 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.core.decorator.depends import OETestDepends + +class LibxcamTest(OERuntimeTestCase): + yuv_file = 'vtest.yuv' + soft_test_app_file = 'test-soft-image' + libxcam_test_app_dir = '/usr/bin/libxcam/' + libxcam_file_dir = '/tmp/' + + @classmethod + def tearDownClass(cls): + cls.tc.target.run("rm %s%s" % (cls.libxcam_file_dir, cls.yuv_file)) + + @OEHasPackage(['gstreamer1.0-plugins-base']) + @OEHasPackage(['gstreamer1.0-plugins-good']) + @OEHasPackage(['gstreamer1.0-vaapi']) + @OEHasPackage(['intel-vaapi-driver']) + def test_libxcam_can_generate_yuv_file_with_gstreamer(self): + (status, output) = self.target.run('gst-inspect-1.0 vaapi') + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + (status, output) = self.target.run('gst-launch-1.0 -ev videotestsrc num-buffers=60 ! ' + 'timeoverlay ! filesink location=%s%s' % + (self.libxcam_file_dir, self.yuv_file)) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OEHasPackage(['libxcam']) + @OEHasPackage(['libxcam-test']) + @OETestDepends(['libxcam.LibxcamTest.test_libxcam_can_generate_yuv_file_with_gstreamer']) + def test_libxcam_can_execute_soft_image_sample_app(self): + (status, output) = self.target.run('%s%s --type remap --input0 %s%s --output soft_out.nv12 --save false' % + (self.libxcam_test_app_dir, + self.soft_test_app_file, + self.libxcam_file_dir, + self.yuv_file)) + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) diff --git a/lib/oeqa/runtime/cases/microcode.py b/lib/oeqa/runtime/cases/microcode.py index 6ce36a6f..52c1cdb4 100644 --- a/lib/oeqa/runtime/cases/microcode.py +++ b/lib/oeqa/runtime/cases/microcode.py @@ -16,20 +16,15 @@ class MicrocodeTest(OERuntimeTestCase): @OEHasPackage(["iucode-tool"]) def test_microcode_update(self): - (status, output) = self.target.run('iucode_tool /lib/firmware/intel-ucode/ -tb -lS | grep rev') - if status: - self.skipTest("The iucode_tool detected no microcode for update.") + (status, output) = self.target.run('iucode_tool /lib/firmware/intel-ucode/ -tb -l --scan-system=2 | grep rev') selected_microcodes = output.splitlines() selected_rev_list = self.get_revision_from_microcode_string_list(selected_microcodes, "rev (\w*)") - self.assertTrue(selected_rev_list, msg="Could not find any rev from iucode_tool selected microcode.") - (status, output) = self.target.run('dmesg | grep microcode') - self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + (status, output) = self.target.run("dmesg | grep 'microcode updated early'") updated_microcodes = output.splitlines() - updated_rev_list = self.get_revision_from_microcode_string_list(updated_microcodes, "revision=(\w*)") - self.assertTrue(updated_rev_list, msg="Could not find any updated revision from microcode dmesg.") + updated_rev_list = self.get_revision_from_microcode_string_list(updated_microcodes, "revision (\w*)") for ul in updated_rev_list: self.assertTrue(ul in selected_rev_list, msg="Updated revision, %s, not in selected revision list (%s)" % diff --git a/lib/oeqa/runtime/cases/mkl_dnn.py b/lib/oeqa/runtime/cases/mkl_dnn.py new file mode 100644 index 00000000..8d50df54 --- /dev/null +++ b/lib/oeqa/runtime/cases/mkl_dnn.py @@ -0,0 +1,67 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.core.decorator.depends import OETestDepends +from oeqa.runtime.miutils.targets.oeqatarget import OEQATarget +from oeqa.runtime.miutils.tests.mkl_dnn_test import MkldnnTest + +class MklDnn(OERuntimeTestCase): + + @classmethod + def setUpClass(cls): + cls.mkldnntest = MkldnnTest(OEQATarget(cls.tc.target)) + + @classmethod + def tearDownClass(cls): + cls.mkldnntest.tear_down() + + @OEHasPackage(['onednn', 'libdnnl2']) + @OEHasPackage(['onednn-src', 'libdnnl-src']) + @OEHasPackage(['onednn-dev', 'libdnnl-dev']) + @OEHasPackage(['gcc']) + @OEHasPackage(['gcc-symlinks']) + @OEHasPackage(['libstdc++-dev']) + @OEHasPackage(['binutils']) + def test_mkldnn_can_compile_and_execute(self): + (status, output) = self.mkldnntest.test_mkldnn_can_compile_and_execute() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OEHasPackage(['onednn', 'libdnnl2']) + @OEHasPackage(['onednn-test', 'libdnnl-test']) + def test_mkldnn_benchdnn_package_available(self): + (status, output) = self.mkldnntest.test_mkldnn_benchdnn_package_available() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['mkl_dnn.MklDnn.test_mkldnn_benchdnn_package_available']) + def test_mkldnn_conv_api(self): + (status, output) = self.mkldnntest.test_mkldnn_conv_api() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['mkl_dnn.MklDnn.test_mkldnn_benchdnn_package_available']) + def test_mkldnn_bnorm_api(self): + (status, output) = self.mkldnntest.test_mkldnn_bnorm_api() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['mkl_dnn.MklDnn.test_mkldnn_benchdnn_package_available']) + def test_mkldnn_deconv_api(self): + (status, output) = self.mkldnntest.test_mkldnn_deconv_api() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['mkl_dnn.MklDnn.test_mkldnn_benchdnn_package_available']) + def test_mkldnn_ip_api(self): + (status, output) = self.mkldnntest.test_mkldnn_ip_api() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['mkl_dnn.MklDnn.test_mkldnn_benchdnn_package_available']) + def test_mkldnn_reorder_api(self): + (status, output) = self.mkldnntest.test_mkldnn_reorder_api() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['mkl_dnn.MklDnn.test_mkldnn_benchdnn_package_available']) + def test_mkldnn_rnn_api(self): + (status, output) = self.mkldnntest.test_mkldnn_rnn_api() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) + + @OETestDepends(['mkl_dnn.MklDnn.test_mkldnn_benchdnn_package_available']) + def test_mkldnn_shuffle_api(self): + (status, output) = self.mkldnntest.test_mkldnn_shuffle_api() + self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, 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 @@ +# These should be reviewed to see if they are still needed +ACPI: No _BQC method, cannot determine initial brightness +[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness +(EE) Failed to load module "psb" +(EE) Failed to load module "psbdrv" +(EE) open /dev/fb0: No such file or directory +(EE) AIGLX: reverting to software rendering +dmi: Firmware registration failed. +ioremap 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 @@ +# These should be reviewed to see if they are still needed +can't set Max Payload Size to 256 +intel_punit_ipc: can't request region for resource +[drm] parse error at position 4 in video mode 'efifb' +ACPI Error: Could not enable RealTimeClock event +ACPI Warning: Could not enable fixed event - RealTimeClock +hci_intel INT33E1:00: Unable to retrieve gpio +hci_intel: probe of INT33E1:00 failed +can't derive routing for PCI INT A +failed to read out thermal zone +Bluetooth: hci0: Setting Intel event mask failed +ttyS2 - failed to request DMA +Bluetooth: hci0: Failed to send firmware data (-38) +atkbd serio0: Failed to enable keyboard on isa0060/serio0 diff --git a/lib/oeqa/runtime/cases/thermald.py b/lib/oeqa/runtime/cases/thermald.py new file mode 100644 index 00000000..a0b6a92b --- /dev/null +++ b/lib/oeqa/runtime/cases/thermald.py @@ -0,0 +1,47 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.core.decorator.depends import OETestDepends +from oeqa.runtime.decorator.package import OEHasPackage +import threading +import time +import re + +class ThermaldTest(OERuntimeTestCase): + def get_thermal_zone_with_target_type(self, target_type): + i = 0 + while True: + status, output = self.target.run('cat /sys/class/thermal/thermal_zone%s/type' % i) + if status: + return -1 + if output == target_type: + return i + i = i + 1 + + def run_thermald_emulation_to_exceed_setpoint_then_end_thermald_process(self, run_args): + time.sleep(2) + self.target.run('echo 106000 > /sys/class/thermal/thermal_zone%s/emul_temp' % run_args) + time.sleep(5) + __, output = self.target.run('pidof thermald') + self.target.run('kill -9 %s' % output) + + def test_thermald_emulation_mode(self): + # Thermald test depend on thermal emulation, where CONFIG_THERMAL_EMULATION=y was required + # To enable thermal emulation, refer to https://github.com/intel/thermal_daemon/blob/master/test/readme_test.txt + (status, output) = self.target.run('gzip -dc /proc/config.gz | grep CONFIG_THERMAL_EMULATION=y') + if status: + self.skipTest("CONFIG_THERMAL_EMULATION is not set") + + @OEHasPackage(['thermald']) + @OETestDepends(['thermald.ThermaldTest.test_thermald_emulation_mode']) + def test_thermald_can_track_thermal_exceed_setpoint(self): + x86_thermal_zone_index = self.get_thermal_zone_with_target_type('x86_pkg_temp') + if x86_thermal_zone_index < 0: + self.skipTest('Could not get the thermal zone index for target type (%s)' % 'x86_pkg_temp') + td_thread = threading.Thread(target=self.run_thermald_emulation_to_exceed_setpoint_then_end_thermald_process, + args=(x86_thermal_zone_index,)) + td_thread.start() + td_thread.join() + status, output = self.target.run('timeout 3s thermald --no-daemon --loglevel=info') + regex_search = ".*thd_cdev_set_state.*106000" + regex_comp = re.compile(regex_search) + m = regex_comp.search(output) + self.assertTrue(m, msg='status and output: %s and %s' % (status, output)) diff --git a/lib/oeqa/runtime/files/dldt-inference-engine/classification_sample.py b/lib/oeqa/runtime/files/dldt-inference-engine/classification_sample.py new file mode 100644 index 00000000..1906e9fe --- /dev/null +++ b/lib/oeqa/runtime/files/dldt-inference-engine/classification_sample.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +""" + Copyright (C) 2018-2019 Intel Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +""" +from __future__ import print_function +import sys +import os +from argparse import ArgumentParser, SUPPRESS +import cv2 +import numpy as np +import logging as log +from time import time +from openvino.inference_engine import IENetwork, IECore + + +def build_argparser(): + parser = ArgumentParser(add_help=False) + args = parser.add_argument_group('Options') + args.add_argument('-h', '--help', action='help', default=SUPPRESS, help='Show this help message and exit.') + args.add_argument("-m", "--model", help="Required. Path to an .xml file with a trained model.", required=True, + type=str) + args.add_argument("-i", "--input", help="Required. Path to a folder with images or path to an image files", + required=True, + type=str, nargs="+") + args.add_argument("-l", "--cpu_extension", + help="Optional. Required for CPU custom layers. " + "MKLDNN (CPU)-targeted custom layers. Absolute path to a shared library with the" + " kernels implementations.", type=str, default=None) + args.add_argument("-d", "--device", + help="Optional. Specify the target device to infer on; CPU, GPU, FPGA, HDDL, MYRIAD or HETERO: is " + "acceptable. The sample will look for a suitable plugin for device specified. Default " + "value is CPU", + default="CPU", type=str) + args.add_argument("--labels", help="Optional. Path to a labels mapping file", default=None, type=str) + args.add_argument("-nt", "--number_top", help="Optional. Number of top results", default=10, type=int) + + return parser + + +def main(): + log.basicConfig(format="[ %(levelname)s ] %(message)s", level=log.INFO, stream=sys.stdout) + args = build_argparser().parse_args() + model_xml = args.model + model_bin = os.path.splitext(model_xml)[0] + ".bin" + + # Plugin initialization for specified device and load extensions library if specified + log.info("Creating Inference Engine") + ie = IECore() + if args.cpu_extension and 'CPU' in args.device: + ie.add_extension(args.cpu_extension, "CPU") + # Read IR + log.info("Loading network files:\n\t{}\n\t{}".format(model_xml, model_bin)) + net = IENetwork(model=model_xml, weights=model_bin) + + if "CPU" in args.device: + supported_layers = ie.query_network(net, "CPU") + not_supported_layers = [l for l in net.layers.keys() if l not in supported_layers] + if len(not_supported_layers) != 0: + log.error("Following layers are not supported by the plugin for specified device {}:\n {}". + format(args.device, ', '.join(not_supported_layers))) + log.error("Please try to specify cpu extensions library path in sample's command line parameters using -l " + "or --cpu_extension command line argument") + sys.exit(1) + + assert len(net.inputs.keys()) == 1, "Sample supports only single input topologies" + assert len(net.outputs) == 1, "Sample supports only single output topologies" + + log.info("Preparing input blobs") + input_blob = next(iter(net.inputs)) + out_blob = next(iter(net.outputs)) + net.batch_size = len(args.input) + + # Read and pre-process input images + n, c, h, w = net.inputs[input_blob].shape + images = np.ndarray(shape=(n, c, h, w)) + for i in range(n): + image = cv2.imread(args.input[i]) + if image.shape[:-1] != (h, w): + log.warning("Image {} is resized from {} to {}".format(args.input[i], image.shape[:-1], (h, w))) + image = cv2.resize(image, (w, h)) + image = image.transpose((2, 0, 1)) # Change data layout from HWC to CHW + images[i] = image + log.info("Batch size is {}".format(n)) + + # Loading model to the plugin + log.info("Loading model to the plugin") + exec_net = ie.load_network(network=net, device_name=args.device) + + # Start sync inference + log.info("Starting inference in synchronous mode") + res = exec_net.infer(inputs={input_blob: images}) + + # Processing output blob + log.info("Processing output blob") + res = res[out_blob] + log.info("Top {} results: ".format(args.number_top)) + if args.labels: + with open(args.labels, 'r') as f: + labels_map = [x.split(sep=' ', maxsplit=1)[-1].strip() for x in f] + else: + labels_map = None + classid_str = "classid" + probability_str = "probability" + for i, probs in enumerate(res): + probs = np.squeeze(probs) + top_ind = np.argsort(probs)[-args.number_top:][::-1] + print("Image {}\n".format(args.input[i])) + print(classid_str, probability_str) + print("{} {}".format('-' * len(classid_str), '-' * len(probability_str))) + for id in top_ind: + det_label = labels_map[id] if labels_map else "{}".format(id) + label_length = len(det_label) + space_num_before = (len(classid_str) - label_length) // 2 + space_num_after = len(classid_str) - (space_num_before + label_length) + 2 + space_num_before_prob = (len(probability_str) - len(str(probs[id]))) // 2 + print("{}{}{}{}{:.7f}".format(' ' * space_num_before, det_label, + ' ' * space_num_after, ' ' * space_num_before_prob, + probs[id])) + print("\n") + log.info("This sample is an API example, for any performance measurements please use the dedicated benchmark_app tool\n") + +if __name__ == '__main__': + sys.exit(main() or 0) diff --git a/lib/oeqa/runtime/miutils/dldtutils.py b/lib/oeqa/runtime/miutils/dldtutils.py new file mode 100644 index 00000000..45bf2e12 --- /dev/null +++ b/lib/oeqa/runtime/miutils/dldtutils.py @@ -0,0 +1,3 @@ + +def get_testdata_config(testdata, config): + return testdata.get(config) diff --git a/lib/oeqa/runtime/miutils/targets/oeqatarget.py b/lib/oeqa/runtime/miutils/targets/oeqatarget.py new file mode 100644 index 00000000..a9f7f1b4 --- /dev/null +++ b/lib/oeqa/runtime/miutils/targets/oeqatarget.py @@ -0,0 +1,11 @@ + +class OEQATarget(object): + + def __init__(self, target): + self.target = target + + def run(self, cmd): + return self.target.run(cmd) + + def copy_to(self, source, destination_dir): + self.target.copyTo(source, destination_dir) diff --git a/lib/oeqa/runtime/miutils/tests/dldt_inference_engine_test.py b/lib/oeqa/runtime/miutils/tests/dldt_inference_engine_test.py new file mode 100644 index 00000000..31bfb539 --- /dev/null +++ b/lib/oeqa/runtime/miutils/tests/dldt_inference_engine_test.py @@ -0,0 +1,56 @@ +import os +script_path = os.path.dirname(os.path.realpath(__file__)) +files_path = os.path.join(script_path, '../../files/') + +class DldtInferenceEngineTest(object): + ie_input_files = {'ie_python_sample': 'classification_sample.py', + 'input': 'chicky_512.png', + 'input_download': 'https://raw.githubusercontent.com/opencv/opencv/master/samples/data/chicky_512.png', + 'model': 'squeezenet_v1.1.xml'} + + def __init__(self, target, work_dir): + self.target = target + self.work_dir = work_dir + + def setup(self): + self.target.run('mkdir -p %s' % self.work_dir) + self.target.copy_to(os.path.join(files_path, 'dldt-inference-engine', self.ie_input_files['ie_python_sample']), + self.work_dir) + python_cmd = 'from openvino.inference_engine import IENetwork, IECore; ie = IECore(); print(ie.available_devices)' + __, output = self.target.run('python3 -c "%s"' % python_cmd) + self.available_devices = output + + def tear_down(self): + self.target.run('rm -rf %s' % self.work_dir) + + def test_check_if_openvino_device_available(self, device): + if device not in self.available_devices: + return False, self.available_devices + return True, self.available_devices + + def test_can_download_input_file(self, proxy_port): + return self.target.run('cd %s; wget %s -e https_proxy=%s' % + (self.work_dir, + self.ie_input_files['input_download'], + proxy_port)) + + def test_dldt_ie_classification_with_device(self, device, ir_files_dir): + return self.target.run('classification_sample_async -d %s -i %s -m %s' % + (device, + os.path.join(self.work_dir, self.ie_input_files['input']), + os.path.join(ir_files_dir, self.ie_input_files['model']))) + + def test_dldt_ie_classification_python_api_with_device(self, device, ir_files_dir, extension=''): + if extension: + return self.target.run('python3 %s -d %s -i %s -m %s -l %s' % + (os.path.join(self.work_dir, self.ie_input_files['ie_python_sample']), + device, + os.path.join(self.work_dir, self.ie_input_files['input']), + os.path.join(ir_files_dir, self.ie_input_files['model']), + extension)) + else: + return self.target.run('python3 %s -d %s -i %s -m %s' % + (os.path.join(self.work_dir, self.ie_input_files['ie_python_sample']), + device, + os.path.join(self.work_dir, self.ie_input_files['input']), + os.path.join(ir_files_dir, self.ie_input_files['model']))) diff --git a/lib/oeqa/runtime/miutils/tests/dldt_model_optimizer_test.py b/lib/oeqa/runtime/miutils/tests/dldt_model_optimizer_test.py new file mode 100644 index 00000000..7d3db15b --- /dev/null +++ b/lib/oeqa/runtime/miutils/tests/dldt_model_optimizer_test.py @@ -0,0 +1,23 @@ +import os + +class DldtModelOptimizerTest(object): + mo_input_files = {'model': 'squeezenet_v1.1.caffemodel', + 'prototxt': 'deploy.prototxt'} + mo_exe = 'mo.py' + + def __init__(self, target, work_dir): + self.target = target + self.work_dir = work_dir + + def setup(self): + self.target.run('mkdir -p %s' % self.work_dir) + + def tear_down(self): + self.target.run('rm -rf %s' % self.work_dir) + + def test_dldt_mo_can_create_ir(self, mo_exe_dir, mo_files_dir): + return self.target.run('python3 %s --input_model %s --input_proto %s --output_dir %s --data_type FP16' % + (os.path.join(mo_exe_dir, self.mo_exe), + os.path.join(mo_files_dir, self.mo_input_files['model']), + os.path.join(mo_files_dir, self.mo_input_files['prototxt']), + self.work_dir)) diff --git a/lib/oeqa/runtime/miutils/tests/mkl_dnn_test.py b/lib/oeqa/runtime/miutils/tests/mkl_dnn_test.py new file mode 100644 index 00000000..869a4cbe --- /dev/null +++ b/lib/oeqa/runtime/miutils/tests/mkl_dnn_test.py @@ -0,0 +1,55 @@ + +class MkldnnTest(object): + mkldnn_target_test_filename = 'mkl-dnn-c' + + def __init__(self, target): + self.target = target + + def tear_down(self): + self.target.run('rm /tmp/%s' % self.mkldnn_target_test_filename) + + def test_mkldnn_can_compile_and_execute(self): + mkldnn_src_dir = '/usr/src/debug/onednn/' + mkldnn_src_test_filename = 'api.c' + mkldnn_src_test_file = '' + + (__, output) = self.target.run('cd %s; find -name %s' % (mkldnn_src_dir, mkldnn_src_test_filename)) + if 'No such file or directory' in output: + return -1, output + + mkldnn_src_test_file = os.path.join(mkldnn_src_dir, output) + (status, output) = self.target.run('gcc %s -o /tmp/%s -ldnnl' % (mkldnn_src_test_file, self.mkldnn_target_test_filename)) + if status: + return status, output + + (status, output) = self.target.run('cd /tmp; ./%s' % self.mkldnn_target_test_filename) + return status, output + + def test_mkldnn_benchdnn_package_available(self): + (status, output) = self.target.run('ls /usr/bin/mkl-dnn/tests/benchdnn') + return status, output + + def _run_mkldnn_benchdnn_test(self, cmd): + (status, output) = self.target.run('cd /usr/bin/mkl-dnn/tests/benchdnn; %s' % cmd) + return status, output + + def test_mkldnn_conv_api(self): + return self._run_mkldnn_benchdnn_test('./benchdnn --conv --batch=inputs/conv/test_conv_3d') + + def test_mkldnn_bnorm_api(self): + return self._run_mkldnn_benchdnn_test('./benchdnn --bnorm --batch=inputs/bnorm/test_bnorm_regressions') + + def test_mkldnn_deconv_api(self): + return self._run_mkldnn_benchdnn_test('./benchdnn --deconv --batch=inputs/deconv/test_deconv_bfloat16') + + def test_mkldnn_ip_api(self): + return self._run_mkldnn_benchdnn_test('./benchdnn --ip --batch=inputs/ip/test_ip_bfloat16') + + def test_mkldnn_reorder_api(self): + return self._run_mkldnn_benchdnn_test('./benchdnn --reorder --batch=inputs/reorder/test_reorder_bfloat16') + + def test_mkldnn_rnn_api(self): + return self._run_mkldnn_benchdnn_test('./benchdnn --rnn --batch=inputs/rnn/test_rnn_all') + + def test_mkldnn_shuffle_api(self): + return self._run_mkldnn_benchdnn_test('./benchdnn --shuffle --batch=inputs/shuffle/test_shuffle_bfloat16')
\ No newline at end of file diff --git a/lib/oeqa/runtime/miutils/tests/squeezenet_model_download_test.py b/lib/oeqa/runtime/miutils/tests/squeezenet_model_download_test.py new file mode 100644 index 00000000..a3e46a0a --- /dev/null +++ b/lib/oeqa/runtime/miutils/tests/squeezenet_model_download_test.py @@ -0,0 +1,25 @@ +class SqueezenetModelDownloadTest(object): + download_files = {'squeezenet1.1.prototxt': 'https://raw.githubusercontent.com/DeepScale/SqueezeNet/a47b6f13d30985279789d08053d37013d67d131b/SqueezeNet_v1.1/deploy.prototxt', + 'squeezenet1.1.caffemodel': 'https://github.com/DeepScale/SqueezeNet/raw/a47b6f13d30985279789d08053d37013d67d131b/SqueezeNet_v1.1/squeezenet_v1.1.caffemodel'} + + def __init__(self, target, work_dir): + self.target = target + self.work_dir = work_dir + + def setup(self): + self.target.run('mkdir -p %s' % self.work_dir) + + def tear_down(self): + self.target.run('rm -rf %s' % self.work_dir) + + def test_can_download_squeezenet_model(self, proxy_port): + return self.target.run('cd %s; wget %s -e https_proxy=%s' % + (self.work_dir, + self.download_files['squeezenet1.1.caffemodel'], + proxy_port)) + + def test_can_download_squeezenet_prototxt(self, proxy_port): + return self.target.run('cd %s; wget %s -e https_proxy=%s' % + (self.work_dir, + self.download_files['squeezenet1.1.prototxt'], + proxy_port)) diff --git a/recipes-bsp/ace/ace_6.5.3.bb b/recipes-bsp/ace/ace_6.5.3.bb deleted file mode 100644 index 53ec3243..00000000 --- a/recipes-bsp/ace/ace_6.5.3.bb +++ /dev/null @@ -1,37 +0,0 @@ -DESCRIPTION = "C++ network programming framework that implements many core \ -patterns for concurrent communication software" -LICENSE = "ACE-TAO-CIAO" -LIC_FILES_CHKSUM = "file://COPYING;md5=407a202d1b887b998dc9480442840630" - -DEPENDS += "openssl gperf-native" - -SRC_URI = "ftp://download.dre.vanderbilt.edu/previous_versions/ACE-${PV}.tar.bz2 \ - file://ace_config.patch \ - " - -SRC_URI[md5sum] = "4cc5f109ebd17cd56f0539d1b47d16b3" -SRC_URI[sha256sum] = "b1d6a716394bd15c21bb90037b8a12a4d8034cc9d8878b0ad39b3c467df19b1a" - -COMPATIBLE_HOST_libc-musl = "null" - -S = "${WORKDIR}/ACE_wrappers" -B = "${WORKDIR}/ACE_wrappers/ace" -export ACE_ROOT="${WORKDIR}/ACE_wrappers" - -inherit pkgconfig - -CXXFLAGS_append = " -fpermissive -Wnodeprecated-declarations" - -do_install() { - export D="${D}" - oe_runmake install - - for i in $(find ${D} -name "*.pc") ; do - sed -i -e s:${D}::g \ - -e s:/${TARGET_SYS}::g \ - $i - done - - rm -r ${D}/usr/share -} - diff --git a/recipes-bsp/ace/files/ace_config.patch b/recipes-bsp/ace/files/ace_config.patch deleted file mode 100644 index 207b85ab..00000000 --- a/recipes-bsp/ace/files/ace_config.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ruN ACE_wrappers1/ace/config.h ACE_wrappers/ace/config.h ---- ACE_wrappers1/ace/config.h 1970-01-01 02:00:00.000000000 +0200 -+++ ACE_wrappers/ace/config.h 2019-01-10 13:36:52.698012477 +0200 -@@ -0,0 +1,1 @@ -+#include "ace/config-linux.h" -diff -ruN ACE_wrappers1/include/makeinclude/platform_macros.GNU ACE_wrappers/include/makeinclude/platform_macros.GNU ---- ACE_wrappers1/include/makeinclude/platform_macros.GNU 1970-01-01 02:00:00.000000000 +0200 -+++ ACE_wrappers/include/makeinclude/platform_macros.GNU 2018-10-31 15:11:18.265392460 +0200 -@@ -0,0 +1,3 @@ -+INSTALL_PREFIX = $(D)$(exec_prefix) -+INSTALL_LIB = $(base_libdir) -+include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU diff --git a/recipes-bsp/formfactor/formfactor_0.0.bbappend b/recipes-bsp/formfactor/formfactor_0.0.bbappend index 6dd422ae..d21c3bee 100644 --- a/recipes-bsp/formfactor/formfactor_0.0.bbappend +++ b/recipes-bsp/formfactor/formfactor_0.0.bbappend @@ -1 +1 @@ -FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:" +FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:" diff --git a/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf b/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf deleted file mode 100644 index 74d33c87..00000000 --- a/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf +++ /dev/null @@ -1,2 +0,0 @@ -# Mimic modprobe's install funcitonality with busybox's modprobe -install gma500_gfx dmesg | grep gma500_gfx_checked || { /etc/modprobe.d/gma500-gfx-check.sh || modprobe gma500_gfx; } diff --git a/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh b/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh deleted file mode 100644 index 75cda99f..00000000 --- a/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -# Check for devices we wish to avoid gma500_gfx for -DEVICES="0x8119 0x4108" - -# Checked flag to avoid infinite modprobe -echo "gma500_gfx_checked" >> /dev/kmsg; - -for DEVICE in $DEVICES; do - if udevadm trigger --subsystem-match=pci --verbose --attr-match=device=$DEVICE | grep "pci" >> /dev/null ; then - echo "Found $DEVICE, avoiding gma500_gfx module" >> /dev/kmsg; - exit 0 - fi -done -exit 1 diff --git a/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb b/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb deleted file mode 100644 index 7b08064b..00000000 --- a/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "Intel gma500_gfx fix for certain hardware" -DESCRIPTION = "Avoid inserting gma500_gfx module for certain hardware devices." -LICENSE="GPLv2" -LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" - -SRC_URI = "file://gma500-gfx-check.conf \ - file://gma500-gfx-check.sh " - -do_install(){ - install -d ${D}${sysconfdir}/modprobe.d/ - install -m 755 ${WORKDIR}/gma500-gfx-check.sh ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.sh - install -m 644 ${WORKDIR}/gma500-gfx-check.conf ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.conf -} - -FILES_${PN}="${sysconfdir}/modprobe.d/gma500-gfx-check.conf \ - ${sysconfdir}/modprobe.d/gma500-gfx-check.sh" - -COMPATIBLE_MACHINE = "intel-core2-32" 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 @@ +SUMMARY = "intel-cmt-cat" +DESCRIPTION = "Software package which provides basic support for Intel(R) \ +Resource Director Technology (Intel(R) RDT)" +HOMEPAGE = "https://github.com/intel/intel-cmt-cat" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4b63c65942e1c16fd897f8cd20abebf8" + +SRC_URI = "git://github.com/intel/intel-cmt-cat;protocol=https;branch=master" +SRCREV = "b26b31b0ae6980c5939a421cefe0316cae884626" + +S = "${WORKDIR}/git" + +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:libc-musl = "null" + +do_install() { + oe_runmake install PREFIX=${D}${prefix} NOLDCONFIG=y +} + +FILES:${PN} += "${nonarch_libdir}/libpqos*" +FILES:${PN}-doc = "/usr/man*" + +INSANE_SKIP:${PN} += "ldflags" +INSANE_SKIP:${PN} += "dev-so" +INSANE_SKIP:${PN} += "libdir" +INSANE_SKIP:${PN} += "already-stripped" + +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" diff --git a/recipes-bsp/metee/metee_2.1.0.bb b/recipes-bsp/metee/metee_3.2.4.bb index e477f57a..da8220b9 100644 --- a/recipes-bsp/metee/metee_2.1.0.bb +++ b/recipes-bsp/metee/metee_3.2.4.bb @@ -10,10 +10,9 @@ COMPATIBLE_HOST = '(i.86|x86_64).*-linux' inherit cmake -SRC_URI = "git://github.com/intel/metee.git" -SRCREV = "642eedfcacc677fc43181f0b7c16d8f90724a9cb" - -COMPATIBLE_HOST_libc-musl = "null" +SRC_URI = "git://github.com/intel/metee.git;branch=master;protocol=https \ +" +SRCREV = "db45e37e146fd9c06907a15ade55eba06ad1f951" S = "${WORKDIR}/git" diff --git a/recipes-bsp/systemd-boot/systemd-boot_%.bbappend b/recipes-bsp/systemd-boot/systemd-boot_%.bbappend deleted file mode 100644 index d2e1c16b..00000000 --- a/recipes-bsp/systemd-boot/systemd-boot_%.bbappend +++ /dev/null @@ -1,9 +0,0 @@ -PACKAGE_ARCH_intel-x86-common = "${INTEL_COMMON_PACKAGE_ARCH}" - -do_compile_append_intel-x86-common() { - ninja src/boot/efi/linux${SYSTEMD_BOOT_EFI_ARCH}.efi.stub -} - -do_deploy_append_intel-x86-common() { - install ${B}/src/boot/efi/linux*.efi.stub ${DEPLOYDIR} -} diff --git a/recipes-bsp/thermald/thermald/0001-Use-correct-format-specifier-for-size_t.patch b/recipes-bsp/thermald/thermald/0001-Use-correct-format-specifier-for-size_t.patch deleted file mode 100644 index 6897ffc1..00000000 --- a/recipes-bsp/thermald/thermald/0001-Use-correct-format-specifier-for-size_t.patch +++ /dev/null @@ -1,37 +0,0 @@ -From bb7631163c8f3f44d0dc83690765cdb799664fd5 Mon Sep 17 00:00:00 2001 -From: Anuj Mittal <anuj.mittal@intel.com> -Date: Wed, 26 Sep 2018 10:34:15 +0800 -Subject: [PATCH] Use correct format specifier for size_t - -%zu instead of %lu, otherwise on 32 bit: - -| ../git/src/thd_zone.cpp: In member function 'void cthd_zone::sort_and_update_poll_trip()': -| ../git/src/thd_zone.cpp:106:16: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'std::vector<cthd_trip_point>::size_type' {aka 'unsigned int'} [-Werror=format=] -| thd_log_debug("sort_and_update_poll_trip: trip_points_size =%lu\n", -| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -| trip_points.size()); - -Upstream-Status: Submitted -[https://github.com/intel/thermal_daemon/pull/165] - -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> ---- - src/thd_zone.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/thd_zone.cpp b/src/thd_zone.cpp -index b7edf9e..cb7b8e8 100644 ---- a/src/thd_zone.cpp -+++ b/src/thd_zone.cpp -@@ -103,7 +103,7 @@ int cthd_zone::read_user_set_psv_temp() { - } - - void cthd_zone::sort_and_update_poll_trip() { -- thd_log_debug("sort_and_update_poll_trip: trip_points_size =%lu\n", -+ thd_log_debug("sort_and_update_poll_trip: trip_points_size =%zu\n", - trip_points.size()); - if (trip_points.size()) { - unsigned int polling_trip = 0; --- -2.17.1 - diff --git a/recipes-core/images/core-image-minimal-initramfs.bbappend b/recipes-core/images/core-image-minimal-initramfs.bbappend index 132f15b5..90ac28fd 100644 --- a/recipes-core/images/core-image-minimal-initramfs.bbappend +++ b/recipes-core/images/core-image-minimal-initramfs.bbappend @@ -1,2 +1,2 @@ # Add i915 graphics firmware -PACKAGE_INSTALL_append_intel-x86-common = " linux-firmware-i915" +PACKAGE_INSTALL:append:intel-x86-common = " linux-firmware-i915" diff --git a/recipes-core/images/core-image-tiny.bb b/recipes-core/images/core-image-tiny.bb index 6b09b0c2..f521f668 100644 --- a/recipes-core/images/core-image-tiny.bb +++ b/recipes-core/images/core-image-tiny.bb @@ -32,5 +32,5 @@ python() { d.appendVarFlag('do_image', 'depends', ' %s:do_image_complete' % initrd_i) } -WKS_FILE_intel-corei7-64 = "core-image-tiny.wks.in" -WKS_FILE_intel-core2-32 = "core-image-tiny.wks.in" +WKS_FILE:intel-corei7-64 = "core-image-tiny.wks.in" +WKS_FILE:intel-core2-32 = "core-image-tiny.wks.in" diff --git a/recipes-core/libxcam/libxcam/0001-fake_v4l2_device.h-fix-narrowing-warning.patch b/recipes-core/libxcam/libxcam/0001-fake_v4l2_device.h-fix-narrowing-warning.patch new file mode 100644 index 00000000..f15d5cc7 --- /dev/null +++ b/recipes-core/libxcam/libxcam/0001-fake_v4l2_device.h-fix-narrowing-warning.patch @@ -0,0 +1,94 @@ +From d4c97b50b577ea16b9ff6d9a352ab474a119310e Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Wed, 18 May 2022 15:41:24 +0800 +Subject: [PATCH] fake_v4l2_device.h: fix narrowing warning + +Use uint32_t instead of int for IOCTLs commands. + +Warning log: +| ../../../git/xcore/fake_v4l2_device.h: In member function 'virtual int XCam::FakeV4l2Device::io_control(int, void*)': +| ../../../git/xcore/fake_v4l2_device.h:42:14: error: narrowing conversion of '3225441794' from 'long unsigned int' to 'int' [-Wnarrowing] +| 42 | case VIDIOC_ENUM_FMT: +| | ^~~~~~~~~~~~~~~ +| make[4]: *** [Makefile:685: libgstxcamsrc_la-gstxcamsrc.lo] Error 1 + +Issue: https://github.com/intel/libxcam/issues/801 +Upstream-Status: Submitted [https://github.com/intel/libxcam/pull/802] + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + xcore/base/xcam_common.h | 2 +- + xcore/fake_v4l2_device.h | 2 +- + xcore/v4l2_device.cpp | 2 +- + xcore/v4l2_device.h | 2 +- + xcore/xcam_common.cpp | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/xcore/base/xcam_common.h b/xcore/base/xcam_common.h +index 1f16e1e..4aa6cb9 100644 +--- a/xcore/base/xcam_common.h ++++ b/xcore/base/xcam_common.h +@@ -75,7 +75,7 @@ void xcam_free (void *ptr); + * return, 0 successfully + * else, check errno + */ +-int xcam_device_ioctl (int fd, int cmd, void *arg); ++int xcam_device_ioctl (int fd, uint32_t cmd, void *arg); + const char *xcam_fourcc_to_string (uint32_t fourcc); + + void xcam_set_log (const char* file_name); +diff --git a/xcore/fake_v4l2_device.h b/xcore/fake_v4l2_device.h +index f679c19..e29787d 100644 +--- a/xcore/fake_v4l2_device.h ++++ b/xcore/fake_v4l2_device.h +@@ -33,7 +33,7 @@ public: + : V4l2Device ("/dev/null") + {} + +- int io_control (int cmd, void *arg) ++ int io_control (uint32_t cmd, void *arg) + { + XCAM_UNUSED (arg); + +diff --git a/xcore/v4l2_device.cpp b/xcore/v4l2_device.cpp +index 395461e..66a8ac6 100644 +--- a/xcore/v4l2_device.cpp ++++ b/xcore/v4l2_device.cpp +@@ -185,7 +185,7 @@ V4l2Device::close () + } + + int +-V4l2Device::io_control (int cmd, void *arg) ++V4l2Device::io_control (uint32_t cmd, void *arg) + + { + if (_fd <= 0) +diff --git a/xcore/v4l2_device.h b/xcore/v4l2_device.h +index b4ad7ad..2551a92 100644 +--- a/xcore/v4l2_device.h ++++ b/xcore/v4l2_device.h +@@ -104,7 +104,7 @@ public: + XCamReturn queue_buffer (SmartPtr<V4l2Buffer> &buf); + + // use as less as possible +- virtual int io_control (int cmd, void *arg); ++ virtual int io_control (uint32_t cmd, void *arg); + + protected: + +diff --git a/xcore/xcam_common.cpp b/xcore/xcam_common.cpp +index 848884d..d4d5093 100644 +--- a/xcore/xcam_common.cpp ++++ b/xcore/xcam_common.cpp +@@ -53,7 +53,7 @@ void xcam_free(void *ptr) + free (ptr); + } + +-int xcam_device_ioctl (int fd, int cmd, void *arg) ++int xcam_device_ioctl (int fd, uint32_t cmd, void *arg) + { + int ret = 0; + int tried_time = 0; +-- +2.25.1 + diff --git a/recipes-core/libxcam/libxcam_1.5.0.bb b/recipes-core/libxcam/libxcam_1.5.0.bb new file mode 100644 index 00000000..31e9344b --- /dev/null +++ b/recipes-core/libxcam/libxcam_1.5.0.bb @@ -0,0 +1,39 @@ +SUMMARY = "libXCam is a project for extended camera(not limited in camera) \ +features and focus on image quality improvement and video analysis" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8c911f084a3e5f46b21582a6cc9973e6" +SECTION = "lib" + +inherit autotools pkgconfig + +S = "${WORKDIR}/git" +SRCREV = "231a1d5243cd45c7a6b511b667f1ec52178fdda8" +SRC_URI = "git://github.com/intel/libxcam.git;branch=1.5.0;protocol=https \ + file://0001-fake_v4l2_device.h-fix-narrowing-warning.patch \ +" + +COMPATIBLE_HOST:libc-musl = "null" + +PACKAGECONFIG ??= " gst \ + ${@bb.utils.contains("DISTRO_FEATURES", "opengl", "gles", "", d)} \ + ${@bb.utils.contains("DISTRO_FEATURES", "vulkan", "vulkan", "", d)} \ + " + +PACKAGECONFIG[gst] = "--enable-gst, --disable-gst, gstreamer1.0 gstreamer1.0-plugins-base" +PACKAGECONFIG[aiq] = "--enable-aiq, --disable-aiq," +PACKAGECONFIG[libcl] = "--enable-libcl, --disable-libcl," +PACKAGECONFIG[opencv] = "--enable-opencv, --disable-opencv, opencv" +PACKAGECONFIG[render] = "--enable-render, --disable-render," +PACKAGECONFIG[gles] = "--enable-gles, --disable-gles, virtual/mesa" +PACKAGECONFIG[vulkan] = "--enable-vulkan, --disable-vulkan, vulkan-loader virtual/mesa" +PACKAGECONFIG[dnn] = "--enable-dnn, --disable-dnn," + +do_install:append () { + install -d ${D}${bindir}/libxcam + cp -r ${WORKDIR}/build/tests/.libs/* ${D}${bindir}/libxcam/ +} + +FILES:${PN} += "${libdir}/gstreamer-*/*.so" +FILES:${PN}-test = "${bindir}/libxcam/*" +PACKAGES =+ "${PN}-test" +RDEPENDS:${PN}-test =+ "bash" 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 @@ +export ICX_LDFLAGS_OPTION = " -Wl,-dynamic-linker,/lib/ld-linux-x86-64.so.2" +export ICXSDK_PREFIX_OPTION = "-B ${TARGET_PREFIX}" +export ICXQSDK_PREFIX_OPTION = "-qgnu-prefix=${TARGET_PREFIX}" + +create_sdk_files:append() { + script=${SDK_OUTPUT}/${SDKPATH}/environment-setup-${REAL_MULTIMACH_TARGET_SYS} + if ${@bb.utils.contains('ICXSDK', '1', 'true', 'false', d)}; then + echo 'export ICX="icx ${ICXSDK_PREFIX_OPTION} --target=${TARGET_SYS} ${TARGET_CC_ARCH} --sysroot=$SDKTARGETSYSROOT ${ICX_LDFLAGS_OPTION}"' >> $script + echo 'export ICXCXX="icpx ${ICXSDK_PREFIX_OPTION} --target=${TARGET_SYS} ${TARGET_CC_ARCH} --sysroot=$SDKTARGETSYSROOT ${ICX_LDFLAGS_OPTION}"' >> $script + echo 'export ICXCPP="icx ${ICXSDK_PREFIX_OPTION} -E --target=${TARGET_SYS} ${TARGET_CC_ARCH} --sysroot=$SDKTARGETSYSROOT ${ICX_LDFLAGS_OPTION}"' >> $script + echo 'export ICXLD="xild --sysroot=$SDKTARGETSYSROOT "' >> $script + echo 'export ICXCCLD="icx ${ICXSDK_PREFIX_OPTION} --sysroot=$SDKTARGETSYSROOT"' >> $script + echo 'export ICXAR="xiar ${ICXQSDK_PREFIX_OPTION}"' >> $script + fi +} 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 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +require ${@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 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +require ${@bb.utils.contains('ICXSDK', '1', 'icx-environment.inc', '', d)} diff --git a/recipes-core/microcode/intel-microcode_20190618.bb b/recipes-core/microcode/intel-microcode_20240312.bb index 6bbead6c..00b18231 100644 --- a/recipes-core/microcode/intel-microcode_20190618.bb +++ b/recipes-core/microcode/intel-microcode_20240312.bb @@ -11,12 +11,12 @@ DESCRIPTION = "The microcode data file contains the latest microcode\ if the file is placed in the /etc/firmware directory of the Linux system." LICENSE = "Intel-Microcode-License" -LIC_FILES_CHKSUM = "file://license;md5=99b296eb12723fd1eeb52e24971eed84" +LIC_FILES_CHKSUM = "file://license;md5=d8405101ec6e90c1d84b082b0c40c721" -SRC_URI = "git://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git;protocol=https \ +SRC_URI = "git://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git;protocol=https;branch=main \ " -SRCREV = "940d904b7272edd689a5f0eef9dee09c13746748" +SRCREV = "41af34500598418150aa298bb04e7edacc547897" DEPENDS = "iucode-tool-native" S = "${WORKDIR}/git" @@ -34,12 +34,6 @@ do_compile() { ${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \ ${UCODE_FILTER_PARAMETERS} \ --overwrite \ - --write-to=${WORKDIR}/microcode_${PV}.bin \ - ${S}/intel-ucode/* ${S}/intel-ucode-with-caveats/* - - ${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \ - ${UCODE_FILTER_PARAMETERS} \ - --overwrite \ --write-earlyfw=${WORKDIR}/microcode_${PV}.cpio \ ${S}/intel-ucode/* ${S}/intel-ucode-with-caveats/* } @@ -47,6 +41,7 @@ do_compile() { do_install() { install -d ${D}${nonarch_base_libdir}/firmware/intel-ucode/ ${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \ + ${UCODE_FILTER_PARAMETERS} \ --write-firmware=${D}${nonarch_base_libdir}/firmware/intel-ucode \ ${S}/intel-ucode/* ${S}/intel-ucode-with-caveats/* } @@ -63,6 +58,6 @@ addtask deploy before do_build after do_compile PACKAGES = "${PN}" -FILES_${PN} = "${nonarch_base_libdir}" +FILES:${PN} = "${nonarch_base_libdir}" UPSTREAM_CHECK_GITTAGREGEX = "^microcode-(?P<pver>(\d+)[a-z]*)$" diff --git a/recipes-core/microcode/iucode-tool_2.3.1.bb b/recipes-core/microcode/iucode-tool_2.3.1.bb index df74a8e9..19417b7c 100644 --- a/recipes-core/microcode/iucode-tool_2.3.1.bb +++ b/recipes-core/microcode/iucode-tool_2.3.1.bb @@ -12,14 +12,14 @@ DESCRIPTION = "iucode_tool is a program to manipulate Intel i686 and X86-64\ HOMEPAGE = "https://gitlab.com/iucode-tool/" BUGTRACKER = "https://bugs.debian.org/cgi-bin/pkgreport.cgi?ordering=normal;archive=0;src=iucode-tool;repeatmerged=0" -LICENSE = "GPLv2+" +LICENSE = "GPL-2.0-or-later" LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \ file://iucode_tool.c;beginline=1;endline=15;md5=71eeab3190360ff0267101b570874756" -DEPENDS_append_libc-musl = " argp-standalone" +DEPENDS:append:libc-musl = " argp-standalone" SRC_URI = "https://gitlab.com/iucode-tool/releases/raw/master/iucode-tool_${PV}.tar.xz" -SRC_URI_append_libc-musl = " file://0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch" +SRC_URI:append:libc-musl = " file://0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch" SRC_URI[md5sum] = "63b33cc0ea1f8c73b443412abbf39d6f" SRC_URI[sha256sum] = "12b88efa4d0d95af08db05a50b3dcb217c0eb2bfc67b483779e33d498ddb2f95" diff --git a/recipes-core/mkl-dnn/mkl-dnn_git.bb b/recipes-core/mkl-dnn/mkl-dnn_git.bb deleted file mode 100644 index 5846b310..00000000 --- a/recipes-core/mkl-dnn/mkl-dnn_git.bb +++ /dev/null @@ -1,49 +0,0 @@ -SUMMARY = "Intel Math Kernel Library for Deep Neural Networks" -DESCRIPTION = "This software is a user mode library that accelerates\ -deep-learning applications and frameworks on Intel architecture." -LICENSE = "Apache-2.0 & BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=afa44a3d001cc203032135324f9636b7 \ - file://tests/gtests/gtest/LICENSE;md5=cbbd27594afd089daa160d3a16dd515a \ - file://src/cpu/xbyak/COPYRIGHT;md5=03532861dad9003cc2c17f14fc7a4efa" -SECTION = "lib" - -inherit pkgconfig cmake ptest - -S = "${WORKDIR}/git" -SRCREV = "027de7603662a569366e15132ac80298902b96b8" -SRC_URI = "git://github.com/intel/mkl-dnn.git;branch=rls-v0.19 \ - file://run-ptest \ -" -PV = "0.19+git${SRCPV}" - -UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$" - -COMPATIBLE_HOST = '(x86_64).*-linux' -COMPATIBLE_HOST_libc-musl = 'null' - -EXTRA_OECMAKE += "-DMKLDNN_LIBRARY_TYPE=SHARED" -EXTRA_OECMAKE += "-DMKLDNN_THREADING=OMP" -EXTRA_OECMAKE += "-DWITH_EXAMPLE=ON" -EXTRA_OECMAKE += "-DWITH_TEST=ON" -EXTRA_OECMAKE += "-DARCH_OPT_FLAGS=''" -EXTRA_OECMAKE += "-DCMAKE_SKIP_RPATH=ON" - -do_install_append () { - install -d ${D}${bindir}/mkl-dnn - install -d ${D}${bindir}/mkl-dnn/tests - install -d ${D}${bindir}/mkl-dnn/tests/benchdnn - install -d ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs - install -m 0755 ${B}/tests/benchdnn/benchdnn ${D}${bindir}/mkl-dnn/tests/benchdnn - cp -r ${B}/tests/benchdnn/inputs/* ${D}${bindir}/mkl-dnn/tests/benchdnn/inputs -} - - -do_install_ptest () { - install -d ${D}${PTEST_PATH}/tests - install -m 0755 ${B}/tests/api-c ${D}${PTEST_PATH}/tests - install -m 0755 ${B}/tests/test_c_symbols-c ${D}${PTEST_PATH}/tests -} - -PACKAGES =+ "${PN}-test" - -FILES_${PN}-test = "${bindir}/mkl-dnn/*" 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 62db0633..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 @@ -1,6 +1,6 @@ -From 48e511481d83c1614cd00a5a2edcf6b5d746b9c4 Mon Sep 17 00:00:00 2001 +From b2099e7184d48a6d05c8713b6fd5dac0e2e70963 Mon Sep 17 00:00:00 2001 From: Mikko Ylinen <mikko.ylinen@linux.intel.com> -Date: Fri, 7 Apr 2017 12:06:14 +0300 +Date: Wed, 2 Mar 2022 10:55:35 +0800 Subject: [PATCH] ovmf: RefkitTestCA: TEST UEFI SecureBoot This patch adds refkit-db.cer (via xxd -i) in OVMF's db @@ -9,97 +9,121 @@ application. It's used for testing purposes only. Images signed with refkit-db keys are allowed to boot. +Upstream-Status: Inappropriate + Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com> +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> --- - OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c | 68 +++++++++++++++++++++++++++ - 1 file changed, 68 insertions(+) + OvmfPkg/EnrollDefaultKeys/AuthData.c | 69 +++++++++++++++++++ + OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c | 3 + + OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.h | 2 + + 3 files changed, 74 insertions(+) +diff --git a/OvmfPkg/EnrollDefaultKeys/AuthData.c b/OvmfPkg/EnrollDefaultKeys/AuthData.c +index 53ee7f7003..127131cd05 100644 +--- a/OvmfPkg/EnrollDefaultKeys/AuthData.c ++++ b/OvmfPkg/EnrollDefaultKeys/AuthData.c +@@ -395,6 +395,75 @@ CONST UINT8 mMicrosoftUefiCa[] = { +
+ CONST UINTN mSizeOfMicrosoftUefiCa = sizeof mMicrosoftUefiCa;
+
++CONST UINT8 mRefkitTestCA[] = {
++ 0x30, 0x82, 0x02, 0xfb, 0x30, 0x82, 0x01, 0xe3, 0xa0, 0x03, 0x02, 0x01,
++ 0x02, 0x02, 0x09, 0x00, 0xd4, 0xf6, 0x48, 0xc2, 0x68, 0x19, 0x91, 0xac,
++ 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
++ 0x0b, 0x05, 0x00, 0x30, 0x14, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,
++ 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65, 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64,
++ 0x62, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x34, 0x32, 0x30, 0x31,
++ 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x34,
++ 0x32, 0x30, 0x31, 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x30, 0x14, 0x31,
++ 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65,
++ 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64, 0x62, 0x30, 0x82, 0x01, 0x22, 0x30,
++ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
++ 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
++ 0x82, 0x01, 0x01, 0x00, 0xb4, 0x1c, 0x22, 0xa6, 0x22, 0x01, 0x57, 0xcd,
++ 0xf1, 0x4f, 0xaf, 0x72, 0xe3, 0xd9, 0x01, 0x80, 0x50, 0x55, 0xef, 0x02,
++ 0x5e, 0xeb, 0x99, 0x35, 0xcb, 0x7f, 0x2a, 0x79, 0xff, 0xb5, 0x3e, 0xec,
++ 0x5d, 0x92, 0x06, 0x30, 0x20, 0xe7, 0x95, 0xad, 0xa4, 0x84, 0x2e, 0x3f,
++ 0xfa, 0xd7, 0x46, 0xdd, 0x49, 0xa8, 0xe8, 0xe3, 0x79, 0x49, 0xf6, 0x8f,
++ 0x0b, 0x1d, 0xfe, 0x63, 0xa8, 0xd1, 0x63, 0xa3, 0xd6, 0x0d, 0x4e, 0x6c,
++ 0x66, 0x5c, 0xd6, 0x66, 0x26, 0xd1, 0x26, 0x98, 0xd4, 0x4f, 0x76, 0xc9,
++ 0x65, 0x48, 0x58, 0x13, 0x08, 0x31, 0xbc, 0xe5, 0x47, 0x25, 0x65, 0x95,
++ 0x39, 0x89, 0x5f, 0x02, 0xf1, 0xc5, 0x06, 0x17, 0x58, 0xca, 0x09, 0xfd,
++ 0xf6, 0x1e, 0xc5, 0x97, 0xda, 0xa3, 0x4e, 0x1a, 0x48, 0xbe, 0xcf, 0x96,
++ 0x27, 0x04, 0x4b, 0xb7, 0x6d, 0x67, 0xb6, 0x50, 0x18, 0x04, 0x73, 0x51,
++ 0xd2, 0x6a, 0x2d, 0xdf, 0x3b, 0xab, 0xf2, 0x2d, 0x95, 0xd7, 0xa8, 0xb8,
++ 0xa8, 0x30, 0xa1, 0xab, 0x8b, 0x92, 0x2b, 0x60, 0x3e, 0x3a, 0xe5, 0x86,
++ 0x40, 0x71, 0xc1, 0x3f, 0x2d, 0x2e, 0x90, 0xe7, 0xd6, 0xec, 0xcc, 0xc2,
++ 0x0b, 0x79, 0x83, 0x71, 0x6d, 0xf6, 0xa3, 0xa9, 0x4c, 0xcd, 0x46, 0x81,
++ 0xdc, 0xef, 0xec, 0x51, 0xbe, 0x81, 0x2a, 0xf1, 0x78, 0x73, 0x41, 0xdb,
++ 0x54, 0xce, 0x7c, 0xce, 0xa2, 0xe3, 0x90, 0x4f, 0x45, 0x1a, 0xf9, 0x3d,
++ 0x88, 0xfc, 0x0e, 0xed, 0xd3, 0x69, 0x22, 0x4c, 0xfa, 0x0a, 0x69, 0xd1,
++ 0x48, 0xc0, 0xaa, 0xa9, 0x3a, 0xb3, 0x8f, 0x10, 0x3a, 0x76, 0xa8, 0x0c,
++ 0x7a, 0x3d, 0xd8, 0x79, 0xce, 0x1c, 0x96, 0x62, 0xf4, 0x06, 0xee, 0x47,
++ 0xe8, 0xe0, 0x69, 0x91, 0xae, 0xea, 0x34, 0xcf, 0xda, 0xa8, 0xb4, 0x39,
++ 0x5e, 0xf3, 0x7a, 0xd0, 0x88, 0x48, 0x47, 0x69, 0x02, 0x03, 0x01, 0x00,
++ 0x01, 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
++ 0x04, 0x16, 0x04, 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b,
++ 0x1a, 0x9f, 0x46, 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd,
++ 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
++ 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b, 0x1a, 0x9f, 0x46,
++ 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd, 0x30, 0x0c, 0x06,
++ 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
++ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
++ 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x8f, 0xd2, 0x84, 0x7c, 0x43,
++ 0x47, 0xca, 0x6b, 0xfd, 0x87, 0x83, 0xd0, 0xef, 0x75, 0xd3, 0x20, 0x52,
++ 0x73, 0x18, 0xaa, 0x32, 0x71, 0xfb, 0xa5, 0xf4, 0xc9, 0x11, 0xa3, 0x68,
++ 0x4d, 0xb7, 0x9d, 0xe6, 0xd9, 0x46, 0x24, 0xdc, 0xc7, 0xc2, 0x3b, 0xf9,
++ 0xb0, 0x98, 0xfc, 0xee, 0x34, 0x6e, 0x10, 0x9b, 0x3d, 0x44, 0x6e, 0x33,
++ 0x09, 0x11, 0xb8, 0x29, 0xd6, 0x2d, 0x06, 0xcf, 0x67, 0x8f, 0x96, 0x85,
++ 0x9d, 0x63, 0x72, 0xbf, 0x64, 0x5f, 0x0d, 0xe3, 0xc9, 0x63, 0x19, 0x71,
++ 0xd4, 0x7d, 0x4c, 0x9c, 0x77, 0x46, 0xda, 0x20, 0x97, 0x6d, 0xbc, 0xdd,
++ 0xc2, 0x1f, 0xf3, 0x40, 0x38, 0x1e, 0xe7, 0xcc, 0x55, 0x05, 0x72, 0xba,
++ 0x24, 0x4f, 0xb3, 0x8a, 0x93, 0x0c, 0x30, 0x60, 0xda, 0x9f, 0x6f, 0x35,
++ 0xf6, 0xfb, 0xb0, 0x1f, 0xb3, 0x00, 0xdd, 0xc4, 0xa6, 0xbc, 0xe2, 0x37,
++ 0xc1, 0xa3, 0xef, 0xd9, 0xa1, 0x86, 0xf9, 0xeb, 0xa4, 0xa5, 0x45, 0x38,
++ 0xff, 0x4e, 0x87, 0x4a, 0x41, 0xcf, 0x6e, 0x69, 0x7e, 0x97, 0xbe, 0x2d,
++ 0x22, 0xbc, 0x8d, 0xa0, 0x1a, 0x21, 0x8f, 0x4b, 0x72, 0x90, 0x01, 0x5c,
++ 0xba, 0xa5, 0x9c, 0x2d, 0xd7, 0x25, 0x24, 0xfc, 0xff, 0x5c, 0x58, 0x14,
++ 0x46, 0x30, 0x09, 0x7c, 0x55, 0x64, 0x83, 0x0b, 0xb9, 0xdf, 0xcf, 0x25,
++ 0xee, 0xec, 0xf7, 0xcb, 0xdb, 0xd1, 0x5b, 0x93, 0x93, 0xc8, 0x8a, 0x10,
++ 0x46, 0xb8, 0xb0, 0x35, 0x1c, 0x6c, 0x0d, 0x8f, 0x03, 0x6a, 0x8f, 0x1b,
++ 0x36, 0x68, 0xf3, 0x53, 0x89, 0x36, 0x5b, 0x21, 0x80, 0xde, 0xe3, 0x92,
++ 0x52, 0x94, 0x97, 0x9d, 0x49, 0x89, 0x7d, 0x3e, 0xde, 0x29, 0x51, 0xba,
++ 0x11, 0xf7, 0xba, 0x01, 0xf7, 0xab, 0xea, 0xc1, 0xa7, 0x2e, 0xa3, 0x4d,
++ 0x65, 0xfd, 0x40, 0x71, 0xf1, 0xe2, 0x3f, 0x6c, 0x28, 0xcb, 0xd3
++};
++
++CONST UINTN mSizeOfRefkitTestCA = sizeof mRefkitTestCA;
++
+ //
+ // The Microsoft.UefiSecureBootLogo.Tests.OutOfBoxConfirmDBXisPresent test case
+ // of the Secure Boot Logo Test in the Microsoft Hardware Certification Kit
diff --git a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c -index 24ab977..a3c12ba 100644 +index 094e4c821b..0a7eef54dc 100644 --- a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c +++ b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c -@@ -516,6 +516,73 @@ STATIC CONST UINT8 MicrosoftUefiCA[] = { - 0x07, 0x92, 0x9b, 0xf5, 0xa6, 0xbc, 0x59, 0x83, 0x58 - }; - -+STATIC CONST UINT8 RefkitTestCA[] = { -+ 0x30, 0x82, 0x02, 0xfb, 0x30, 0x82, 0x01, 0xe3, 0xa0, 0x03, 0x02, 0x01, -+ 0x02, 0x02, 0x09, 0x00, 0xd4, 0xf6, 0x48, 0xc2, 0x68, 0x19, 0x91, 0xac, -+ 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, -+ 0x0b, 0x05, 0x00, 0x30, 0x14, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, -+ 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65, 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64, -+ 0x62, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x34, 0x32, 0x30, 0x31, -+ 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x34, -+ 0x32, 0x30, 0x31, 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x30, 0x14, 0x31, -+ 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65, -+ 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64, 0x62, 0x30, 0x82, 0x01, 0x22, 0x30, -+ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, -+ 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, -+ 0x82, 0x01, 0x01, 0x00, 0xb4, 0x1c, 0x22, 0xa6, 0x22, 0x01, 0x57, 0xcd, -+ 0xf1, 0x4f, 0xaf, 0x72, 0xe3, 0xd9, 0x01, 0x80, 0x50, 0x55, 0xef, 0x02, -+ 0x5e, 0xeb, 0x99, 0x35, 0xcb, 0x7f, 0x2a, 0x79, 0xff, 0xb5, 0x3e, 0xec, -+ 0x5d, 0x92, 0x06, 0x30, 0x20, 0xe7, 0x95, 0xad, 0xa4, 0x84, 0x2e, 0x3f, -+ 0xfa, 0xd7, 0x46, 0xdd, 0x49, 0xa8, 0xe8, 0xe3, 0x79, 0x49, 0xf6, 0x8f, -+ 0x0b, 0x1d, 0xfe, 0x63, 0xa8, 0xd1, 0x63, 0xa3, 0xd6, 0x0d, 0x4e, 0x6c, -+ 0x66, 0x5c, 0xd6, 0x66, 0x26, 0xd1, 0x26, 0x98, 0xd4, 0x4f, 0x76, 0xc9, -+ 0x65, 0x48, 0x58, 0x13, 0x08, 0x31, 0xbc, 0xe5, 0x47, 0x25, 0x65, 0x95, -+ 0x39, 0x89, 0x5f, 0x02, 0xf1, 0xc5, 0x06, 0x17, 0x58, 0xca, 0x09, 0xfd, -+ 0xf6, 0x1e, 0xc5, 0x97, 0xda, 0xa3, 0x4e, 0x1a, 0x48, 0xbe, 0xcf, 0x96, -+ 0x27, 0x04, 0x4b, 0xb7, 0x6d, 0x67, 0xb6, 0x50, 0x18, 0x04, 0x73, 0x51, -+ 0xd2, 0x6a, 0x2d, 0xdf, 0x3b, 0xab, 0xf2, 0x2d, 0x95, 0xd7, 0xa8, 0xb8, -+ 0xa8, 0x30, 0xa1, 0xab, 0x8b, 0x92, 0x2b, 0x60, 0x3e, 0x3a, 0xe5, 0x86, -+ 0x40, 0x71, 0xc1, 0x3f, 0x2d, 0x2e, 0x90, 0xe7, 0xd6, 0xec, 0xcc, 0xc2, -+ 0x0b, 0x79, 0x83, 0x71, 0x6d, 0xf6, 0xa3, 0xa9, 0x4c, 0xcd, 0x46, 0x81, -+ 0xdc, 0xef, 0xec, 0x51, 0xbe, 0x81, 0x2a, 0xf1, 0x78, 0x73, 0x41, 0xdb, -+ 0x54, 0xce, 0x7c, 0xce, 0xa2, 0xe3, 0x90, 0x4f, 0x45, 0x1a, 0xf9, 0x3d, -+ 0x88, 0xfc, 0x0e, 0xed, 0xd3, 0x69, 0x22, 0x4c, 0xfa, 0x0a, 0x69, 0xd1, -+ 0x48, 0xc0, 0xaa, 0xa9, 0x3a, 0xb3, 0x8f, 0x10, 0x3a, 0x76, 0xa8, 0x0c, -+ 0x7a, 0x3d, 0xd8, 0x79, 0xce, 0x1c, 0x96, 0x62, 0xf4, 0x06, 0xee, 0x47, -+ 0xe8, 0xe0, 0x69, 0x91, 0xae, 0xea, 0x34, 0xcf, 0xda, 0xa8, 0xb4, 0x39, -+ 0x5e, 0xf3, 0x7a, 0xd0, 0x88, 0x48, 0x47, 0x69, 0x02, 0x03, 0x01, 0x00, -+ 0x01, 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, -+ 0x04, 0x16, 0x04, 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b, -+ 0x1a, 0x9f, 0x46, 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd, -+ 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, -+ 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b, 0x1a, 0x9f, 0x46, -+ 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd, 0x30, 0x0c, 0x06, -+ 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, -+ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, -+ 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x8f, 0xd2, 0x84, 0x7c, 0x43, -+ 0x47, 0xca, 0x6b, 0xfd, 0x87, 0x83, 0xd0, 0xef, 0x75, 0xd3, 0x20, 0x52, -+ 0x73, 0x18, 0xaa, 0x32, 0x71, 0xfb, 0xa5, 0xf4, 0xc9, 0x11, 0xa3, 0x68, -+ 0x4d, 0xb7, 0x9d, 0xe6, 0xd9, 0x46, 0x24, 0xdc, 0xc7, 0xc2, 0x3b, 0xf9, -+ 0xb0, 0x98, 0xfc, 0xee, 0x34, 0x6e, 0x10, 0x9b, 0x3d, 0x44, 0x6e, 0x33, -+ 0x09, 0x11, 0xb8, 0x29, 0xd6, 0x2d, 0x06, 0xcf, 0x67, 0x8f, 0x96, 0x85, -+ 0x9d, 0x63, 0x72, 0xbf, 0x64, 0x5f, 0x0d, 0xe3, 0xc9, 0x63, 0x19, 0x71, -+ 0xd4, 0x7d, 0x4c, 0x9c, 0x77, 0x46, 0xda, 0x20, 0x97, 0x6d, 0xbc, 0xdd, -+ 0xc2, 0x1f, 0xf3, 0x40, 0x38, 0x1e, 0xe7, 0xcc, 0x55, 0x05, 0x72, 0xba, -+ 0x24, 0x4f, 0xb3, 0x8a, 0x93, 0x0c, 0x30, 0x60, 0xda, 0x9f, 0x6f, 0x35, -+ 0xf6, 0xfb, 0xb0, 0x1f, 0xb3, 0x00, 0xdd, 0xc4, 0xa6, 0xbc, 0xe2, 0x37, -+ 0xc1, 0xa3, 0xef, 0xd9, 0xa1, 0x86, 0xf9, 0xeb, 0xa4, 0xa5, 0x45, 0x38, -+ 0xff, 0x4e, 0x87, 0x4a, 0x41, 0xcf, 0x6e, 0x69, 0x7e, 0x97, 0xbe, 0x2d, -+ 0x22, 0xbc, 0x8d, 0xa0, 0x1a, 0x21, 0x8f, 0x4b, 0x72, 0x90, 0x01, 0x5c, -+ 0xba, 0xa5, 0x9c, 0x2d, 0xd7, 0x25, 0x24, 0xfc, 0xff, 0x5c, 0x58, 0x14, -+ 0x46, 0x30, 0x09, 0x7c, 0x55, 0x64, 0x83, 0x0b, 0xb9, 0xdf, 0xcf, 0x25, -+ 0xee, 0xec, 0xf7, 0xcb, 0xdb, 0xd1, 0x5b, 0x93, 0x93, 0xc8, 0x8a, 0x10, -+ 0x46, 0xb8, 0xb0, 0x35, 0x1c, 0x6c, 0x0d, 0x8f, 0x03, 0x6a, 0x8f, 0x1b, -+ 0x36, 0x68, 0xf3, 0x53, 0x89, 0x36, 0x5b, 0x21, 0x80, 0xde, 0xe3, 0x92, -+ 0x52, 0x94, 0x97, 0x9d, 0x49, 0x89, 0x7d, 0x3e, 0xde, 0x29, 0x51, 0xba, -+ 0x11, 0xf7, 0xba, 0x01, 0xf7, 0xab, 0xea, 0xc1, 0xa7, 0x2e, 0xa3, 0x4d, -+ 0x65, 0xfd, 0x40, 0x71, 0xf1, 0xe2, 0x3f, 0x6c, 0x28, 0xcb, 0xd3 -+}; -+ - // - // The most important thing about the variable payload is that it is a list of - // lists, where the element size of any given *inner* list is constant. -@@ -908,6 +975,7 @@ ShellAppMain ( - &gEfiImageSecurityDatabaseGuid, - MicrosoftPCA, sizeof MicrosoftPCA, &gEfiCallerIdGuid, - MicrosoftUefiCA, sizeof MicrosoftUefiCA, &gEfiCallerIdGuid, -+ RefkitTestCA, sizeof RefkitTestCA, &gEfiCallerIdGuid, - NULL); - if (EFI_ERROR (Status)) { - return 1; +@@ -702,6 +702,9 @@ ShellAppMain ( + mMicrosoftUefiCa,
+ mSizeOfMicrosoftUefiCa,
+ &gMicrosoftVendorGuid,
++ mRefkitTestCA,
++ mSizeOfRefkitTestCA,
++ &gEfiCallerIdGuid,
+ NULL
+ );
+ }
+diff --git a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.h b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.h +index 56da9c71d6..8de1dfe4e0 100644 +--- a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.h ++++ b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.h +@@ -133,4 +133,6 @@ extern CONST UINTN mSizeOfMicrosoftUefiCa; + extern CONST UINT8 mSha256OfDevNull[];
+ extern CONST UINTN mSizeOfSha256OfDevNull;
+
++extern CONST UINT8 mRefkitTestCA[];
++extern CONST UINTN mSizeOfRefkitTestCA;
+ #endif /* ENROLL_DEFAULT_KEYS_H_ */
-- -2.1.4 +2.17.1 diff --git a/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb b/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb index b20f6e58..ca3cfc15 100644 --- a/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb +++ b/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb @@ -1,10 +1,10 @@ require recipes-core/ovmf/ovmf-shell-image.bb -WKS_SEARCH_PATH_append = ":${COREBASE}/meta/recipes-core/ovmf" +WKS_SEARCH_PATH:append = ":${COREBASE}/meta/recipes-core/ovmf" QB_DRIVE_TYPE = "/dev/vd" -do_image_append() { +do_image:append() { cat > ${IMAGE_ROOTFS}/startup.nsh << EOF EnrollDefaultKeys reset diff --git a/recipes-core/ovmf/ovmf_%.bbappend b/recipes-core/ovmf/ovmf_%.bbappend index bbf5fa32..34a9dd1b 100644 --- a/recipes-core/ovmf/ovmf_%.bbappend +++ b/recipes-core/ovmf/ovmf_%.bbappend @@ -1,6 +1,6 @@ -FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/files:" +FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/files:" -SRC_URI_append_intel-x86-common = " \ +SRC_URI:append:intel-x86-common = " \ file://0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch \ " -PACKAGECONFIG_append_intel-x86-common = " secureboot" +PACKAGECONFIG:append:intel-x86-common = " secureboot" 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-core/zlib/zlib-intel_1.2.11.1_jtkv6.3.bb b/recipes-core/zlib/zlib-intel_1.2.11.1_jtkv6.3.bb deleted file mode 100644 index 02b75156..00000000 --- a/recipes-core/zlib/zlib-intel_1.2.11.1_jtkv6.3.bb +++ /dev/null @@ -1,16 +0,0 @@ -require recipes-core/zlib/zlib_1.2.11.bb - -FILESEXTRAPATHS_append = ":${COREBASE}/meta/recipes-core/zlib/zlib" - -SUMMARY = "Zlib Compression Library (Intel-tuned)" - -PROVIDES = "zlib" - -SRC_URI_remove = "${SOURCEFORGE_MIRROR}/libpng/${BPN}/${PV}/${BPN}-${PV}.tar.xz" -SRC_URI_prepend = "git://github.com/jtkukunas/zlib.git;protocol=git " - -SRCREV = "a43a247bfa16ec5368747b5b64f11ea5ca033010" -S = "${WORKDIR}/git" - -RPROVIDES_${PN} += "zlib" -RPROVIDES_${PN}-ptest += "zlib-ptest" diff --git a/recipes-devtools/opencl/opencl-clang-native_8.0.0.bb b/recipes-devtools/opencl/opencl-clang-native_8.0.0.bb deleted file mode 100644 index cfba8d97..00000000 --- a/recipes-devtools/opencl/opencl-clang-native_8.0.0.bb +++ /dev/null @@ -1,25 +0,0 @@ -SUMMARY = "Common clang is a thin wrapper library around clang" -DESCRIPTION = "Common clang has OpenCL-oriented API and is capable \ - to compile OpenCL C kernels to SPIR-V modules." - -LICENSE = "NCSA" -LIC_FILES_CHKSUM = "file://LICENSE;md5=e8a15bf1416762a09ece07e44c79118c" - -SRC_URI = "git://github.com/intel/opencl-clang.git;branch=ocl-open-80;protocol=https" - -SRCREV = "daf5e4dd718477ae8cf89a283c653939d9182f15" - -S = "${WORKDIR}/git" - -inherit native - -do_configure[noexec] = "1" - -do_compile() { - ${CC} linux_linker/linux_resource_linker.cpp -o linux_resource_linker -} - -do_install() { - install -d ${D}${bindir} - install -m 0755 linux_resource_linker ${D}${bindir}/ -} diff --git a/recipes-devtools/slimboot/slimboot-tools_git.bb b/recipes-devtools/slimboot/slimboot-tools_git.bb new file mode 100644 index 00000000..b65b182d --- /dev/null +++ b/recipes-devtools/slimboot/slimboot-tools_git.bb @@ -0,0 +1,22 @@ +SUMMARY = "Slim Bootloader Host Tools" +DESCRIPTION = "Native host tools to generate the container images in a \ +binary file format understood by Slim Bootloader to load and initialize\ +Operating Systems or Hypervisors." +HOMEPAGE = "https://slimbootloader.github.io/tools/index.html" + +SRC_URI = "git://github.com/slimbootloader/slimbootloader;protocol=https;branch=master" +SRCREV = "df5bd0bc2a522afcb8945a6797592b04838db753" +PV = "0.0.0+git${SRCPV}" +LICENSE = "BSD-2-Clause-Patent" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ef7fba7be2819ac13aaf5d0f842ce5d9" +S = "${WORKDIR}/git" + +inherit python3native +BBCLASSEXTEND = "native" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_install() { + install -m 755 -d ${D}${libexecdir}/slimboot/Tools + install -m 755 ${S}/BootloaderCorePkg/Tools/*.py ${D}${libexecdir}/slimboot/Tools +} 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 @@ +From 8729d66800995a9b7e693bd78249932bd12383e1 Mon Sep 17 00:00:00 2001 +From: John Machado <john.machado@intel.com> +Date: Mon, 25 Mar 2024 11:13:27 +0530 +Subject: [PATCH] Add new DG2 device IDs (#194) + +Upstream-Status: Backport [https://github.com/intel/gmmlib/commit/dcc4b85ea3728c848b62fbb164c00f43b519b6fb] + +Signed-off-by: Hoe, Sheng Yang <sheng.yang.hoe@intel.com> +--- + Source/inc/common/igfxfmid.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Source/inc/common/igfxfmid.h b/Source/inc/common/igfxfmid.h +index 7969779..8e2c955 100644 +--- a/Source/inc/common/igfxfmid.h ++++ b/Source/inc/common/igfxfmid.h +@@ -1932,6 +1932,8 @@ typedef enum __NATIVEGTTYPE + #define DEV_ID_56BB 0x56BB + #define DEV_ID_56BC 0x56BC + #define DEV_ID_56BD 0x56BD ++#define DEV_ID_56BE 0x56BE ++#define DEV_ID_56BF 0x56BF + #define DEV_ID_56C0 0x56C0 + #define DEV_ID_56C1 0x56C1 + +@@ -1992,6 +1994,8 @@ typedef enum __NATIVEGTTYPE + ( d == DEV_ID_5690 ) || \ + ( d == DEV_ID_5691 ) || \ + ( d == DEV_ID_5692 ) || \ ++ ( d == DEV_ID_56BE ) || \ ++ ( d == DEV_ID_56BF ) || \ + ( d == DEV_ID_56C0 ) || \ + ( d == DEV_ID_4F80 ) || \ + ( d == DEV_ID_4F81 ) || \ +-- +2.34.1 + 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 @@ +From 2b267b72d6aaa922861b120da9c1543161797046 Mon Sep 17 00:00:00 2001 +From: John Machado <john.machado@intel.com> +Date: Fri, 9 Feb 2024 13:10:18 +0530 +Subject: [PATCH] Introduce ARL-H support (#172) + +Upstream-Status: Backport [https://github.com/intel/gmmlib/commit/544a8be6f66631e085c86c453aafd78b0e7f5179] +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> +--- + Source/inc/common/igfxfmid.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/Source/inc/common/igfxfmid.h b/Source/inc/common/igfxfmid.h +index 99fc624..19aa505 100644 +--- a/Source/inc/common/igfxfmid.h ++++ b/Source/inc/common/igfxfmid.h +@@ -1966,6 +1966,11 @@ typedef enum __NATIVEGTTYPE + // ARL-S + #define DEV_ID_7D67 0x7D67 + ++// ARL-H ++#define DEV_ID_7D41 0x7D41 ++#define DEV_ID_7D51 0x7D51 ++#define DEV_ID_7DD1 0x7DD1 ++ + #define MGM_HAS 0 + + //#define SDG_HAS 1 //Reserve place for Springdale-G HAS +@@ -2012,6 +2017,11 @@ typedef enum __NATIVEGTTYPE + // Macro to identify ARL-S Device ID + #define GFX_IS_ARL_S(d) ( ( d == DEV_ID_7D67 ) ) + ++// Macro to identify ARL-H Device ID ++#define GFX_IS_ARL_H(d) ( ( d == DEV_ID_7D41 ) || \ ++ ( d == DEV_ID_7D51 ) || \ ++ ( d == DEV_ID_7DD1 )) ++ + //we define the highest cap and lower cap of stepping IDs + #define SI_REV_ID(lo,hi) (lo | hi<<16) + +-- +2.40.1 + diff --git a/recipes-graphics/gmmlib/gmmlib_19.2.3.bb b/recipes-graphics/gmmlib/gmmlib_22.3.15.bb index 8e1dcc4e..875fbaf5 100644 --- a/recipes-graphics/gmmlib/gmmlib_19.2.3.bb +++ b/recipes-graphics/gmmlib/gmmlib_22.3.15.bb @@ -4,18 +4,24 @@ device specific and buffer management for the Intel(R) Graphics \ Compute Runtime for OpenCL(TM) and the Intel(R) Media Driver for VAAPI." LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.md;md5=d9a6e772cd4c362ee4c8ef87c5aad843" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=465fe90caea3edd6a2cecb3f0c28a654" SRC_URI = " \ - git://github.com/intel/gmmlib.git;protocol=https \ + git://github.com/intel/gmmlib.git;protocol=https;branch=master \ + file://0001-Introduce-ARL-H-support-172.patch \ + file://0001-Add-new-DG2-device-IDs-194.patch \ " -SRCREV = "e834bcd677382fbebb7749ccbd678d86a82bffd3" +SRCREV = "5fb4180e22695ad4e3c155cf680119913c9f44bc" S = "${WORKDIR}/git" +COMPATIBLE_HOST:x86-x32 = "null" + UPSTREAM_CHECK_GITTAGREGEX = "^intel-gmmlib-(?P<pver>(\d+(\.\d+)+))$" inherit pkgconfig cmake EXTRA_OECMAKE += "-DRUN_TEST_SUITE=OFF" + +BBCLASSEXTEND = "native nativesdk" 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. Added wait function to block parent process until child process exits. -Upstream-Status: Submitted[https://github.com/intel/hdcp/pull/17] +Upstream-Status: Submitted [https://github.com/intel/hdcp/pull/17] Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> --- diff --git a/recipes-graphics/hdcp/hdcp_19.1.0.bb b/recipes-graphics/hdcp/hdcp_21.2.0.bb index 0ff0fcdd..8529b5ab 100644 --- a/recipes-graphics/hdcp/hdcp_19.1.0.bb +++ b/recipes-graphics/hdcp/hdcp_21.2.0.bb @@ -7,12 +7,12 @@ LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c50969be4feb8b99c6baa3795ede4dce" SECTION = "lib" -inherit pkgconfig cmake useradd systemd distro_features_check +inherit pkgconfig cmake useradd systemd features_check -SRC_URI = "git://github.com/intel/hdcp.git \ +SRC_URI = "git://github.com/intel/hdcp.git;branch=master;protocol=https \ file://0001-main-fix-hdcpd-service-failure.patch \ " -SRCREV = "8543db04594d7a46ebc5a5fa14d5818bb1eb6327" +SRCREV = "cacc352159c5bdaf1c21846cecdd1eb7b031e1d3" S = "${WORKDIR}/git" REQUIRED_DISTRO_FEATURES = "systemd" @@ -20,7 +20,7 @@ REQUIRED_DISTRO_FEATURES = "systemd" DEPENDS = "libdrm virtual/mesa systemd" USERADD_PACKAGES = "${PN}" -USERADD_PARAM_${PN} = "--system --no-create-home --shell /bin/false --gid nogroup media" +USERADD_PARAM:${PN} = "--system --no-create-home --shell /bin/false --gid nogroup media" -SYSTEMD_SERVICE_${PN} = "hdcpd.service" +SYSTEMD_SERVICE:${PN} = "hdcpd.service" SYSTEMD_AUTO_ENABLE = "disable" diff --git a/recipes-graphics/igt-gpu-tools/igt-gpu-tools_1.24.bb b/recipes-graphics/igt-gpu-tools/igt-gpu-tools_1.24.bb deleted file mode 100644 index 156798c6..00000000 --- a/recipes-graphics/igt-gpu-tools/igt-gpu-tools_1.24.bb +++ /dev/null @@ -1,39 +0,0 @@ -require ${COREBASE}/meta/recipes-graphics/xorg-app/xorg-app-common.inc - -SUMMARY = "Intel GPU tools" -DESCRIPTION = "Variety of small tools for testing intel graphics." - -LIC_FILES_CHKSUM = "file://COPYING;md5=67bfee4df38fa6ecbe3a675c552d4c08" - -LICENSE_append = " & ISC" - -inherit autotools - -SRC_URI = "${XORG_MIRROR}/individual/app/${BP}.tar.xz" - -DEPENDS += "libdrm libpciaccess cairo udev glib-2.0 libxv libx11 libxext libxrandr procps libunwind kmod openssl elfutils" -RDEPENDS_${PN} += "bash" -RDEPENDS_${PN}-tests += "bash" - -PACKAGE_BEFORE_PN = "${PN}-benchmarks ${PN}-tests" - -SRC_URI[md5sum] = "0e0b4a1a80dc2e09c2705e0c5159e0a1" -SRC_URI[sha256sum] = "57357c72feeafc923c9cfd2d1234bd80e120fc7cc6099eac81158ec351a821bf" - -EXTRA_OECONF = "--disable-nouveau" -COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux" -COMPATIBLE_HOST_libc-musl_class-target = "null" - -gputools_sysroot_preprocess() { - rm -f ${SYSROOT_DESTDIR}${libdir}/pkgconfig/intel-gen4asm.pc -} -SYSROOT_PREPROCESS_FUNCS += "gputools_sysroot_preprocess" - -FILES_${PN} += "${libdir}/intel_aubdump.so" -FILES_${PN}-benchmarks += "${libexecdir}/${BPN}/benchmarks" -FILES_${PN}-tests += "\ - ${libexecdir}/${BPN}/*\ - ${datadir}/${BPN}/1080p-right.png\ - ${datadir}/${BPN}/1080p-left.png\ - ${datadir}/${BPN}/pass.png\ - ${datadir}/${BPN}/test-list.txt" diff --git a/recipes-graphics/libva/libva-intel-utils_2.20.1.bb b/recipes-graphics/libva/libva-intel-utils_2.20.1.bb new file mode 100644 index 00000000..9c26f009 --- /dev/null +++ b/recipes-graphics/libva/libva-intel-utils_2.20.1.bb @@ -0,0 +1,35 @@ +SUMMARY = "libva-utils is a collection of utilities from libva project" + +DESCRIPTION = "libva-utils is a collection of utilities \ +and examples to exercise VA-API in accordance with the libva \ +project.VA-API is an open-source library and API specification, \ +which provides access to graphics hardware acceleration capabilities \ +for video processing. It consists of a main library and driver-specific \ +acceleration backends for each supported hardware vendor" + +HOMEPAGE = "https://01.org/linuxmedia/vaapi" +BUGTRACKER = "https://github.com/intel/libva-utils/issues" + +SECTION = "x11" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=b148fc8adf19dc9aec17cf9cd29a9a5e" + +SRC_URI = "git://github.com/intel/libva-utils.git;branch=v2.20-branch;protocol=https" +SRCREV = "2ad888bb463dc9bfb3deb512ec9faf78f1d3bfa8" +S = "${WORKDIR}/git" + +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" + +DEPENDS = "libva" + +inherit meson pkgconfig features_check + +# depends on libva which requires opengl +REQUIRED_DISTRO_FEATURES = "opengl" + +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" +PACKAGECONFIG[x11] = "-Dx11=true, -Dx11=false,virtual/libx11 libxext libxfixes" +PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false,wayland-native wayland" + +PROVIDES = "libva-utils" +RPROVIDES:${PN} += "libva-utils" diff --git a/recipes-graphics/libva/libva-intel_2.20.0.bb b/recipes-graphics/libva/libva-intel_2.20.0.bb new file mode 100644 index 00000000..c81ed65c --- /dev/null +++ b/recipes-graphics/libva/libva-intel_2.20.0.bb @@ -0,0 +1,55 @@ +SUMMARY = "Video Acceleration (VA) API for Linux" +DESCRIPTION = "Video Acceleration API (VA API) is a library (libVA) \ +and API specification which enables and provides access to graphics \ +hardware (GPU) acceleration for video processing on Linux and UNIX \ +based operating systems. Accelerated processing includes video \ +decoding, video encoding, subpicture blending and rendering. The \ +specification was originally designed by Intel for its GMA (Graphics \ +Media Accelerator) series of GPU hardware, the API is however not \ +limited to GPUs or Intel specific hardware, as other hardware and \ +manufacturers can also freely use this API for hardware accelerated \ +video decoding." + +HOMEPAGE = "https://01.org/linuxmedia/vaapi" +BUGTRACKER = "https://github.com/intel/libva/issues" + +SECTION = "x11" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f" + +SRC_URI = "https://github.com/intel/libva/releases/download/${PV}/libva-${PV}.tar.bz2 \ + " +SRC_URI[sha256sum] = "f72bdb4f48dfe71ad01f1cbefe069672a2c949a6abd51cf3c4d4784210badc49" + +S = "${WORKDIR}/libva-${PV}" + +UPSTREAM_CHECK_URI = "https://github.com/intel/libva/releases" + +DEPENDS = "libdrm" + +inherit meson pkgconfig + +PACKAGECONFIG ??= " \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)} \ +" + +PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxext libxfixes" +PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/mesa" + +PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland" + +PACKAGES =+ "${PN}-x11 ${PN}-glx ${PN}-wayland" + +RDEPENDS:${PN}-x11 =+ "${PN}" +RDEPENDS:${PN}-glx =+ "${PN}-x11" + +FILES:${PN}-x11 =+ "${libdir}/libva-x11*${SOLIBS}" +FILES:${PN}-glx =+ "${libdir}/libva-glx*${SOLIBS}" +FILES:${PN}-wayland =+ "${libdir}/libva-wayland*${SOLIBS}" + +PROVIDES += "libva" +RPROVIDES:${PN} += "libva" +RPROVIDES:${PN}-x11 += "libva-x11" +RPROVIDES:${PN}-glx += "libva-glx" +RPROVIDES:${PN}-wayland += "libva-wayland" diff --git a/recipes-graphics/metrics-discovery/metrics-discovery_1.5.102.bb b/recipes-graphics/metrics-discovery/metrics-discovery_1.12.170.bb index 14dda35b..3ed1c9bd 100644 --- a/recipes-graphics/metrics-discovery/metrics-discovery_1.5.102.bb +++ b/recipes-graphics/metrics-discovery/metrics-discovery_1.12.170.bb @@ -2,14 +2,15 @@ SUMMARY = "Intel Metrics Discovery Application Programming Interface" DESCRIPTION = "This software is a user mode library that provides access to \ GPU performance data." LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.md;md5=5ac9e51fb25f5d5b10a1bea412a4b74c" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=8c5c9ac8ffd04a5614befdf63fba6ba8" SECTION = "lib" inherit pkgconfig cmake S = "${WORKDIR}/git" -SRCREV = "ac8d17cfd7f33aefea353dfc4eda65f6beb0a9ae" -SRC_URI = "git://github.com/intel/metrics-discovery.git" +SRCREV = "75b292eb1309e4ea10dce403065ee8ca5bf29ecc" +SRC_URI = "git://github.com/intel/metrics-discovery.git;branch=master;protocol=https \ + " EXTRA_OECMAKE += "-DMD_PLATFORM=linux" EXTRA_OECMAKE += "-DMD_LIBDRM_SRC=${STAGING_INCDIR}" 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" LIC_FILES_CHKSUM = "file://COPYING;md5=0b8c242f0218eea5caa949b7910a774b" DEPENDS += "libpciaccess" +XORG_DRIVER_COMPRESSOR = ".tar.gz" -SRC_URI[md5sum] = "4f85febe48d51e53624550a96fc9e9ee" -SRC_URI[sha256sum] = "1edbbc55d47d3fd71dec99b15c2483e22738c642623a0fb86ef4a81a9067a2de" +SRC_URI[sha256sum] = "eeff52178ce2916a0e07b531bb23c8b105826b6e6e6c5f7c90e33f757827a7c7" diff --git a/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-skip-host-depmod.patch b/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-skip-host-depmod.patch deleted file mode 100644 index 0041af57..00000000 --- a/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-skip-host-depmod.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 5f87ef7ed60bc9762467184ed0a6d000b80713d9 Mon Sep 17 00:00:00 2001 -From: sweeaun <swee.aun.khor@intel.com> -Date: Sun, 8 Apr 2018 17:21:52 +0800 -Subject: [PATCH] ixgbe: skip host depmod - -Upstream-Status: Inappropriate [Cross-Compile] - -Depmod during do_install is irrelevant when cross-compiling. -Remove the depmod steps during do_install. - -Signed-off-by: sweeaun <swee.aun.khor@intel.com> ---- - Makefile | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/Makefile b/Makefile -index 545489a..07e422f 100644 ---- a/Makefile -+++ b/Makefile -@@ -141,8 +141,6 @@ install: default manfile - @install -D -m 644 ${DRIVER}.${MANSECTION}.gz ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz - @echo "Installing modules..." - @+$(call devkernelbuild,modules_install) -- @echo "Running depmod..." -- @$(call cmd_depmod) - - uninstall: - rm -f ${INSTALL_MOD_PATH}/lib/modules/${KVER}/${INSTALL_MOD_DIR}/${DRIVER}.ko; --- -2.7.4 - diff --git a/recipes-kernel/intel-ethernet/ixgbe_5.6.1.bb b/recipes-kernel/intel-ethernet/ixgbe_5.19.6.bb index 906c697c..7ef38650 100644 --- a/recipes-kernel/intel-ethernet/ixgbe_5.6.1.bb +++ b/recipes-kernel/intel-ethernet/ixgbe_5.19.6.bb @@ -4,30 +4,29 @@ PCI Express* 10 Gigabit Network Connections." HOMEPAGE = "https://sourceforge.net/projects/e1000/" SECTION = "kernel/network" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://${WORKDIR}/${BP}/COPYING;md5=a216b4192dc6b777b6f0db560e9a8417" SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/${PV}/${BP}.tar.gz \ - file://0001-ixgbe-skip-host-depmod.patch \ " -SRC_URI[md5sum] = "afe9838253205157a79a6a6c30abfba9" -SRC_URI[sha256sum] = "7e5d3fefe429dfdc989da4478e176ef95808d250cb616bd8400374c3831a7ee3" +SRC_URI[sha256sum] = "a844f1fea8064e30b276792455c3b286c1d7af26731e8f865d4a4e9ed1dcf4ab" UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/" UPSTREAM_CHECK_REGEX = "ixgbe%20stable/(?P<pver>\d+(\.\d+)+)/" +CVE_PRODUCT = "linux:linux_kernel_ixgbe" + S = "${WORKDIR}/${BP}/src" -MODULES_INSTALL_TARGET = "install" -EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"' +EXTRA_OEMAKE=' KSRC="${STAGING_KERNEL_DIR}" KOBJ="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"' -KERNEL_MODULE_AUTOLOAD_append_intel-core2-32 = " ixgbe" -KERNEL_MODULE_AUTOLOAD_append_intel-corei7-64 = " ixgbe" +KERNEL_MODULE_AUTOLOAD:append:intel-core2-32 = " ixgbe" +KERNEL_MODULE_AUTOLOAD:append:intel-corei7-64 = " ixgbe" inherit module -do_install_append () { +do_install:append () { # Install scripts/set_irq_affinity install -d ${D}${sysconfdir}/network install -m 0755 ${S}/../scripts/set_irq_affinity ${D}${sysconfdir}/network @@ -37,4 +36,8 @@ do_install_append () { PACKAGES += "${PN}-script" -FILES_${PN}-script += "${sysconfdir}/network/set_irq_affinity" +FILES:${PN}-script += "${sysconfdir}/network/set_irq_affinity" + +EXCLUDE_FROM_WORLD = "1" + +CVE_STATUS[CVE-2015-1142857] = "fixed-version: Fixed from version 4.4-rc1" diff --git a/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-skip-host-depmod.patch b/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-skip-host-depmod.patch deleted file mode 100644 index 656a897d..00000000 --- a/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-skip-host-depmod.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 9677d09f5c3984997ac8e7d90b5d4b11fb9ce277 Mon Sep 17 00:00:00 2001 -From: sweeaun <swee.aun.khor@intel.com> -Date: Sat, 7 Oct 2017 20:56:35 -0700 -Subject: [PATCH] ixgbevf: skip host depmod - -Upstream-Status: Inappropriate [Cross-Compile] - -Depmod during do_install is irrelevant when cross-compiling. -Remove the depmod steps during do_install. - -Signed-off-by: sweeaun <swee.aun.khor@intel.com> ---- - Makefile | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/Makefile b/Makefile -index 91df705..1dcf350 100644 ---- a/Makefile -+++ b/Makefile -@@ -104,8 +104,6 @@ modules_install: default manfile - @install -D -m 644 ${DRIVER}.${MANSECTION}.gz ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz - @echo "Installing modules..." - @+$(call kernelbuild,modules_install) -- @echo "Running depmod..." -- @$(call cmd_depmod) - - uninstall: - rm -f ${INSTALL_MOD_PATH}/lib/modules/${KVER}/${INSTALL_MOD_DIR}/${DRIVER}.ko; --- -2.7.4 - diff --git a/recipes-kernel/intel-ethernet/ixgbevf_4.6.1.bb b/recipes-kernel/intel-ethernet/ixgbevf_4.18.7.bb index f73cc37f..b21796c6 100644 --- a/recipes-kernel/intel-ethernet/ixgbevf_4.6.1.bb +++ b/recipes-kernel/intel-ethernet/ixgbevf_4.18.7.bb @@ -7,30 +7,29 @@ The guest OS loading this driver must support MSI-X interrupts." HOMEPAGE = "https://sourceforge.net/projects/e1000/" SECTION = "kernel/network" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://${WORKDIR}/${BP}/COPYING;md5=a216b4192dc6b777b6f0db560e9a8417" SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/${PV}/${BP}.tar.gz \ - file://0001-ixgbevf-skip-host-depmod.patch \ " -SRC_URI[md5sum] = "e98bc636fea13cb62c11433159147851" -SRC_URI[sha256sum] = "2ca0a0a836d006375fa28a999e0b139bda93110a22ee3742ae1c8d0ac9130a41" +SRC_URI[sha256sum] = "90f6cd614008839b6fc748ae0f4ad3503435f8b788318d4f40cfc83c7029025e" UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/" UPSTREAM_CHECK_REGEX = "ixgbevf%20stable/(?P<pver>\d+(\.\d+)+)/" +CVE_PRODUCT = "linux:linux_kernel_ixgbe" + S = "${WORKDIR}/${BP}/src" -MODULES_INSTALL_TARGET = "install" -EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"' +EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_DIR}" KOBJ="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"' -KERNEL_MODULE_AUTOLOAD_append_intel-core2-32 = " ixgbevf" -KERNEL_MODULE_AUTOLOAD_append_intel-corei7-64 = " ixgbevf" +KERNEL_MODULE_AUTOLOAD:append:intel-core2-32 = " ixgbevf" +KERNEL_MODULE_AUTOLOAD:append:intel-corei7-64 = " ixgbevf" inherit module -do_install_append () { +do_install:append () { # Install scripts/set_irq_affinity install -d ${D}${sysconfdir}/network install -m 0755 ${S}/../scripts/set_irq_affinity ${D}${sysconfdir}/network @@ -40,4 +39,8 @@ do_install_append () { PACKAGES += "${PN}-script" -FILES_${PN}-script += "${sysconfdir}/network/set_irq_affinity" +FILES:${PN}-script += "${sysconfdir}/network/set_irq_affinity" + +CVE_STATUS[CVE-2015-1142857] = "fixed-version: Fixed from version 4.4-rc1" + +EXCLUDE_FROM_WORLD = "1" diff --git a/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb b/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb index 71837318..ea36cfc3 100644 --- a/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb +++ b/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb @@ -1,13 +1,13 @@ SUMMARY = "Intel Wireless LinuxCore kernel driver" DESCRIPTION = "Intel Wireless LinuxCore kernel driver" SECTION = "kernel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" REQUIRED_DISTRO_FEATURES = "wifi" -LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" +LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" -inherit module +inherit module features_check # For some iwfwifi LinuxCore supported wireless chips, the best/latest # firmware blobs are found in the iwlwifi's linux-firmware.git fork. @@ -17,11 +17,11 @@ inherit module # When updating this recipe, ensure that the proper firmware is included from # either the linux-firmware or iwlwifi-firmware repos. -PV = "30" -SRCREV = "b31221a99488021300e7f89d2ecf9bdd2bc52dd2" +PV = "79" +SRCREV = "574631d89d736fd2c76b0e2ea489270c50903e52" SRC_URI = " \ - git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi;branch=release/LinuxCore${PV} \ + git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi;branch=release/core${PV} \ file://0001-Makefile.real-skip-host-install-scripts.patch \ file://iwlwifi.conf \ " @@ -36,16 +36,18 @@ do_configure() { MODULES_INSTALL_TARGET="install" -do_install_append() { +do_install:append() { ## install configs and service scripts install -d ${D}${sysconfdir}/modprobe.d install -m 0644 ${WORKDIR}/iwlwifi.conf ${D}${sysconfdir}/modprobe.d } -RDEPENDS_${PN} = "linux-firmware-iwlwifi" +RDEPENDS:${PN} = "linux-firmware-iwlwifi" -KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi" -KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi" +FILES:${PN} += "${sysconfdir}/modprobe.d/iwlwifi.conf" + +KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " iwlwifi" +KERNEL_MODULE_AUTOLOAD:append:corei7-64-intel-common = " iwlwifi" KERNEL_MODULE_PACKAGE_PREFIX = "backport-iwlwifi" diff --git a/recipes-kernel/linux/linux-intel-dev.bb b/recipes-kernel/linux/linux-intel-dev.bb deleted file mode 100644 index 93a0f190..00000000 --- a/recipes-kernel/linux/linux-intel-dev.bb +++ /dev/null @@ -1,34 +0,0 @@ -require recipes-kernel/linux/linux-yocto.inc -require recipes-kernel/linux/meta-intel-compat-kernel.inc - -FILESEXTRAPATHS_prepend := "${THISDIR}/linux-intel:" - -SRC_URI = " \ - git://github.com/intel/mainline-tracking.git;protocol=https;name=machine;nobranch=1; \ - git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=${KMETA} \ - file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \ - " -SRC_URI_append_core2-32-intel-common = " file://disable_skylake_sound.cfg" - -KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" - -KMETA_BRANCH = "master" - -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" - -DEPENDS += "elfutils-native openssl-native util-linux-native" - -LINUX_VERSION ?= "5.1.0" -SRCREV_machine ?= "abcfe412cc5140d20a592965744c050fd3cc3d19" -SRCREV_meta ?= "b8bce20786a4063e5f053036e5236d82c8fc3d91" - -LINUX_VERSION_EXTENSION ?= "-mainline-tracking-${LINUX_KERNEL_TYPE}" -PV = "${LINUX_VERSION}+git${SRCPV}" - -COMPATIBLE_MACHINE ?= "(intel-corei7-64|intel-core2-32)" - -# Functionality flags -KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}" -KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}" -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc" diff --git a/recipes-kernel/linux/linux-intel-rt_4.14.bb b/recipes-kernel/linux/linux-intel-rt_4.14.bb deleted file mode 100644 index 4c7bb40c..00000000 --- a/recipes-kernel/linux/linux-intel-rt_4.14.bb +++ /dev/null @@ -1,24 +0,0 @@ -require linux-intel.inc - -# Skip processing of this recipe if it is not explicitly specified as the -# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying -# to build multiple virtual/kernel providers, e.g. as dependency of -# core-image-rt-sdk, core-image-rt. -python () { - if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt": - raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it") -} - -KBRANCH = "4.14/preempt-rt" -KMETA_BRANCH = "yocto-4.14" - -# Fix for 32-bit perf issue. Remove when patch is backported to 4.14. -SRC_URI_append = " file://0001-perf-x86-32-explicitly-include-errno.h.patch" - -DEPENDS += "elfutils-native openssl-native util-linux-native" - -LINUX_VERSION ?= "4.14.126" -SRCREV_machine ?= "926a97a073b7c7a22387ad7663644e0cdf3ec032" -SRCREV_meta ?= "bc35d5bd224ab031440a69f9806d839db382f05c" - -LINUX_KERNEL_TYPE = "preempt-rt" diff --git a/recipes-kernel/linux/linux-intel-rt_4.19.bb b/recipes-kernel/linux/linux-intel-rt_4.19.bb deleted file mode 100644 index c130fe9d..00000000 --- a/recipes-kernel/linux/linux-intel-rt_4.19.bb +++ /dev/null @@ -1,24 +0,0 @@ -require linux-intel.inc - -# Skip processing of this recipe if it is not explicitly specified as the -# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying -# to build multiple virtual/kernel providers, e.g. as dependency of -# core-image-rt-sdk, core-image-rt. -python () { - if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt": - raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it") -} - -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" -SRC_URI_append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch" - -KBRANCH = "4.19/preempt-rt" -KMETA_BRANCH = "yocto-4.19" - -DEPENDS += "elfutils-native openssl-native util-linux-native" - -LINUX_VERSION ?= "4.19.50" -SRCREV_machine ?= "2b349fd59d2e0947c9cabbc68dae194b316ab244" -SRCREV_meta ?= "d85f07e03c980eca5ffd5ba058985d6ed3a83801" - -LINUX_KERNEL_TYPE = "preempt-rt" diff --git a/recipes-kernel/linux/linux-intel-rt_6.6.bb b/recipes-kernel/linux/linux-intel-rt_6.6.bb new file mode 100644 index 00000000..342679eb --- /dev/null +++ b/recipes-kernel/linux/linux-intel-rt_6.6.bb @@ -0,0 +1,33 @@ +require linux-intel.inc + +SRC_URI:prepend = "git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \ + " + +# Skip processing of this recipe if it is not explicitly specified as the +# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying +# to build multiple virtual/kernel providers, e.g. as dependency of +# core-image-rt-sdk, core-image-rt. +python () { + if d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt": + raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it") +} + +KBRANCH = "6.6/preempt-rt" +KMETA_BRANCH = "yocto-6.6" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +DEPENDS += "elfutils-native openssl-native util-linux-native" + +LINUX_VERSION_EXTENSION ??= "-intel-pk-${LINUX_KERNEL_TYPE}" + +LINUX_VERSION ?= "6.6.25" +SRCREV_machine ?= "f8939454cf9bb7277239bb44e90c99474c599f37" +SRCREV_meta ?= "c3d1322fb6ff68cdcf4d7a3c1140d81bfdc1320a" + +LINUX_KERNEL_TYPE = "preempt-rt" + +# Functionality flags +KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc" + +UPSTREAM_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 f2ba0d13..f78f5205 100644 --- a/recipes-kernel/linux/linux-intel.inc +++ b/recipes-kernel/linux/linux-intel.inc @@ -1,25 +1,24 @@ require recipes-kernel/linux/linux-yocto.inc require recipes-kernel/linux/meta-intel-compat-kernel.inc -FILESEXTRAPATHS_prepend := "${THISDIR}/linux-intel:" +FILESEXTRAPATHS:prepend := "${THISDIR}/linux-intel:" KERNEL_CONFIG_URI ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=${KMETA}" SRC_URI = " \ - git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \ ${KERNEL_CONFIG_URI} \ + file://0001-vt-conmakehash-improve-reproducibility.patch \ + file://0001-lib-build_OID_registry-fix-reproducibility-issues.patch \ + file://fix-perf-reproducibility.patch \ + file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch \ + file://0002-mconf-fix-output-of-cflags-and-libraries.patch \ " -SRC_URI_append_core2-32-intel-common = " file://disable_skylake_sound.cfg" - -LINUX_VERSION_EXTENSION ?= "-intel-pk-${LINUX_KERNEL_TYPE}" - PV = "${LINUX_VERSION}+git${SRCPV}" KMETA = "kernel-meta" -KCONF_BSP_AUDIT_LEVEL = "2" +KCONF_BSP_AUDIT_LEVEL = "0" -COMPATIBLE_MACHINE ?= "(intel-corei7-64|intel-core2-32)" +COMPATIBLE_MACHINE ?= "(intel-corei7-64)" -KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}" -KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}" +KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}" 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 @@ +From 2fca0fd719812ea2ff67630b01355aa80481623e Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@gmail.com> +Date: Sun, 10 Jul 2022 22:56:53 -0400 +Subject: [PATCH] lib/build_OID_registry: fix reproducibility issues + +The script build_OID_registry captures the full path of itself +in the generated data. This causes reproduciblity issues as the +path is captured and packaged. + +We use the basename of the script instead, and that allows us +to be reprodicible, with slightly less information captured in +the output data (but the generating script can still easily +be found). + +Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> +Upstream-Status: Inappropriate + +Taken from linux-yocto, v5.15/standard/base. + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + lib/build_OID_registry | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/build_OID_registry b/lib/build_OID_registry +index d7fc32ea8ac2..f6de0a7f7457 100755 +--- a/lib/build_OID_registry ++++ b/lib/build_OID_registry +@@ -8,6 +8,7 @@ + # + + use strict; ++use File::Basename; + + my @names = (); + my @oids = (); +@@ -35,7 +36,7 @@ close IN_FILE || die; + # + open C_FILE, ">$ARGV[1]" or die; + print C_FILE "/*\n"; +-print C_FILE " * Automatically generated by ", $0, ". Do not edit\n"; ++print C_FILE " * Automatically generated by ", basename $0, ". Do not edit\n"; + print C_FILE " */\n"; + + # +-- +2.36.1 + diff --git a/recipes-kernel/linux/linux-intel/0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch b/recipes-kernel/linux/linux-intel/0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch deleted file mode 100644 index a9e9213b..00000000 --- a/recipes-kernel/linux/linux-intel/0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch +++ /dev/null @@ -1,62 +0,0 @@ -From e6ebc8e654bba53f28af5229a1069fc74fa58b7b Mon Sep 17 00:00:00 2001 -From: Jason Wessel <jason.wessel@windriver.com> -Date: Thu, 25 Sep 2014 11:26:49 -0700 -Subject: [PATCH] menuconfig,check-lxdiaglog.sh: Allow specification of ncurses - location - -In some cross build environments such as the Yocto Project build -environment it provides an ncurses library that is compiled -differently than the host's version. This causes display corruption -problems when the host's curses includes are used instead of the -includes from the provided compiler are overridden. There is a second -case where there is no curses libraries at all on the host system and -menuconfig will just fail entirely. - -The solution is simply to allow an override variable in -check-lxdialog.sh for environments such as the Yocto Project. Adding -a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing -compiling and linking against the right headers and libraries. - -Upstream-Status: submitted [https://lkml.org/lkml/2013/3/3/103] - -Signed-off-by: Jason Wessel <jason.wessel@windriver.com> -cc: Michal Marek <mmarek@suse.cz> -cc: linux-kbuild@vger.kernel.org -Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> -Signed-off-by: California Sullivan <california.l.sullivan@intel.com> ---- - scripts/kconfig/lxdialog/check-lxdialog.sh | 8 ++++++++ - 1 file changed, 8 insertions(+) - mode change 100755 => 100644 scripts/kconfig/lxdialog/check-lxdialog.sh - -diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh -old mode 100755 -new mode 100644 -index 5075ebf2d3b9..ba9242101190 ---- a/scripts/kconfig/lxdialog/check-lxdialog.sh -+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh -@@ -4,6 +4,10 @@ - # What library to link - ldflags() - { -+ if [ "$CROSS_CURSES_LIB" != "" ]; then -+ echo "$CROSS_CURSES_LIB" -+ exit -+ fi - pkg-config --libs ncursesw 2>/dev/null && exit - pkg-config --libs ncurses 2>/dev/null && exit - for ext in so a dll.a dylib ; do -@@ -21,6 +25,10 @@ ldflags() - # Where is ncurses.h? - ccflags() - { -+ if [ x"$CROSS_CURSES_INC" != x ]; then -+ echo "$CROSS_CURSES_INC" -+ exit -+ fi - if pkg-config --cflags ncursesw 2>/dev/null; then - echo '-DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1' - elif pkg-config --cflags ncurses 2>/dev/null; then --- -2.14.3 - 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 @@ -From bebd63730a433ba62549a80114a9851328aa8897 Mon Sep 17 00:00:00 2001 +From 1811da09f42ca5e82282970e8ad014707bc94c82 Mon Sep 17 00:00:00 2001 From: Bruce Ashfield <bruce.ashfield@windriver.com> Date: Mon, 2 Jul 2018 23:10:28 -0400 -Subject: [PATCH] menuconfig,mconf-cfg: Allow specification of ncurses location +Subject: [PATCH 1/2] menuconfig,mconf-cfg: Allow specification of ncurses + location In some cross build environments such as the Yocto Project build environment it provides an ncurses library that is compiled @@ -16,33 +17,36 @@ check-lxdialog.sh for environments such as the Yocto Project. Adding a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing compiling and linking against the right headers and libraries. +Upstream-Status: Submitted + Signed-off-by: Jason Wessel <jason.wessel@windriver.com> cc: Michal Marek <mmarek@suse.cz> cc: linux-kbuild@vger.kernel.org Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> --- scripts/kconfig/mconf-cfg.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh -index c812872d7f9d..42d20819025c 100755 +index 1e61f50a5905..38cf8304bb31 100755 --- a/scripts/kconfig/mconf-cfg.sh +++ b/scripts/kconfig/mconf-cfg.sh -@@ -4,6 +4,14 @@ +@@ -7,6 +7,14 @@ libs=$2 PKG="ncursesw" PKG2="ncurses" +if [ "$CROSS_CURSES_LIB" != "" ]; then -+ echo libs=\'$CROSS_CURSES_LIB\' -+ if [ x"$CROSS_CURSES_INC" != x ]; then -+ echo cflags=\'$CROSS_CURSES_INC\' -+ fi -+ exit 0 ++ echo libs=\'$CROSS_CURSES_LIB\' ++ if [ x"$CROSS_CURSES_INC" != x ]; then ++ echo cflags=\'$CROSS_CURSES_INC\' ++ fi ++ exit 0 +fi + - if [ -n "$(command -v pkg-config)" ]; then - if pkg-config --exists $PKG; then - echo cflags=\"$(pkg-config --cflags $PKG)\" + if [ -n "$(command -v ${HOSTPKG_CONFIG})" ]; then + if ${HOSTPKG_CONFIG} --exists $PKG; then + ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} -- -2.17.1 +2.34.1 diff --git a/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch b/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch deleted file mode 100644 index 5c8b27c7..00000000 --- a/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 57af599929263e7bb6f2f369c9e4bc1e440528a9 Mon Sep 17 00:00:00 2001 -From: Bruce Ashfield <bruce.ashfield@windriver.com> -Date: Mon, 21 Aug 2017 13:52:53 -0400 -Subject: [PATCH 1/1] perf: x86-32: explicitly include <errno.h> - -Upstream-Status: submitted - -The 32bit x86 perf build does not find the system definitions of error -return values, hence we end up with: - -| In file included from util/libunwind/x86_32.c:32:0: -| util/libunwind/../../arch/x86/util/unwind-libunwind.c: In function 'libunwind__x86_reg_id': -| util/libunwind/../../arch/x86/util/unwind-libunwind.c:109:11: error: 'EINVAL' undeclared (first use in this function); did you mean 'UNW_EINVAL'? -| return -EINVAL; -| ^~~~~~ -| UNW_EINVAL - -By explicitly including errno.h, we can fix this build without impacting -other architectures. - -Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> ---- - - tools/perf/util/libunwind/x86_32.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tools/perf/util/libunwind/x86_32.c b/tools/perf/util/libunwind/x86_32.c -index 957ffff72428..d781f7bdeb88 100644 ---- a/tools/perf/util/libunwind/x86_32.c -+++ b/tools/perf/util/libunwind/x86_32.c -@@ -20,6 +20,7 @@ - #define LIBUNWIND__ARCH_REG_IP PERF_REG_X86_IP - #define LIBUNWIND__ARCH_REG_SP PERF_REG_X86_SP - -+#include <errno.h> - #include "unwind.h" - #include "debug.h" - #include "libunwind-x86.h" --- -2.14.3 - 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 @@ +From 0f586f4ee8adacac79b64d1f3d47799a5eb7fbea Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@gmail.com> +Date: Sun, 10 Jul 2022 21:37:07 -0400 +Subject: [PATCH] vt/conmakehash: improve reproducibility + +The file generated by conmakehash capture the application +path used to generate the file. While that can be informative, +it varies based on where the kernel was built, as the full +path is captured. + +We tweak the application to use a second input as the "capture +name", and then modify the Makefile to pass the basename of +the source, making it reproducible. + +This could be improved by using some sort of path mapping, +or the application manipualing argv[1] itself, but for now +this solves the reprodicibility issue. + +Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> + +Upstream-Status: Inappropriate + +Taken from linux-yocto, v5.15/standard/base +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + drivers/tty/vt/Makefile | 2 +- + drivers/tty/vt/conmakehash.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/tty/vt/Makefile b/drivers/tty/vt/Makefile +index fe30ce512819..cb51c21b58f9 100644 +--- a/drivers/tty/vt/Makefile ++++ b/drivers/tty/vt/Makefile +@@ -15,7 +15,7 @@ clean-files := consolemap_deftbl.c defkeymap.c + hostprogs += conmakehash + + quiet_cmd_conmk = CONMK $@ +- cmd_conmk = $(obj)/conmakehash $< > $@ ++ cmd_conmk = $(obj)/conmakehash $< $(shell basename $<) > $@ + + $(obj)/consolemap_deftbl.c: $(src)/$(FONTMAPFILE) $(obj)/conmakehash + $(call cmd,conmk) +diff --git a/drivers/tty/vt/conmakehash.c b/drivers/tty/vt/conmakehash.c +index cddd789fe46e..d62510b280e9 100644 +--- a/drivers/tty/vt/conmakehash.c ++++ b/drivers/tty/vt/conmakehash.c +@@ -253,7 +253,7 @@ int main(int argc, char *argv[]) + #include <linux/types.h>\n\ + \n\ + u8 dfont_unicount[%d] = \n\ +-{\n\t", argv[1], fontlen); ++{\n\t", argv[2], fontlen); + + for ( i = 0 ; i < fontlen ; i++ ) + { +-- +2.36.1 + 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 @@ +From 1b53d82a8152843afcddd7f16b0c43b6b4f22895 Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@gmail.com> +Date: Mon, 17 Jul 2023 17:17:55 -0400 +Subject: [PATCH 2/2] mconf: fix output of cflags and libraries + +commit 3122c84409d578a5df8bcb1 [kconfig: refactor Makefile to reduce +process forks] changes the way that flags are detected. They are +no longer just echo'd and captured, they are written to a file and +later read. + +We adjust our CROSS ncurses patch accordingly. + +We'll eventually be able to drop this patch, but not quite yet. + +Upstream-Status: Inappropriate [OE-Specific] +Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + scripts/kconfig/mconf-cfg.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh +index 38cf8304bb31..a5ae56e08b07 100755 +--- a/scripts/kconfig/mconf-cfg.sh ++++ b/scripts/kconfig/mconf-cfg.sh +@@ -8,9 +8,9 @@ PKG="ncursesw" + PKG2="ncurses" + + if [ "$CROSS_CURSES_LIB" != "" ]; then +- echo libs=\'$CROSS_CURSES_LIB\' ++ echo $CROSS_CURSES_LIB > ${libs} + if [ x"$CROSS_CURSES_INC" != x ]; then +- echo cflags=\'$CROSS_CURSES_INC\' ++ echo $CROSS_CURSES_INC > ${cflags} + fi + exit 0 + fi +-- +2.34.1 + diff --git a/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg b/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg deleted file mode 100644 index b38cf6c2..00000000 --- a/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# CONFIG_SND_SOC_INTEL_SKYLAKE is not set -# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set -# CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set -# CONFIG_SND_SOC_INTEL_BXT_TDF8532_MACH is not set -# CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH is not set -# CONFIG_SND_SOC_INTEL_SKL_RT286_MACH is not set -# CONFIG_SND_SOC_INTEL_CNL_RT274_MACH is not set -# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH is not set -# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH is not set -# CONFIG_SND_SOC_INTEL_CNL_CS42L42_MACH is not set -# CONFIG_SND_SOC_INTEL_CNL_RT700_MACH is not set -# CONFIG_SND_SOC_INTEL_CNL_SVFPGA_MACH is not set 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 @@ +From b8cd0e429bf75b673c438a8277d4bc74327df992 Mon Sep 17 00:00:00 2001 +From: Tom Zanussi <tom.zanussi@intel.com> +Date: Tue, 3 Jul 2012 13:07:23 -0500 +Subject: perf: change --root to --prefix for python install + +Otherwise we get the sysroot path appended to the build path, not what +we want. + +Signed-off-by: Tom Zanussi <tom.zanussi@intel.com> + +Upstream-Status: Inappropriate + +Taken from linux-yocto, v5.15/standard/base +https://git.yoctoproject.org/linux-yocto/commit?id=b8cd0e429bf75b673c438a8277d4bc74327df992&h=v5.15%2Fstandard%2Fbase + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + tools/perf/Makefile.perf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +(limited to 'tools/perf/Makefile.perf') + +diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf +index 8f738e11356d..ee945d8e3996 100644 +--- a/tools/perf/Makefile.perf ++++ b/tools/perf/Makefile.perf +@@ -1022,7 +1022,7 @@ install-bin: install-tools install-tests install-traceevent-plugins + install: install-bin try-install-man + + install-python_ext: +- $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)' ++ $(PYTHON_WORD) util/setup.py --quiet install --prefix='$(DESTDIR_SQ)/usr' + + # 'make install-doc' should call 'make -C Documentation install' + $(INSTALL_DOC_TARGETS): +-- +cgit + + diff --git a/recipes-kernel/linux/linux-intel_4.14.bb b/recipes-kernel/linux/linux-intel_4.14.bb deleted file mode 100644 index a421614a..00000000 --- a/recipes-kernel/linux/linux-intel_4.14.bb +++ /dev/null @@ -1,22 +0,0 @@ -require linux-intel.inc - -KBRANCH = "4.14/base" -KMETA_BRANCH = "yocto-4.14" - -# Fix for 32-bit perf issue. Remove when patch is backported to 4.14. -SRC_URI_append = " file://0001-perf-x86-32-explicitly-include-errno.h.patch \ - file://0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch \ - " - -DEPENDS += "elfutils-native openssl-native util-linux-native" - -LINUX_VERSION ?= "4.14.127" -SRCREV_machine ?= "25b00bbd0aeadd37904459016f1e3653130ee386" -SRCREV_meta ?= "bc35d5bd224ab031440a69f9806d839db382f05c" - -# For Crystalforest and Romley -KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio" -KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc" diff --git a/recipes-kernel/linux/linux-intel_4.19.bb b/recipes-kernel/linux/linux-intel_4.19.bb deleted file mode 100644 index 7ab28c7c..00000000 --- a/recipes-kernel/linux/linux-intel_4.19.bb +++ /dev/null @@ -1,21 +0,0 @@ -require linux-intel.inc - -KBRANCH = "4.19/base" -KMETA_BRANCH = "yocto-4.19" - -LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" - -SRC_URI_append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch" - -DEPENDS += "elfutils-native openssl-native util-linux-native" - -LINUX_VERSION ?= "4.19.55" -SRCREV_machine ?= "3347a3790f0a2e332180e353909cbd262dabd70e" -SRCREV_meta ?= "ad235db461bf4595c668700ca8a909c322009cc1" - -# For Crystalforest and Romley -KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio" -KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio" - -# Functionality flags -KERNEL_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 @@ +require linux-intel.inc + +SRC_URI:prepend = "git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \ + " +KBRANCH = "6.6/linux" +KMETA_BRANCH = "yocto-6.6" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +DEPENDS += "elfutils-native openssl-native util-linux-native" + +LINUX_VERSION_EXTENSION ??= "-intel-pk-${LINUX_KERNEL_TYPE}" + +LINUX_VERSION ?= "6.6.25" +SRCREV_machine ?= "lts-v6.6.25-linux-240415T215440Z" +SRCREV_meta ?= "c3d1322fb6ff68cdcf4d7a3c1140d81bfdc1320a" + +# Functionality flags +KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc" + +UPSTREAM_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 @@ +require linux-intel.inc + +SRC_URI:prepend = "git://github.com/intel/mainline-tracking.git;protocol=https;name=machine;nobranch=1; \ + " +KMETA_BRANCH = "master" + +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +DEPENDS += "elfutils-native openssl-native util-linux-native" + +LINUX_VERSION_EXTENSION ??= "-mainline-tracking-${LINUX_KERNEL_TYPE}" + +LINUX_VERSION ?= "6.8" +SRCREV_machine ?= "efbae83db36abbbbdb946d4f7bbdfda174107cd2" +SRCREV_meta ?= "27907f391a4fc508da21358b13419c6e86926c34" + +# Functionality flags +KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc" + +UPSTREAM_CHECK_GITTAGREGEX = "^mainline-tracking-v6.7-rc3-linux-(?P<pver>(\d+)T(\d+)Z)$" diff --git a/recipes-kernel/linux/linux-yocto-dev.bbappend b/recipes-kernel/linux/linux-yocto-dev.bbappend index 6173148c..deb19940 100644 --- a/recipes-kernel/linux/linux-yocto-dev.bbappend +++ b/recipes-kernel/linux/linux-yocto-dev.bbappend @@ -1,21 +1,21 @@ -FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:" +FILESEXTRAPATHS:prepend:intel-x86-common := "${THISDIR}/${PN}:" -COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}" -KMACHINE_core2-32-intel-common = "intel-core2-32" -KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}" +COMPATIBLE_MACHINE:core2-32-intel-common = "${MACHINE}" +KMACHINE:core2-32-intel-common = "intel-core2-32" +KERNEL_FEATURES:append:core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}" -COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}" -KMACHINE_corei7-64-intel-common = "intel-corei7-64" -KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}" +COMPATIBLE_MACHINE:corei7-64-intel-common = "${MACHINE}" +KMACHINE:corei7-64-intel-common = "intel-corei7-64" +KERNEL_FEATURES:append:corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}" # NOTE: We do not set SRCREVs here as -dev is intended to be built with AUTOREV # and setting them here breaks the default mechanism to use AUTOREV if the # default SRCREV is set and linux-yocto-dev is the preferred provider. # For Crystalforest and Romley -KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio" -KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio" +KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " uio" +KERNEL_MODULE_AUTOLOAD:append:corei7-64-intel-common = " uio" # For FRI2, NUC -KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi" -KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi" +KERNEL_MODULE_AUTOLOAD:append:core2-32-intel-common = " iwlwifi" +KERNEL_MODULE_AUTOLOAD:append:corei7-64-intel-common = " iwlwifi" diff --git a/recipes-kernel/linux/linux-yocto-rt_4.19.bbappend b/recipes-kernel/linux/linux-yocto-rt_%.bbappend index daa7dd6b..daa7dd6b 100644 --- a/recipes-kernel/linux/linux-yocto-rt_4.19.bbappend +++ b/recipes-kernel/linux/linux-yocto-rt_%.bbappend diff --git a/recipes-kernel/linux/linux-yocto-rt_5.0.bbappend b/recipes-kernel/linux/linux-yocto-rt_5.0.bbappend deleted file mode 100644 index daa7dd6b..00000000 --- a/recipes-kernel/linux/linux-yocto-rt_5.0.bbappend +++ /dev/null @@ -1 +0,0 @@ -require meta-intel-compat-kernel.inc diff --git a/recipes-kernel/linux/linux-yocto_%.bbappend b/recipes-kernel/linux/linux-yocto_%.bbappend index 7c29be14..9f3d43e3 100644 --- a/recipes-kernel/linux/linux-yocto_%.bbappend +++ b/recipes-kernel/linux/linux-yocto_%.bbappend @@ -1,4 +1,6 @@ +require meta-intel-compat-kernel.inc + # The kernel build is 64-bit regardless, so include both common overrides. # Without this, the kernel will be missing vars that make it buildable for the # intel-corei7-64 machine. -MACHINEOVERRIDES_prepend_corei7-64-x32-intel-common = "corei7-64-intel-common:" +MACHINEOVERRIDES:prepend:corei7-64-x32-intel-common = "corei7-64-intel-common:" diff --git a/recipes-kernel/linux/linux-yocto_4.19.bbappend b/recipes-kernel/linux/linux-yocto_4.19.bbappend deleted file mode 100644 index daa7dd6b..00000000 --- a/recipes-kernel/linux/linux-yocto_4.19.bbappend +++ /dev/null @@ -1 +0,0 @@ -require meta-intel-compat-kernel.inc diff --git a/recipes-kernel/linux/linux-yocto_5.0.bbappend b/recipes-kernel/linux/linux-yocto_5.0.bbappend deleted file mode 100644 index daa7dd6b..00000000 --- a/recipes-kernel/linux/linux-yocto_5.0.bbappend +++ /dev/null @@ -1 +0,0 @@ -require 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 be5056c2..0c861e13 100644 --- a/recipes-kernel/linux/meta-intel-compat-kernel.inc +++ b/recipes-kernel/linux/meta-intel-compat-kernel.inc @@ -3,11 +3,12 @@ KERNEL_FEATURES_INTEL_COMMON ?= "" -COMPATIBLE_MACHINE_intel-x86-common = "${MACHINE}" -KERNEL_FEATURES_intel-x86-common = "${KERNEL_FEATURES_INTEL_COMMON}" +COMPATIBLE_MACHINE:intel-x86-common = "${MACHINE}" +KERNEL_FEATURES:intel-x86-common = "${KERNEL_FEATURES_INTEL_COMMON}" -KMACHINE_corei7-64-intel-common = "intel-corei7-64" -KMACHINE_core2-32-intel-common = "intel-core2-32" +KMACHINE:corei7-64-intel-common = "intel-corei7-64" +KMACHINE:core2-32-intel-common = "intel-core2-32" +KMACHINE:x86-64-v3-intel-common = "intel-corei7-64" INTEL_COMMON_AUTOLOAD ?= " uio iwlwifi i915" -KERNEL_MODULE_AUTOLOAD_intel-x86-common = " ${INTEL_COMMON_AUTOLOAD}" +KERNEL_MODULE_AUTOLOAD:intel-x86-common = " ${INTEL_COMMON_AUTOLOAD}" diff --git a/recipes-multimedia/itt/itt/0001-CMakeLists.txt-set-output-directory-path.patch b/recipes-multimedia/itt/itt/0001-CMakeLists.txt-set-output-directory-path.patch deleted file mode 100644 index 6009669a..00000000 --- a/recipes-multimedia/itt/itt/0001-CMakeLists.txt-set-output-directory-path.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 6bced614fe448ee7fc6216b528e2c5684446f9c6 Mon Sep 17 00:00:00 2001 -From: Naveen Saini <naveen.kumar.saini@intel.com> -Date: Tue, 14 May 2019 16:57:27 +0800 -Subject: [PATCH] CMakeLists.txt: set output directory path - -Installer section of CMakeLists.txt expect bin -direcotry should be present at PROJECT_SOURCE_DIR - -set(SEA_PROJECT_BIN ${PROJECT_SOURCE_DIR}/bin) - -Upstream-Status: Inappropriate - -Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> ---- - CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 479c443..01f0124 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -65,7 +65,7 @@ foreach (Flag ${Flags}) - message(STATUS "${Flag} = ${${Flag}}") - endforeach() - --set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../../bin) -+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) - - set(EXECUTABLE_OUTPUT_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - set(LIBRARY_OUTPUT_PATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) --- -2.17.0 - diff --git a/recipes-multimedia/itt/itt_17.0.bb b/recipes-multimedia/itt/itt_17.0.bb deleted file mode 100644 index a40a2e9b..00000000 --- a/recipes-multimedia/itt/itt_17.0.bb +++ /dev/null @@ -1,30 +0,0 @@ -SUMMARY = "Intel® Single Event API" -DESCRIPTION = "Intel® SEAPI is the translator of itt_notify calls into \ -several OS specific and third party tracing formats. \ -You can use it as memory/performance/whatever profiler." - -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://sea_itt_lib/Copyright.txt;md5=7d54dfc8860742fb06b9c5ad28f41fcd" - -SRC_URI = "\ - git://github.com/intel/IntelSEAPI.git;protocol=https \ - file://0001-CMakeLists.txt-set-output-directory-path.patch \ -" -SRCREV="36bff07521afffc0c0f7db79252338954ca7e6dd" -S = "${WORKDIR}/git" - -inherit pkgconfig cmake - -EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=Release" -EXTRA_OECMAKE += "-DDCO_PILOT=0" -EXTRA_OECMAKE += "${@oe.utils.conditional('TARGET_ARCH','x86_64','','-DFORCE_32=ON',d)}" - -COMPATIBLE_HOST_libc-musl_class-target = "null" - -do_install() { - install -d -m 755 ${D}${libdir} ${D}${includedir} - install -m 644 ${S}/bin/*.a ${D}${libdir} - install -m 644 ${S}/ittnotify/include/ittnotify.h ${D}${includedir} -} - -RDEPENDS_${PN}-dev_remove = "${PN} (= ${EXTENDPKGV})" diff --git a/recipes-multimedia/itt/itt_3.24.6.bb b/recipes-multimedia/itt/itt_3.24.6.bb new file mode 100644 index 00000000..1c4759f9 --- /dev/null +++ b/recipes-multimedia/itt/itt_3.24.6.bb @@ -0,0 +1,39 @@ +SUMMARY = "Intel® Instrumentation and Tracing Technology (ITT) and Just-In-Time (JIT) API" +DESCRIPTION = "The Instrumentation and Tracing Technology (ITT) API enables \ +application to generate and control the collection of trace data during its \ +execution across different Intel tools." + +LICENSE = "BSD-3-Clause & GPL-2.0-only" +LIC_FILES_CHKSUM = "file://LICENSES/BSD-3-Clause.txt;md5=c551872bcf41ce707df54c722edeca7b \ + file://LICENSES/GPL-2.0-only.txt;md5=e2d76e7801260c21b90eea3605508ad6 \ + " + +SRC_URI = "git://github.com/intel/ittapi.git;protocol=https;branch=master" +SRCREV = "ec077431fc725dba590b09b2cec5137878b14783" +S = "${WORKDIR}/git" +PE = "1" + +UPSTREAM_CHECK_GITTAGREGEX = "^v(?P<pver>(\d+(\.\d+)+))$" + +COMPATIBLE_HOST = '(i.86|x86_64).*-linux' + +inherit pkgconfig cmake + +EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=Release" +EXTRA_OECMAKE += "${@oe.utils.conditional('TARGET_ARCH','x86_64','','-DFORCE_32=ON',d)}" + +do_install() { + install -d -m 755 ${D}${libdir} ${D}${includedir}/ittnotify + install -m 644 ${B}/bin/*.a ${D}${libdir} + cp -r ${S}/include/* ${D}${includedir}/ittnotify + cp -r ${S}/src/ittnotify/*.h ${D}${includedir}/ittnotify + rm -r ${D}${includedir}/ittnotify/fortran/win32 + if [ "${TARGET_ARCH}" = "x86_64" ]; then + rm -r ${D}${includedir}/ittnotify/fortran/posix/x86 + else + rm -r ${D}${includedir}/ittnotify/fortran/posix/x86_64 + fi + +} + +RDEPENDS:${PN}-dev:remove = "${PN} (= ${EXTENDPKGV})" 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 @@ +From 1b303f417113ad1aa6b63fc024fbe4aa0c943f57 Mon Sep 17 00:00:00 2001 +From: Lim Siew Hoon <siew.hoon.lim@intel.com> +Date: Tue, 5 Sep 2023 16:13:42 +0800 +Subject: [PATCH 01/12] Disable vp9 padding on mtl. + +Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1720] + +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> +--- + media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --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 +index 844545a87..72265289c 100644 +--- 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 +@@ -284,7 +284,7 @@ static bool InitMtlMediaWaExt(struct GfxDeviceInfo *devInfo, + + MEDIA_WR_WA(waTable, WaDisableSetObjectCapture, 1); + +- MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 1); ++ MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 0); + + MEDIA_WR_WA(waTable, Wa_15013355402, 1); + +@@ -337,4 +337,4 @@ static struct LinuxDeviceInit arlDeviceInit = + }; + + static bool arlDeviceRegister = DeviceInfoFactory<LinuxDeviceInit>:: +- RegisterDevice((uint32_t)IGFX_ARROWLAKE, &arlDeviceInit); +\ No newline at end of file ++ RegisterDevice((uint32_t)IGFX_ARROWLAKE, &arlDeviceInit); +-- +2.40.1 + 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 @@ +From 1580f01ec5ad5afdad58c39dded999494275be10 Mon Sep 17 00:00:00 2001 +From: Lim Siew Hoon <siew.hoon.lim@intel.com> +Date: Wed, 11 Oct 2023 15:36:21 +0800 +Subject: [PATCH 02/12] Force ARGB surface to tile4 for ACM + +Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1728] + +Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com> +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> +--- + media_driver/linux/common/ddi/media_libva_util.cpp | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/media_driver/linux/common/ddi/media_libva_util.cpp b/media_driver/linux/common/ddi/media_libva_util.cpp +index 63c173419..73be76366 100755 +--- a/media_driver/linux/common/ddi/media_libva_util.cpp ++++ b/media_driver/linux/common/ddi/media_libva_util.cpp +@@ -504,6 +504,7 @@ VAStatus DdiMediaUtil_AllocateSurface( + gmmCustomParams.Flags.Gpu.UnifiedAuxSurface = 0; + } + } ++ + break; + case TILING_X: + gmmCustomParams.Flags.Info.TiledX = true; +@@ -685,6 +686,15 @@ VAStatus DdiMediaUtil_AllocateSurface( + } + } + } ++ // There's no VAAPI interface for modifier query yet. As a workaround, always allocate ++ // RGB surface as tile4. ++ if ((format == Media_Format_A8R8G8B8 || ++ format == Media_Format_B10G10R10A2 | ++ format == Media_Format_A8B8G8R8 || ++ format == Media_Format_X8R8G8B8) && !MEDIA_IS_SKU(&mediaDrvCtx->SkuTable, FtrTileY)) ++ { ++ gmmParams.Flags.Info.Tile4 = true; ++ } + break; + case TILING_X: + gmmParams.Flags.Info.TiledX = true; +-- +2.40.1 + 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 @@ +From bb860c0bfe53060925b1dce50da4e6e94cfc8cae Mon Sep 17 00:00:00 2001 +From: huangli2018 <li.h.huang@intel.com> +Date: Wed, 20 Dec 2023 15:47:43 +0800 +Subject: [PATCH 04/13] Add device ID for ARL + +Add device ID for ARL + +Upstream-Status: Backport [https://github.com/intel/media-driver/commit/95cbfce81cafa3c24d9d4601d41a855093bc51fb] +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> +--- + .../linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --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 +index 426bd795f..7b73dfaff 100644 +--- a/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp ++++ b/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp +@@ -1,6 +1,6 @@ + /*===================== begin_copyright_notice ================================== + +-Copyright (c) 2022, Intel Corporation ++Copyright (c) 2023, Intel Corporation + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), +@@ -218,4 +218,13 @@ static struct GfxDeviceInfo arlInfo = { + }; + + static bool arlsDevice7d67 = DeviceInfoFactory<GfxDeviceInfo>:: +- RegisterDevice(0x7D67, &arlInfo); +\ No newline at end of file ++ RegisterDevice(0x7D67, &arlInfo); ++ ++static bool arlhDevice7d51 = DeviceInfoFactory<GfxDeviceInfo>:: ++ RegisterDevice(0x7D51, &arlInfo); ++ ++static bool arlhDevice7dd1 = DeviceInfoFactory<GfxDeviceInfo>:: ++ RegisterDevice(0x7DD1, &arlInfo); ++ ++static bool arlhDevice7d41 = DeviceInfoFactory<GfxDeviceInfo>:: ++ RegisterDevice(0x7D41, &arlInfo); +\ No newline at end of file +-- +2.40.1 + 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 @@ +From bbd3af94a6146d702909ff7e25b0c0547ecbb895 Mon Sep 17 00:00:00 2001 +From: jlui <jonathan.ming.jun.lui@intel.com> +Date: Wed, 15 Nov 2023 10:48:34 +0800 +Subject: [PATCH 05/13] Add XR24 support to DMABuf + +This is to enable XR24/BGRX support for DMABuf + +Signed-off-by: Lui, Jonathan Ming Jun <jonathan.ming.jun.lui@intel.com> + +Upstream-Status: Backport [https://github.com/intel/media-driver/commit/3910b7029f5416fd0b5972f940c65d0a82c48c7b] + +Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com> +--- + .../vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --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 +index fdcca8873..2dcf440a4 100644 +--- 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 +@@ -55,8 +55,9 @@ static ProfileSurfaceAttribInfo surfaceAttribInfo_VAEntrypointVideoProc_VAProfil + {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('4', '2', '2', 'V')}}}, + {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'A')}}}, + {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('B', 'G', 'R', 'A')}}}, +- {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, { VA_FOURCC('R', 'G', 'B', 'P')}}}, ++ {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'P')}}}, + {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'X')}}}, ++ {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('X', 'R', 'G', 'B')}}}, + {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('P', '0', '1', '0')}}}, + {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', '2', '4')}}}, + {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC_ARGB}}}, +-- +2.40.1 + 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 @@ +From 67fb6128adf8fc03d429393e98f0982b42a40e64 Mon Sep 17 00:00:00 2001 +From: Zhang_Xinfeng <carl.zhang@intel.com> +Date: Wed, 27 Dec 2023 09:59:29 +0800 +Subject: [PATCH 06/12] add INTEL MEDIA ALLOC refineE to specify the memory + alignment + +this key is used to allocate bigger pages +env variable INTEL_MEDIA_ALLOC_refineE also could be used +and was not enabled by default +mode 0 is default mode +mode 1 is < 64 align to 64 +mode 2 is > 1M && <= 3M align to 1M, >3M align to 2M +mode 3 is mode 1 & mode 2 + +Upstream-Status: Backport [https://github.com/intel/media-driver/commit/765dd939dcc5562d18cca18e5eda505bda952797] +Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com> +--- + .../linux/common/os/i915/mos_bufmgr.c | 75 +++++++++++++++---- + .../common/os/i915_production/mos_bufmgr.c | 1 + + .../common/os/mos_context_specific_next.cpp | 21 +++++- + .../common/os/mos_user_setting_specific.cpp | 7 ++ + 4 files changed, 90 insertions(+), 14 deletions(-) + +diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr.c b/media_softlet/linux/common/os/i915/mos_bufmgr.c +index c0b3ba027..b623d0129 100644 +--- a/media_softlet/linux/common/os/i915/mos_bufmgr.c ++++ b/media_softlet/linux/common/os/i915/mos_bufmgr.c +@@ -138,7 +138,7 @@ struct mos_bufmgr_gem { + int exec_count; + + /** Array of lists of cached gem objects of power-of-two sizes */ +- struct mos_gem_bo_bucket cache_bucket[14 * 4]; ++ struct mos_gem_bo_bucket cache_bucket[64]; + int num_buckets; + time_t time; + +@@ -3852,9 +3852,9 @@ add_bucket(struct mos_bufmgr_gem *bufmgr_gem, int size) + } + + static void +-init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem) ++init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem, uint8_t alloc_mode) + { +- unsigned long size, cache_max_size = 64 * 1024 * 1024; ++ unsigned long size, cache_max_size = 64 * 1024 * 1024, unit_size; + + /* OK, so power of two buckets was too wasteful of memory. + * Give 3 other sizes between each power of two, to hopefully +@@ -3864,17 +3864,63 @@ init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem) + * width/height alignment and rounding of sizes to pages will + * get us useful cache hit rates anyway) + */ +- add_bucket(bufmgr_gem, 4096); +- add_bucket(bufmgr_gem, 4096 * 2); +- add_bucket(bufmgr_gem, 4096 * 3); ++ /* alloc_mode 0 is default alloc_mode ++ * alloc_mode 1 rounding up to 64K for all < 1M ++ * alloc_mode 2 rounding up to 2M for size> 1M ++ * alloc_mode 3 rounding up to 2M for size > 1M and 64K for size <= 1M */ ++ if( alloc_mode > 3 ) ++ alloc_mode = 0; ++ ++ if ( 0 == alloc_mode || 2 == alloc_mode) ++ { ++ // < 1M normal alloc_mode ++ add_bucket(bufmgr_gem, 4096); ++ add_bucket(bufmgr_gem, 4096 * 2); ++ add_bucket(bufmgr_gem, 4096 * 3); ++ /* Initialize the linked lists for BO reuse cache. */ ++ for (size = 4 * 4096; size < 1024 * 1024; size *= 2) { ++ add_bucket(bufmgr_gem, size); ++ add_bucket(bufmgr_gem, size + size * 1 / 4); ++ add_bucket(bufmgr_gem, size + size * 2 / 4); ++ add_bucket(bufmgr_gem, size + size * 3 / 4); ++ } + +- /* Initialize the linked lists for BO reuse cache. */ +- for (size = 4 * 4096; size <= cache_max_size; size *= 2) { +- add_bucket(bufmgr_gem, size); ++ add_bucket(bufmgr_gem, 1024 * 1024); ++ } ++ if (1 == alloc_mode || 3 == alloc_mode) ++ { ++ // < 1M 64k alignment ++ unit_size = 64 * 1024; ++ for (size = unit_size; size <= 1024 * 1024; size += unit_size) ++ { ++ add_bucket(bufmgr_gem, size); ++ } ++ } ++ if( 0 == alloc_mode || 1 == alloc_mode) ++ { ++ //> 1M is normal alloc_mode ++ add_bucket(bufmgr_gem, 1280 * 1024); ++ add_bucket(bufmgr_gem, 1536 * 1024); ++ add_bucket(bufmgr_gem, 1792 * 1024); ++ ++ for (size = 2 * 1024 * 1024; size < cache_max_size; size *= 2) { ++ add_bucket(bufmgr_gem, size); ++ add_bucket(bufmgr_gem, size + size * 1 / 4); ++ add_bucket(bufmgr_gem, size + size * 2 / 4); ++ add_bucket(bufmgr_gem, size + size * 3 / 4); ++ } ++ } ++ if( 2 == alloc_mode || 3 == alloc_mode) ++ { ++ //> 1M rolling to 2M ++ unit_size = 2 * 1024 * 1024; ++ add_bucket(bufmgr_gem, unit_size); ++ add_bucket(bufmgr_gem, 3 * 1024 * 1024); + +- add_bucket(bufmgr_gem, size + size * 1 / 4); +- add_bucket(bufmgr_gem, size + size * 2 / 4); +- add_bucket(bufmgr_gem, size + size * 3 / 4); ++ for (size = 4 * 1024 * 1024; size <= cache_max_size; size += unit_size) ++ { ++ add_bucket(bufmgr_gem, size); ++ } + } + } + +@@ -5100,6 +5146,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size) + struct drm_i915_gem_get_aperture aperture; + drm_i915_getparam_t gp; + int ret, tmp; ++ uint8_t alloc_mode; + bool exec2 = false; + + pthread_mutex_lock(&bufmgr_list_mutex); +@@ -5352,10 +5399,12 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size) + * + * Every 4 was too few for the blender benchmark. + */ ++ alloc_mode = (uint8_t)(batch_size & 0xff); ++ batch_size &= 0xffffff00; + bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2; + + DRMINITLISTHEAD(&bufmgr_gem->named); +- init_cache_buckets(bufmgr_gem); ++ init_cache_buckets(bufmgr_gem,alloc_mode); + + DRMLISTADD(&bufmgr_gem->managers, &bufmgr_list); + +diff --git a/media_softlet/linux/common/os/i915_production/mos_bufmgr.c b/media_softlet/linux/common/os/i915_production/mos_bufmgr.c +index 90b5685b1..b3574f7d3 100644 +--- a/media_softlet/linux/common/os/i915_production/mos_bufmgr.c ++++ b/media_softlet/linux/common/os/i915_production/mos_bufmgr.c +@@ -5403,6 +5403,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size) + * + * Every 4 was too few for the blender benchmark. + */ ++ batch_size &= 0xffffff00; + bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2; + + DRMINITLISTHEAD(&bufmgr_gem->named); +diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp +index 9e9e3ff7e..543e262d1 100644 +--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp ++++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp +@@ -64,6 +64,7 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext) + uint32_t iDeviceId = 0; + MOS_STATUS eStatus = MOS_STATUS_SUCCESS; + uint32_t value = 0; ++ uint32_t mode = 0; + MediaUserSettingSharedPtr userSettingPtr = nullptr; + + MOS_OS_FUNCTION_ENTER; +@@ -89,7 +90,25 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext) + + userSettingPtr = MosInterface::MosGetUserSettingInstance(osDriverContext); + +- m_bufmgr = mos_bufmgr_gem_init(m_fd, BATCH_BUFFER_SIZE, &m_deviceType); ++ mode = BATCH_BUFFER_SIZE; ++ ReadUserSetting( ++ userSettingPtr, ++ value, ++ "INTEL MEDIA ALLOC MODE", ++ MediaUserSetting::Group::Device); ++ ++ if (value) ++ { ++ mode |= (value & 0x000000ff); ++ } ++ value = 0; ++ /* no need to set batch buffer size after switch to softpin ++ * keep it, just for test during relocation to softpin transition ++ * now , it could be a debug method , but is actually useless ++ * so it is safe to reuse the lowest 8bit to convey addtional information ++ * more suitable solution is deleting it , or add additional parameter*/ ++ ++ m_bufmgr = mos_bufmgr_gem_init(m_fd, (int)mode, &m_deviceType); + if (nullptr == m_bufmgr) + { + MOS_OS_ASSERTMESSAGE("Not able to allocate buffer manager, fd=0x%d", m_fd); +diff --git a/media_softlet/linux/common/os/mos_user_setting_specific.cpp b/media_softlet/linux/common/os/mos_user_setting_specific.cpp +index 6be8b4298..caed584f4 100644 +--- a/media_softlet/linux/common/os/mos_user_setting_specific.cpp ++++ b/media_softlet/linux/common/os/mos_user_setting_specific.cpp +@@ -52,5 +52,12 @@ MOS_STATUS MosUserSetting::InitMosUserSettingSpecific(MediaUserSettingSharedPtr + 0, + true); //"Enable VM Bind." + ++ DeclareUserSettingKey( ++ userSettingPtr, ++ "INTEL MEDIA ALLOC MODE", ++ MediaUserSetting::Group::Device, ++ 0, ++ false); // ++ + return MOS_STATUS_SUCCESS; + } +-- +2.40.1 + 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 @@ +From b1aebef4d342c77fc2b9c5efbf20aeb2aa9d634e Mon Sep 17 00:00:00 2001 +From: Wang_Pingli <pingli.wang@intel.com> +Date: Thu, 28 Dec 2023 16:44:40 +0800 +Subject: [PATCH 07/12] Skip report keys + +Skip to report keys + +Upstream-Status: Backport [https://github.com/intel/media-driver/commit/68ce25b0a6fa90614eb4734c8680aa4e149e8323] +Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com> +--- + .../os/osservice/mos_utilities_specific.cpp | 30 +++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +diff --git a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp +index b5df29f06..96785e21e 100644 +--- a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp ++++ b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp +@@ -67,6 +67,8 @@ int32_t g_mosMemoryFailSimulateAllocCounter = 0; + int32_t *MosUtilities::m_mosAllocMemoryFailSimulateAllocCounter = &g_mosMemoryFailSimulateAllocCounter; + #endif + ++static bool s_skipToReportReg = false; ++ + double MosUtilities::MosGetTime() + { + struct timespec ts = {}; +@@ -1551,6 +1553,10 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap ®BufferMap) + { + std::string id = ""; + ++ static const char *disableReportRegKeyList[] = { ++ "INTEL MEDIA ALLOC MODE" ++ }; ++ static const uint32_t disableReportRegKeyListCount = sizeof(disableReportRegKeyList) / sizeof(disableReportRegKeyList[0]); + while(!regStream.eof()) + { + std::string line = ""; +@@ -1585,8 +1591,22 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap ®BufferMap) + { + std::string name = line.substr(0,pos); + std::string value = line.substr(pos+1); +- auto &keys = regBufferMap[id]; +- keys[name] = value; ++ if (name.size() > 0 && value.size() > 0) ++ { ++ auto &keys = regBufferMap[id]; ++ keys[name] = value; ++ if (s_skipToReportReg == false && id == USER_SETTING_CONFIG_PATH) ++ { ++ for (uint32_t i = 0; i < disableReportRegKeyListCount; i++) ++ { ++ if (strcmp(name.c_str(), disableReportRegKeyList[i]) == 0) ++ { ++ s_skipToReportReg = true; ++ break; ++ } ++ } ++ } ++ } + } + } + } +@@ -1606,6 +1626,12 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap ®BufferMap) + MOS_STATUS MosUtilities::MosUninitializeReg(RegBufferMap ®BufferMap) + { + MOS_STATUS status = MOS_STATUS_SUCCESS; ++ ++ if (s_skipToReportReg) ++ { ++ return MOS_STATUS_SUCCESS; ++ } ++ + if (regBufferMap.size() == 0) + { + return MOS_STATUS_SUCCESS; +-- +2.40.1 + 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 @@ +From ac2ffac8d4aade216cc361c6c7120c13a8780719 Mon Sep 17 00:00:00 2001 +From: "Soon, Thean Siew" <thean.siew.soon@intel.com> +Date: Thu, 28 Dec 2023 18:42:59 +0000 +Subject: [PATCH 08/12] Limit INTEL MEDIA ALLOC MODE to MTL and ARL only + +Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1754] + +Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com> +--- + .../common/os/i915/include/mos_bufmgr_api.h | 1 + + .../common/os/i915/include/mos_bufmgr_priv.h | 2 +- + .../linux/common/os/i915/mos_bufmgr.c | 69 +++++++++++++++---- + .../linux/common/os/i915/mos_bufmgr_api.c | 19 +++++ + .../os/i915_production/mos_bufmgr_priv.h | 1 + + .../common/os/mos_context_specific_next.cpp | 36 +++++----- + 6 files changed, 94 insertions(+), 34 deletions(-) + +diff --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 +index 71cc01099..ab4f1ba89 100644 +--- a/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h ++++ b/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h +@@ -299,6 +299,7 @@ void mos_bufmgr_enable_vmbind(struct mos_bufmgr *bufmgr); + void mos_bufmgr_disable_object_capture(struct mos_bufmgr *bufmgr); + int mos_bufmgr_get_memory_info(struct mos_bufmgr *bufmgr, char *info, uint32_t length); + int mos_bufmgr_get_devid(struct mos_bufmgr *bufmgr); ++void mos_bufmgr_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode); + + int mos_bo_map_unsynchronized(struct mos_linux_bo *bo); + int mos_bo_map_gtt(struct mos_linux_bo *bo); +diff --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 +index 63f69f985..6fd58f827 100644 +--- a/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h ++++ b/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h +@@ -358,9 +358,9 @@ struct mos_bufmgr { + void (*disable_object_capture)(struct mos_bufmgr *bufmgr) = nullptr; + int (*get_memory_info)(struct mos_bufmgr *bufmgr, char *info, uint32_t length) = nullptr; + int (*get_devid)(struct mos_bufmgr *bufmgr) = nullptr; ++ void (*realloc_cache)(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) = nullptr; + int (*query_engines_count)(struct mos_bufmgr *bufmgr, + unsigned int *nengine) = nullptr; +- + int (*query_engines)(struct mos_bufmgr *bufmgr, + __u16 engine_class, + __u64 caps, +diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr.c b/media_softlet/linux/common/os/i915/mos_bufmgr.c +index b623d0129..2814ddbb7 100644 +--- a/media_softlet/linux/common/os/i915/mos_bufmgr.c ++++ b/media_softlet/linux/common/os/i915/mos_bufmgr.c +@@ -2426,19 +2426,9 @@ mos_gem_bo_start_gtt_access(struct mos_linux_bo *bo, int write_enable) + } + + static void +-mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr) ++mos_bufmgr_cleanup_cache(struct mos_bufmgr_gem *bufmgr_gem) + { +- struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *) bufmgr; +- struct drm_gem_close close_bo; +- int i, ret; +- +- free(bufmgr_gem->exec2_objects); +- free(bufmgr_gem->exec_objects); +- free(bufmgr_gem->exec_bos); +- pthread_mutex_destroy(&bufmgr_gem->lock); +- +- /* Free any cached buffer objects we were going to reuse */ +- for (i = 0; i < bufmgr_gem->num_buckets; i++) { ++ for (int i = 0; i < bufmgr_gem->num_buckets; i++) { + struct mos_gem_bo_bucket *bucket = + &bufmgr_gem->cache_bucket[i]; + struct mos_bo_gem *bo_gem; +@@ -2450,7 +2440,25 @@ mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr) + + mos_gem_bo_free(&bo_gem->bo); + } ++ bufmgr_gem->cache_bucket[i].size = 0; + } ++ bufmgr_gem->num_buckets = 0; ++} ++ ++static void ++mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr) ++{ ++ struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *)bufmgr; ++ struct drm_gem_close close_bo; ++ int ret; ++ ++ free(bufmgr_gem->exec2_objects); ++ free(bufmgr_gem->exec_objects); ++ free(bufmgr_gem->exec_bos); ++ pthread_mutex_destroy(&bufmgr_gem->lock); ++ ++ /* Free any cached buffer objects we were going to reuse */ ++ mos_bufmgr_cleanup_cache(bufmgr_gem); + + /* Release userptr bo kept hanging around for optimisation. */ + if (bufmgr_gem->userptr_active.ptr) { +@@ -3852,9 +3860,41 @@ add_bucket(struct mos_bufmgr_gem *bufmgr_gem, int size) + } + + static void +-init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem, uint8_t alloc_mode) ++init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem) ++{ ++ unsigned long size, cache_max_size = 64 * 1024 * 1024; ++ ++ /* OK, so power of two buckets was too wasteful of memory. ++ * Give 3 other sizes between each power of two, to hopefully ++ * cover things accurately enough. (The alternative is ++ * probably to just go for exact matching of sizes, and assume ++ * that for things like composited window resize the tiled ++ * width/height alignment and rounding of sizes to pages will ++ * get us useful cache hit rates anyway) ++ */ ++ add_bucket(bufmgr_gem, 4096); ++ add_bucket(bufmgr_gem, 4096 * 2); ++ add_bucket(bufmgr_gem, 4096 * 3); ++ ++ /* Initialize the linked lists for BO reuse cache. */ ++ for (size = 4 * 4096; size <= cache_max_size; size *= 2) { ++ add_bucket(bufmgr_gem, size); ++ ++ add_bucket(bufmgr_gem, size + size * 1 / 4); ++ add_bucket(bufmgr_gem, size + size * 2 / 4); ++ add_bucket(bufmgr_gem, size + size * 3 / 4); ++ } ++} ++ ++static void ++mos_gem_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) + { + unsigned long size, cache_max_size = 64 * 1024 * 1024, unit_size; ++ struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *)bufmgr; ++ ++ // Clean up the pre-allocated cache before re-allocating according ++ // to alloc_mode ++ mos_bufmgr_cleanup_cache(bufmgr_gem); + + /* OK, so power of two buckets was too wasteful of memory. + * Give 3 other sizes between each power of two, to hopefully +@@ -5218,6 +5258,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size) + bufmgr_gem->bufmgr.disable_object_capture = mos_gem_disable_object_capture; + bufmgr_gem->bufmgr.get_memory_info = mos_gem_get_memory_info; + bufmgr_gem->bufmgr.get_devid = mos_gem_get_devid; ++ bufmgr_gem->bufmgr.realloc_cache = mos_gem_realloc_cache; + bufmgr_gem->bufmgr.set_context_param = mos_gem_set_context_param; + bufmgr_gem->bufmgr.set_context_param_parallel = mos_gem_set_context_param_parallel; + bufmgr_gem->bufmgr.set_context_param_load_balance = mos_gem_set_context_param_load_balance; +@@ -5404,7 +5445,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size) + bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2; + + DRMINITLISTHEAD(&bufmgr_gem->named); +- init_cache_buckets(bufmgr_gem,alloc_mode); ++ init_cache_buckets(bufmgr_gem); + + DRMLISTADD(&bufmgr_gem->managers, &bufmgr_list); + +diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr_api.c b/media_softlet/linux/common/os/i915/mos_bufmgr_api.c +index abe8ef96a..d0e02c267 100644 +--- a/media_softlet/linux/common/os/i915/mos_bufmgr_api.c ++++ b/media_softlet/linux/common/os/i915/mos_bufmgr_api.c +@@ -1204,6 +1204,25 @@ mos_bufmgr_get_devid(struct mos_bufmgr *bufmgr) + } + } + ++void ++mos_bufmgr_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) ++{ ++ if(!bufmgr) ++ { ++ MOS_OS_CRITICALMESSAGE("Input null ptr\n"); ++ return; ++ } ++ ++ if (bufmgr->realloc_cache) ++ { ++ return bufmgr->realloc_cache(bufmgr, alloc_mode); ++ } ++ else ++ { ++ MOS_OS_CRITICALMESSAGE("Unsupported\n"); ++ } ++} ++ + int + mos_query_engines_count(struct mos_bufmgr *bufmgr, + unsigned int *nengine) +diff --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 +index c3b765a4c..1d7f7edb0 100644 +--- a/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h ++++ b/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h +@@ -358,6 +358,7 @@ struct mos_bufmgr { + void (*disable_object_capture)(struct mos_bufmgr *bufmgr) = nullptr; + int (*get_memory_info)(struct mos_bufmgr *bufmgr, char *info, uint32_t length) = nullptr; + int (*get_devid)(struct mos_bufmgr *bufmgr) = nullptr; ++ void (*realloc_cache)(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) = nullptr; + int (*query_engines_count)(struct mos_bufmgr *bufmgr, + unsigned int *nengine) = nullptr; + +diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp +index 543e262d1..87059f538 100644 +--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp ++++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp +@@ -90,25 +90,7 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext) + + userSettingPtr = MosInterface::MosGetUserSettingInstance(osDriverContext); + +- mode = BATCH_BUFFER_SIZE; +- ReadUserSetting( +- userSettingPtr, +- value, +- "INTEL MEDIA ALLOC MODE", +- MediaUserSetting::Group::Device); +- +- if (value) +- { +- mode |= (value & 0x000000ff); +- } +- value = 0; +- /* no need to set batch buffer size after switch to softpin +- * keep it, just for test during relocation to softpin transition +- * now , it could be a debug method , but is actually useless +- * so it is safe to reuse the lowest 8bit to convey addtional information +- * more suitable solution is deleting it , or add additional parameter*/ +- +- m_bufmgr = mos_bufmgr_gem_init(m_fd, (int)mode, &m_deviceType); ++ m_bufmgr = mos_bufmgr_gem_init(m_fd, BATCH_BUFFER_SIZE, &m_deviceType); + if (nullptr == m_bufmgr) + { + MOS_OS_ASSERTMESSAGE("Not able to allocate buffer manager, fd=0x%d", m_fd); +@@ -151,6 +133,22 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext) + return eStatus; + } + ++ if (m_platformInfo.eProductFamily == IGFX_METEORLAKE || ++ m_platformInfo.eProductFamily == IGFX_ARROWLAKE) ++ { ++ ReadUserSetting( ++ userSettingPtr, ++ value, ++ "INTEL MEDIA ALLOC MODE", ++ MediaUserSetting::Group::Device); ++ ++ if (value) ++ { ++ mode = (value & 0x000000ff); ++ } ++ mos_bufmgr_realloc_cache(m_bufmgr, mode); ++ } ++ + ReadUserSetting( + userSettingPtr, + value, +-- +2.40.1 + 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 @@ +From 18c32247cbc0e9fabff7a847add099496af9e53f Mon Sep 17 00:00:00 2001 +From: "Soon, Thean Siew" <thean.siew.soon@intel.com> +Date: Mon, 8 Jan 2024 18:12:30 +0000 +Subject: [PATCH 09/12] Skip cache bucket realloc for default mode 0 + +Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1754] + +Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com> +--- + .../linux/common/os/mos_context_specific_next.cpp | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp +index 87059f538..9dbd5da79 100644 +--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp ++++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp +@@ -146,7 +146,12 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext) + { + mode = (value & 0x000000ff); + } +- mos_bufmgr_realloc_cache(m_bufmgr, mode); ++ ++ // Realloc cache only if it's not mode 0 ++ if (mode) ++ { ++ mos_bufmgr_realloc_cache(m_bufmgr, mode); ++ } + } + + ReadUserSetting( +-- +2.40.1 + 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 @@ +From 7291ab5206c5e172c6c94dcfbe4f1bc258f3b7a5 Mon Sep 17 00:00:00 2001 +From: WenshengZhang <wensheng.zhang@intel.com> +Date: Wed, 10 Jan 2024 14:08:37 +0800 +Subject: [PATCH 10/12] Fix failed 4k video wall test case and color corruption + of video composition + +Fix failed 4k video wall test case from 16CH video only show 1CH output and +corruption observed on certain number of video composition when doing +sample_multi_transcode. + +Upstream-Status: Backport [https://github.com/intel/media-driver/commit/38e14b1b97170b51586d00d1fa607e496b0c5825] +Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com> +--- + .../common/vp/kdll/hal_kerneldll_next.h | 1 + + .../vp/hal/packet/vp_render_fc_kernel.cpp | 7 ++ + .../common/vp/kdll/hal_kerneldll_next.c | 70 +++++++++++-------- + .../linux/common/vp/ddi/ddi_vp_functions.cpp | 20 ++---- + 4 files changed, 55 insertions(+), 43 deletions(-) + +diff --git a/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h b/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h +index 6447999b7..8e2ab371e 100644 +--- a/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h ++++ b/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h +@@ -588,6 +588,7 @@ typedef struct tagKdll_FilterEntry + Kdll_Scalingratio ScalingRatio; + Kdll_RenderMethod RenderMethod; + Kdll_SetCSCCoeffMethod SetCSCCoeffMode; ++ bool forceToTargetColorSpace; + } Kdll_FilterEntry, *PKdll_FilterEntry; + + // Structure that defines a compositing filter +diff --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 +index 8e982f67e..f8308fed1 100644 +--- 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 +@@ -775,6 +775,13 @@ MOS_STATUS VpRenderFcKernel::BuildFilter( + + for (i = 0; (i < (int)compParams->sourceCount) && (iMaxFilterSize > 0); i++) + { ++ if (i > 0) ++ { ++ if (!RECT1_CONTAINS_RECT2(compParams->source[0].surf->rcDst, compParams->source[i].surf->rcDst)) ++ { ++ pFilter->forceToTargetColorSpace = true; ++ } ++ } + src = &compParams->source[i]; + + //-------------------------------- +diff --git a/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c b/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c +index d8f7d429a..151f3b039 100644 +--- a/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c ++++ b/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c +@@ -2378,6 +2378,7 @@ bool KernelDll_SetupCSC( + Kdll_CSC_Matrix curr_matrix; + Kdll_CSC_Matrix *matrix = pCSC->Matrix; // Color Space conversion matrix + uint8_t * matrixID = pCSC->MatrixID; // CSC coefficient allocation table ++ bool forceToTargetColorSpace = false; + + // Clear all CSC matrices + MOS_ZeroMemory(matrix, sizeof(pCSC->Matrix)); +@@ -2395,6 +2396,10 @@ bool KernelDll_SetupCSC( + //---------------------------------------------------------------// + for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++) + { ++ if (pFilter->forceToTargetColorSpace) ++ { ++ forceToTargetColorSpace = true; ++ } + // Disable Procamp for all layers except Main Video + // Disable Procamp if source is RGB + if (pFilter->layer != Layer_MainVideo || +@@ -2456,44 +2461,51 @@ bool KernelDll_SetupCSC( + //---------------------------------------------------------------// + if (sel_cspace == CSpace_Any) + { +- int cs; +- for (cs = (CSpace_Any + 1); cs < CSpace_Count; cs++) ++ if (forceToTargetColorSpace) + { +- // Skip color spaces not in use +- cspace = (VPHAL_CSPACE)cs; +- if (!cspace_in_use[cspace]) +- { +- continue; +- } +- +- // xvYCC and BT are treated as same for CSC considerations (BT.x to xvYCC.x matrix is I) +- cspace = KernelDll_TranslateCspace(cspace); +- +- // Count # of CS conversions and matrices +- csc_count = 0; +- for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++) ++ sel_cspace = out_cspace; ++ } ++ else ++ { ++ int cs; ++ for (cs = (CSpace_Any + 1); cs < CSpace_Count; cs++) + { +- // Ignore layers where the Color Space may be set in software (colorfill, palletized) +- if (pFilter->cspace == CSpace_Any) ++ // Skip color spaces not in use ++ cspace = (VPHAL_CSPACE)cs; ++ if (!cspace_in_use[cspace]) + { + continue; + } + +- // Check if CSC/PA is required +- if (KernelDll_TranslateCspace(pFilter->cspace) != cspace || +- pFilter->procamp != DL_PROCAMP_DISABLED) ++ // xvYCC and BT are treated as same for CSC considerations (BT.x to xvYCC.x matrix is I) ++ cspace = KernelDll_TranslateCspace(cspace); ++ ++ // Count # of CS conversions and matrices ++ csc_count = 0; ++ for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++) + { +- csc_count++; ++ // Ignore layers where the Color Space may be set in software (colorfill, palletized) ++ if (pFilter->cspace == CSpace_Any) ++ { ++ continue; ++ } ++ ++ // Check if CSC/PA is required ++ if (KernelDll_TranslateCspace(pFilter->cspace) != cspace || ++ pFilter->procamp != DL_PROCAMP_DISABLED) ++ { ++ csc_count++; ++ } + } +- } + +- // Save best choice as requiring minimum number of CSC operations +- if ((sel_csc_count < 0) || // Initial value +- (csc_count < sel_csc_count) || // Minimum number of CSC operations +- (csc_count == sel_csc_count && cs == main_cspace)) // Use main cspace as default if same CSC count +- { +- sel_cspace = cspace; +- sel_csc_count = csc_count; ++ // Save best choice as requiring minimum number of CSC operations ++ if ((sel_csc_count < 0) || // Initial value ++ (csc_count < sel_csc_count) || // Minimum number of CSC operations ++ (csc_count == sel_csc_count && cs == main_cspace)) // Use main cspace as default if same CSC count ++ { ++ sel_cspace = cspace; ++ sel_csc_count = csc_count; ++ } + } + } + } +diff --git a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp +index 40d0b3fad..e60a6c69c 100644 +--- a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp ++++ b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp +@@ -2115,9 +2115,8 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill( + { + DDI_VP_FUNC_ENTER; + DDI_VP_CHK_NULL(vpHalRenderParams, "nullptr vpHalRenderParams.", VA_STATUS_ERROR_INVALID_PARAMETER); +- DDI_VP_CHK_NULL(vpHalRenderParams->pTarget[0],"nullptr pTarget[0].", VA_STATUS_ERROR_INVALID_PARAMETER); + +- if ((outBackGroundcolor >> 24) != 0 || vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB) ++ if ((outBackGroundcolor >> 24) != 0) + { + if (vpHalRenderParams->pColorFillParams == nullptr) + { +@@ -2126,18 +2125,11 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill( + + DDI_VP_CHK_NULL(vpHalRenderParams->pColorFillParams, "nullptr pColorFillParams.", VA_STATUS_ERROR_UNKNOWN); + +- if (vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB && (outBackGroundcolor >> 24) == 0) +- { +- // set color space for sRGB output +- vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; +- } +- else +- { +- // set background colorfill option +- vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor; +- vpHalRenderParams->pColorFillParams->bYCbCr = false; +- vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; +- } ++ // set background colorfill option ++ vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor; ++ vpHalRenderParams->pColorFillParams->bYCbCr = false; ++ vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; ++ + } + else + { +-- +2.40.1 + 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 @@ +From f8b4d982232d4c1330e1e5f5dcd7cd8ca94decba Mon Sep 17 00:00:00 2001 +From: WenshengZhang <wensheng.zhang@intel.com> +Date: Thu, 25 Jan 2024 16:35:10 +0800 +Subject: [PATCH 11/12] Disable 422H format output + +Disable 422H format output. + +Upstream-Status: Backport [https://github.com/intel/media-driver/commit/eab411768e61a46e096793291f5f992eecf76cd8] +Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com> +--- + .../agnostic/common/vp/hal/feature_manager/policy.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp b/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp +index 317cec25a..12f1124fa 100644 +--- a/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp ++++ b/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp +@@ -1140,6 +1140,12 @@ MOS_STATUS Policy::GetScalingExecutionCaps(SwFilter *feature, bool isHdrEnabled) + bool isAlphaSettingSupportedByVebox = + IsAlphaSettingSupportedByVebox(scalingParams->formatInput, scalingParams->formatOutput, scalingParams->pCompAlpha); + ++ if (scalingParams->formatOutput == Format_422H) ++ { ++ VP_PUBLIC_ASSERTMESSAGE("Scaling not support 422H format output."); ++ return MOS_STATUS_UNIMPLEMENTED; ++ } ++ + // Clean usedForNextPass flag. + if (scalingEngine->usedForNextPass) + { +-- +2.40.1 + 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 @@ +From b93904533d3ee66c7919fa8e23d26b852a37a917 Mon Sep 17 00:00:00 2001 +From: Lim Siew Hoon <siew.hoon.lim@intel.com> +Date: Tue, 30 Jan 2024 13:27:52 +0800 +Subject: [PATCH 12/12] [Decode] Fix AVC decode SFC 4K hang issue + +Updated VDSFC input width and height for AVC decode + +Upstream-Status: Submitted [https://github.com/intel-innersource/drivers.gpu.unified/pull/151401] + +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> +--- + .../hal/dec/avc/packet/decode_avc_downsampling_packet.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --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 +index e75fd8137..9cc236bd7 100644 +--- 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 +@@ -59,6 +59,10 @@ MOS_STATUS AvcDownSamplingPkt::InitSfcParams(VDBOX_SFC_PARAMS &sfcParams) + + AvcBasicFeature *avcBasicFeature = dynamic_cast<AvcBasicFeature*>(m_basicFeature); + DECODE_CHK_NULL(avcBasicFeature); ++ ++ sfcParams.input.width = avcBasicFeature->m_width; ++ sfcParams.input.height = avcBasicFeature->m_height; ++ + CODEC_PICTURE curPic = avcBasicFeature->m_avcPicParams->CurrPic; + + if (avcBasicFeature->m_avcPicParams->seq_fields.mb_adaptive_frame_field_flag == true) +-- +2.40.1 + diff --git a/recipes-multimedia/libva/intel-media-driver_19.2.0.bb b/recipes-multimedia/libva/intel-media-driver_19.2.0.bb deleted file mode 100644 index 86569927..00000000 --- a/recipes-multimedia/libva/intel-media-driver_19.2.0.bb +++ /dev/null @@ -1,38 +0,0 @@ -SUMMARY = "VA driver for Intel Gen based graphics hardware" -DESCRIPTION = "Intel Media Driver for VAAPI is a new VA-API (Video Acceleration API) \ -user mode driver supporting hardware accelerated decoding, encoding, \ -and video post processing for GEN based graphics hardware." - -HOMEPAGE = "https://github.com/intel/media-driver" -BUGTRACKER = "https://github.com/intel/media-driver/issues" - -LICENSE = "MIT & BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.md;md5=6aab5363823095ce682b155fef0231f0 \ - file://media_driver/media_libvpx.LICENSE;md5=d5b04755015be901744a78cc30d390d4 \ - " - -# Only for 64 bit until this is resolved: https://github.com/intel/media-driver/issues/356 -COMPATIBLE_HOST = '(x86_64).*-linux' - -DEPENDS += "libva gmmlib" - -SRC_URI = "git://github.com/intel/media-driver.git;protocol=https;branch=intel-media-19.2 \ - " - -SRCREV = "bcb3349b353338914f2bf06f306d6eaed2c1e35e" -S = "${WORKDIR}/git" - -UPSTREAM_CHECK_GITTAGREGEX = "^intel-media-(?P<pver>(?!600\..*)\d+(\.\d+)+)$" - -inherit cmake pkgconfig - -MEDIA_DRIVER_ARCH_x86 = "32" -MEDIA_DRIVER_ARCH_x86-64 = "64" - -EXTRA_OECMAKE += "-DMEDIA_RUN_TEST_SUITE=OFF -DARCH=${MEDIA_DRIVER_ARCH}" - -# See: https://github.com/intel/media-driver/issues/358 -FILES_${PN} += " \ - ${libdir}/dri/ \ - ${libdir}/igfxcmrt64.so \ - " diff --git a/recipes-multimedia/libva/intel-media-driver_23.4.3.bb b/recipes-multimedia/libva/intel-media-driver_23.4.3.bb new file mode 100644 index 00000000..6513d574 --- /dev/null +++ b/recipes-multimedia/libva/intel-media-driver_23.4.3.bb @@ -0,0 +1,61 @@ +SUMMARY = "VA driver for Intel Gen based graphics hardware" +DESCRIPTION = "Intel Media Driver for VAAPI is a new VA-API (Video Acceleration API) \ +user mode driver supporting hardware accelerated decoding, encoding, \ +and video post processing for GEN based graphics hardware." + +HOMEPAGE = "https://github.com/intel/media-driver" +BUGTRACKER = "https://github.com/intel/media-driver/issues" + +LICENSE = "MIT & BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=6aab5363823095ce682b155fef0231f0 \ + file://media_driver/media_libvpx.LICENSE;md5=d5b04755015be901744a78cc30d390d4 \ + " + +COMPATIBLE_HOST = '(i.86|x86_64).*-linux' + +inherit features_check +REQUIRED_DISTRO_FEATURES = "opengl" + +DEPENDS += "libva gmmlib" + +SRC_URI = "git://github.com/intel/media-driver.git;protocol=https;nobranch=1 \ + file://0001-Disable-vp9-padding-on-mtl.patch \ + file://0002-Force-ARGB-surface-to-tile4-for-ACM.patch \ + file://0004-Add-device-ID-for-ARL.patch \ + file://0005-Add-XR24-support-to-DMABuf.patch \ + file://0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch \ + file://0007-Skip-report-keys.patch \ + file://0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch \ + file://0009-Skip-cache-bucket-realloc-for-default-mode-0.patch \ + file://0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch \ + file://0011-Disable-422H-format-output.patch \ + file://0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch \ + " + +SRCREV = "a9f272496fc0f3e823cc4a814666ea27b443d902" +S = "${WORKDIR}/git" + +COMPATIBLE_HOST:x86-x32 = "null" + +UPSTREAM_CHECK_GITTAGREGEX = "^intel-media-(?P<pver>(?!600\..*)\d+(\.\d+)+)$" + +inherit cmake pkgconfig + +MEDIA_DRIVER_ARCH:x86 = "32" +MEDIA_DRIVER_ARCH:x86-64 = "64" + +EXTRA_OECMAKE += " \ + -DMEDIA_RUN_TEST_SUITE=OFF \ + -DARCH=${MEDIA_DRIVER_ARCH} \ + -DMEDIA_BUILD_FATAL_WARNINGS=OFF \ + " + +CXXFLAGS:append:x86 = " -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" + +do_configure:prepend:toolchain-clang() { + sed -i -e '/-fno-tree-pre/d' ${S}/media_driver/cmake/linux/media_compile_flags_linux.cmake +} + +FILES:${PN} += " \ + ${libdir}/dri/ \ + " diff --git a/recipes-multimedia/libva/intel-vaapi-driver_2.3.0.bb b/recipes-multimedia/libva/intel-vaapi-driver_2.4.1.bb index 6ec1745b..5038d8d7 100644 --- a/recipes-multimedia/libva/intel-vaapi-driver_2.3.0.bb +++ b/recipes-multimedia/libva/intel-vaapi-driver_2.4.1.bb @@ -13,21 +13,22 @@ COMPATIBLE_HOST = '(i.86|x86_64).*-linux' DEPENDS = "libva libdrm" -SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.bz2" -SRC_URI[md5sum] = "9d835d1a3f7a9ef394f0f4c348cd4b3e" -SRC_URI[sha256sum] = "5c2e5deab024a0a6ae81dfe77ef455542a88d824eda7bfd07684337407ecdfe3" +SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.bz2 \ + " + +SRC_URI[sha256sum] = "0081fce08eb3a83f7d99c3b853c8fdfa0af437b8f5b0fb7c66faeb83bcbe0c19" UPSTREAM_CHECK_URI = "https://github.com/intel/intel-vaapi-driver/releases" -inherit autotools pkgconfig distro_features_check +inherit meson pkgconfig features_check REQUIRED_DISTRO_FEATURES = "opengl" PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)} \ ${@bb.utils.contains("DISTRO_FEATURES", "opengl wayland", "wayland", "", d)}" -PACKAGECONFIG[x11] = "--enable-x11,--disable-x11" -PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native virtual/egl" +PACKAGECONFIG[x11] = "-Dwith_x11=yes, -Dwith_x11=no" +PACKAGECONFIG[wayland] = "-Dwith_wayland=yes, -Dwith_wayland=no, wayland wayland-native virtual/egl" -FILES_${PN} += "${libdir}/dri/*.so" -FILES_${PN}-dev += "${libdir}/dri/*.la" -FILES_${PN}-dbg += "${libdir}/dri/.debug" +FILES:${PN} += "${libdir}/dri/*.so" +FILES:${PN}-dev += "${libdir}/dri/*.la" +FILES:${PN}-dbg += "${libdir}/dri/.debug" diff --git a/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch b/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch deleted file mode 100644 index f7de9d16..00000000 --- a/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch +++ /dev/null @@ -1,96 +0,0 @@ -From f2e6d2ecfea635ab952649156e31ca893d4b1a47 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 12 Aug 2017 08:49:20 -0700 -Subject: [PATCH] Fix build with clang - -Fix errors e.g. -error: comparison of constant -1 with expression of type 'char' is always true [-Werror,-Wtautological-constant-out-of-range-compare]error: comparison of constant -1 with expression of type 'char' is always true [-Werror,-Wtautological-constant-out-of-range-compare] - -and - -psnr.cpp:225:17: error: bool literal returned from 'main' [-Werror,-Wmain] - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending - ---- - tests/decodehelp.cpp | 2 +- - tests/encodehelp.h | 2 +- - tests/vpp.cpp | 2 +- - tests/yamitranscode.cpp | 2 +- - testscripts/psnr.cpp | 4 ++-- - 5 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/tests/decodehelp.cpp b/tests/decodehelp.cpp -index b27b977..62cca63 100644 ---- a/tests/decodehelp.cpp -+++ b/tests/decodehelp.cpp -@@ -81,7 +81,7 @@ bool processCmdLine(int argc, char** argv, DecodeParameter* parameters) - { NULL, no_argument, NULL, 0 } - }; - -- char opt; -+ int opt; - while ((opt = getopt_long_only(argc, argv, "h:m:n:i:f:o:w:?", long_opts,&option_index)) != -1){ - switch (opt) { - case 'h': -diff --git a/tests/encodehelp.h b/tests/encodehelp.h -index 63580a4..651ec08 100644 ---- a/tests/encodehelp.h -+++ b/tests/encodehelp.h -@@ -109,7 +109,7 @@ static VideoRateControl string_to_rc_mode(char *str) - - static bool process_cmdline(int argc, char *argv[]) - { -- char opt; -+ int opt; - const struct option long_opts[] = { - { "help", no_argument, NULL, 'h' }, - { "qp", required_argument, NULL, 0 }, -diff --git a/tests/vpp.cpp b/tests/vpp.cpp -index 5a60c0a..52da43b 100644 ---- a/tests/vpp.cpp -+++ b/tests/vpp.cpp -@@ -151,7 +151,7 @@ public: - private: - bool processCmdLine(int argc, char* argv[]) - { -- char opt; -+ int opt; - const struct option long_opts[] = { - { "help", no_argument, NULL, 'h' }, - { "sharpening", required_argument, NULL, 's' }, -diff --git a/tests/yamitranscode.cpp b/tests/yamitranscode.cpp -index 6207209..00164ce 100755 ---- a/tests/yamitranscode.cpp -+++ b/tests/yamitranscode.cpp -@@ -100,7 +100,7 @@ static VideoRateControl string_to_rc_mode(char *str) - - static bool processCmdLine(int argc, char *argv[], TranscodeParams& para) - { -- char opt; -+ int opt; - const struct option long_opts[] = { - { "help", no_argument, NULL, 'h' }, - { "qp", required_argument, NULL, 0 }, -diff --git a/testscripts/psnr.cpp b/testscripts/psnr.cpp -index 5cc24c9..68bd668 100644 ---- a/testscripts/psnr.cpp -+++ b/testscripts/psnr.cpp -@@ -215,14 +215,14 @@ int main(int argc, char *argv[]) - const char* psnrresult = "average_psnr.txt"; - int width=0,height=0; - int standardpsnr = NORMAL_PSNR; -- char opt; -+ int opt; - while ((opt = getopt(argc, argv, "h:W:H:i:o:s:?")) != -1) - { - switch (opt) { - case 'h': - case '?': - print_help(argv[0]); -- return false; -+ return -1; - case 'i': - filename1 = optarg; - break; diff --git a/recipes-multimedia/libyami/libyami-utils_1.3.1.bb b/recipes-multimedia/libyami/libyami-utils_1.3.1.bb deleted file mode 100644 index ab1b83aa..00000000 --- a/recipes-multimedia/libyami/libyami-utils_1.3.1.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "Applications and Scripts for libyami." -DESCRIPTION = "Applications and Scripts for libyami." - -HOMEPAGE = "https://github.com/intel/libyami-utils" -BUGTRACKER = "https://github.com/intel/libyami-utils/issues/new" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" - -SRC_URI = "git://github.com/intel/libyami-utils.git \ - file://0001-Fix-build-with-clang.patch \ - " -SRCREV = "7e801b5cc3066b176c2dccffda0af8d762184650" -S = "${WORKDIR}/git" - -DEPENDS = "libva libyami" - -inherit autotools pkgconfig distro_features_check - -REQUIRED_DISTRO_FEATURES = "opengl" - -PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" - -# --enable-x11 needs libva-x11 -# gles-tests fail to build without x11: see https://github.com/intel/libyami-utils/issues/91 -PACKAGECONFIG[x11] = "--enable-x11 --enable-egl,--disable-x11 --disable-egl, virtual/libx11" diff --git a/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch b/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch deleted file mode 100644 index a96c9b85..00000000 --- a/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 294874b610a5b8af9b736b3afc938010af58785e Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 17:15:45 -0700 -Subject: [PATCH 1/9] bitWriter.cpp: Delete unused CACHEBYTES - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - codecparsers/bitWriter.cpp | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/codecparsers/bitWriter.cpp b/codecparsers/bitWriter.cpp -index 9bcb14d..08469bf 100644 ---- a/codecparsers/bitWriter.cpp -+++ b/codecparsers/bitWriter.cpp -@@ -24,7 +24,6 @@ - - namespace YamiParser { - --const uint32_t CACHEBYTES = sizeof(unsigned long int); - const uint32_t CACHEBITS = sizeof(unsigned long int) * 8; - - // clip to keep lowest n bits --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch b/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch deleted file mode 100644 index a216566c..00000000 --- a/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 88fa048e22ad00b04054b8a64df53bd440e01537 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 17:29:02 -0700 -Subject: [PATCH 2/9] typecast index from size_t to int - -size_t is not consistent across architectures e.g. on arm its unsigned int - -Fixes -error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare] - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - codecparsers/jpegParser.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/codecparsers/jpegParser.cpp b/codecparsers/jpegParser.cpp -index 2217028..6da5c36 100644 ---- a/codecparsers/jpegParser.cpp -+++ b/codecparsers/jpegParser.cpp -@@ -639,7 +639,7 @@ bool Parser::parseDAC() - - length -= 2; - -- if (index < 0 || index >= (2 * NUM_ARITH_TBLS)) { -+ if ((int)index < 0 || index >= (2 * NUM_ARITH_TBLS)) { - ERROR("Invalid DAC Index"); - return false; - } -@@ -747,7 +747,7 @@ bool Parser::parseDHT() - huffTables = &m_dcHuffTables; - } - -- if (index < 0 || index >= NUM_HUFF_TBLS) { -+ if ((int)index < 0 || index >= NUM_HUFF_TBLS) { - ERROR("Bad Huff Table Index"); - return false; - } --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch b/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch deleted file mode 100644 index 17289602..00000000 --- a/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 533d63287e9dd8f269b137c18fbe6c19206c8668 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 17:49:43 -0700 -Subject: [PATCH 3/9] Add -Wno-invalid-offsetof to compiler commandline - -clang++ is fussy about offsetof on non-POD types - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - codecparsers/Makefile.am | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/codecparsers/Makefile.am b/codecparsers/Makefile.am -index 720bf81..d9226b3 100644 ---- a/codecparsers/Makefile.am -+++ b/codecparsers/Makefile.am -@@ -118,6 +118,7 @@ libyami_codecparser_cppflags = \ - -Dvp8dx_start_decode=libyami_vp8dx_start_decode \ - -Dvp8dx_bool_decoder_fill=libyami_vp8dx_bool_decoder_fill \ - -I$(top_srcdir)/interface \ -+ -Wno-invalid-offsetof \ - $(extra_includes) \ - $(NULL) - --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch b/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch deleted file mode 100644 index 27eca39b..00000000 --- a/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d9c831ee38da4551396fad5cd53c3dfc0e5e0cf8 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 17:57:34 -0700 -Subject: [PATCH 4/9] Typecast POWER32SUB2 to uint8_t - -Fixes - -h265Parser.cpp:1064:5: error: comparison of constant 4294967294 with expression -of type 'uint8_t' (aka 'unsigned char') is always false [-Werror,-Wtautological-constant-out-of-range-compare] - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - codecparsers/h265Parser.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/codecparsers/h265Parser.cpp b/codecparsers/h265Parser.cpp -index 0dea3a6..c6cded2 100644 ---- a/codecparsers/h265Parser.cpp -+++ b/codecparsers/h265Parser.cpp -@@ -125,7 +125,7 @@ namespace H265 { - \ - CHECK_READ_UE(var->var##_max_num_reorder_pics[i], 0, var->var##_max_dec_pic_buffering_minus1[i]); \ - \ -- CHECK_READ_UE(var->var##_max_latency_increase_plus1[i], 0, POWER32SUB2); \ -+ CHECK_READ_UE(var->var##_max_latency_increase_plus1[i], 0, (uint8_t)POWER32SUB2); \ - } \ - } - --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch b/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch deleted file mode 100644 index c9c74520..00000000 --- a/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 27b61f5ab1b1643436f56517e4980734b4b9acca Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 18:38:05 -0700 -Subject: [PATCH 6/9] Avoid namespace conflicts by adding explicit using - <namespace> - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - decoder/vaapidecoder_h264.h | 1 + - decoder/vaapidecoder_h265.h | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/decoder/vaapidecoder_h264.h b/decoder/vaapidecoder_h264.h -index 57e2c27..ea5c2f2 100644 ---- a/decoder/vaapidecoder_h264.h -+++ b/decoder/vaapidecoder_h264.h -@@ -30,6 +30,7 @@ namespace YamiMediaCodec { - - class VaapiDecPictureH264; - class VaapiDecoderH264 : public VaapiDecoderBase { -+using YamiMediaCodec::VaapiDecoderBase::createPicture; - public: - typedef SharedPtr<VaapiDecPictureH264> PicturePtr; - typedef std::vector<PicturePtr> RefSet; -diff --git a/decoder/vaapidecoder_h265.h b/decoder/vaapidecoder_h265.h -index f7e2303..159e25f 100644 ---- a/decoder/vaapidecoder_h265.h -+++ b/decoder/vaapidecoder_h265.h -@@ -38,6 +38,7 @@ namespace YamiMediaCodec { - - class VaapiDecPictureH265; - class VaapiDecoderH265:public VaapiDecoderBase { -+ using YamiMediaCodec::VaapiDecoderBase::createPicture; - typedef YamiParser::H265::SPS SPS; - typedef YamiParser::H265::SliceHeader SliceHeader; - typedef YamiParser::H265::NalUnit NalUnit; --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch b/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch deleted file mode 100644 index b80774c9..00000000 --- a/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch +++ /dev/null @@ -1,36 +0,0 @@ -From b982997c96e11b9c0b3cd58a31af2d0a219713a3 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 18:39:58 -0700 -Subject: [PATCH 7/9] Delete unused variables - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - decoder/vaapidecoder_vp8.cpp | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/decoder/vaapidecoder_vp8.cpp b/decoder/vaapidecoder_vp8.cpp -index 5fc89ec..ff5b896 100644 ---- a/decoder/vaapidecoder_vp8.cpp -+++ b/decoder/vaapidecoder_vp8.cpp -@@ -32,12 +32,12 @@ typedef VaapiDecoderVP8::PicturePtr PicturePtr; - - // the following parameter apply to Intra-Predicted Macroblocks, - // $11.2 $11.4: key frame default probs --static const uint8_t keyFrameYModeProbs[4] = { 145, 156, 163, 128 }; --static const uint8_t keyFrameUVModeProbs[3] = { 142, 114, 183 }; -+//static const uint8_t keyFrameYModeProbs[4] = { 145, 156, 163, 128 }; -+//static const uint8_t keyFrameUVModeProbs[3] = { 142, 114, 183 }; - - // $16.1: non-key frame default probs --static const uint8_t nonKeyFrameDefaultYModeProbs[4] = { 112, 86, 140, 37 }; --static const uint8_t nonKeyFrameDefaultUVModeProbs[3] = { 162, 101, 204 }; -+//static const uint8_t nonKeyFrameDefaultYModeProbs[4] = { 112, 86, 140, 37 }; -+//static const uint8_t nonKeyFrameDefaultUVModeProbs[3] = { 162, 101, 204 }; - - static const uint32_t surfaceNumVP8 = 3; - --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch b/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch deleted file mode 100644 index 18b98be8..00000000 --- a/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch +++ /dev/null @@ -1,31 +0,0 @@ -From c54130511c91e457f1c5bb47729f5e3a0fc0cb91 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 18:42:28 -0700 -Subject: [PATCH 8/9] NalUnit is declared in different namespace - -Fixes -vaapidecoder_h265.h:32:5: error: struct 'NalUnit' was previously declared as a class [-Werror,-Wmismatched-tags] struct NalUnit; - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - decoder/vaapidecoder_h265.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/decoder/vaapidecoder_h265.h b/decoder/vaapidecoder_h265.h -index 159e25f..674638f 100644 ---- a/decoder/vaapidecoder_h265.h -+++ b/decoder/vaapidecoder_h265.h -@@ -29,7 +29,7 @@ namespace YamiParser { - namespace H265 { - struct SPS; - struct SliceHeader; -- struct NalUnit; -+ class NalUnit; - class Parser; - }; - }; --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch b/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch deleted file mode 100644 index 08ef455b..00000000 --- a/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a54dc7b6a777882f55a3f31bd97748a261db03d2 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Fri, 11 Aug 2017 18:53:06 -0700 -Subject: [PATCH 9/9] Fix clang warnings - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Pending - - encoder/vaapiencoder_h264.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/encoder/vaapiencoder_h264.cpp b/encoder/vaapiencoder_h264.cpp -index 98bc2ed..94015cb 100644 ---- a/encoder/vaapiencoder_h264.cpp -+++ b/encoder/vaapiencoder_h264.cpp -@@ -509,7 +509,7 @@ bit_writer_write_sps(BitWriter* bitwriter, - } - /* vcl_hrd_parameters_present_flag */ - bitwriter->writeBits(0, 1); -- if (nal_hrd_parameters_present_flag || 0/*vcl_hrd_parameters_present_flag*/) { -+ if (nal_hrd_parameters_present_flag || !!(0)/*vcl_hrd_parameters_present_flag*/) { - /* low_delay_hrd_flag */ - bitwriter->writeBits(0, 1); - } -@@ -1889,7 +1889,7 @@ bool VaapiEncoderH264::addSliceHeaders (const PicturePtr& picture) const - sliceParam->num_macroblocks = curSliceMbs; - sliceParam->macroblock_info = VA_INVALID_ID; - sliceParam->slice_type = h264_get_slice_type (picture->m_type); -- assert (sliceParam->slice_type != -1); -+ assert ((int)sliceParam->slice_type != -1); - sliceParam->idr_pic_id = m_idrNum; - sliceParam->pic_order_cnt_lsb = picture->m_poc % m_maxPicOrderCnt; - --- -2.14.1 - diff --git a/recipes-multimedia/libyami/libyami/0010-h26xparser-Fix-build-error-with-GCC9.patch b/recipes-multimedia/libyami/libyami/0010-h26xparser-Fix-build-error-with-GCC9.patch deleted file mode 100644 index be69ab71..00000000 --- a/recipes-multimedia/libyami/libyami/0010-h26xparser-Fix-build-error-with-GCC9.patch +++ /dev/null @@ -1,157 +0,0 @@ -From fdb8185749098eaf55050c4ec5c0f21c5be1e326 Mon Sep 17 00:00:00 2001 -From: Naveen Saini <naveen.kumar.saini@intel.com> -Date: Tue, 4 Jun 2019 16:53:16 +0800 -Subject: [PATCH] h26xparser: Fix build error with GCC9 - -GCC9 causing build failure: - -| ../../git/codecparsers/h264Parser.cpp: In constructor 'YamiParser::H264::PPS::PPS()': -| ../../git/codecparsers/h264Parser.cpp:140:41: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H264::PPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] -| 140 | memset(this, 0, offsetof(PPS, m_sps)); -| | ^ -| In file included from ../../git/codecparsers/h264Parser.cpp:21: -| ../../git/codecparsers/h264Parser.h:292:8: note: 'struct YamiParser::H264::PPS' declared here -| 292 | struct PPS { -| | ^~~ -| ../../git/codecparsers/h264Parser.cpp: In constructor 'YamiParser::H264::SliceHeader::SliceHeader()': -| ../../git/codecparsers/h264Parser.cpp:686:49: error: 'void* memset(void*, int, size_t)' clearing an object of type 'class YamiParser::H264::SliceHeader' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] -| 686 | memset(this, 0, offsetof(SliceHeader, m_pps)); -| | ^ -| In file included from ../../git/codecparsers/h264Parser.cpp:21: -| ../../git/codecparsers/h264Parser.h:371:7: note: 'class YamiParser::H264::SliceHeader' declared here -| 371 | class SliceHeader { -| | ^~~~~~~~~~~ -| ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::VPS::VPS()': -| ../../git/codecparsers/h265Parser.cpp:165:53: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::VPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] -| 165 | memset(this, 0, offsetof(VPS, hrd_layer_set_idx)); -| | ^ -| In file included from ../../git/codecparsers/h265Parser.cpp:21: -| ../../git/codecparsers/h265Parser.h:256:12: note: 'struct YamiParser::H265::VPS' declared here -| 256 | struct VPS { -| | ^~~ -| ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::SPS::SPS()': -| ../../git/codecparsers/h265Parser.cpp:174:39: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::SPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] -| 174 | memset(this, 0, offsetof(SPS, vps)); -| | ^ -| In file included from ../../git/codecparsers/h265Parser.cpp:21: -| ../../git/codecparsers/h265Parser.h:290:12: note: 'struct YamiParser::H265::SPS' declared here -| 290 | struct SPS { -| | ^~~ -| ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::PPS::PPS()': -| ../../git/codecparsers/h265Parser.cpp:179:39: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::PPS' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] -| 179 | memset(this, 0, offsetof(PPS, sps)); -| | ^ -| In file included from ../../git/codecparsers/h265Parser.cpp:21: -| ../../git/codecparsers/h265Parser.h:362:12: note: 'struct YamiParser::H265::PPS' declared here -| 362 | struct PPS { -| | ^~~ -| ../../git/codecparsers/h265Parser.cpp: In constructor 'YamiParser::H265::SliceHeader::SliceHeader()': -| ../../git/codecparsers/h265Parser.cpp:184:47: error: 'void* memset(void*, int, size_t)' clearing an object of type 'struct YamiParser::H265::SliceHeader' with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] -| 184 | memset(this, 0, offsetof(SliceHeader, pps)); -| | ^ -| In file included from ../../git/codecparsers/h265Parser.cpp:21: -| ../../git/codecparsers/h265Parser.h:499:12: note: 'struct YamiParser::H265::SliceHeader' declared here -| 499 | struct SliceHeader { -| | ^~~~~~~~~~~ -| ../../git/codecparsers/mpeg2_parser.cpp: In constructor 'YamiParser::MPEG2::SeqHeader::SeqHeader()': -| ../../git/codecparsers/mpeg2_parser.cpp:163:59: error: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct YamiParser::MPEG2::SeqHeader'; use assignment or value-initialization instead [-Werror=class-memaccess] -| 163 | SeqHeader::SeqHeader() { memset(this, 0, sizeof(*this)); } -| | ^ -| In file included from ../../git/codecparsers/mpeg2_parser.cpp:34: -| ../../git/codecparsers/mpeg2_parser.h:153:12: note: 'struct YamiParser::MPEG2::SeqHeader' declared here -| 153 | struct SeqHeader { -| | ^~~~~~~~~ -| cc1plus: all warnings being treated as errors - -By typecasting structure pointer to void pointer, GCC9 does normal memset operation where offsetof() give correct -number of bytes to set. - -Status: Submitted [https://github.com/intel/libyami/pull/876] - -Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> ---- - codecparsers/h264Parser.cpp | 4 ++-- - codecparsers/h265Parser.cpp | 8 ++++---- - codecparsers/mpeg2_parser.cpp | 3 ++- - 3 files changed, 8 insertions(+), 7 deletions(-) - -diff --git a/codecparsers/h264Parser.cpp b/codecparsers/h264Parser.cpp -index 22117a1..6f7959e 100644 ---- a/codecparsers/h264Parser.cpp -+++ b/codecparsers/h264Parser.cpp -@@ -137,7 +137,7 @@ static bool scalingList(NalReader& br, uint8_t* sl, uint32_t size, uint32_t inde - - PPS::PPS() - { -- memset(this, 0, offsetof(PPS, m_sps)); -+ memset((void*)this, 0, offsetof(PPS, m_sps)); - } - - PPS::~PPS() -@@ -683,7 +683,7 @@ Parser::searchSps(uint8_t id) const - - SliceHeader::SliceHeader() - { -- memset(this, 0, offsetof(SliceHeader, m_pps)); -+ memset((void*)this, 0, offsetof(SliceHeader, m_pps)); - } - - bool SliceHeader::refPicListModification(NalReader& br, RefPicListModification* pm0, -diff --git a/codecparsers/h265Parser.cpp b/codecparsers/h265Parser.cpp -index 0dea3a6..d7e6740 100644 ---- a/codecparsers/h265Parser.cpp -+++ b/codecparsers/h265Parser.cpp -@@ -162,7 +162,7 @@ static const uint8_t DefaultScalingList2[64] = { - - VPS::VPS() - { -- memset(this, 0, offsetof(VPS, hrd_layer_set_idx)); -+ memset((void*)this, 0, offsetof(VPS, hrd_layer_set_idx)); - } - - VPS::~VPS() -@@ -171,17 +171,17 @@ VPS::~VPS() - - SPS::SPS() - { -- memset(this, 0, offsetof(SPS, vps)); -+ memset((void*)this, 0, offsetof(SPS, vps)); - } - - PPS::PPS() - { -- memset(this, 0, offsetof(PPS, sps)); -+ memset((void*)this, 0, offsetof(PPS, sps)); - } - - SliceHeader::SliceHeader() - { -- memset(this, 0, offsetof(SliceHeader, pps)); -+ memset((void*)this, 0, offsetof(SliceHeader, pps)); - } - - SliceHeader::~SliceHeader() -diff --git a/codecparsers/mpeg2_parser.cpp b/codecparsers/mpeg2_parser.cpp -index 21032b1..173da39 100644 ---- a/codecparsers/mpeg2_parser.cpp -+++ b/codecparsers/mpeg2_parser.cpp -@@ -33,6 +33,7 @@ - #include "common/log.h" - #include "mpeg2_parser.h" - #include <inttypes.h> -+#include <cstddef> - - namespace YamiParser { - namespace MPEG2 { -@@ -160,7 +161,7 @@ namespace MPEG2 { - - SeqExtension::SeqExtension() { memset(this, 0, sizeof(*this)); } - -- SeqHeader::SeqHeader() { memset(this, 0, sizeof(*this)); } -+ SeqHeader::SeqHeader() { memset((void*)this, 0, offsetof(SeqHeader, quantizationMatrices)); } - - StreamHeader::StreamHeader() { memset(this, 0, sizeof(*this)); } - --- -2.17.0 - diff --git a/recipes-multimedia/libyami/libyami_1.3.1.bb b/recipes-multimedia/libyami/libyami_1.3.1.bb deleted file mode 100644 index 83845935..00000000 --- a/recipes-multimedia/libyami/libyami_1.3.1.bb +++ /dev/null @@ -1,31 +0,0 @@ -SUMMARY = "Yami is media infrastructure base on libva" -DESCRIPTION = "Yet Another Media Infrastructure \ -light weight hardware codec library base on VA-API " - -HOMEPAGE = "https://github.com/intel/libyami" -BUGTRACKER = "https://github.com/intel/libyami/issues/new" - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE.md;md5=3b83ef96387f14655fc854ddc3c6bd57" - -SRC_URI = "git://github.com/intel/libyami.git;branch=apache \ - file://0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch \ - file://0002-typecast-index-from-size_t-to-int.patch \ - file://0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch \ - file://0004-Typecast-POWER32SUB2-to-uint8_t.patch \ - file://0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch \ - file://0007-Delete-unused-variables.patch \ - file://0008-NalUnit-is-declared-in-different-namespace.patch \ - file://0009-Fix-clang-warnings.patch \ - file://0010-h26xparser-Fix-build-error-with-GCC9.patch \ -" -SRCREV = "fb48083de91f837ddbf599dd4b5ad1eb1239e1cf" -S = "${WORKDIR}/git" - -PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)}" -PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxrandr libxrender" - -DEPENDS = "libva" -inherit autotools pkgconfig distro_features_check - -REQUIRED_DISTRO_FEATURES = "opengl" diff --git a/recipes-multimedia/mediasdk/files/0001-FindITT.cmake-fix-detection-of-header-library.patch b/recipes-multimedia/mediasdk/files/0001-FindITT.cmake-fix-detection-of-header-library.patch new file mode 100644 index 00000000..87c4e82e --- /dev/null +++ b/recipes-multimedia/mediasdk/files/0001-FindITT.cmake-fix-detection-of-header-library.patch @@ -0,0 +1,49 @@ +From be7cec47777bd35c44a59f2af73f12ce9c26d65c Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 7 Oct 2020 09:33:06 +0800 +Subject: [PATCH] FindITT.cmake: fix detection of header/library + +Use find_library to check for the library so distributions installing to +standard locations can also work in addition to custom paths specified +using CMAKE_ITT_HOME. + +Also add ittnotify to PATH_SUFFIXES for header for cases when +ittnotify.h is installed in /usr/include/ittnotify for example. + +Upstream-Status: Submitted + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + builder/FindITT.cmake | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/builder/FindITT.cmake b/builder/FindITT.cmake +index ba2542c5..d96acf2e 100644 +--- a/builder/FindITT.cmake ++++ b/builder/FindITT.cmake +@@ -35,19 +35,19 @@ if( ENABLE_ITT ) + + find_path( ITT_INCLUDE_DIRS ittnotify.h + PATHS ${CMAKE_ITT_HOME} ${CMAKE_VTUNE_HOME} +- PATH_SUFFIXES include ) ++ PATH_SUFFIXES include ittnotify) + + # Unfortunately SEAPI and VTune uses different names for itt library: + # * SEAPI uses libittnotify${arch}.a + # * VTune uses libittnotify.a + # We are trying to check both giving preference to SEAPI name. +- find_path( ITT_LIBRARY_DIRS libittnotify${arch}.a ++ find_library( ITT_LIBRARY_DIRS ittnotify${arch} + PATHS ${CMAKE_ITT_HOME} ${CMAKE_VTUNE_HOME} + PATH_SUFFIXES lib64 ) + if( NOT ITT_LIBRARY_DIRS MATCHES NOTFOUND ) + set( ITT_LIBRARIES "ittnotify${arch}" ) + else() +- find_path( ITT_LIBRARY_DIRS libittnotify.a ++ find_library( ITT_LIBRARY_DIRS ittnotify + PATHS ${CMAKE_ITT_HOME} ${CMAKE_VTUNE_HOME} + PATH_SUFFIXES lib64 ) + if( NOT ITT_LIBRARY_PATH MATCHES NOTFOUND ) +-- +2.26.2 + 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 @@ +Upstream-Status: Inactive-Upstream +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> + +diff --git a/api/mfx_dispatch/linux/mfxparser.cpp b/api/mfx_dispatch/linux/mfxparser.cpp +index 9d3823ec3e..12e46d1881 100644 +--- a/api/mfx_dispatch/linux/mfxparser.cpp ++++ b/api/mfx_dispatch/linux/mfxparser.cpp +@@ -20,6 +20,7 @@ + + #include <ctype.h> + #include <stdio.h> ++#include <stdint.h> + #include <stdlib.h> + #include <string.h> + diff --git a/recipes-multimedia/mediasdk/intel-mediasdk_19.1.0.bb b/recipes-multimedia/mediasdk/intel-mediasdk_19.1.0.bb deleted file mode 100644 index 7dd4da63..00000000 --- a/recipes-multimedia/mediasdk/intel-mediasdk_19.1.0.bb +++ /dev/null @@ -1,38 +0,0 @@ -SUMMARY = "Intel(R) Media SDK for hardware accelerated media processing" -DESCRIPTION = "Intel(R) Media SDK provides an API to access hardware-accelerated \ -video decode, encode and filtering on Intel® platforms with integrated graphics." - -HOMEPAGE = "https://github.com/Intel-Media-SDK/MediaSDK" -BUGTRACKER = "https://github.com/Intel-Media-SDK/MediaSDK/issues" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3cb331af679cd8f968bf799a9c55b46e" - -# Only for 64 bit until media-driver issues aren't fixed -COMPATIBLE_HOST = '(x86_64).*-linux' - -DEPENDS += "libdrm libva intel-media-driver" - -PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "dri3", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)}" - -PACKAGECONFIG[dri3] = "-DENABLE_X11_DRI3=ON, -DENABLE_X11_DRI3=OFF" -PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND=ON, -DENABLE_WAYLAND=OFF, wayland wayland-native" - -SRC_URI = " \ - git://github.com/Intel-Media-SDK/MediaSDK.git;protocol=https;branch=${BPN}-19.1 \ - " - -SRCREV = "428b07dabe13b991ba20cf796c91f897a8d1b972" -S = "${WORKDIR}/git" - -UPSTREAM_CHECK_GITTAGREGEX = "^intel-mediasdk-(?P<pver>(\d+(\.\d+)+))$" - -inherit cmake pkgconfig - -EXTRA_OECMAKE += "-DMFX_INCLUDE=${S}/api/include -DBUILD_SAMPLES=OFF" - -FILES_${PN} += " \ - ${libdir}/mfx \ - ${datadir}/mfx/plugins.cfg \ - " diff --git a/recipes-multimedia/mediasdk/intel-mediasdk_23.2.2.bb b/recipes-multimedia/mediasdk/intel-mediasdk_23.2.2.bb new file mode 100644 index 00000000..f00a4404 --- /dev/null +++ b/recipes-multimedia/mediasdk/intel-mediasdk_23.2.2.bb @@ -0,0 +1,63 @@ +SUMMARY = "Intel(R) Media SDK for hardware accelerated media processing" +DESCRIPTION = "Intel(R) Media SDK provides an API to access hardware-accelerated \ +video decode, encode and filtering on Intel® platforms with integrated graphics." + +HOMEPAGE = "https://github.com/Intel-Media-SDK/MediaSDK" +BUGTRACKER = "https://github.com/Intel-Media-SDK/MediaSDK/issues" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3cb331af679cd8f968bf799a9c55b46e" + +CVE_DETAILS = "intel:media_sdk" + +# Only for 64 bit until media-driver issues aren't fixed +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:x86-x32 = "null" + +inherit features_check +REQUIRED_DISTRO_FEATURES = "opengl" + +DEPENDS += "libva" + +RDEPENDS:${PN} += "intel-media-driver" + +PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "dri3", "", d)} \ + ${@bb.utils.contains("DISTRO_FEATURES", "wayland", "wayland", "", d)} \ + samples \ + itt \ + " + +PACKAGECONFIG[dri3] = "-DENABLE_X11_DRI3=ON, -DENABLE_X11_DRI3=OFF" +PACKAGECONFIG[itt] = "-DENABLE_ITT=ON, -DENABLE_ITT=OFF, itt" +PACKAGECONFIG[opencl] = "-DENABLE_OPENCL=ON, -DENABLE_OPENCL=OFF, virtual/opencl-icd opencl-clhpp opencl-headers" +PACKAGECONFIG[samples] = "-DBUILD_SAMPLES=ON, -DBUILD_SAMPLES=OFF" +PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND=ON, -DENABLE_WAYLAND=OFF, wayland wayland-native" + +SRC_URI = "git://github.com/Intel-Media-SDK/MediaSDK.git;protocol=https;nobranch=1;lfs=0 \ + file://0001-FindITT.cmake-fix-detection-of-header-library.patch \ + file://fix-gcc13.patch \ + " + +SRCREV = "869b60a6c3d7b5e9f7c3b3b914986322dca4bbae" +S = "${WORKDIR}/git" + +UPSTREAM_CHECK_GITTAGREGEX = "^intel-mediasdk-(?P<pver>(\d+(\.\d+)+))$" + +inherit cmake pkgconfig + +EXTRA_OECMAKE += "-DMFX_INCLUDE=${S}/api/include" + +do_install:append() { + mv ${D}${datadir}/mfx/samples ${D}${libdir}/mfx/samples +} + +PACKAGE_BEFORE_PN = " ${PN}-samples" + +FILES:${PN} += " \ + ${libdir}/mfx \ + ${datadir}/mfx/plugins.cfg \ + " + +FILES:${PN}-samples = "${libdir}/mfx/samples" + +INSANE_SKIP:${PN}-samples += "staticdev" 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 @@ +From a425927469b36e7bc597bff4fdc24d42a1168d1a Mon Sep 17 00:00:00 2001 +From: gfxVPLsdm <gfxvplsdm@intel.com> +Date: Mon, 18 Dec 2023 09:58:35 +0800 +Subject: [PATCH] ARLH DID open source (#6286) + +Co-authored-by: huangli <li.h.huang@intel.com> + +Upstream-Status: Backport [https://github.com/oneapi-src/oneVPL-intel-gpu/commit/66f1b4d60a367eb1b0774e0b4369f906e0e632ae] +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> + +--- + _studio/shared/include/mfxstructures-int.h | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/_studio/shared/include/mfxstructures-int.h b/_studio/shared/include/mfxstructures-int.h +index 363d9a63..8f16b0a8 100644 +--- a/_studio/shared/include/mfxstructures-int.h ++++ b/_studio/shared/include/mfxstructures-int.h +@@ -1,4 +1,4 @@ +-// Copyright (c) 2007-2021 Intel Corporation ++// Copyright (c) 2007-2023 Intel Corporation + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to deal +@@ -569,6 +569,11 @@ typedef struct { + /* ARL S */ + { 0x7D67, MFX_HW_ARL, MFX_GT2 }, + ++ /* ARL H*/ ++ { 0x7D51, MFX_HW_ARL, MFX_GT2 }, ++ { 0x7DD1, MFX_HW_ARL, MFX_GT2 }, ++ { 0x7D41, MFX_HW_ARL, MFX_GT2 }, ++ + }; + + /* +-- +2.40.1 + 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 @@ +From e118062518c95d8fb0080cc8276b123a90bd0eb9 Mon Sep 17 00:00:00 2001 +From: gfxVPLsdm <gfxvplsdm@intel.com> +Date: Wed, 21 Feb 2024 17:11:52 +0800 +Subject: [PATCH] Fix SetBuffersYV12() V & U plane offsets calculation (#6475) + +Signed-off-by: Hoe, Sheng Yang <sheng.yang.hoe@intel.com> +Co-authored-by: Hoe, Sheng Yang <sheng.yang.hoe@intel.com> + +Upstream-Status: Backport [https://github.com/oneapi-src/oneVPL-intel-gpu/commit/ce704ddfe11724767ba86c9425a3917dc3100d4a] +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> +--- + _studio/shared/src/libmfx_core_vaapi.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/_studio/shared/src/libmfx_core_vaapi.cpp b/_studio/shared/src/libmfx_core_vaapi.cpp +index 2cad86f8..fd5fc269 100644 +--- a/_studio/shared/src/libmfx_core_vaapi.cpp ++++ b/_studio/shared/src/libmfx_core_vaapi.cpp +@@ -462,8 +462,8 @@ public: + } + else + { +- eb.offsets[1] = eb.offsets[0] + uint32_t(eb.height * eb.pitches[1] / 2); +- eb.offsets[2] = eb.offsets[1] + uint32_t(eb.height * eb.pitches[2] / 2); ++ eb.offsets[1] = eb.offsets[0] + uint32_t(eb.height * eb.pitches[0]); ++ eb.offsets[2] = eb.offsets[1] + uint32_t(eb.height * eb.pitches[1] / 2); + } + eb.num_planes = 3; + eb.data_size = eb.offsets[2] + (eb.height * eb.pitches[2] / 2); +-- +2.40.1 + 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 @@ +From 40c0bc6d3dfe172dd25908df2c16de29c34fa4d4 Mon Sep 17 00:00:00 2001 +From: gfxVPLsdm <gfxvplsdm@intel.com> +Date: Mon, 5 Feb 2024 17:14:07 +0800 +Subject: [PATCH] [JPEGe] Enable BGR4 JPEG Enc support (#6470) + +Co-authored-by: vcheah <vincent.beng.keat.cheah@intel.com> + +Upstream-Status: Backport [https://github.com/oneapi-src/oneVPL-intel-gpu/commit/e73763d05f8fdc348c356b58dcb83075b5e868f8] +Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> +--- + .../mfx_lib/encode_hw/mjpeg/src/mfx_mjpeg_encode_hw.cpp | 6 ++++-- + .../encode_hw/mjpeg/src/mfx_mjpeg_encode_hw_utils.cpp | 9 +++++---- + 2 files changed, 9 insertions(+), 6 deletions(-) + +diff --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 +index 141564b1..332f6372 100644 +--- 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 +@@ -212,7 +212,8 @@ mfxStatus MFXVideoENCODEMJPEG_HW::QueryImplsDescription( + ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_YV12; + ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_YUY2; + ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_RGB4; +- memCaps.NumColorFormats = 4; ++ ah.PushBack(memCaps.ColorFormats) = MFX_FOURCC_BGR4; ++ memCaps.NumColorFormats = 5; + + ah.PushBack(profileCaps.MemDesc); + profileCaps.MemDesc[1] = profileCaps.MemDesc[0]; +@@ -392,7 +393,7 @@ mfxStatus MFXVideoENCODEMJPEG_HW::Query(VideoCORE * core, mfxVideoParam *in, mfx + if ((fourCC == 0 && chromaFormat == 0) || + (fourCC == MFX_FOURCC_NV12 && (chromaFormat == MFX_CHROMAFORMAT_YUV420 || chromaFormat == MFX_CHROMAFORMAT_YUV400)) || + (fourCC == MFX_FOURCC_YUY2 && chromaFormat == MFX_CHROMAFORMAT_YUV422H) || +- (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444)) ++ ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444)) + { + out->mfx.FrameInfo.FourCC = in->mfx.FrameInfo.FourCC; + out->mfx.FrameInfo.ChromaFormat = in->mfx.FrameInfo.ChromaFormat; +@@ -698,6 +699,7 @@ mfxStatus MFXVideoENCODEMJPEG_HW::Init(mfxVideoParam *par) + doubleBytesPerPx = 4; + break; + case MFX_FOURCC_RGB4: ++ case MFX_FOURCC_BGR4: + default: + doubleBytesPerPx = 8; + break; +diff --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 +index 3fc619d1..b1ab556e 100644 +--- 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 +@@ -108,6 +108,7 @@ mfxStatus MfxHwMJpegEncode::CheckJpegParam(VideoCORE *core, mfxVideoParam & par, + BytesPerPx = 2; + break; + case MFX_FOURCC_RGB4: ++ case MFX_FOURCC_BGR4: + default: + BytesPerPx = 4; + } +@@ -157,7 +158,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c + + m_payload_base.length = 0; + m_payload_list.clear(); +- if (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444) ++ if ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444) + { + m_app14_data.header = 0xEEFF;//APP14 + m_app14_data.lenH = 0; +@@ -287,7 +288,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c + m_pps.num_components = 3; + else if (fourCC == MFX_FOURCC_NV12 && chromaFormat == MFX_CHROMAFORMAT_YUV400) + m_pps.num_components = 1; +- else if (fourCC == MFX_FOURCC_RGB4 && chromaFormat == MFX_CHROMAFORMAT_YUV444) ++ else if ((fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) && chromaFormat == MFX_CHROMAFORMAT_YUV444) + m_pps.num_components = 3; + else + MFX_RETURN(MFX_ERR_UNDEFINED_BEHAVIOR); +@@ -341,7 +342,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c + { + // No external tables - use Quality parameter + m_dqt_list.resize(0); +- if (fourCC == MFX_FOURCC_RGB4) ++ if (fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4) + { + m_pps.quantiser_table_selector[0] = 0; + m_pps.quantiser_table_selector[1] = 0; +@@ -393,7 +394,7 @@ mfxStatus ExecuteBuffers::Init(mfxVideoParam const *par, mfxEncodeCtrl const * c + { + m_dht_list.resize(0); + } +- else if (hwCaps->MaxNumHuffTable == 1 || fourCC == MFX_FOURCC_RGB4) ++ else if (hwCaps->MaxNumHuffTable == 1 || (fourCC == MFX_FOURCC_RGB4 || fourCC == MFX_FOURCC_BGR4)) + { + m_dht_list.resize(1); + +-- +2.40.1 + 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 @@ +From 630c32194f53c70f4f654fb3d198790df253ba1f Mon Sep 17 00:00:00 2001 +From: Markus Volk <f_l_k@t-online.de> +Date: Thu, 15 Jun 2023 13:43:32 +0200 +Subject: [PATCH] vpl.pc.in: dont pass pcfiledir to cflags + +Signed-off-by: Markus Volk <f_l_k@t-online.de> + +Upstream-Status: Inappropriate [oe specific] +--- + libvpl/pkgconfig/vpl.pc.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libvpl/pkgconfig/vpl.pc.in b/libvpl/pkgconfig/vpl.pc.in +index ab468a9..05c020e 100644 +--- a/libvpl/pkgconfig/vpl.pc.in ++++ b/libvpl/pkgconfig/vpl.pc.in +@@ -8,6 +8,6 @@ Description: oneAPI Video Processing Library + Version: @API_VERSION_MAJOR@.@API_VERSION_MINOR@ + URL: https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onevpl.html + +-Libs: -L${libdir} -l@OUTPUT_NAME@ @VPL_PKGCONFIG_DEPENDENT_LIBS@ ++Libs: -L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -l@OUTPUT_NAME@ @VPL_PKGCONFIG_DEPENDENT_LIBS@ + Libs.private: @VPL_PKGCONFIG_PRIVATE_LIBS@ +-Cflags: -I${includedir} -I${includedir}/vpl ++Cflags: -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@ -I@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@/vpl +-- +2.40.1 + diff --git a/recipes-multimedia/onevpl/onevpl-intel-gpu_23.4.3.bb b/recipes-multimedia/onevpl/onevpl-intel-gpu_23.4.3.bb new file mode 100644 index 00000000..0b849bf1 --- /dev/null +++ b/recipes-multimedia/onevpl/onevpl-intel-gpu_23.4.3.bb @@ -0,0 +1,33 @@ +SUMMARY = "Intel(R) oneVPL runtime for Intel GPU accelerated media processing" +DESCRIPTION = "Intel(R) oneVPL runtime provides an runtime to access hardware-accelerated \ +video decode, encode and filtering on Intel® graphics." + +HOMEPAGE = "https://github.com/oneapi-src/oneVPL-intel-gpu" +BUGTRACKER = "https://github.com/oneapi-src/oneVPL-intel-gpu/issues" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=eb8cb45b9b57dbaa9fcc9adc4230202b" + +PE = "1" + +# Only for 64 bit +COMPATIBLE_HOST = '(x86_64).*-linux' +COMPATIBLE_HOST:x86-x32 = "null" + +DEPENDS += "libdrm libva intel-media-driver onevpl pkgconfig-native" +RDEPENDS:${PN} += "intel-media-driver" + +SRC_URI = "git://github.com/oneapi-src/oneVPL-intel-gpu.git;protocol=https;nobranch=1;lfs=0 \ + file://0001-ARLH-DID-open-source-6286.patch \ + file://0001-JPEGe-Enable-BGR4-JPEG-Enc-support-6470.patch \ + file://0001-Fix-SetBuffersYV12-V-U-plane-offsets-calculation-647.patch \ + " + +SRCREV = "852fa9f705ef44c004d014548601f3804a6de705" +S = "${WORKDIR}/git" + +FILES:${PN} += " \ + ${libdir}/libmfx-gen/enctools.so \ + " + +inherit cmake diff --git a/recipes-multimedia/onevpl/onevpl_2023.4.0.bb b/recipes-multimedia/onevpl/onevpl_2023.4.0.bb new file mode 100644 index 00000000..513c7f2c --- /dev/null +++ b/recipes-multimedia/onevpl/onevpl_2023.4.0.bb @@ -0,0 +1,40 @@ +SUMMARY = "oneAPI Video Processing Library" +DESCRIPTION = "The oneAPI Video Processing Library (oneVPL) provides \ +a single video processing API for encode, decode, and video processing \ +that works across a wide range of accelerators." + +HOMEPAGE = "https://github.com/oneapi-src/oneVPL" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c18ea6bb4786a26bf4eee88a7424a408 \ + file://third-party-programs.txt;md5=0e35a23482445dd089b4eabe19103a06" + +SRC_URI = "git://github.com/oneapi-src/oneVPL.git;protocol=https;branch=master \ + file://0001-vpl.pc.in-dont-pass-pcfiledir-to-cflags.patch \ + " +SRCREV = "2274efcd3672b43297ef774f332e1fed6781381c" +S = "${WORKDIR}/git" + +inherit cmake +DEPENDS += "libva pkgconfig-native" + +PACKAGECONFIG ??= "tools" +PACKAGECONFIG[tools] = "-DBUILD_TOOLS=ON, -DBUILD_TOOLS=OFF, wayland wayland-native wayland-protocols" + +do_install:append() { + mkdir -p ${D}${datadir}/oneVPL/samples + mv ${D}${bindir}/sample_* ${D}${datadir}/oneVPL/samples +} + +COMPATIBLE_HOST = '(x86_64).*-linux' + +PACKAGES =+ "${PN}-examples" + +FILES:${PN}-examples = "${datadir}/vpl \ + " + +FILES_SOLIBSDEV = "" +FILES:${PN}-dev += "${libdir}/libvpl.so" + +FILES:${PN} += " ${datadir}/oneVPL/samples \ + ${libdir}/vpl/libvpl_wayland.so \ + " diff --git a/recipes-oneapi/crypto/intel-crypto-mb/0001-CMakeLists.txt-exclude-host-system-headers.patch b/recipes-oneapi/crypto/intel-crypto-mb/0001-CMakeLists.txt-exclude-host-system-headers.patch new file mode 100644 index 00000000..58ed1c9a --- /dev/null +++ b/recipes-oneapi/crypto/intel-crypto-mb/0001-CMakeLists.txt-exclude-host-system-headers.patch @@ -0,0 +1,27 @@ +From efedbf9080c19241c2aa9ee7ba901245d38c8fa2 Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Mon, 7 Mar 2022 16:44:24 +0800 +Subject: [PATCH 1/2] CMakeLists.txt: exclude host system headers + +Upstream-Status: Inappropriate + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + sources/ippcp/crypto_mb/CMakeLists.txt | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/sources/ippcp/crypto_mb/CMakeLists.txt b/sources/ippcp/crypto_mb/CMakeLists.txt +index c4cc82a..4094f34 100644 +--- a/sources/ippcp/crypto_mb/CMakeLists.txt ++++ b/sources/ippcp/crypto_mb/CMakeLists.txt +@@ -82,7 +82,6 @@ include_directories( + ${CRYPTO_MB_INCLUDE_DIR} + ${OPENSSL_INCLUDE_DIR} + $<$<C_COMPILER_ID:Intel>:$ENV{ROOT}/compiler/include $ENV{ROOT}/compiler/include/icc> +- $<$<NOT:$<C_COMPILER_ID:Intel>>:${CMAKE_SYSTEM_INCLUDE_PATH}> + $<$<OR:$<C_COMPILER_ID:Intel>,$<BOOL:${MSVC_IDE}>>:$ENV{INCLUDE}> + ) + +-- +2.17.1 + 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 @@ +From 3b7b4eca54aa8d851e37f60c74e4a027fa7b21f2 Mon Sep 17 00:00:00 2001 +From: Anuj Mittal <anuj.mittal@intel.com> +Date: Wed, 14 Jun 2023 13:18:45 +0800 +Subject: [PATCH] crypto-mb: Make sure libs are installed correctly + +Dont assume that "lib" is always the correct destination. This fixes +multilib builds when libdir != /usr/lib. + +Upstream-Status: Pending + +Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> +--- + sources/ippcp/crypto_mb/src/CMakeLists.txt | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/sources/ippcp/crypto_mb/src/CMakeLists.txt b/sources/ippcp/crypto_mb/src/CMakeLists.txt +index c9cad06..31f52bd 100644 +--- a/sources/ippcp/crypto_mb/src/CMakeLists.txt ++++ b/sources/ippcp/crypto_mb/src/CMakeLists.txt +@@ -123,8 +123,8 @@ endif(DYNAMIC_LIB OR MB_STANDALONE) + # Installation of the shared library + if (MB_STANDALONE) # standalone crypto_mb's cmake run + install(TARGETS ${MB_DYN_LIB_TARGET} +- LIBRARY DESTINATION "lib" +- RUNTIME DESTINATION "lib" ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION "include/crypto_mb") + elseif (DYNAMIC_LIB) # build from ippcp's cmake + install(TARGETS ${MB_DYN_LIB_TARGET} +@@ -154,7 +154,7 @@ endif() + # Static lib installation + if(MB_STANDALONE) + install(TARGETS ${MB_STATIC_LIB_TARGET} +- ARCHIVE DESTINATION "lib" ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION "include/crypto_mb") + else() + install(TARGETS ${MB_STATIC_LIB_TARGET} +-- +2.37.3 + diff --git a/recipes-oneapi/crypto/intel-crypto-mb/0002-cmake-exclude-Yocto-build-flags.patch b/recipes-oneapi/crypto/intel-crypto-mb/0002-cmake-exclude-Yocto-build-flags.patch new file mode 100644 index 00000000..62b56ea2 --- /dev/null +++ b/recipes-oneapi/crypto/intel-crypto-mb/0002-cmake-exclude-Yocto-build-flags.patch @@ -0,0 +1,45 @@ +From b4549bb765d279b5ba042c6340e1dd69d0890b64 Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Thu, 10 Mar 2022 14:30:01 +0800 +Subject: [PATCH 2/2] cmake: exclude Yocto build flags + +Ipp-crypto has its own set of flags and -march values, +which causes conflict with default -march=nehalem in gcc + +Upstream-Status: Inappropriate + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +--- + sources/ippcp/crypto_mb/src/CMakeLists.txt | 2 +- + sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/sources/ippcp/crypto_mb/src/CMakeLists.txt b/sources/ippcp/crypto_mb/src/CMakeLists.txt +index 1ca1a8c..5284d62 100644 +--- a/sources/ippcp/crypto_mb/src/CMakeLists.txt ++++ b/sources/ippcp/crypto_mb/src/CMakeLists.txt +@@ -81,7 +81,7 @@ endif() + set(MB_LIB_TARGET ${MB_DYN_LIB_TARGET}) + + set_source_files_properties(${CRYPTO_MB_SOURCES} PROPERTIES COMPILE_DEFINITIONS "${AVX512_LIBRARY_DEFINES}" +- COMPILE_FLAGS "${AVX512_CFLAGS} ${CMAKE_ASM_FLAGS} ${CMAKE_C_FLAGS_SECURITY}") ++ COMPILE_FLAGS "${AVX512_CFLAGS} ${CMAKE_C_FLAGS_SECURITY}") + + # Don't specify architectural flags for the assembler for this sources, because of the bug in Intel® C Compiler under MacOS: error: invalid instruction mnemonic 'vkmovb' + # The bug has been fixed since version 2021.3. This is a workaround to support older versions of Intel® C Compiler. +diff --git a/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake b/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake +index a2abeeb..aadd6e2 100644 +--- a/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake ++++ b/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake +@@ -58,7 +58,7 @@ set(LINK_FLAGS_DYNAMIC "${LINK_FLAGS_DYNAMIC} ${CRYPTO_MB_SOURCES_DIR}/cmake/dll + # Compiler flags + + # Tells the compiler to align functions and loops +-set(CMAKE_C_FLAGS " -falign-functions=32 -falign-loops=32") ++set(CMAKE_C_FLAGS " -falign-functions=32 -falign-loops=32 ${TOOLCHAIN_OPTIONS}") + # Ensures that compilation takes place in a freestanding environment + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffreestanding") + +-- +2.17.1 + diff --git a/recipes-oneapi/crypto/intel-crypto-mb_2021.11.1.bb b/recipes-oneapi/crypto/intel-crypto-mb_2021.11.1.bb new file mode 100644 index 00000000..be72fd85 --- /dev/null +++ b/recipes-oneapi/crypto/intel-crypto-mb_2021.11.1.bb @@ -0,0 +1,28 @@ +SUMMARY = "Crypto Multi-buffer Library" +DESCRIPTION = "Intel® Integrated Performance Primitives (Intel® IPP) Cryptography \ +is a secure, fast and lightweight library of building blocks for cryptography, \ +highly-optimized for various Intel® CPUs." +HOMEPAGE = "https://github.com/intel/ipp-crypto" + +LICENSE = "Apache-2.0" + +LIC_FILES_CHKSUM = "file://../../../LICENSE;md5=e787af283468feca985d6b865d27d95b" + +IPP_BRANCH = "ipp-crypto_${@'_'.join(d.getVar('PV').rsplit('.')[-3:])}" + +SRC_URI = "git://github.com/intel/ipp-crypto;protocol=https;branch=${IPP_BRANCH} \ + file://0001-CMakeLists.txt-exclude-host-system-headers.patch;striplevel=4 \ + file://0002-cmake-exclude-Yocto-build-flags.patch;striplevel=4 \ + file://0001-crypto-mb-Make-sure-libs-are-installed-correctly.patch;striplevel=4 \ + " +SRCREV = "d02611e34328898d16025467d3deeb7d62b6076b" + +S = "${WORKDIR}/git/sources/ippcp/crypto_mb" + +DEPENDS = "openssl" + +inherit cmake pkgconfig +COMPATIBLE_HOST = '(x86_64).*-linux' + +EXTRA_OECMAKE += " -DARCH=intel64" +EXTRA_OECMAKE += " -DTOOLCHAIN_OPTIONS='${TOOLCHAIN_OPTIONS}'" diff --git a/recipes-oneapi/onedpl/onedpl_2022.3.0.bb b/recipes-oneapi/onedpl/onedpl_2022.3.0.bb new file mode 100644 index 00000000..d80b64c9 --- /dev/null +++ b/recipes-oneapi/onedpl/onedpl_2022.3.0.bb @@ -0,0 +1,26 @@ +SUMMARY = "oneAPI DPC++ Library (oneDPL)" +DESCRIPTION = "The oneAPI DPC++ Library (oneDPL) aims to work with the \ +oneAPI DPC++ Compiler to provide high-productivity APIs to developers, \ +which can minimize DPC++ programming efforts across devices for high \ +performance parallel applications." +HOMEPAGE = "https://github.com/oneapi-src/oneDPL" + +LICENSE = "Apache-2.0-with-LLVM-exception" +LIC_FILES_CHKSUM = "file://licensing/LICENSE.txt;md5=2e982d844baa4df1c80de75470e0c5cb \ + file://licensing/third-party-programs.txt;md5=cfb8d6b1f04a8fcc7d0dddd817619634" + +S = "${WORKDIR}/git" + +SRC_URI = "git://github.com/oneapi-src/oneDPL.git;protocol=https;branch=release/2022.3 \ + " +SRCREV = "180f18ad25fbc39fa13bad43f1df7d54ee8f5609" + +do_compile[noexec] = "1" +do_configure[noexec] = "1" + +do_install() { + install -d -m 755 ${D}${includedir}/onedpl + cp -r ${S}/include/* ${D}${includedir}/onedpl +} + +UPSTREAM_CHECK_GITTAGREGEX = "^oneDPL-(?P<pver>(\d+(\.\d+)+))-release$" diff --git a/recipes-oneapi/setup-oneapi-env/files/intel-oneapi-runtime.conf b/recipes-oneapi/setup-oneapi-env/files/intel-oneapi-runtime.conf new file mode 100644 index 00000000..5faf9854 --- /dev/null +++ b/recipes-oneapi/setup-oneapi-env/files/intel-oneapi-runtime.conf @@ -0,0 +1,4 @@ +/opt/intel/oneapi/lib +/opt/intel/oneapi/lib/intel64 +/opt/intel/oneapi/lib/ia32 +/opt/intel/oneapi/lib/emu diff --git a/recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2023.0.0-25370.bb b/recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2023.0.0-25370.bb new file mode 100644 index 00000000..702f794e --- /dev/null +++ b/recipes-oneapi/setup-oneapi-env/setup-intel-oneapi-env_2023.0.0-25370.bb @@ -0,0 +1,20 @@ +SUMMARY = "Intel® oneAPI runtime libraries environment set up" +DESCRIPTION = "Recipe to set up the environment for Intel® oneAPI runtime libraries \ +via configuration file in ld.so.conf.d directory." + +LICENSE = "EULA" +LIC_FILES_CHKSUM = "file://${CUSTOM_LICENSES_PATH}/EULA;md5=7bfc91523de2e84e7131d0eacf2827d4" + +SRC_URI = "file://intel-oneapi-runtime.conf" + +do_install() { + mkdir -p ${D}${sysconfdir}/ld.so.conf.d/ + install -m 644 ${WORKDIR}/intel-oneapi-runtime.conf ${D}${sysconfdir}/ld.so.conf.d/ +} + +pkg_postinst_ontarget:${PN}() { +if [ x"$D" = "x" ]; then + if [ -x /sbin/ldconfig ]; then /sbin/ldconfig ; fi +fi +} +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes-opencl/igc/files/0001-Fix-for-the-gcc-9-issue.patch b/recipes-opencl/igc/files/0001-Fix-for-the-gcc-9-issue.patch deleted file mode 100644 index 70447176..00000000 --- a/recipes-opencl/igc/files/0001-Fix-for-the-gcc-9-issue.patch +++ /dev/null @@ -1,76 +0,0 @@ -From c3e985e0e82e9b4c2cc8d4dbfd8ff7890daa50e0 Mon Sep 17 00:00:00 2001 -From: "Wesierski, Lukasz" <lukasz.wesierski@intel.com> -Date: Thu, 6 Jun 2019 21:00:00 -0700 -Subject: [PATCH] Fix for the gcc-9 issue. - -Fixes #91 - -Change-Id: I8149771d6add9645126cb94584f46485c256a488 - -Upstream-Status: Backport -[https://github.com/intel/intel-graphics-compiler/commit/b95b2220ddd1d50b718cae6829d832a14ff60790] - -Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> ---- - IGC/AdaptorOCL/cif/cif/common/cif.h | 8 ++++++++ - IGC/common/LLVMWarningsPop.hpp | 4 ++++ - IGC/common/LLVMWarningsPush.hpp | 10 ++++++++++ - 3 files changed, 22 insertions(+) - -diff --git a/IGC/AdaptorOCL/cif/cif/common/cif.h b/IGC/AdaptorOCL/cif/cif/common/cif.h -index 99d67d5a..00352964 100644 ---- a/IGC/AdaptorOCL/cif/cif/common/cif.h -+++ b/IGC/AdaptorOCL/cif/cif/common/cif.h -@@ -310,6 +310,14 @@ struct InterfacesList { - requestedInterfaceId, std::forward<DefaultValueT>(defaultValue), std::forward<Args>(args)...); - } - -+ /// Calls Callable::Call with all contained interfaces (sequentially, one at a time) as template parameters. -+ /// Arguments will be forwarded as regular function parameters to Callable::Call. -+ template <typename Callable, typename RetType, typename DefaultValueT> -+ static RetType forwardToOne(InterfaceId_t requestedInterfaceId, DefaultValueT &&defaultValue) { -+ return forwardToOneImpl<0, RetType, Callable, DefaultValueT, InterfacePack<SupportedInterfaces...>>( -+ requestedInterfaceId, std::forward<DefaultValueT>(defaultValue)); -+ } -+ - /// Calls Callable::Call with all contained interfaces (sequentially, one at a time) as template parameters. - /// Arguments will be forwarded as regular function parameters to Callable::Call. - template <typename Callable, typename... Args> -diff --git a/IGC/common/LLVMWarningsPop.hpp b/IGC/common/LLVMWarningsPop.hpp -index 9875acb8..f8e405d2 100644 ---- a/IGC/common/LLVMWarningsPop.hpp -+++ b/IGC/common/LLVMWarningsPop.hpp -@@ -57,3 +57,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - #ifdef _MSC_VER - # pragma warning( pop ) - #endif -+ -+#if defined(__linux__) -+# pragma GCC diagnostic pop -+#endif -diff --git a/IGC/common/LLVMWarningsPush.hpp b/IGC/common/LLVMWarningsPush.hpp -index bab4a5e1..aca8db34 100644 ---- a/IGC/common/LLVMWarningsPush.hpp -+++ b/IGC/common/LLVMWarningsPush.hpp -@@ -55,8 +55,18 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - # pragma warning( push ) - #endif - -+#if defined(__linux__) -+# pragma GCC diagnostic push -+#endif -+ - #include <llvm/Config/llvm-config.h> - -+#if defined(__linux__) -+# if __GNUC__ > 8 -+# pragma GCC diagnostic ignored "-Winit-list-lifetime" -+# endif -+#endif -+ - #if defined( _WIN32 ) || defined( _WIN64 ) - - // 'inline' : used more than once --- -2.17.0 - diff --git a/recipes-opencl/igc/files/0001-skip-execution-of-ElfPackager.patch b/recipes-opencl/igc/files/0001-skip-execution-of-ElfPackager.patch deleted file mode 100644 index 1e0c3444..00000000 --- a/recipes-opencl/igc/files/0001-skip-execution-of-ElfPackager.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 78270818abd269bc8a1cf5deb69f15e3849333fe Mon Sep 17 00:00:00 2001 -From: Naveen Saini <naveen.kumar.saini@intel.com> -Date: Wed, 12 Jun 2019 14:10:23 +0800 -Subject: [PATCH] skip execution of ElfPackager - -ElfPackager adds the ability to convert llvm bitcode into elf files for -easier partitioning. Skip for now until we start building a native -version for this. - -Upstream-Status: Inappropriate [configuration specific] - -Signed-off-by: Anuj Mittal <anuj.mittal@intel.com> -Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> ---- - IGC/ElfPackager/CMakeLists.txt | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/IGC/ElfPackager/CMakeLists.txt b/IGC/ElfPackager/CMakeLists.txt -index 6bf4aa01..d8cd4e8b 100644 ---- a/IGC/ElfPackager/CMakeLists.txt -+++ b/IGC/ElfPackager/CMakeLists.txt -@@ -69,10 +69,10 @@ include_directories ( - ${IGC_SOURCE_DIR}/AdaptorOCL/CLElfLib/ - ) - --add_custom_command(TARGET ${IGC_BUILD__PROJ__ElfPackager} -- POST_BUILD -- COMMAND $<TARGET_FILE:${IGC_BUILD__PROJ__ElfPackager}> -includeSizet -funcList ${CMAKE_CURRENT_SOURCE_DIR}/function_bin.txt ${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc ${IGC_BUILD__BIF_DIR}/igdclbif.bin -- ) -+#add_custom_command(TARGET ${IGC_BUILD__PROJ__ElfPackager} -+# POST_BUILD -+# COMMAND $<TARGET_FILE:${IGC_BUILD__PROJ__ElfPackager}> -includeSizet -funcList ${CMAKE_CURRENT_SOURCE_DIR}/function_bin.txt ${IGC_BUILD__BIF_DIR}/OCLBiFImpl.bc ${IGC_BUILD__BIF_DIR}/igdclbif.bin -+# ) - - - add_dependencies("${IGC_BUILD__PROJ__ElfPackager}" "${IGC_BUILD__PROJ__BiFModule_OCL}") --- -2.17.0 - diff --git a/recipes-opencl/igc/intel-graphics-compiler_1.0.6.bb b/recipes-opencl/igc/intel-graphics-compiler_1.0.6.bb deleted file mode 100644 index f64b97fd..00000000 --- a/recipes-opencl/igc/intel-graphics-compiler_1.0.6.bb +++ /dev/null @@ -1,27 +0,0 @@ -SUMMARY = "The Intel(R) Graphics Compiler for OpenCL(TM)" -DESCRIPTION = "The Intel(R) Graphics Compiler for OpenCL(TM) is an \ -llvm based compiler for OpenCL(TM) targeting Intel Gen graphics \ -hardware architecture." - -LICENSE = "MIT & BSD-3-Clause" -LIC_FILES_CHKSUM = "file://IGC/BiFModule/Implementation/ExternalLibraries/libclc/LICENSE.TXT;md5=311cfc1a5b54bab8ed34a0b5fba4373e \ - file://IGC/Compiler/LegalizationPass.cpp;md5=4e9a7f0d710a0546cbf5581e1565a986" - -SRC_URI = "git://github.com/intel/intel-graphics-compiler.git;protocol=https \ - file://0001-skip-execution-of-ElfPackager.patch \ - file://0001-Fix-for-the-gcc-9-issue.patch \ - " - -SRCREV = "ebfc688126900a821e407a96417800919b793447" - -S = "${WORKDIR}/git" - -inherit cmake - -COMPATIBLE_HOST = '(x86_64).*-linux' -COMPATIBLE_HOST_libc-musl = "null" - -DEPENDS_class-target = " flex-native bison-native clang clang-cross-x86_64" - -EXTRA_OECMAKE = "-DIGC_PREFERRED_LLVM_VERSION=8.0.0 -DPYTHON_EXECUTABLE=${HOSTTOOLS_DIR}/python2" -EXTRA_OECMAKE += "-DCOMMON_CLANG_LIBRARY_NAME=common_clang" diff --git a/recipes-selftest/images/secureboot-selftest-image-unsigned.bb b/recipes-selftest/images/secureboot-selftest-image-unsigned.bb index e03e7b47..d0fa6405 100644 --- a/recipes-selftest/images/secureboot-selftest-image-unsigned.bb +++ b/recipes-selftest/images/secureboot-selftest-image-unsigned.bb @@ -1,12 +1,12 @@ require recipes-core/images/core-image-minimal.bb -DEPENDS_remove = "grub-efi" +DEPENDS:remove = "grub-efi" inherit uefi-comboapp WKS_FILE = "generic-bootdisk.wks.in" -do_uefiapp_deploy_append() { +do_uefiapp_deploy:append() { for i in ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi; do target=`basename $i` target=`echo $target | sed -e 's/${IMAGE_LINK_NAME}.//'` diff --git a/recipes-support/isa-l/isa-l_2.31.0.bb b/recipes-support/isa-l/isa-l_2.31.0.bb new file mode 100644 index 00000000..d5d09002 --- /dev/null +++ b/recipes-support/isa-l/isa-l_2.31.0.bb @@ -0,0 +1,19 @@ +SUMMARY = "Intelligent Storage Acceleration Library" +DESCRIPTION = "ISA-L is a collection of optimized low-level functions \ +targeting storage applications." +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=2476688d0948d4a3f7c69473a603540d" +SECTION = "lib" + +inherit autotools pkgconfig + +S = "${WORKDIR}/git" +SRCREV = "bd226375027899087bd48f3e59b910430615cc0a" +SRC_URI = "git://github.com/intel/isa-l.git;branch=master;protocol=https" + +DEPENDS = "nasm-native" +AS[unexport] = "1" + +TARGET_CC_ARCH += "${LDFLAGS}" + +COMPATIBLE_HOST = '(x86_64).*-linux' diff --git a/recipes-support/jhi/jhi_1.33.bb b/recipes-support/jhi/jhi_1.33.bb deleted file mode 100755 index 032f4d87..00000000 --- a/recipes-support/jhi/jhi_1.33.bb +++ /dev/null @@ -1,65 +0,0 @@ -SUMMARY = "Intel Dynamic Application Loader (DAL) Host Interface" -DESCRIPTION = "A daemon and libraries which allow user space applications \ -to install Java applets on DAL FW and communicate with them" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=833126f14614a3276708a4d7c9734645" - -SRC_URI = "git://github.com/intel/dynamic-application-loader-host-interface.git;protocol=https" - -inherit cmake useradd systemd pkgconfig - -SRCREV = "44d64cdbcf7eacd397ce9c18b9094514b62093e6" - -S = "${WORKDIR}/git" - -DEPENDS += "util-linux libxml2" -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}" -RDEPENDS_${PN} += "bash" - -USERADD_PACKAGES = "${PN}" -USERADD_PARAM_${PN} = "--system --no-create-home --shell /bin/false -g mei jhi" - -GROUPADD_PARAM_${PN} = "-g 880 mei" - -SYSTEMD_PACKAGES = "${PN}" - -COMPATIBLE_HOST_libc-musl = 'null' - -# systemd is the default so they are installed when sysvinit is not selected as INIT_SYSTEM -EXTRA_OECMAKE = "-DCMAKE_SKIP_RPATH=ON \ - -DINIT_SYSTEM=${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'SysVinit', 'systemd', d)} \ - -DAPPLETS_DIR=${libdir}/dal/applets \ - -DAPP_REPO_DIR=${localstatedir}/cache/dal/applet_repository \ - " - -do_install_append () { - install -d ${D}${localstatedir}/cache/dal/applet_repository - - chown -R jhi ${D}${localstatedir}/cache/dal/applet_repository - chgrp -R mei ${D}${localstatedir}/cache/dal/applet_repository - - install -d ${D}${bindir} - install -m 755 ${B}/bin_linux/smoketest ${D}${bindir} - install -m 755 ${B}/bin_linux/bist ${D}${bindir} - - install -d ${D}${libdir}/dal/applets - cp -r ${S}/test/smoketest/applets/* ${D}${libdir}/dal/applets/ -} - -PACKAGES =+ "${PN}-test" - -FILES_${PN}-dev = "" - -FILES_${PN} = "\ - ${sbindir} \ - ${sysconfdir} \ - ${libdir} \ - ${libdir}/dal/applets \ - ${systemd_system_unitdir} \ - ${localstatedir}/cache/dal/applet_repository \ - " - -FILES_${PN}-test = "\ - ${bindir} \ - ${libdir}/dal/applets \ - " diff --git a/recipes-support/libipt/libipt_2.1.1.bb b/recipes-support/libipt/libipt_2.1.1.bb new file mode 100644 index 00000000..205967c1 --- /dev/null +++ b/recipes-support/libipt/libipt_2.1.1.bb @@ -0,0 +1,34 @@ +SUMMARY = "Intel(R) Processor Trace Decoder Library" +DESCRIPTION = "The Intel Processor Trace (Intel PT) Decoder Library is Intel's \ +reference implementation for decoding Intel PT. It can be used as a standalone \ +library or it can be partially or fully integrated into your tool." +HOMEPAGE = "https://github.com/intel/libipt" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a429afa59f273b5d12778eda69d10313" + +inherit pkgconfig cmake + +S = "${WORKDIR}/git" + +SRC_URI = "git://github.com/intel/libipt.git;protocol=https;branch=stable/v2.1" + +SRCREV = "1c9bc700f4b9a71fd2d1cf1742de7e2351ddb281" + +EXTRA_OECMAKE += " \ + -DPTDUMP=ON \ + -DPTTC=ON \ + -DPTSEG=ON \ + -DCMAKE_SKIP_RPATH=ON \ + " + +do_install:append() { + install -d ${D}${bindir}/libipt + install -d ${D}${bindir}/libipt/tests + + cp -r ${B}/bin/* ${D}${bindir}/libipt/ + cp -r ${WORKDIR}/git/test/src/* ${D}${bindir}/libipt/tests +} + +FILES:${PN}-test = "${bindir}" +PACKAGES =+ "${PN}-test" diff --git a/recipes-support/sbsigntool/sbsigntool-native_git.bb b/recipes-support/sbsigntool/sbsigntool-native_git.bb index 65546c5c..5a9f5b4d 100644 --- a/recipes-support/sbsigntool/sbsigntool-native_git.bb +++ b/recipes-support/sbsigntool/sbsigntool-native_git.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Utility for signing and verifying files for UEFI Secure Boot" -LICENSE = "GPLv3 & LGPL-2.1 & LGPL-3.0 & MIT" +LICENSE = "GPL-3.0-only & LGPL-2.1-only & LGPL-3.0-only & MIT" # sbsigntool statically links to libccan.a which is built with modules # passed to "create-ccan-tree" (and their dependencies). Therefore, @@ -19,24 +19,25 @@ LIC_FILES_CHKSUM = "file://LICENSE.GPLv3;md5=9eef91148a9b14ec7f9df333daebc746 \ # The original upstream is git://kernel.ubuntu.com/jk/sbsigntool but it has # not been maintained and many patches have been backported in this repo. -SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git;protocol=https;name=sbsigntools \ - git://github.com/rustyrussell/ccan.git;protocol=https;destsuffix=git/lib/ccan.git;name=ccan \ +SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git;protocol=https;name=sbsigntools;branch=master \ + git://github.com/rustyrussell/ccan.git;protocol=https;destsuffix=git/lib/ccan.git;name=ccan;branch=master \ file://0001-configure-Fixup-build-dependencies-for-cross-compili.patch \ - " + " -SRCREV_sbsigntools ?= "216dbd3331a7e14ff79cc4dd68c29896f1152ae4" +SRCREV_sbsigntools ?= "9cfca9fe7aa7a8e29b92fe33ce8433e212c9a8ba" SRCREV_ccan ?= "b1f28e17227f2320d07fe052a8a48942fe17caa5" SRCREV_FORMAT = "sbsigntools_ccan" DEPENDS = "binutils-native gnu-efi-native help2man-native openssl-native util-linux-native" -PV = "0.9.2-git${SRCPV}" +PV = "0.9.5" S = "${WORKDIR}/git" -inherit native autotools pkgconfig +inherit autotools pkgconfig +inherit native -do_configure_prepend() { +do_configure:prepend() { cd ${S} sed -i s#RECIPE_SYSROOT#${RECIPE_SYSROOT_NATIVE}#g configure.ac @@ -78,3 +79,5 @@ EXTRA_OEMAKE = "\ -I${STAGING_INCDIR_NATIVE} \ -I${STAGING_INCDIR_NATIVE}/efi/${@efi_arch(d)}' \ " + +CFLAGS:append = " -Wno-error" 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. Prepend these paths with a placeholder that can be replaced with the actual paths once they are resolved. -Upstream status: inappropriate [OE specific] +Upstream-Status: Inappropriate [OE specific] Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com> diff --git a/wic/grub-bootdisk-microcode.wks.in b/wic/grub-bootdisk-microcode.wks.in index d83b1dfb..7dc66f98 100644 --- a/wic/grub-bootdisk-microcode.wks.in +++ b/wic/grub-bootdisk-microcode.wks.in @@ -9,4 +9,4 @@ part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 part swap --ondisk sda --size 44 --label swap1 --fstype=swap --use-uuid -bootloader --ptable gpt --timeout=5 --append="rootfstype=ext4 ${APPEND}" +bootloader --ptable gpt --timeout=5 --append=" rootfstype=ext4 " diff --git a/wic/image-installer.wks.in b/wic/image-installer.wks.in index 4de318f6..933e8d85 100644 --- a/wic/image-installer.wks.in +++ b/wic/image-installer.wks.in @@ -5,4 +5,4 @@ part /boot --source bootimg-efi --sourceparams="loader=${EFI_PROVIDER},title=ins part / --source bootimg-partition --ondisk sda --fstype=ext4 --label image --use-uuid --align 1024 -bootloader --ptable gpt --timeout=5 --append="rootwait ${APPEND}" +bootloader --ptable gpt --timeout=5 --append=" rootwait " diff --git a/wic/systemd-bootdisk-microcode.wks.in b/wic/systemd-bootdisk-microcode.wks.in index 03528950..925c1fa3 100644 --- a/wic/systemd-bootdisk-microcode.wks.in +++ b/wic/systemd-bootdisk-microcode.wks.in @@ -10,4 +10,4 @@ part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 part swap --ondisk sda --size 44 --label swap1 --fstype=swap --use-uuid -bootloader --ptable gpt --timeout=5 --append="rootfstype=ext4 ${APPEND}" +bootloader --ptable gpt --timeout=5 --append=" rootfstype=ext4 " |