On Mon, 2009-11-09 at 04:02 -0800, Joakim Sindholt wrote:
> I've heard a little talk here and there and glisse pointed out I should
> take it to the ML.
> 
> The basic idea is that instead of binding 1 winsys, 1 state tracker and
> a couple of pipes into every single library we churn out, we define some
> sort of API between winsys and state_tracker so that we can split the
> library into 1 x (winsys + n pipes) and compile state trackers
> separately and just load our "Gallium3D library" at runtime.
> The way I see it we have a couple of options:
> 
> * Generic API
>         This is probably impossible but never-the-less the prettiest
>         solution. It implies we can define a single, simple API that
>         satisfies all state trackers
> * Superset
>         We could do this, which is closely related to a generic API
>         approach, but it would probably be a horrible mess
> * Modular
>         Here's the best thing I could think of, which still has the
>         potential for horrible mess-ness. Basically it would entail
>         writing a loader that asks the winsys/pipe part to deliver a
>         struct that satisfies a specific interface. The interface would
>         be on a per-state tracker basis but many state trackers will
>         probably use the same very simple interface anyway. Furthermore,
>         we can siphon out functions all winsys' will provide anyway and
>         provide a generic interface for state trackers with no specific
>         needs
>         
> The last implementation discussed could potentially give a simple
> generic API + whatever-you-want without making a horrid mess of things
> and still keeping code relatively clean.
> 
> What do the higherups think, and do you already have a way better idea
> than mine?

Joakim,

This is definitely a direction we're interested in.

Jakob is preparing an interface so that we can have multiple
statetrackers for the Khronos APIs loaded simultaneously and talking to
each others, as EGL establishes. 

And I've playing with the idea of having a generic driver interface that
would allows to plug together state tracker + pipe + winsys dynamically
in runtime (
http://www.mail-archive.com/mesa3d-dev@lists.sourceforge.net/msg07818.html ). I 
believe this is more or less what you describe as the "Modular" option.

I agree with your assessment -- trying to impose a generic API for
everything would be bound to fail eventually. And a superset of all
interfaces would imply to implement a large combination interfaces,
continuously growing. We should cater for the most common things in the
pipe_screen if we can, but we must leave room for extension. 

I don't have an ETA for this. I hope that we can tackle this after 7.7.
I'll start a branch to prototype this when I find some time. Your
feedback would be most welcome of course.

Jose


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to