[Mesa-dev] [PATCH 12/15] gallium: Add winsys loader for device enumeration and driver multiplexing.
Jose Fonseca
jfonseca at vmware.com
Mon Mar 26 12:27:15 PDT 2012
----- Original Message -----
> Christian König <deathsimple at vodafone.de> writes:
> >[...]
> > On 26.03.2012 17:20, Francisco Jerez wrote:
> >> Essentially it's an interface to enumerate the graphic devices
> >> that are
> >> present in the system (and by extension to create screens on them,
> >> enumeration alone is useless without having a way to do something
> >> with
> >> the devices you find).
> >>
> >> You're right that traditionally this hasn't been part of the
> >> winsys API,
> >> but the task is very tightly coupled with the underlying window
> >> system:
> >> to my innocent eyes it seems that it would make more sense to
> >> extend the
> >> winsys API with something like this.
> >
> > Well, they key point is that even if it is closely related to the
> > different window systems, it isn't a window system of its own!
>
> Hm, I think we should first settle on what a winsys is.
Kind of dated, but still relevant to this discussion:
http://jrfonseca.blogspot.co.uk/2008/04/gallium3d-introduction.html
A lot changed since, but the layering concept has become even stronger than it was then.
On top of that, there is now the concept of a "target" (src/gallium/targets/foo), which is typically a dynamic library that links together consecutive layers (e.g., state tracker + pipe driver + winsys; or pipe driver + winsys)
> In my
> understanding it's a set of primitives that abstract the platform
> specific details of the implementation, where "details" include:
> - device binding
> - memory management
> - command submission
> My proposal boils down to including "device enumeration" among these
> categories, because the implementation to use is going to be highly
> dependent on the specific platform and display architecture we're
> running on, e.g. it's not going to be the same when running on X/DRI,
> on
> the bare DRM device, on other operating systems...
I think the big disconnect here is that a "winsys" has the details you mention but is HW specific.
Therefore a module that loads something depending on the HW cannot possibly be a winsys.
Given your module talks about pipe_screen, it's either a state tracker, or a helper module that's used by state trackers.
Granted, the "winsys" name is not very en-lighting -- maybe "pipe driver backend" would be better --, but its role is clear nevertheless.
Jose
More information about the mesa-dev
mailing list