Re: OpenGL-based framebuffer concepts

From: Jon Smirl
Date: Thu May 25 2006 - 11:37:42 EST


On 5/25/06, Jeff Garzik <jeff@xxxxxxxxxx> wrote:
Jon Smirl wrote:
In Linux, the lowlevel driver registers irq handlers, so your simple
problem has the simple and obvious answer. Further, reviewing my
statement above, if fbdev/DRM are aware of each other, and if they both
are layered on top of the lowlevel driver, then it should also be
obvious that they are cooperatively sharing resources, not competing
against one another.


> I would instead start by making fbdev the low level driver. DRM could
> then bind to it and redundant code in DRM could be removed. 90% of the
> code in fbdev is always needed. Hopefully X could be convinced to use

Take your pick. An fbdev driver is nothing but a PCI driver that
registers itself with the fbdev subsystem. Ditto a DRM driver, though
the DRM and agpgart layering is royally screwed up ATM. Regardless, he
who codes, wins.

There is significant architectural difference between the two schemes.
Is the base driver an absolute minimal driver that only serves as a
switch to route into the other drivers, or does the base driver
contain all the common code? I'm in the common code camp, DaveA is in
the minimal switch camp.

Take memory management for example. I think the memory manager should
go into the base driver. The other strategy is for each driver to have
their own memory manager and then the base provides a way to select
which one is active. (Note that in all cases the complex part of
memory management is running in user space).

> the services offered by the fbdev/DRM pair. New memory management code

No "hopefully." X must be forced to use this driver, otherwise the
system is unworkable.

I have had no success in making this happen.

> would be added to this base driver since everyone needs it. Fbdev

If fbdev and DRM are cooperating, then obviously they will cooperate
when managing resources. GPU memory is but one example of a resource.

What is cooperation? Is it shared code in the base coordinating a
single state in the hardware, or is it save your state, I'm switching
to another driver, now I'm loading its state. We can't achieve
agreement on this.

> would also pick up the ability to reset secondary cards at boot.

But if you think the kernel will grow an x86 emulator, you're dreaming.
That's what initramfs and friends are for.

Depends on what you mean by the kernel growing the emulator. I don't
want to put it in the kernel binary, but I would like to see it in the
kernel tree. It would use klibc and initramfs. There are some classes
of machines that cannot get video at boot without running the ROM.
Making this part of the boot process will guarantee that all cards
have been POSTed by the time normal user space is up.

--
Jon Smirl
jonsmirl@xxxxxxxxx
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/