On Do, 2013-11-21 at 13:12 +1000, Dave Airlie wrote:
> On Wed, Nov 20, 2013 at 10:02 PM, Gerd Hoffmann <kra...@redhat.com> wrote:
> > On Mi, 2013-11-20 at 15:52 +1000, Dave Airlie wrote:
> >> From: Dave Airlie <airl...@redhat.com>
> >>
> >> This is a virtio-vga device built on top of the virtio-gpu device.
> >
> > Ah, I see what you use the wrapping for.  Hmm.  I think you should use a
> > common base class instead, i.e. something like virtio-gpu-base which
> > holds all the common stuff.  Both virtio-gpu and virtio-vga can use that
> > as TypeInfo->parent then.  This way virtio-vga doesn't have to muck with
> > virtio-gpu internals.  virtio-gpu-base can be tagged as abstract class
> > (using .abstract = true) so it will not be instantiated directly.
> >
> 
> I'm not sure what that buys me here, I need the virtio-vga to attach
> the vga ops the first console that the virtio-gpu registers, it can't
> be a separate console, and since virtio-gpu initialises before
> virtio-vga I can't tell it to not register the console.

virtio-gpu-core registers no consoles.  It just export the hw_ops
functions.   virtio-gpu-core inly initializes the stuff which is
identical for both virtio-gpu and virtio-vga, everything else is left to
the init functions of the subclasses.

virtio-gpu uses virtio-gpu-core as parent.  Registers the the consoles,
using the hw_ops functions exported by virtio-gpu-core.  Also sets the
pci class to DISPLAY_OTHER.

virtio-vga uses virtio-gpu-core as parent too.  Registers the consoles,
using functions basically doing "if vgamode then call vga hw_ops else
call virtio-gpu-core hw_ops".  Simliar to what you have today but
without the funky wrapping.  Sets pci class to DISPLAY_VGA and
initializes vga stuff.

cheers,
  Gerd



Reply via email to