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

Emil Velikov emil.l.velikov at gmail.com
Thu May 29 11:00:25 PDT 2014


humble ping

People interested in taking a look at the series ? Any input is appreciated
even if people are not familiar with mesa's build.

Francisco
Can you take a look the pipe-loader patches 04/23 - 08/23 ? They add a few
functions needed to make the pipe-loader st/dri aware. Patch 22 just moves
some of the bits in opencl/Makefile.am around, so that we can use the same
static/shared pipe-driver approach after some minor work in st/clover.

Christian, Maarten
Gents can you take a look if the video targets (patches 16-18) look sane ?
This is one step towards what you guys were discussing/thinking in the
previous iteration of "pipe-loader-to-all" [1] [2]

If any of you guys feel like looking at the rest of the series I would be very
grateful.

Cheers,
Emil


[1] http://lists.freedesktop.org/archives/mesa-dev/2014-February/053983.html
[2] http://lists.freedesktop.org/archives/mesa-dev/2014-February/053999.html

On 25/05/14 19:42, Emil Velikov wrote:
> 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