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 :) > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev