diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml index cd94766ed..851a962cf 100644 --- a/.github/workflows/build-yocto.yml +++ b/.github/workflows/build-yocto.yml @@ -297,6 +297,14 @@ jobs: type: default include: # Additional builds for specific machines + - machine: qcom-armv8a + distro: + name: nodistro-nogl + yamlfile: ':ci/test-oe-nogl.yml' + kernel: + type: default + dirname: "" + yamlfile: "" - machine: qcom-armv8a distro: name: qcom-distro diff --git a/ci/test-oe-nogl.yml b/ci/test-oe-nogl.yml new file mode 100644 index 000000000..6c4582151 --- /dev/null +++ b/ci/test-oe-nogl.yml @@ -0,0 +1,18 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json + +header: + version: 14 + +repos: + meta-openembedded: + url: https://github.com/openembedded/meta-openembedded + patches: + plain: + repo: meta-qcom + path: patches/meta-oe/0001-mariadb-fix-building-for-the-ARMv8.3-A-and-later-sys.patch + layers: + meta-oe: + +local_conf_header: + nogl: | + DISTRO_FEATURES:remove = "opengl" diff --git a/recipes-graphics/adreno/qcom-adreno_1.855.5.bb b/recipes-graphics/adreno/qcom-adreno_1.855.5.bb index b93a42e40..4b82f3c50 100644 --- a/recipes-graphics/adreno/qcom-adreno_1.855.5.bb +++ b/recipes-graphics/adreno/qcom-adreno_1.855.5.bb @@ -14,7 +14,8 @@ PBT_BUILD_DATE = "260608" SRC_URI[sha256sum] = "771b20cd2bfbbef08f707af6ff8c765027c8351cf24c767d9698ca9acda2c599" # These are listed here in order to identify RDEPENDS -DEPENDS += " glib-2.0 libdrm virtual/libgbm msm-gbm-backend \ +DEPENDS += " glib-2.0 libdrm \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virtual/libgbm msm-gbm-backend', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'glvnd', 'libglvnd', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxcb libx11 xcb-util-image', '', d)}" @@ -28,7 +29,12 @@ COMPATIBLE_MACHINE = "^$" # qcom-armv8a machine. COMPATIBLE_MACHINE:aarch64 = "(.*)" -PACKAGE_BEFORE_PN += " ${PN}-common ${PN}-gles1 ${PN}-gles2 ${PN}-egl ${PN}-vulkan ${PN}-cl" +PACKAGE_BEFORE_PN += " \ + ${PN}-common \ + ${@bb.utils.contains('DISTRO_FEATURES', 'glvnd', '${PN}-gles1 ${PN}-gles2 ${PN}-egl', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl vulkan', '${PN}-vulkan', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', '${PN}-cl', '', d)} \ +" RPROVIDES:${PN}-egl += "virtual-egl-icd" RPROVIDES:${PN}-cl += "virtual-opencl-icd" @@ -41,37 +47,50 @@ RDEPENDS:${PN}-dev += "${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'opencl RDEPENDS:${PN} = " \ ${@bb.utils.contains('DISTRO_FEATURES', 'glvnd', 'qcom-adreno-egl', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'qcom-adreno-vulkan', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl vulkan', 'qcom-adreno-vulkan', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'qcom-adreno-cl', '', d)} \ " ALLOW_EMPTY:${PN} = "1" do_install () { - if ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'true', 'false', d)}; then - install -d ${D}${includedir}/CL - cp ${S}/usr/include/CL/cl_ext_qcom.h ${D}${includedir}/CL/ - fi - install -d ${D}/${libdir} cp -r ${S}/usr/lib/* ${D}/${libdir}/ - if ! ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'true', 'false', d)}; then - rm ${D}/${libdir}/libeglSubDriverX11.so* + if ${@bb.utils.contains('DISTRO_FEATURES', 'glvnd', 'true', 'false', d)}; then + install -d ${D}${datadir}/glvnd/egl_vendor.d + cp ${S}/usr/share/glvnd/egl_vendor.d/10_adreno.json ${D}${datadir}/glvnd/egl_vendor.d/ + + if ! ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'true', 'false', d)}; then + rm ${D}${libdir}/libeglSubDriverX11.so* + fi + + if ! ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'true', 'false', d)}; then + rm ${D}${libdir}/libeglSubDriverWayland.so* + fi + else + rm ${D}${libdir}/libeglSubDriver*.so* \ + ${D}${libdir}/libGLES*.so* \ + ${D}${libdir}/libEGL_*.so* fi - if ! ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'true', 'false', d)}; then - rm ${D}/${libdir}/libeglSubDriverWayland.so* + if ${@bb.utils.contains('DISTRO_FEATURES', 'opengl vulkan', 'true', 'false', d)}; then + install -d ${D}${datadir}/vulkan/icd.d + cp ${S}/usr/share/vulkan/icd.d/adrenovk.json ${D}${datadir}/vulkan/icd.d/ + else + rm ${D}${libdir}/libvulkan_*.so* fi - install -d ${D}${datadir}/glvnd/egl_vendor.d - cp ${S}/usr/share/glvnd/egl_vendor.d/10_adreno.json ${D}${datadir}/glvnd/egl_vendor.d/ - - install -d ${D}${datadir}/vulkan/icd.d - cp ${S}/usr/share/vulkan/icd.d/adrenovk.json ${D}${datadir}/vulkan/icd.d/ + if ${@bb.utils.contains('DISTRO_FEATURES', 'opencl', 'true', 'false', d)}; then + install -d ${D}${includedir}/CL + cp ${S}/usr/include/CL/cl_ext_qcom.h ${D}${includedir}/CL/ - install -d ${D}${sysconfdir}/OpenCL/vendors - cp ${S}/etc/OpenCL/vendors/adrenocl.icd ${D}${sysconfdir}/OpenCL/vendors/ + install -d ${D}${sysconfdir}/OpenCL/vendors + cp ${S}/etc/OpenCL/vendors/adrenocl.icd ${D}${sysconfdir}/OpenCL/vendors/ + else + rm ${D}${libdir}/libOpenCL_*.so* \ + ${D}${libdir}/libCB*.so* + fi install -d ${D}${sysconfdir}/modprobe.d cp ${S}/etc/modprobe.d/qcom-adreno.conf ${D}/${sysconfdir}/modprobe.d/qcom-adreno.conf diff --git a/recipes-test/images/initramfs-test-full-image.bb b/recipes-test/images/initramfs-test-full-image.bb index 21519e72c..4d27ffa26 100644 --- a/recipes-test/images/initramfs-test-full-image.bb +++ b/recipes-test/images/initramfs-test-full-image.bb @@ -21,7 +21,7 @@ PACKAGE_INSTALL += " \ util-linux \ util-linux-chrt \ util-linux-lsblk \ - weston-examples \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'weston-examples', '', d)} \ " PACKAGE_INSTALL:append:aarch64 = " \ @@ -50,9 +50,12 @@ PACKAGE_INSTALL_openembedded-layer += " \ makedumpfile \ mbw \ ncurses-terminfo-base \ - pipewire-tools \ sysbench \ tinymembench \ tiobench \ whetstone \ " + +PACKAGE_INSTALL_multimedia-layer += " \ + pipewire-tools \ +"