[Mesa-dev] [PATCH 0/23] megadriver/pipe-loader-to-all

Emil Velikov emil.l.velikov at gmail.com
Sun May 25 11:42:35 PDT 2014


ping ?

For people that feel that the email is a bit vague here is a summary of what
the different terms mean and what the series means with regards to file size
of the final libraries.


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).

Cheers,
Emil

On 18/05/14 08:07, Emil Velikov wrote:
> Hi all
> 
> Update of the megadriver/pipe-loader-to-all series.
> 
> What & Why:
> Allow one to link every driver selected at configure with the target
> library, or even to allow them to use shared pipe-driver.
> 
> Less duplication - rather than shipping three identical radeon winsys,
> 8 copies of the dri ST, 3x the OMX ST.... you get the idea :)
> 
> For those concerned that the driver will be be present multiple times,
> in the static library they can opt in for shared pipe-drivers.
> Note that those bare unstable interface.
> 
> Highlights & Notes:
>  * Most gallium targets are changed with a few exceptions - egl static only,
> opencl shared, and dri static/shared for drm drivers.
>  * OMX target does not build (pending Christian's feedback).
>  * By default we're building static libraries. Add configure option?
>  * Shared ones do not work with vdpau/gl interop.
> 
> Next:
> Janitorial:
>  * Update the release notes.
>  * Cleanup configure target names.
> Megaradeon
>  * As per Marek's idea, push some of the cruft to the radeon winsys layer.
> DRI
>  * Create a single libdricommon (similar to classic dri).
>  * Driver specific __driGetDriverExtension*.
>  * Merge libdridrm + libdrisw.
>  * Blown classic dri style megadriver.
> EGL/CLOVER
>  * Cleanup sw winsys handling and convert egl/clover.
> Symlinks
>  * Cleanup the link creation (think about other platforms) and compact/unify.
> 
> 
> The changes can be fetches are available in the pipe-loader-to-all-or-static
> branch over at https://github.com/evelikov/Mesa/
> 
> Build + runtime tested on my rusty old nv96 using nouveau, although I would
> appreciate additional testing :)
> 
>  * Build - automake, android and scons should just work.
>  * Runtime - there should be no regressions (barring the vdpau/gl interop
> note above).
> 
> As usual thoughts, comments and suggestions are greatly appreciated.
> 
> Cheers
> Emil
> 
> P.S. Did I mention that there is ~770loc savings as well :)
> 



More information about the mesa-dev mailing list