[Mesa-dev] Direct3D 9 state tracker

Henri Verbeet hverbeet at gmail.com
Mon Jul 22 11:54:11 PDT 2013


On 22 July 2013 18:48, Stefan Dösinger <stefandoesinger at gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Am 2013-07-22 15:39, schrieb Jose Fonseca:
>> It seems to me that this would be more useful if the state tracker
>> targeted not the D3D9 API, but the WDDM D3D9 DDI [2].  Targeting
>> the DDI would allow, e.g., to share more code with rest of WINE
>> (the API->DDI runtime layer);
> Fwiw, Wine does not use Microsoft's DDI in any way. We use our own
> interface to abstract between d3d versions, which is a mix of d3d9 and
> d3d10, with some ddraw-specific extras.
>
Yes, although the DDI would probably be something we could work with
on the wined3d level. The current interface would indeed be a bit
awkward for us, at least from the point of view of integrating it into
Wine itself. If we were to use an API that's not OpenGL in Wine, and
we got to choose, we'd probably prefer using Gallium, or something
similar to it, directly from wined3d.

Any credible long term solution would either need to work with
everything from ddraw to d3d11, or at least be capable of being made
to work for those. Note also that there are applications that mix e.g.
ddraw and d3d9, or ddraw and OpenGL. Those all need to work as well.
That's not to say I don't think this is a useful project, at the very
least it helps people with Gallium drivers and the applications that
work with this state tracker. It also probably gives a good indication
of what's possible in terms of performance. However, at this point I
don't see how it can turn into a broader, more long term solution for
Wine.

>From our point of view though, and I'm pretty sure I've mentioned this
before to Christoph, the more interesting question is where most of
the performance difference comes from. I.e., if that's mostly
something specific to Mesa's GL implementation, something in how we're
using GL, something inherent in the GL API, or something else
entirely. I'm sure the additional abstraction layer doesn't help
performance much, but I'm not all that convinced that that's enough to
explain the difference.


More information about the mesa-dev mailing list