On Sun, Nov 25, 2012 at 09:51:46PM -0500, Alex Deucher wrote: > On Sat, Nov 24, 2012 at 4:09 PM, Thierry Reding > <thierry.reding@xxxxxxxxxxxxxxxxx> wrote: > > going into Linux 3.8 and NVIDIA posting initial patches > > for 2D acceleration on top of it, I've been looking at the various ways > > how this can best be leveraged. > > > > The most obvious choice would be to start work on an xf86-video-tegra > > driver that uses the code currently in the works to implement the EXA > > callbacks that allow some of the rendering to be offloaded to the GPU. > > The way I would go about this is to fork xf86-video-modesetting, do some > > rebranding and add the various bits required to offload rendering. > > > > However, that has all the usual drawbacks of a fork so I thought maybe > > it would be better to write some code to xf86-video-modesetting to add > > GPU-specific acceleration on top. Such code could be leveraged by other > > drivers as well and all of them could share a common base for the > > functionality provided through the standard DRM IOCTLs. > > > > That approach has some disadvantages of its own, like the potential > > bloat if many GPUs do the same. It would also be a bit of a step back > > to the old monolithic days of X. > > Just fork and fill in your own GPU specific bits. Most accel stuff > ends up being very GPU specific. That doesn't exclude the alternative that I described. Maybe I didn't express what I had in mind very clearly. What I propose is to add some code to the modesetting driver that would allow GPU-specific code to be called if matching hardware is detected (perhaps as stupidly as looking at the DRM driver name/version). Such code could perhaps be called from the DDX' .ScreenInit and call the GPU-specific function to register an EXA driver. That would allow a large body of code (modesetting, VT switching, ...) to be shared among a number of drivers instead of duplicating the code for each one and having to keep merging updates from the modesetting driver as it evolves. So the GPU-specific acceleration would just sit on top of the existing code and only be activated on specific hardware. What I'm *not* proposing is to create an abstraction layer for acceleration. Thierry
Attachment:
pgpPTkiAAc55R.pgp
Description: PGP signature