[Mesa-dev] Convert vdpau and dri targets to the pipe-loader

Christian König deathsimple at vodafone.de
Thu Feb 13 03:48:59 PST 2014


Am 13.02.2014 12:28, schrieb Maarten Lankhorst:
> op 11-02-14 11:30, Christian König schreef:
>> Am 11.02.2014 05:26, schrieb Emil Velikov:
>>> Hello list,
>>>
>>> The recent patches from Rob gave me a nice kick to give another stab at
>>> integrating the pipe-loader into the vdpau/dri targets.
>>>
>>> What:
>>>   - With these patches one library will be created for hardware and 
>>> one for
>>> software driven backends - eg. libvdpau_gallium_dri, 
>>> libvdpau_gallium_sw
>>
>> Just drop, the software driven backends. I was about to remove them 
>> anyway.
>>
>>>   - Each library can use every possible pipe driver, determined at 
>>> runtime.
>>>   - To get the dri (galliumdrm_dri) or vdpau library working create 
>>> hardlink
>>> (or symlink) to it (libvdpau_nouveau.so -> libvdpau_gallium_dri.so)
>>>
>>> Why:
>>>   - Smaller overall size while having no extra exported symbols. 
>>> This is
>>> a nice method of us to share most of gallium (read mesagallium and
>>> aux/gallium) without exporting every symbol either one to those two 
>>> contain.
>>>   - Drop the multiple duplicated
>>>   - With those done, some additional symbol cleanup can be made 
>>> using the
>>> linker. The stripped size of pipe_nouveau and pipe_swrast decreased by
>>> ~0.6MiB, downto 2.2, 1.2MiB accordingly. With similar results on other
>>> libaries.
>>
>> NAK, at least for the VDPAU drivers that doesn't sounds like such a 
>> good idea to me.
>>
>> Reducing the number of exported symbols can be archived otherwise and 
>> giving up their self containing without any external dependencies 
>> just to save some extra space on disk doesn't sound like a valid 
>> reason to me.
> This is a great idea. It doesn't just save diskspace, it also makes 
> life for packagers easier.

Please reconsider that for a moment, it means that we make the gallium 
pipe screen and context a public interface of a shared library.

That means we either need to put everything into a single package, make 
hard dependencies on the packages between each other or declare the pipe 
interfaces as stable. Neither of those options sounds like a good idea 
(ok, maybe putting everything into a single package).

> Right now I'm not packaging vdpau in ubuntu because of the extra disk 
> space involved.
> Not everyone can download packages with 10 mbit connections.
>
> I really dislike building libgallium shared, so getting rid of that 
> hack while keeping the size reduction is great. :-)
>

Yeah, agree.

> Preventing symbol clashing is easy by carefully choosing which symbols 
> to export. And in the case of pipe-loader we would only need to export
> very few, and those exports are very controlled. Even 
> radeon_drm_winsys_create doesn't need to be exported any more if vdpau 
> and dri use the same shared pipe-loader library.

Removing the unnecessary exported symbols is probably the better way to 
go, the last time I checked r600 had something ~200kb of actually binary 
and over 1mb of symbols.

Christian.

>
> ~Maarten
>



More information about the mesa-dev mailing list