On Thu, 15 Sep 2011 18:39:21 +0000, Florian Tobias Schandinat FlorianSchandinat@gmx.de wrote:
Well, I'm not against sharing the code and not against taking DRM's current implementation as a base but the steps required to make it generally acceptable would be to split it of, probably as a standalone module and strip all DRM specific things off. Than all things that require EDID can use it, DRM can add DRM-specific things on top and fb can add fb-specific things.
The rendering portions of the DRM drivers are all device-specific. The core DRM ioctls are largely about providing some sharing control over the device, mapping memory around and mode setting.
One of my biggest problems with KMS is that it has (naturally) a lot more complexity than the fb API which leads to instability.
The mode setting portions are of necessity the same. The KMS API exposes more functionality for mode setting, but doesn't actually require any additional hardware-specific knowledge. You still have to be able to bring the hardware up from power on and light up every connected monitor.
However, if you want acceleration, you're going to run into bugs that crash the machine. It's a sad reality that graphics hardware just isn't able to recover cleanly in all cases from programmer errors, and that includes errors that come from user mode.
Hardware is improving in this area, and reset is getting more reliable than it used to be. But, until we can context switch the graphics hardware at arbitrary points during execution, we're kinda stuck with using the really big reset hammer when programs go awry.