[Mesa-dev] [PATCH 15/23] configure: add HAVE_GALLIUM_STATIC_TARGETS
Emil Velikov
emil.l.velikov at gmail.com
Tue May 20 13:04:38 PDT 2014
On 20/05/14 16:21, Marek Olšák wrote:
> Well, I have never studied the build system, so I don't know exactly
> what this series does and how it affects the size of the drivers.
>
> Could you please summarize what binaries are created, how big they
> are, and compare the shared vs static approach vs the current way? And
> what is the role of the pipe loader?
>
Seems like I jumped into too many presumptions in the introductory email :\
Pipe-driver - gallium/drivers/$hw and its respective winsys built into a
standalone loadable module. Installed as
gallium-pipe/pipe_(r600|radeonsi|nouveau).so
Pipe-loader - aux module (linked into the final library) that loads the
appropriate pipe-driver.
Static("megadriver") - identical to what you did with megaradeon. All the
drivers selected at configure are linked into the same blob.
Hardlink for each target for compatibility reasons.
Libraries:
dri: (r600|radeonsi|nouveau)_dri.so -> 6.5 MiB
vdpau: libvdpau_(r600|radeonsi|nouveau).so -> 3.5 MiB
Total: 10MiB
Shared("pipe-loader") - create individual pipe-drivers and standalone
state-tracker libraries (think of them as bla_dri + libGL). The pipe-driver is
used by all ST. Note: the interface is not stable, unlike the dri modules.
Hardlink for each target for compatibility reasons.
Libraries:
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
Current approach - at final link time, most state-trackers pull the
gallium/drivers/$hw, via the above mentioned DRM_DESCRIPTOR, to create a
independent HW specific library. Resulting in some duplication.
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
Note: currently egl-static and opencl are hardcoded to static and shared
respectively. Both of which are will be converted with the next series.
Summary:
Static - savings scale with number of hardware (gallium/drivers).
Shared - savings scale with number of state-trackers (gallium/state-tracker).
-Emil
> Marek
>
More information about the mesa-dev
mailing list