VGA arbiter: removing RAC
Tiago Vignatti
vignatti at c3sl.ufpr.br
Sun Dec 23 08:08:16 PST 2007
Hi Egbert,
Egbert Eich escreveu:
> Tiago Vignatti writes:
> > And yes, unfortunately we will need to keep the RAC module together with
> > the VGA arbiter inside Xorg for some time due the portability of Xorg.
> > Probably let autoconf set if Xorg needs RAC or the arbiter depending the
> > OS would be fine and easy to do.
>
> Why unfortunately?
>
> I would think it should be possible to share a lot of code between
> the DDX part that deals with the arbiter and RAC itself. A lot of
> ideas that went into RAC have not been implemented in the arbiter.
Yes, to be fair the X arbiter implementation wraps all the functions
that deals with VGA things in the same way RAC does. But what kind of
ideas specifically are you talking that is not implemented in the arbiter?
>
> The arbiter takes care of resource enabling and disabling and acts
> as a broker between different processes - the latter is something
> the broker inside the Xserver cannot do.
> This however is not all of RAC. The code in the Xserver decides which
> resources actually need to be disabled depending on if the device
> actually decodes VGA or not.
> VGA decoding can be disabled on some devices while they will still
> identify themselves as VGA devices in PCI config space - so this is
> something the driver has to set.
Yes, the currently arbiter implementation already exports a function to
be set at PreInit time, in the drivers side.
> Furthermore it decides if VGA resources are actually needed for a
> specific operation.
> This provides the opportunity for a lot of optimization.
This also we stolen from RAC. We can set some flags telling what kind of
operation is needed depending on the chipset.
>
> For platforms that don't provide an arbiter inside the kernel a
> comparable functionality could be put into a user land broker.
This is a good idea. Thanks for the tip, Egbert.
Moreover, we trying to evaluate some experiments regarding the VGA
(e.g., the burden of a single-head uses the arbiter, a multi-head using
the arbiter versus multihead using RAC, etc). I'll share this all with
the community as soon as possible.
> I may have missed where the DDX bits of this VGA arbiter are developed.
I have to push this all to fd.o but for now you can see what's going on
here:
- Kernel module:
git-clone http://www.inf.ufpr.br/ribas/repos/vga-module.git
- User space library:
git-clone http://www.inf.ufpr.br/ribas/repos/libvgaaccess.git
- X implementation:
git-clone http://www.inf.ufpr.br/ribas/repos/xserver.git
Thanks,
--
Tiago Vignatti
C3SL - Centro de Computação Científica e Software Livre
www.c3sl.ufpr.br
More information about the xorg
mailing list