On Thu, Apr 1, 2010 at 1:32 AM, Luca Barbieri <luca.barbi...@gmail.com> wrote:
>> Once MS changes interfaces, then there's _no advantage_ to using DX10
>> internally, regardless of what WINE does, and one might as well use
>> OpenGL.  Wine doesn't change that.
>
> [resent to ML, inadvertently replied only to Miles]
>
> Note that my proposal was not to use DirectX 10 internally, but rather
> to expose DirectX 10 and promote it initially as an API to test
> Gallium and later as the preferred Linux graphics API instead of
> OpenGL, for the technical reason that a DirectX 10 over Gallium
> implementation carries much less performance overhead than an OpenGL
> implementation and is much simpler, due to the superior design of
> DirectX 10.
>
> Using an extended version of DirectX 10 internally could also be an
> option, but I don't think it's worth doing that right now and likely
> it's not worth at all.
>
> Also note that Microsoft does not use DirectX 10 or 11 internally
> either, but rather uses the "DirectX 10 DDI" or "DirectX 10 Device
> Driver Interface", which is also publicly documented.
>
> The last time Microsoft did an incompatible interface change (DX10),
> it was to move away from fixed pipeline support with scattered state
> towards a shader-only pipeline with constant state objects.
>
> Exactly the same change was achieved by the move from the classic Mesa
> architecture to the Gallium architecture: you could think of the move
> to Gallium as switching to something like DX10 internally, done purely
> for technical reasons, partially the same as the ones that prompted
> Microsoft to make the transition.
>
> Actually, while this is not generally explicitly stated by Gallium
> designers, Gallium itself is generally evolving towards being closer
> to DirectX 10.
> The biggest deviations are additional features needed to support
> OpenGL features not included in DirectX 10.
>
> For instance, looking at recent changes:
> - Vertex element CSOs, recently added, are equivalent to DX10 input layouts
> - Sampler views, also recently added, are equivalent to DX10 shared
> resource views
> - Doing transfers per-context (recent work by Keith Whitwell) is what DX10 
> does
> - Having a "resource" concept (also recent work by Keith Whitwell) is
> what DX10 does
> - Gallium format values where changed from self-describing to a set of
> stock values like DX10
> - Gallium format names where later changed and made identical to DX10
> ones (except for the fact that the names of the former start with
> PIPE_FORMAT_ and the ones of the latter with DXGI_FORMAT_, and the
> enumerated values are different)
> - It has been decided to follow the DX9 SM3/DX10 model for shader
> semantic linkage as opposed to the OpenGL one
>
> I recently systematically compared Gallium and DirectX 10, and found
> them to be mostly equivalent, where the exceptions were usually either
> additional features Gallium had for the sake of OpenGL, or Gallium
> misdesigns that are being changed or looked into.
>
> This is not likely for the sake of imitating Microsoft, but just
> because they made a good design, having had made the decision to
> redesign the whole API from scratch when making DirectX 10.
> It's also probably because VMWare is apparently funding DirectX 10
> support over Gallium, which obviously makes all discrepancies evident
> for people working on that, and those are generally because DirectX 10
> is better, leading those people to improve the Gallium design taking
> inspiration from DirectX 10.
>
> Presumably if Microsoft were to change interfaces incompatibly again
> (notice that DX11 is a compatible change), Mesa would probably benefit
> from introducing a further abstraction layer similar to new Microsoft
> interface and have a Gallium->NewLayer module, since such a change
> would most likely be a result of a paradigm shift in graphics hardware
> itself (e.g. a switch to fully software-based GPUs like Larrabee).
>
> Also, unless Microsoft holds patents to DirectX 10 (which would be a
> showstopper, even though Gallium may violate them anyway), I don't see
> any difference from having to implement DirectX 10 or OpenGL, or any
> difference in "openness" of the APIs.
> It is indeed possible to participate in the ARB standardization
> process and some Mesa contributors/leaders do, but I'm not sure
> whether this is particularly advantageous: decisions that work well
> for Microsoft and Windows are also likely to work well for Linux/Mesa
> since the hardware is the same and the software works mostly
> equivalently.
>
> And should some decisions not work well, it is technically trivial to
> provide an alternative API.

Is it really so surprising that an API designed to expose a generic,
programmable, shaderful pipeline (Gallium) fits well to multiple APIs
based on the same concept (D3D10, OGL 2.x)?

-- 
When the facts change, I change my mind. What do you do, sir? ~ Keynes

Corbin Simpson
<mostawesomed...@gmail.com>

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to