On Thu, Sep 13, 2007 at 02:50:54PM -0500, Timur Tabi wrote:
> Hi, I'm new to the framebuffer subsystem, so forgive me if this is a FAQ.
> I've spent the past couple hours scouring web sites and sample code, but I
> don't have a definitive answer to my question.
> I have a device that supports three planes - memory areas that the hardware
> reads from to generate the physical image. Each plane supports an alpha
> channel for each pixel, and the hardware just blends all three planes together
> when it draws the image.
> Currently, our driver create three framebuffer devices, /dev/fb0, /dev/fb1,
> and /dev/fb2, which means three calls to register_framebuffer(). Is this the
> correct way to do it?
It is one way. At least omapfb does things the same way, and it has some
custom ioctls to control the planes. Another way would be to have one
fb device and implement support for the extra planes in user space.
> The reason I ask is that our hardware can only handle three planes if the
> resolution is 1024x768 or below. I can't figure out any way of telling the
> framebuffer subsystem that if it switches to 1280x1024 in plane 0, that plane
> 1 and 2 no longer exist. Any suggestions on how to handle that?
Perhaps return an error for any ioctls when the plane is not available,
or implement a custom ioctl which carries that information. You could
also leave that up to user space to know. It seems to me that you'll need
a customized user space solution anyway (eg. a DirectFB gfx driver or a
custom kdrive X server).