Advice fixing #13683 (DirectX mouse overlay?)

Stefan Dösinger stefandoesinger at gmail.com
Fri Mar 21 04:14:27 CDT 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 2014-03-21 03:24, schrieb Christopher Thielen:
> apitrace is really neat, thanks for pointing it out. I ran it on
> Windows XP with the Ultima IX (GOG edition) and generated a trace -
> which shows the missing mouse cursor - then rebooted into Linux and
> ran the Windows version of apitrace's GUI using the same .trace
> file and it _did_ also show the mouse cursor, running under Wine.
It means one thing for sure: The cursor is not a user32 cursor.
Otherwise it would not show up in the captures.

I have two theories: Either the game looks at the d3d capabilities
(CheckDeviceFormat, GetDeviceCaps, mostly IDirect3D9 methods) and
concludes that something is missing, enters a bad codepath and does
not draw the pointer.

Or some function unrelated to d3d does not work and the game fails to
read the pointer from its resources.

Since this is a glide application running through a glide wrapper the
second case is much more likely. (Unless my memory is completely broken)

You can compile wined3d for Windows. The basic idea is to set
CFLAGS=-DUSE_WIN32_OPENGL and compile it with mingw on Windows, or
Cross-Compile it from Linux. I also have a hacky Visual Studio 2013
based build setup, but you'll have a hard time generating a binary
that works on Windows XP with that. With a Win32 build of wined3d.dll
and our d3d9.dll you can run the game on Windows with our d3d code. If
the pointer shows up in that case this demonstrates that it is not a
d3d issue. If it does not, it shows that the issue is a capability
flag problem.

> Also, I don't know apitrace that well, but is the per-frame
> 'texture' tab only showing textures utilized in that frame, not
> counting anything already in the framebuffer? I couldn't find the
> cursor texture after looking at about two dozen frames, but then
> again, I didn't find most textures using that method.
No idea :-(

> I did run an apitrace of Ultima IX (GOG edition) on Linux for kicks
> but I don't think it'll help much. There is a factor of about 4x as
> many calls per frame when running under Wine FYI, but I'm assuming
> the Wine D3D folks are already aware of that sort of issue.
Did you run the Linux apitrace? In this case you'll see OpenGL calls
instead of d3d calls. Or did you use the Windows apitrace version
inside Wine?

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJTLALzAAoJEN0/YqbEcdMw+MwP/i4WI7mGcAY6mWTgo/e1bONl
ZiU/ArT5oE4G4LIbZOubGblk4zw6D/v4/g3b8JRICXdjGmtb/1GDk7ZnryZG8Jki
9kQe0Mbbo4IU29oT0c1LHvoUUlo/k0zWUQo6zO/EuBw2IHAxpuVAVS8+wt+Is1vy
n9r4hg0+Z0nUXokfeVfABZBL5SoIqBfEJJlcVkbcMi5u8GC1ECSlnBRt32ruq1AM
80bfKazsWcjUd8BseNGHf5YBbWynI9gqB/uKUxyeqiyEst7Os5gq/56pqbTbAGeV
ZX9ssKC+EEdPR1fbHxOXsTpjA+NmNkpaKcEUwTqyHHGlYe6rtAxCiGxYSh9U/8UO
c+0gmS+X9927HqVEgaSsNrYgSTsKQJst/EKsHswPn0EzBh56S0WLFlob26o5+Zct
9jelDv9JlRWe3isZiWgUkyFTqF2XAkN3sFUaMfMhi+I9Ubhhmq22Uw/70FvkTPkT
ycDG/sK6udr1CgR3Fvnvf/72T4+mXr7eZGegQU85uBeS0ElzZlNMKz2AuiLc8wC7
VtntG0Q2EB7m4bx9mf3BJOGPv2nZXB8QDevw6pH6YoQGCurELro2354CZDj/XG32
bV5ILnpZzuAZnpzJBQWVH7ejLlWI3k5jbPiyj8NundU1Tm/BUX12xbd7VraVxCY2
sEtMFuun1519NcUk+JTc
=21NT
-----END PGP SIGNATURE-----



More information about the wine-devel mailing list