Re: New proposed DRM interface design

From: Alan Cox
Date: Sun Sep 05 2004 - 11:37:16 EST


The only glue structure you need for most of this is

struct fb_device
{
struct fb_info *fb; /* NULL or frame buffer device */
struct dri_whatever *dri; /* As yet not nicely extracted DRI
object */
atomic_t refcnt;
void *private
};

Right now the drvdata for most PCI/AGP frame buffers is set to the
fb_info. If that is set to the shared object then you can attach DRI and
or FB first and they can find and call each others methods.

It might also need a single lock just to avoid DRI deciding to go away
while fb is calling dri and the reverse although I think the refcnt is
easier and cheaper.

With that in place if X tells DRI "640x480 starting here" then DRI can
tell fb "640x480 starting here". Similarly fb and dri can find each
other for acceleration and the kernel can become a DRI client for
console acceleration.

Once you have this object you can start attaching memory managers and
mode setup pointers to the shared structure so that they live
independantly.

-
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/