From patchwork Wed Mar 8 19:07:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kanavin X-Patchwork-Id: 20605 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C7D42C6FD1F for ; Wed, 8 Mar 2023 19:07:48 +0000 (UTC) Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) by mx.groups.io with SMTP id smtpd.web10.1879.1678302458631327455 for ; Wed, 08 Mar 2023 11:07:38 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=QfJSF0G8; spf=pass (domain: gmail.com, ip: 209.85.128.46, mailfrom: alex.kanavin@gmail.com) Received: by mail-wm1-f46.google.com with SMTP id d41-20020a05600c4c2900b003e9e066550fso1780380wmp.4 for ; Wed, 08 Mar 2023 11:07:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678302457; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=8yghyqyGu/tx6039smy4Qk23+TdY491zJTNDBpEla5w=; b=QfJSF0G8cVwcsxkt8sG9/+4BXfvrfEg7CiJEgRRdQuqiN625f6K2jFVvBhw6a56aSB FVuqyalZ+cFUYBktIg2xnBG94sVe49Oo5Ms1vVTJEOjJ76smDKMnvPeWllHFLdB/WoZa FwtxZdZoWK0onZ0FoeAO5epbwOhutdPbBS8dMgW/FKRFmpaiKtXB09Zp6pSqw22c0QpV 3EVLS5pNU2smKyttBptTsCZSRCkgCllX2QHw+hVdxRlU0hajAsFyL7+SV2rLVQ9NForD 6R3marsRRTaG73dDQiIhVFt16/mMi3oG45/2DRhXG1IjoHVPcolyC06SkKI1c0Ir9App Z7Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678302457; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=8yghyqyGu/tx6039smy4Qk23+TdY491zJTNDBpEla5w=; b=FhPcbqyV1XstDKHSYitsVffzz7gwXtZWpi3eX0TvM6Wi5AU1xSGT6Z/10m2Xy+CuP2 1ChVRCJc4/plLsEAlLT2ZIHHfdKoXk5DCP74BVcWDuIaCoNyhxYEqtcUl04iYeRyX4FS law6D5mD10j5nKvAfikxnlt80RL1xRmmvI6nG4itketKLPiOARMRwFY0eQFRazpg+gSF jwDpa5XUMgbFAMDfZOEjx6/+OpisH+exm6AZQ2K6V36iXCnfZUpjuRrs+eW46wcjFaPB AZdhugSW32SoeQbrRjdLLTPN3pju8dWzvbxJU+T5ZZh4nQN4Y901A+czvMNvSVDoC9nm Nhkw== X-Gm-Message-State: AO0yUKUV5bln54z+pMKISlsNG858ewVp87yS7ommG7NFjXemjPwijlZt PExyoNtidxS9w2B1hwrtHXsfcmhHrN4= X-Google-Smtp-Source: AK7set9zG6H8AVve3zVNAsA2gN+XHkO0FJtmKN7glkeQsc3WbtLmvPcO+jcYkp7xgdJHsWO4G06NNQ== X-Received: by 2002:a05:600c:4f50:b0:3eb:2b88:5af2 with SMTP id m16-20020a05600c4f5000b003eb2b885af2mr16833131wmq.20.1678302456939; Wed, 08 Mar 2023 11:07:36 -0800 (PST) Received: from Zen2.lab.linutronix.de. (drugstore.linutronix.de. [80.153.143.164]) by smtp.gmail.com with ESMTPSA id v9-20020a05600c470900b003db03725e86sm356177wmo.8.2023.03.08.11.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Mar 2023 11:07:36 -0800 (PST) From: Alexander Kanavin X-Google-Original-From: Alexander Kanavin To: openembedded-core@lists.openembedded.org Cc: Alexander Kanavin Subject: [RFC PATCH 1/5] runqemu: direct mesa to use its own drivers, rather than ones provided by host distro Date: Wed, 8 Mar 2023 20:07:19 +0100 Message-Id: <20230308190723.2570522-1-alex@linutronix.de> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 08 Mar 2023 19:07:48 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/178190 With mesa 23.0, it is not longer possible to use the host drivers, as mesa upstream has added strict checks for matching builds between drivers and libraries that load them. Signed-off-by: Alexander Kanavin --- scripts/runqemu | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/scripts/runqemu b/scripts/runqemu index 58b0c191e1..8e915f3d4c 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -447,30 +447,7 @@ class BaseConfig(object): self.set("MACHINE", arg) def set_dri_path(self): - # As runqemu can be run within bitbake (when using testimage, for example), - # we need to ensure that we run host pkg-config, and that it does not - # get mis-directed to native build paths set by bitbake. - env = os.environ.copy() - try: - del env['PKG_CONFIG_PATH'] - del env['PKG_CONFIG_DIR'] - del env['PKG_CONFIG_LIBDIR'] - del env['PKG_CONFIG_SYSROOT_DIR'] - except KeyError: - pass - try: - dripath = subprocess.check_output("PATH=/bin:/usr/bin:$PATH pkg-config --variable=dridriverdir dri", shell=True, env=env) - except subprocess.CalledProcessError as e: - raise RunQemuError("Could not determine the path to dri drivers on the host via pkg-config.\nPlease install Mesa development files (particularly, dri.pc) on the host machine.") - self.qemu_environ['LIBGL_DRIVERS_PATH'] = dripath.decode('utf-8').strip() - - # This preloads uninative libc pieces and therefore ensures that RPATH/RUNPATH - # in host mesa drivers doesn't trick uninative into loading host libc. - preload_items = ['libdl.so.2', 'librt.so.1', 'libpthread.so.0'] - uninative_path = os.path.dirname(self.get("UNINATIVE_LOADER")) - if os.path.exists(uninative_path): - preload_paths = [os.path.join(uninative_path, i) for i in preload_items] - self.qemu_environ['LD_PRELOAD'] = " ".join(preload_paths) + self.qemu_environ['LIBGL_DRIVERS_PATH'] = os.path.join(self.bindir_native, '../lib/dri') def check_args(self): for debug in ("-d", "--debug"): From patchwork Wed Mar 8 19:07:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kanavin X-Patchwork-Id: 20606 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C927AC678D5 for ; Wed, 8 Mar 2023 19:07:48 +0000 (UTC) Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by mx.groups.io with SMTP id smtpd.web10.1881.1678302459015853817 for ; Wed, 08 Mar 2023 11:07:39 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=f5LlMSWY; spf=pass (domain: gmail.com, ip: 209.85.128.45, mailfrom: alex.kanavin@gmail.com) Received: by mail-wm1-f45.google.com with SMTP id o11-20020a05600c4fcb00b003eb33ea29a8so1784816wmq.1 for ; Wed, 08 Mar 2023 11:07:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678302457; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r1bU5PCSbhYWe81gvciRTZA9Y52sr6hno8SROhzE8ik=; b=f5LlMSWYNGbC30EbXq++36sYuWFa2GSkiKTVrN5vBAyX3d68y4T52z0cAYGypBSgga 7wAfMawJycGhGvPedcm7KDfh4bT/Igdv7hrgb4AiCUQlLYFnHcQRQjThjzXpL10DUQrR gZJVK7noezJZznrQkqTaJkzPUSX9kn5S9zVUVyS5OoYSCcbYBaHp7vyp1+J5F+rMbBRf 4tqqIKxy977JnDMuS6+12wgeqy7bgK9sJTQ5+pDhn13dPhT6+yeJsWBmJdFo96QPBGwl F100z3Cka20emnFSsElIqbQ0jSdfS28x5BFAp7HSK+ahzDkn1kzTZLC0o31B+dGBjjUq ITAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678302457; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=r1bU5PCSbhYWe81gvciRTZA9Y52sr6hno8SROhzE8ik=; b=vnWFenegLGEhT/GLQPlc7Bqjiscfu2HW5UhBzoVn8PWtdcdhz2G/vxbatFOBIC9Bro 10V0GAQnVDKD4MIbN/kE7j3ZeN5a4VPU/YV98SEyrONVDrW3QmGYpt9JT1v7+qT0yLA1 i1sHfO8GvV/IM+Xc0XjlKu4JKI4LZ1sC22kU3q+IPApbG9PDxQyASng5XiDWd8WXlByj JSiz49paHGKF9cJUcCh3X5YCOlh9H4bZZABhkB3gQm0sf5nSssj14IqnLa5FG24SAv8N GZe06+9VZUgZaRKmocHKcfwGZplaw9TDf60jweJ4fel8EiyKjII/o4qaFu0M6TI1ehxi oVSQ== X-Gm-Message-State: AO0yUKW+3/uqjRDLBOmWk0vWUc7yIANr3Hhmeln+qtiAyKGKwPhLl7oR uOeraLijKiOwQFkCD6xKw/UymqfXMuk= X-Google-Smtp-Source: AK7set/mlWkoercpSVDK80X7es6JlydM+scb7+edTylO8R85DlgjfdKrBn47dTZxA4NfX3u7VzYemA== X-Received: by 2002:a05:600c:470d:b0:3e8:f27b:a92c with SMTP id v13-20020a05600c470d00b003e8f27ba92cmr17309184wmo.32.1678302457495; Wed, 08 Mar 2023 11:07:37 -0800 (PST) Received: from Zen2.lab.linutronix.de. (drugstore.linutronix.de. [80.153.143.164]) by smtp.gmail.com with ESMTPSA id v9-20020a05600c470900b003db03725e86sm356177wmo.8.2023.03.08.11.07.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Mar 2023 11:07:37 -0800 (PST) From: Alexander Kanavin X-Google-Original-From: Alexander Kanavin To: openembedded-core@lists.openembedded.org Cc: Alexander Kanavin Subject: [RFC PATCH 2/5] bitbake.conf: do not set native opengl distro feature from target Date: Wed, 8 Mar 2023 20:07:20 +0100 Message-Id: <20230308190723.2570522-2-alex@linutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230308190723.2570522-1-alex@linutronix.de> References: <20230308190723.2570522-1-alex@linutronix.de> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 08 Mar 2023 19:07:48 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/178191 This makes native opengl (and thus accelerated graphics in qemu) opt-in; the reason is that latest mesa tightly couples hardware drivers with its libraries, so we have to build both in mesa-native. Doing so significantly lengthens the builds, and so cannot be imposed by default. Add a check and a hint to runqemu so that there is a helpful error when there is no native/nativesdk opengl/virgl support. Signed-off-by: Alexander Kanavin --- meta/conf/bitbake.conf | 4 ++-- meta/lib/oeqa/selftest/cases/runtime_test.py | 4 ++-- scripts/runqemu | 11 ++++++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index afd9e2f552..d1dc428583 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -912,8 +912,8 @@ DISTRO_FEATURES_NATIVESDK ?= "x11" # Normally target distro features will not be applied to native builds: # Native distro features on this list will use the target feature value -DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation debuginfod opengl wayland" -DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation debuginfod opengl wayland" +DISTRO_FEATURES_FILTER_NATIVE ?= "api-documentation debuginfod wayland" +DISTRO_FEATURES_FILTER_NATIVESDK ?= "api-documentation debuginfod wayland" DISTRO_FEATURES_BACKFILL = "pulseaudio sysvinit gobject-introspection-data ldconfig" MACHINE_FEATURES_BACKFILL = "rtc qemu-usermode" diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py index e32c4aff85..74d8a1c23b 100644 --- a/meta/lib/oeqa/selftest/cases/runtime_test.py +++ b/meta/lib/oeqa/selftest/cases/runtime_test.py @@ -232,7 +232,7 @@ class TestImage(OESelftestTestCase): if 'sdl' not in qemu_packageconfig: features += 'PACKAGECONFIG:append:pn-qemu-system-native = " sdl"\n' if 'opengl' not in qemu_distrofeatures: - features += 'DISTRO_FEATURES:append = " opengl"\n' + features += 'DISTRO_FEATURES_NATIVE:append = " opengl"\n' features += 'TEST_SUITES = "ping ssh virgl"\n' features += 'IMAGE_FEATURES:append = " ssh-server-dropbear"\n' features += 'IMAGE_INSTALL:append = " kmscube"\n' @@ -263,7 +263,7 @@ class TestImage(OESelftestTestCase): qemu_distrofeatures = get_bb_var('DISTRO_FEATURES', 'qemu-system-native') features = 'IMAGE_CLASSES += "testimage"\n' if 'opengl' not in qemu_distrofeatures: - features += 'DISTRO_FEATURES:append = " opengl"\n' + features += 'DISTRO_FEATURES_NATIVE:append = " opengl"\n' features += 'TEST_SUITES = "ping ssh virgl"\n' features += 'IMAGE_FEATURES:append = " ssh-server-dropbear"\n' features += 'IMAGE_INSTALL:append = " kmscube"\n' diff --git a/scripts/runqemu b/scripts/runqemu index 8e915f3d4c..9f82aa12f1 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -447,7 +447,16 @@ class BaseConfig(object): self.set("MACHINE", arg) def set_dri_path(self): - self.qemu_environ['LIBGL_DRIVERS_PATH'] = os.path.join(self.bindir_native, '../lib/dri') + drivers_path = os.path.join(self.bindir_native, '../lib/dri') + if not os.path.exists(drivers_path) or not os.listdir(drivers_path): + raise RunQemuError(""" +qemu has been built without opengl support and accelerated graphics support is not available. +To enable it, add: +DISTRO_FEATURES_NATIVE:append = " opengl" +DISTRO_FEATURES_NATIVESDK:append = " opengl" +to your build configuration. +""") + self.qemu_environ['LIBGL_DRIVERS_PATH'] = drivers_path def check_args(self): for debug in ("-d", "--debug"): From patchwork Wed Mar 8 19:07:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kanavin X-Patchwork-Id: 20603 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id DAFA4C742A7 for ; Wed, 8 Mar 2023 19:07:48 +0000 (UTC) Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by mx.groups.io with SMTP id smtpd.web10.1882.1678302459548423979 for ; Wed, 08 Mar 2023 11:07:39 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=lfhXHNP4; spf=pass (domain: gmail.com, ip: 209.85.128.47, mailfrom: alex.kanavin@gmail.com) Received: by mail-wm1-f47.google.com with SMTP id d41-20020a05600c4c2900b003e9e066550fso1780409wmp.4 for ; Wed, 08 Mar 2023 11:07:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678302458; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=M0sUQ15/wOxOZunNFmL2ne7nwqLojjgaXHnrEqk23Zo=; b=lfhXHNP4Oi+1/Gzc93i7XojRKyq2w3qi1ZLefnF6GbyifluIWsrM5f9yiL81KBaB1Q GBlkDKnFIzHUMKO3/0I57eA8W7vN5Bhvm6mOGqJqdXuOIYHJZ31JdbV14TlsZF887q6R LCBfiAqu1KRtHkWI2c6CfNqXLWAp4CKYxmjN0+vOR/k+FOTOpgTtHilQtTqCGU/97jdk XYDdt8Ip7uuZHVsIGE/286TAzXL8vpi3UQO5EffM1YqT5nR16yij0XDoWqauMfAg5Q9A IDVV83H0Q7yeUqJnXumU1FwKPrSSRH6BLPbbY27zfZyLDumG76TCM38PfQZNTO9sA0jj cd8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678302458; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M0sUQ15/wOxOZunNFmL2ne7nwqLojjgaXHnrEqk23Zo=; b=C9S8YRuQ2lOdTa1xjrFRWSuZbn9V0avblFbdFO9ebOLSE7tL+/mW+xGMAvOjfNhuTs lrg7uiolTRc+2mdPfLlIzfqQE78BSJa8ddkFj9GjJenu2rFNVUtPH7LD5HxseRppfMej vaTxm8Uy1unq+azz11UAzpWVETni4H3N5nrmLvptPDk2sv2LBGEiwxggiCsJH6OSLB7a bgBz9GbFZXUxmLHdsySz+TC2Gs85MilGE3Ez109aU9GMqCb6w3p2CARI8BEOYhlSdiBk +NdjXfKujkywksHWTrD4uklIGIbwh1k1AohKaBef0icWlJDbpX7ndG+KmmV2nzJhoLx+ C75A== X-Gm-Message-State: AO0yUKVC6WQKWpDB77+ZujqzBLsUoysffrUMcCapD9FQP/GknRV6yruq HB2N6XoKdsq1a7Fk/FO7S9Aw/E6s4q0= X-Google-Smtp-Source: AK7set+Ru6GEj4K/5rQSwMz+zVF7gJFU3uSZYS+DxA3fYIcwp3Aa0Yjc7AgiNvPqBQh5+nfYu5moDQ== X-Received: by 2002:a05:600c:1d95:b0:3eb:376e:2b9c with SMTP id p21-20020a05600c1d9500b003eb376e2b9cmr17105840wms.36.1678302457985; Wed, 08 Mar 2023 11:07:37 -0800 (PST) Received: from Zen2.lab.linutronix.de. (drugstore.linutronix.de. [80.153.143.164]) by smtp.gmail.com with ESMTPSA id v9-20020a05600c470900b003db03725e86sm356177wmo.8.2023.03.08.11.07.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Mar 2023 11:07:37 -0800 (PST) From: Alexander Kanavin X-Google-Original-From: Alexander Kanavin To: openembedded-core@lists.openembedded.org Cc: Alexander Kanavin Subject: [RFC PATCH 3/5] mesa: allow mesa-native/nativesdk only subject to opengl/vulkan DISTRO_FEATURE Date: Wed, 8 Mar 2023 20:07:21 +0100 Message-Id: <20230308190723.2570522-3-alex@linutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230308190723.2570522-1-alex@linutronix.de> References: <20230308190723.2570522-1-alex@linutronix.de> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 08 Mar 2023 19:07:48 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/178192 This prevents accidental builds of it when native/nativesdk opengl is not actually enabled (which may cause undesirable lengthening of dependency chains or build failures because those dependencies don't enable options required for mesa). Signed-off-by: Alexander Kanavin --- meta/recipes-graphics/mesa/mesa.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index 8a8a057c6b..8690df0bc2 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc @@ -50,7 +50,7 @@ inherit meson pkgconfig python3native gettext features_check BBCLASSEXTEND = "native nativesdk" -ANY_OF_DISTRO_FEATURES:class-target = "opengl vulkan" +ANY_OF_DISTRO_FEATURES = "opengl vulkan" PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)}" From patchwork Wed Mar 8 19:07:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kanavin X-Patchwork-Id: 20607 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id DAFE0C74A4B for ; Wed, 8 Mar 2023 19:07:48 +0000 (UTC) Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by mx.groups.io with SMTP id smtpd.web10.1884.1678302460033667851 for ; Wed, 08 Mar 2023 11:07:40 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=VyjMQgJK; spf=pass (domain: gmail.com, ip: 209.85.128.41, mailfrom: alex.kanavin@gmail.com) Received: by mail-wm1-f41.google.com with SMTP id d41-20020a05600c4c2900b003e9e066550fso1780418wmp.4 for ; Wed, 08 Mar 2023 11:07:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678302458; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T2+3XLjNLJfdkL4d8aMq+9QJZ45CuRRrfY7LRLXpvDQ=; b=VyjMQgJK7kXIQHzJrJojX1CfZdqOv/IQ8rIiWLDOwDfed1ksTfD09f90iYkmaHZydP e0Q2f1BwzBCzqb/19ZVZzjCBeGhFZUtUZcxSs8033y2ZtTfcPDdngfk3jJ7RJGhDwT2Q scfZbd01oNnfbOtN9H7KmnWwBFm1sq7We/hWsNbshWUA3sJixm6SKNntekxmMLvwjHin aIMsLUXS6YMBtwOLxFAVIM40YVtQxs/bULocbshnSw05Iw6qAfG5/Dl0Jr2rFzgkDvSa pMxHwuiBSCAfUSnj7vDtZ16LpjH24YIzZn/z1CpHqjZEY8jj+eLsL4gMoDIWGrStgRnb eIlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678302458; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T2+3XLjNLJfdkL4d8aMq+9QJZ45CuRRrfY7LRLXpvDQ=; b=PZnpZEDdeYqVTDTprsNTbs62AO8jT603q+g0SVt6/vDqb4pNY70+y7ScnTTclMezXj YKLHJsZ+wMPAu3jrUn8ufUwxEpJutZ/K8EUirWyNYlhEZ5iVVJX2V4Fc6/SOsdSuTOsi cCklLtSphw6p9fZAmnfgPlmgUL9Q64n2TVjiHFK1lK8zhuZc9Ph0r2ssiFfKtyBslDx4 SeDQUzfQ9Rq8J6z3uTJdm07qeJLKW7kTN9gP5+U6IT+Ssg9lkyZrvBJGINglMtlV44Kx qFgMACWzrokR5k+uhdTawQRYzvOt1zuvS/hRGG9X4WjJsZQCjFSCBlZEYLuwoaMYZva0 iIOg== X-Gm-Message-State: AO0yUKUj7hBJUw4a+I+LQ9p7K90m9wMqbVc5pU+cdKeMxvYrLRADqjhd BZAB3Zg3gjoLAWiePWTb6Cino8+CUNM= X-Google-Smtp-Source: AK7set+42yfyf9oBqGe5XavQe2bMrApNuoAZmInwQlb1iFsOqePy+ZijMls+O6Moo5FxzYbpWoRAUg== X-Received: by 2002:a05:600c:5102:b0:3eb:f664:b6e with SMTP id o2-20020a05600c510200b003ebf6640b6emr5884998wms.24.1678302458496; Wed, 08 Mar 2023 11:07:38 -0800 (PST) Received: from Zen2.lab.linutronix.de. (drugstore.linutronix.de. [80.153.143.164]) by smtp.gmail.com with ESMTPSA id v9-20020a05600c470900b003db03725e86sm356177wmo.8.2023.03.08.11.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Mar 2023 11:07:38 -0800 (PST) From: Alexander Kanavin X-Google-Original-From: Alexander Kanavin To: openembedded-core@lists.openembedded.org Cc: Alexander Kanavin Subject: [RFC PATCH 4/5] mesa: enable a rich set of drivers for native builds Date: Wed, 8 Mar 2023 20:07:22 +0100 Message-Id: <20230308190723.2570522-4-alex@linutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230308190723.2570522-1-alex@linutronix.de> References: <20230308190723.2570522-1-alex@linutronix.de> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 08 Mar 2023 19:07:48 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/178193 Without this, the only available driver would be swrast (without llvmpipe) which is far too slow to be practical, and so qemu wouldn't be able to perform accelerated graphics. Note that mesa-native itself is guarded by presence of 'opengl' in DISTRO_FEATURES_NATIVE, so building it is entirely opt-in. The one major dependency is llvm-native which takes just under three minutes on my machine. Signed-off-by: Alexander Kanavin --- meta/recipes-graphics/mesa/mesa.inc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index 8690df0bc2..95854f3010 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc @@ -88,6 +88,8 @@ PACKAGECONFIG = " \ ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'video-codecs', '', d)} \ " +PACKAGECONFIG:append:class-native = "gallium-llvm r600" + # "gbm" requires "opengl" PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled" @@ -101,8 +103,8 @@ PACKAGECONFIG[dri3] = "-Ddri3=enabled, -Ddri3=disabled, xorgproto libxshmfence" # Vulkan drivers need dri3 enabled # amd could be enabled as well but requires gallium-llvm with llvm >= 3.9 VULKAN_DRIVERS = "" -VULKAN_DRIVERS:append:x86:class-target = ",intel" -VULKAN_DRIVERS:append:x86-64:class-target = ",intel" +VULKAN_DRIVERS:append:x86 = ",intel" +VULKAN_DRIVERS:append:x86-64 = ",intel" VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" @@ -148,8 +150,8 @@ PACKAGECONFIG[zink] = "" GALLIUMDRIVERS = "swrast" # gallium swrast was found to crash Xorg on startup in x32 qemu GALLIUMDRIVERS:x86-x32 = "" -GALLIUMDRIVERS:append:x86:class-target = ",i915,iris,crocus" -GALLIUMDRIVERS:append:x86-64:class-target = ",i915,iris,crocus" +GALLIUMDRIVERS:append:x86 = ",i915,iris,crocus" +GALLIUMDRIVERS:append:x86-64 = ",i915,iris,crocus" GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" @@ -161,8 +163,8 @@ GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', ' # radeonsi requires LLVM GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" GALLIUMDRIVERS_LLVM = "r300,nouveau${GALLIUMDRIVERS_RADEONSI}" -GALLIUMDRIVERS_LLVM:append:x86:class-target = ",svga" -GALLIUMDRIVERS_LLVM:append:x86-64:class-target = ",svga" +GALLIUMDRIVERS_LLVM:append:x86 = ",svga" +GALLIUMDRIVERS_LLVM:append:x86-64 = ",svga" PACKAGECONFIG[r600] = "" PACKAGECONFIG[virgl] = "" From patchwork Wed Mar 8 19:07:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kanavin X-Patchwork-Id: 20604 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id C7D01C64EC4 for ; Wed, 8 Mar 2023 19:07:48 +0000 (UTC) Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by mx.groups.io with SMTP id smtpd.web10.1885.1678302460493081321 for ; Wed, 08 Mar 2023 11:07:40 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20210112 header.b=gMByJrap; spf=pass (domain: gmail.com, ip: 209.85.221.54, mailfrom: alex.kanavin@gmail.com) Received: by mail-wr1-f54.google.com with SMTP id bw19so16356903wrb.13 for ; Wed, 08 Mar 2023 11:07:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678302459; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=u1qqnpNgGr69+muv6Ds/YqI2mVdfjuh/LLvbrD8r/3Q=; b=gMByJrapsvtxlW6FND0rYtk/Bpcn7Hp2mJUH79kcFh5a5+2a4yh+AXrs2Gq2QyXUAl OulKX3kbkA/BhaXQaxl+eS6jxA8+eji5UgBHNUZadYh8x8ZN2PIHiGA8snFqg5b2oaZ4 31U6VlQO4uOgrs0Ai7JkrsoVsnQLGC2kvy6o3cAevrnTuGuq/Q4/04hJHTiplXR2BNgQ vVP/VQuFvItjXZQ0TueEZXKMl5u0YzJtBQWkyPUCOiIoEZVYeElcbiAbypTBrJiOyfAK a2gQu62erCN1da9Y480P3vXJVK4eTgHkAFNQaI2W1sGIF4TUu2RvKiRICXloV+BOLDpe hQCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678302459; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u1qqnpNgGr69+muv6Ds/YqI2mVdfjuh/LLvbrD8r/3Q=; b=DTOv0BKKYKoCKbb8eE6VRACRwGSQxzWkaSKAj76zA+vP+BTH82AhCIixlSegLn5Eqs vRuvHx9awI8FiUsYON6ifpYtSS8+TCJiNtqS9zfMEH1HRMbDsrWpVgCV54yFgTUO3VBc m1tXehx7QMPalit1GAHJUxDgyYJbOpH1anXQkZ2fZlJUzXjp8gJUUxZJP7/PoXLw0Ztv Rws96M7sc7OGLIEj2MLNuIl6vQY7zbPIInERmUajUkoa9u72tbzq7fe348ZV4avGYfhO vp2PoC3vzApb2lbpjsGZyrVuhcPqawi5JPIH7P6UHJqVJirPs1pXvQX4uOUmWlDhEidS lBXw== X-Gm-Message-State: AO0yUKVXP1zChFoC0Pkr9ne3dhJGX5/lltkYK76HgiIc9v8AZKXfMqvw J1Jcz6YU0PH/kyA4VdUFQtlWqMxOcHY= X-Google-Smtp-Source: AK7set/PBgyARU8Q66o1QeRv4yllJOqi0kn1+0JLmiC0y5g20Rn6uq7uYHcX7f2GjUlcpPyvTOfuQA== X-Received: by 2002:adf:fb10:0:b0:2c5:4c5e:412b with SMTP id c16-20020adffb10000000b002c54c5e412bmr15642457wrr.23.1678302458979; Wed, 08 Mar 2023 11:07:38 -0800 (PST) Received: from Zen2.lab.linutronix.de. (drugstore.linutronix.de. [80.153.143.164]) by smtp.gmail.com with ESMTPSA id v9-20020a05600c470900b003db03725e86sm356177wmo.8.2023.03.08.11.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Mar 2023 11:07:38 -0800 (PST) From: Alexander Kanavin X-Google-Original-From: Alexander Kanavin To: openembedded-core@lists.openembedded.org Cc: Alexander Kanavin Subject: [RFC PATCH 5/5] llvm: allow building libllvm in native builds, subject to PACKAGECONFIG Date: Wed, 8 Mar 2023 20:07:23 +0100 Message-Id: <20230308190723.2570522-5-alex@linutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230308190723.2570522-1-alex@linutronix.de> References: <20230308190723.2570522-1-alex@linutronix.de> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 08 Mar 2023 19:07:48 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/178194 Also, enable that, if opengl is in native DISTRO_FEATURES: this allows mesa-native to build drivers that rely on libllbm, particularly llvmpipe, which is a (sort of) accelerated software renderer that is the only option on build hosts without dedicated or supported GPUs. Signed-off-by: Alexander Kanavin --- meta/recipes-devtools/llvm/llvm_git.bb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/meta/recipes-devtools/llvm/llvm_git.bb b/meta/recipes-devtools/llvm/llvm_git.bb index b4e983d2d0..f133653903 100644 --- a/meta/recipes-devtools/llvm/llvm_git.bb +++ b/meta/recipes-devtools/llvm/llvm_git.bb @@ -57,9 +57,11 @@ def get_llvm_arch(bb, d, arch_var): def get_llvm_host_arch(bb, d): return get_llvm_arch(bb, d, 'HOST_ARCH') -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "libllvm" +PACKAGECONFIG:class-native = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'libllvm', '', d)}" # if optviewer OFF, force the modules to be not found or the ones on the host would be found PACKAGECONFIG[optviewer] = ",-DPY_PYGMENTS_FOUND=OFF -DPY_PYGMENTS_LEXERS_C_CPP_FOUND=OFF -DPY_YAML_FOUND=OFF,python3-pygments python3-pyyaml,python3-pygments python3-pyyaml" +PACKAGECONFIG[libllvm] = "" # # Default to build all OE-Core supported target arches (user overridable). @@ -102,14 +104,15 @@ do_compile:prepend:class-target() { } do_compile() { + if ${@bb.utils.contains('PACKAGECONFIG', 'libllvm', 'true', 'false', d)}; then ninja -v ${PARALLEL_MAKE} -} - -do_compile:class-native() { + else ninja -v ${PARALLEL_MAKE} llvm-config llvm-tblgen + fi } do_install() { + if ${@bb.utils.contains('PACKAGECONFIG', 'libllvm', 'true', 'false', d)}; then DESTDIR=${D} ninja -v install # llvm harcodes usr/lib as install path, so this corrects it to actual libdir @@ -121,9 +124,10 @@ do_install() { # reproducibility sed -i -e 's,${WORKDIR},,g' ${D}/${libdir}/cmake/llvm/LLVMConfig.cmake + fi } -do_install:class-native() { +do_install:append:class-native() { install -D -m 0755 ${B}/bin/llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} install -D -m 0755 ${B}/bin/llvm-config ${D}${bindir}/llvm-config${PV} ln -sf llvm-config${PV} ${D}${bindir}/llvm-config