[Mesa-dev] Static/shared pipe-drivers (was megadriver/pipe-loader-to-all)

Emil Velikov emil.l.velikov at gmail.com
Thu Jun 12 12:56:20 PDT 2014

Hi all,

These patches add support for building (grouping) the various targets per
API, meaning that only one library will be created  for e.g. vdpau
(libvdpau_gallium) with individual ones (libvdpau_r600) being a hardlink
to it.

This allows us to have substantial space savings as the API(state-tracker)
is available only once. Additionally it adds support for shared
pipe-drivers via a _unstable_ interface, which saves us the duplication
across X APIs.

The former method has been used by the egl-static while the latter by
opencl and gbm targets since they were introduced.

By default we build with "static pipe-drivers".

Some numbers + extra info [1]

dri:            (r600|radeonsi|nouveau)_dri.so       -> 6.5 MiB
vdpau:          libvdpau_(r600|radeonsi|nouveau).so  -> 3.5 MiB

Total: 10MiB

dri:            (r600|radeonsi|nouveau)_dri.so       -> 3.9 MiB
vdpau:          libvdpau_(r600|radeonsi|nouveau).so  -> 633 KiB
gallium-pipe:   pipe_(r600|radeonsi|nouveau).so      -> 5.3 MiB

Total: 9.8MiB

dri:            (r600|radeonsi|nouveau)_dri.so       -> 5.0+4.5+5.3 = 14.8 MiB
vdpau:          libvdpau_(r600|radeonsi|nouveau).so  -> 1.9+1.2+2.3 = 5.4 MiB

Total: 20.2MiB

The previous series can be found here [2]
Changes since then
 - Convert targets individually.
 - OMX targets now work, and the final library is now libomx-mesa.so
 - Dropped the DRI targets for now
 - A handfull of typos thinkos and bugs fixed.

My plan is to have these pushed in ~4 stages, with two stages per week.
This way I will be able to crack on with the remaining bits and have all
of it tested well before we branch the next release.

Series is availabe at

As always comments and suggestions are greatly appreciated.


[1] http://lists.freedesktop.org/archives/mesa-dev/2014-May/059806.html
[2] http://lists.freedesktop.org/archives/mesa-dev/2014-May/059628.html

More information about the mesa-dev mailing list