[WARNING, this is a long response that addresses the pros and cons of
separating the 3D drivers from XFree86]

David Johnson wrote:

> If anything I would like to become even less dependent on
> XFree.  I think one of the things that scares potnetial developers away is
> the fact that they have to download megabytes and megabytes of XFree code
> and then they have to wade through all that to figure out where they can fix
> a driver bug.  If the only thing people had to do to hack around with
> drivers was download  150K of driver code and some standard XFree and DRI
> headers, compile it and drop in their XFree driver directory I can guarantee
> you there would be more developers here.  XFree is a big ugly beast that is
> intimidating to potential new developers.  It isn't like the kernel where
> there is a drivers, drivers/net, drivers/usb, etc. directory structure.  In
> fact, you don't even need to download kernel source to build a kernel module
> either.  We should make it simpler, not more complex.  DRI obviously has to
> have ties to XFree but more at a design/integration/API level not
> necessarily as a shared code base.

Hi David,

I realize you posted this almost a week ago--so I apologize for
responding so late...however, it's something I think is worth addressing
and I'm just now getting a chance.

I agree that we should make every effort to make our build environment
developer friendly.  You raise some good points about possibly
separating pieces of the build.  First, I'd like to clarify a couple of
points in favor of separation; then, point out some potential pitfalls;
finally, I'd like to open this discussion up to feedback from other
developers.

The areas I believe are "natural" points of separation are the kernel,
2D and 3D drivers.  We already have a fair amount of separation today
between XFree86 and the DRM kernel modules.  It doesn't take long for
new DRM developers to quickly realize that keeping up with the kernel
releases and asynchronously following the XFree86 releases is quite a
juggling act.  We keep DRM sources in the XFree86 tree AND the Linux
Kernel tree.  Usually, the XFree86 tree is used as the main repository,
and the drivers are migrated to the Linux Kernel tree as they
stabilize.  It's also important to note that stand alone kernel modules
can be built within the XFree86 tree, if needed.

Another interesting division, though less obvious, is between the 3D
component and XFree86.  I believe you referred to the 3D component as
the "DRI"--but I'd like to spin it as the 3D or Mesa component and
recognize that all 3 major components (DRM, DDX and Mesa) all have DRI
pieces; and that DRI is really the underlying framework that allows all
of these to work together.  Anyway, Mesa has it's own repository where
new OpenGL API changes are worked out with the standalone Mesa software
renderer, first.  When this stabilizes it's migrated to XFree86. 
Usually this is a two stage process--going to the DRI repository first
where driver support for the new Mesa changes is worked out, then onto
the main XFree86 repository when it's ready for integration into the
next XFree86 release.  It's interesting to note that there is currently
no way to build a Mesa XFree86 HW driver in the standalone Mesa tree.  I
have to confess, I was a strong proponent of pushing this support into
the XFree86 tree; and I believe it has saved us some headaches--I'll
details the pitfalls below.  However, as I've spent more time
considering a unified 3D driver architecture that is portable across OS
platforms--I've come to the conclusion that the unified 3D driver may be
better off coming from a single Mesa repository that is separate from
XFree86.  I believe the Utah-GLX project took a similar approach and it
this might have been a reason why it has been reported as "easier" for
new developers to work with.

Providing an easy standalone 3D HW driver does have it's down sides. 
One of them is that any new device needs a compliment of graphics
drivers before 3D will work.  A 2D DDX driver and a DRM kernel module
need to be written and a device specific strategy for how the hardware
state will be managed needs to be determined down to the register
level.  This is a huge task for a single developer, and any developer
that is capable of taking this on, will appreciate having ALL the
components in a single source tree.  However, it's not unusual for a
team of developers to work closely to provide this driver suite--and
although the HW state management issues has to be coordinated carefully;
it could be nice for the developers working with a single component to
only need a smaller, component specific tree.  Also, it's not unusual
for the 3D driver component to require a significantly larger amount of
work.  So the 3D piece takes longer, or theres more developers
involved.  Just having a Mesa tree for that work would be good--once the
supporting 2D and kernel components are stable.  I can even envision a
unified 3D driver that is being extended and optimized, well after the
supporting components have been done for multiple OS platforms.  This
would result in more bang for the buck when a 3D driver is optimized. 
The trade off is breaking platforms the developer isn't testing with;
but I think our open development model can offset this somewhat--where
somebody else usually finds the problems on other OS's relatively
quickly.

Another pitfall that comes to mind is we're going to have to deal with a
significantly larger number of incompatability problems if we separate
the trees.  Right now, we get a lot of compatability for free by forcing
everything into one release tree.  We should consider pushing EVERYTHING
back to XFree86 for actual release (on *nix anyway).  As this will
create one less dependency for a Linux integrator--which many times ends
up in the user's face.

I think the level of reorganization involved with separating out 2D and
3D trees will be a MAJOR disruption to current development.  We should
consider waiting until we have a major structural change that's going to
impose a similar level of disruption, like a Unified Driver Interface
and if we have a solid plan that minimizes the pitfalls, possibly
address the seperation at that time.

I'm interested in hearing additional comments--especially first hand
experience with separate 2D and 3D trees for graphics development.

Regards,
Jens

--                             /\
         Jens Owen            /  \/\ _    
  [EMAIL PROTECTED]  /    \ \ \   Steamboat Springs, Colorado

_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to