From patchwork Sat Oct 20 22:14:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Petazzoni X-Patchwork-Id: 987259 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=bootlin.com Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42cxsv3LLkz9sC2 for ; Sun, 21 Oct 2018 09:14:59 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id BC89E303B8; Sat, 20 Oct 2018 22:14:54 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QOHdPjQpEIa2; Sat, 20 Oct 2018 22:14:50 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 97B023037F; Sat, 20 Oct 2018 22:14:50 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id E06F81BF39A for ; Sat, 20 Oct 2018 22:14:47 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id DD99285A96 for ; Sat, 20 Oct 2018 22:14:47 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id z9YD1PD7e-Kw for ; Sat, 20 Oct 2018 22:14:45 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail.bootlin.com (mail.bootlin.com [62.4.15.54]) by fraxinus.osuosl.org (Postfix) with ESMTP id 81FA68540C for ; Sat, 20 Oct 2018 22:14:45 +0000 (UTC) Received: by mail.bootlin.com (Postfix, from userid 110) id 11066207BD; Sun, 21 Oct 2018 00:14:44 +0200 (CEST) Received: from localhost (unknown [31.185.52.13]) by mail.bootlin.com (Postfix) with ESMTPSA id 974EC2072F; Sun, 21 Oct 2018 00:14:43 +0200 (CEST) From: Thomas Petazzoni To: Buildroot List , Valentin Korenblit , Romain Naour Date: Sun, 21 Oct 2018 00:14:33 +0200 Message-Id: <20181020221437.12687-3-thomas.petazzoni@bootlin.com> X-Mailer: git-send-email 2.14.4 In-Reply-To: <20181020221437.12687-1-thomas.petazzoni@bootlin.com> References: <20181020221437.12687-1-thomas.petazzoni@bootlin.com> Subject: [Buildroot] [PATCH 2/6] package/mesa3d: enable OpenCL support X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Valentin Korenblit , Thomas Petazzoni MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" From: Valentin Korenblit This patch provides Clover, the OpenCL 1.1 API implementation by Mesa for AMD GPUs. It generates libOpenCL.so. Add --disable-opencl-icd because in Mesa 18 it defaults to on. When disabled, the shared library is named libOpenCL instead of libMesaOpenCL and CL headers are installed. Given that clc headers are being installed to a non-standard location, it is necessary to specify this path in configure.ac. Otherwise, pkg-config will output the absolute path to these headers located in STAGING_DIR, which will cause a runtime error when calling clBuildProgram. Signed-off-by: Valentin Korenblit Signed-off-by: Valentin Korenblit [Thomas: - improve the description of the patch, based on input from Romain - register as a libopencl provider] Signed-off-by: Thomas Petazzoni Signed-off-by: Valentin Korenblit <valentin.korenblit@smile.fr> Signed-off-by: Valentin Korenblit <valentinkorenblit@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> --- package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch | 37 +++++++++++++++++++++++++ package/mesa3d/Config.in | 14 ++++++++++ package/mesa3d/mesa3d.mk | 12 +++++++- 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch diff --git a/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch b/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch new file mode 100644 index 0000000000..42ae826a36 --- /dev/null +++ b/package/mesa3d/0003-set-LIBCLC_INCLUDEDIR.patch @@ -0,0 +1,37 @@ +From 94bceeb621e36f3188c6246a763def8695526578 Mon Sep 17 00:00:00 2001 +From: Valentin Korenblit +Date: Sat, 20 Oct 2018 10:56:23 +0200 +Subject: [PATCH] Set proper value for LIBCLC_INCLUDEDIR + +LIBCLC_INCLUDEDIR is the location where mesa3d OpenCL implementation +will look for OpenCL "headers" on the target, when building the OpenCL +kernels. + +The value returned by pkg-config for includedir is relevant when +cross-compiling, on the build machine. But in this specific case, we +really need a value that is valid on the target. + +Those headers are installed by the libclc package in /usr/share so +that they are not removed by Buildroot target-finalize logic. + +Signed-off-by: Valentin Korenblit +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 864dcae..cc2390b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2429,7 +2429,7 @@ if test "x$enable_opencl" = xyes; then + PKG_CONFIG_PATH environment variable. + By default libclc.pc is installed to /usr/local/share/pkgconfig/]) + else +- LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc` ++ LIBCLC_INCLUDEDIR="/usr/share" + LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc` + AC_SUBST([LIBCLC_INCLUDEDIR]) + AC_SUBST([LIBCLC_LIBEXECDIR]) +-- +2.7.4 + diff --git a/package/mesa3d/Config.in b/package/mesa3d/Config.in index 872859b693..345f5a28ea 100644 --- a/package/mesa3d/Config.in +++ b/package/mesa3d/Config.in @@ -50,6 +50,17 @@ comment "llvm support needs a toolchain not affected by GCC bug 64735" depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 +# clang and libclc dependencies are satisfied by +# BR2_PACKAGE_MESA3D_LLVM +config BR2_PACKAGE_MESA3D_OPENCL + bool "OpenCL support" + depends on BR2_PACKAGE_MESA3D_LLVM + depends on BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 || \ + BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI + select BR2_PACKAGE_CLANG + select BR2_PACKAGE_LIBCLC + select BR2_PACKAGE_HAS_LIBOPENCL + # inform the .mk file of gallium, dri or vulkan driver selection config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER bool @@ -270,6 +281,9 @@ config BR2_PACKAGE_PROVIDES_LIBEGL config BR2_PACKAGE_PROVIDES_LIBGLES default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_ES +config BR2_PACKAGE_PROVIDES_LIBOPENCL + default "mesa3d" if BR2_PACKAGE_MESA3D_OPENCL + endif # BR2_PACKAGE_MESA3D comment "mesa3d needs a toolchain w/ C++, NPTL, dynamic library" diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index d0f231792e..00d025d450 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -11,6 +11,7 @@ MESA3D_SITE = https://mesa.freedesktop.org/archive MESA3D_LICENSE = MIT, SGI, Khronos MESA3D_LICENSE_FILES = docs/license.html # 0002-configure.ac-invert-order-for-wayland-scanner-check.patch +# 0003-set-LIBCLC_INCLUDEDIR.patch MESA3D_AUTORECONF = YES MESA3D_INSTALL_STAGING = YES @@ -44,8 +45,17 @@ else MESA3D_CONF_OPTS += --disable-llvm endif -# Disable opencl in case libclc is detected +# Disable opencl-icd: OpenCL lib will be named libOpenCL instead of +# libMesaOpenCL and CL headers are installed +ifeq ($(BR2_PACKAGE_MESA3D_OPENCL),y) +MESA3D_PROVIDES += libopencl +MESA3D_DEPENDENCIES += clang libclc +MESA3D_CONF_OPTS += --enable-opencl \ + --disable-opencl-icd \ + --with-clang-libdir=$(STAGING_DIR)/usr/lib +else MESA3D_CONF_OPTS += --disable-opencl +endif ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y) MESA3D_DEPENDENCIES += elfutils