From: Mike Crowe <mac@mcrowe.com>
To: Alexander Kanavin <alex.kanavin@gmail.com>
Cc: OE-core <openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] Correct way to set DRIDRIVERS and GALLIUMDRIVERS from mesa bbappend
Date: Thu, 2 Dec 2021 15:58:07 +0000 [thread overview]
Message-ID: <YajtD+IFyjZJb2yX@mcrowe.com> (raw)
In-Reply-To: <CANNYZj81Yk2vB119MguwPmfY4s_S3G1KSVWQL8N8JQBe3xzx1g@mail.gmail.com>
Hi Alex,
It's not a case of simply deleting the so files we don't need since the
mesa build system stuffs everything into a small number of files and then
hard links them together. For example, the current unmodified oe-core build
for qemux86-64 yields:
$ ls -l tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
-rw-r--r-- 2 mac mac 7993248 Dec 2 09:13 tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
$ dpkg-deb -c tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/
-rwxr-xr-x root/root 17728664 2021-11-17 20:17 ./usr/lib/dri/crocus_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/i915_dri.so link to ./usr/lib/dri/crocus_dri.so
-rwxr-xr-x root/root 15903952 2021-11-17 20:17 ./usr/lib/dri/i965_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/iris_dri.so link to ./usr/lib/dri/crocus_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/kms_swrast_dri.so link to ./usr/lib/dri/crocus_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/nouveau_vieux_dri.so link to ./usr/lib/dri/i965_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/r200_dri.so link to ./usr/lib/dri/i965_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/radeon_dri.so link to ./usr/lib/dri/i965_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/swrast_dri.so link to ./usr/lib/dri/crocus_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/virtio_gpu_dri.so link to ./usr/lib/dri/crocus_dri.so
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/share/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/share/drirc.d/
-rw-r--r-- root/root 44273 2021-11-17 20:16 ./usr/share/drirc.d/00-mesa-defaults.conf
If I prune the default configuration do_install:append so I only keep
swrast_dri.so then I get:
$ ls -l tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
-rw-r--r-- 2 mac mac 4247362 Dec 2 15:29 tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
$ dpkg-deb -c tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/
-rwxr-xr-x root/root 17728664 2021-11-17 20:17 ./usr/lib/dri/swrast_dri.so
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/share/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/share/drirc.d/
-rw-r--r-- root/root 44273 2021-11-17 20:16 ./usr/share/drirc.d/00-mesa-defaults.conf
If I do no pruning but force:
DRIDRIVERS = ""
GALLIUMDRIVERS = "swrast"
then I get:
$ ls -l tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
-rw-r--r-- 2 mac mac 2590320 Dec 2 15:15 tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
$ dpkg-deb -c tmp-glibc/deploy/ipk/core2-64/mesa-megadriver_21.3.0-r0_core2-64.ipk
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/
-rwxr-xr-x root/root 11981240 2021-11-17 20:17 ./usr/lib/dri/kms_swrast_dri.so
hrwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/lib/dri/swrast_dri.so link to ./usr/lib/dri/kms_swrast_dri.so
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/share/
drwxr-xr-x root/root 0 2021-11-17 20:17 ./usr/share/drirc.d/
-rw-r--r-- root/root 44273 2021-11-17 20:16 ./usr/share/drirc.d/00-mesa-defaults.conf
This is an uncompressed saving of over five megabytes (32%) and a
compressed saving of 1.6MiB (39%) (assuming that the ipk compression is
indicative of whatever rootfs compression is used.)
I tried just crocus and just iris and there were still savings, albeit
not quite as large as for swrast.
(I have to admit that when I first started investigating this I misread the
numbers and thought they were a factor of ten higher. Nevertheless, it's
clear that there is a difference.)
Justin Bronder's suggestion has given me a workaround if you don't believe
that the space saving is more generally useful.
Thanks.
Mike.
On Wednesday 01 December 2021 at 21:33:39 +0100, Alexander Kanavin wrote:
> I'd like to see specifics though to understand the use case better. What
> kind of target you're on, how much space will be saved by only building the
> driver you need and which driver is that? If the drivers are in separate
> .so objects, you can simply delete the ones you don't need from
> do_install_append. The build time savings would be very minimal.
>
> Alex
>
>
> On Wed, 1 Dec 2021 at 19:06, Mike Crowe <mac@mcrowe.com> wrote:
>
> > Hi Alex,
> >
> > Thanks for responding.
> >
> > Just to make sure I understand, you think that I should add something like:
> >
> > PACKAGECONFIG[i915] = ""
> > PACKAGECONFIG[iris] = ""
> > PACKAGECONFIG[crocus] = ""
> > GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'i915',
> > ',i915', '', d)}"
> > GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'iris',
> > ',iris', '', d)}"
> > GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'crocus',
> > ',crocus', '', d)}"
> >
> > But then I need to find a way to get "i915 iris crocus" into PACKAGECONFIG
> > for x86 and x86-64 whilst still letting others override that. The best I
> > can come up with is to modify the existing default PACKAGECONFIG to be
> > something like:
> >
> > PACKAGECONFIG_DEFAULT_FOR_TARGET:x86 = "i915 iris crocus"
> > PACKAGECONFIG_DEFAULT_FOR_TARGET:x86-64 = "i915 iris crocus"
> > PACKAGECONFIG:class-target ??= "${@bb.utils.filter('DISTRO_FEATURES',
> > 'wayland vulkan', d)} \
> > ${@bb.utils.contains('DISTRO_FEATURES', 'opengl',
> > 'opengl egl gles gbm dri gallium virgl', '', d)} \
> > ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl',
> > 'x11 dri3', '', d)} \
> > ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan',
> > 'dri3', '', d)} \
> > elf-tls \
> > ${PACKAGECONFIG_DEFAULT_FOR_TARGET} \
> > "
> >
> > This will probably break anyone who currently sets their own PACKAGECONFIG
> > for x86 and x86-64 until they add the drivers they require. This would seem
> > to be worse than my GALLIUMDRIVERS_DEFAULT suggestion. :(
> >
> > Have I misunderstood you, or is there a better way?
> >
> > Thanks.
> >
> > Mike.
> >
> > On Wednesday 01 December 2021 at 18:21:44 +0100, Alexander Kanavin wrote:
> > > I think you do need to modify oe-core unfortunately, like is done for
> > other
> > > drivers:
> > >
> > > PACKAGECONFIG[etnaviv] = ""
> > > GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'etnaviv',
> > > ',etnaviv', '', d)}"
> > >
> > > Alex
> > >
> > > On Wed, 1 Dec 2021 at 17:44, Mike Crowe via lists.openembedded.org <mac=
> > > mcrowe.com@lists.openembedded.org> wrote:
> > >
> > > > I'm building for a specific chip and therefore don't wish to waste
> > time and
> > > > electricity building and disk space on the target installing unwanted
> > mesa
> > > > drivers. However, mesa.inc contains:
> > > >
> > > > GALLIUMDRIVERS = "swrast"
> > > > GALLIUMDRIVERS:x86-x32 = ""
> > > > GALLIUMDRIVERS:append:x86:class-target = ",i915,iris,crocus"
> > > > GALLIUMDRIVERS:append:x86-64:class-target = ",i915,iris,crocus"
> > > >
> > > > and mesa_21.3.0.bb contains:
> > > >
> > > > DRIDRIVERS ??= ""
> > > > DRIDRIVERS:append:x86:class-target = ",r100,r200,nouveau,i965"
> > > > DRIDRIVERS:append:x86-64:class-target = ",r100,r200,nouveau,i965"
> > > >
> > > > I'm unable to find a way to override these values. Using (for example):
> > > >
> > > > DRIDRIVERS:forcevariable = ""
> > > > GALLIUMDRIVERS:forcevariable = "swrast"
> > > >
> > > > doesn't work because the append still happens after the forcevariable
> > > > override takes effect. :(
> > > >
> > > > Is there a way that I can override GALLIUMDRIVERS and DRIDRIVERS with
> > my
> > > > own values for x86 and x86-64 without modifying oe-core itself?
> > > >
> > > > If not, should the oe-core recipe being using something like:
> > > >
> > > > GALLIUMDRIVERS_DEFAULT = "swrast"
> > > > GALLIUMDRIVERS_DEFAULT:x86-x32 = ""
> > > > GALLIUMDRIVERS_DEFAULT:append:x86:class-target = ",i915,iris,crocus"
> > > > GALLIUMDRIVERS_DEFAULT:append:x86-64:class-target =
> > ",i915,iris,crocus"
> > > > GALLIUMDRIVERS ?= "${GALLIUMDRIVERS_DEFAULT}"
> > > >
> > > > and similar for DRIDRIVERS to support this?
> > > >
> > > > Thanks.
> > > >
> > > > Mike.
> > > >
> > > > -=-=-=-=-=-=-=-=-=-=-=-
> > > > Links: You receive all messages sent to this group.
> > > > View/Reply Online (#159048):
> > > > https://lists.openembedded.org/g/openembedded-core/message/159048
> > > > Mute This Topic: https://lists.openembedded.org/mt/87432435/1686489
> > > > Group Owner: openembedded-core+owner@lists.openembedded.org
> > > > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
> > [
> > > > alex.kanavin@gmail.com]
> > > > -=-=-=-=-=-=-=-=-=-=-=-
> > > >
> > > >
> >
next prev parent reply other threads:[~2021-12-02 15:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-01 16:43 Correct way to set DRIDRIVERS and GALLIUMDRIVERS from mesa bbappend Mike Crowe
2021-12-01 17:21 ` [OE-core] " Alexander Kanavin
2021-12-01 18:05 ` Mike Crowe
2021-12-01 20:33 ` Alexander Kanavin
2021-12-02 15:58 ` Mike Crowe [this message]
2021-12-01 19:18 ` Justin Bronder
2021-12-01 20:20 ` Mike Crowe
2021-12-02 17:00 ` [OE-core] " Richard Purdie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YajtD+IFyjZJb2yX@mcrowe.com \
--to=mac@mcrowe.com \
--cc=alex.kanavin@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox