iXit / wine-nine-standalone

Build Gallium Nine support on top of an existing WINE installation
GNU Lesser General Public License v2.1
277 stars 23 forks source link

Gallium Nine (winetricks) seems to be again broken in Wine 8.13 #163

Closed lorn10 closed 1 year ago

lorn10 commented 1 year ago

Hi all!

Yes, here follows unfortunately a new bug report regarding the installation of Gallium Nine via winetricks in Wine devel.

It looks that it is again broken. This seems to be the case for me on Wine 8.13.

So when I start a d3d9 application like the CXBX-R Xbox emulator then I get on the CLI:

0024:err:module:import_dll Loading library d3d9.dll (which is needed by L"Z:\\home\\test\\Downloads\\Cxbx\\2022\\cxbx.exe") failed (error c000012f).
0024:err:module:LdrInitializeThunk Importing dlls for L"Z:\\home\\test\\Downloads\\Cxbx\\2022\\cxbx.exe" failed, status c0000135

This worked fine in older Wine releases but I am not sure when the regression started.

I am still on Kubuntu 22.04 LTS and currently Mesa 23.3-git2308100600.81cae3-oibaf-j (git-81cae3d 2023-08-10 jammy-oibaf-ppa) is installed.

lorn10 commented 1 year ago

There is some new information available.

As mentioned in my old bug #138, libegl1:i386 is still needed. In my case that one was no longer installed because I have done a reinstall of Kubuntu which effectively removed all non-standard packages.

So I have installed it again with:

sudo apt-get install libegl1:i386

And now I get with default 32 bit ninewinecfg:

test@test-iMac:~/Downloads$ wine ninewinecfg
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
007c:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
007c:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
007c:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
007c:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
err:d3d9nine:common_load_d3dadapter d3dadapter9.so.1 was not found on your system.
Setting the envvar D3D_MODULE_PATH or regkey Software\Wine\Direct3DNine\ModulePath is required

While the 64 bit variant is working:

test@test-iMac:~/Downloads$ wine64 ninewinecfg
0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0088:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0088:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
0088:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
0088:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
0088:fixme:xinput:pdo_pnp IRP_MN_QUERY_ID type 5, not implemented!
Native Direct3D 9 v0.9.0.396-release is active.
For more information visit https://github.com/iXit/wine-nine-standalone

So at the moment the 64 bit path is ok while the 32 bit one is still broken.

Edit: It should be added that also the general 32 bit Mesa support has to be present in conjunction with Gallium Nine even if it is noted that later Wine 8.x releases do not longer depend on it. So be sure to have also those installed:

sudo dpkg --add-architecture i386
sudo apt install libgl1-mesa-glx:i386

Unfortunately also this didn't resolve my problem with 32 bit Gallium Nine, I still get:

test@test-iMac:~/Downloads$ wine ninewinecfg
err:d3d9nine:common_load_d3dadapter d3dadapter9.so.1 was not found on your system.
Setting the envvar D3D_MODULE_PATH or regkey Software\Wine\Direct3DNine\ModulePath is required

But at least some old old 32 bit based OpenGL stuff like Unigine Sanctuary is now starting up again.

dhewg commented 1 year ago

Probably one of its dependencies are missing:

For me it's:

$ readelf -a /usr/lib/i386-linux-gnu/d3d/d3dadapter9.so.1|grep NEEDED
 0x00000001 (NEEDED)                     Shared library: [libdrm.so.2]
 0x00000001 (NEEDED)                     Shared library: [libLLVM-15.so.1]
 0x00000001 (NEEDED)                     Shared library: [libexpat.so.1]
 0x00000001 (NEEDED)                     Shared library: [libz.so.1]
 0x00000001 (NEEDED)                     Shared library: [libzstd.so.1]
 0x00000001 (NEEDED)                     Shared library: [libsensors.so.5]
 0x00000001 (NEEDED)                     Shared library: [libdrm_nouveau.so.2]
 0x00000001 (NEEDED)                     Shared library: [libdrm_radeon.so.1]
 0x00000001 (NEEDED)                     Shared library: [libelf.so.1]
 0x00000001 (NEEDED)                     Shared library: [libdrm_amdgpu.so.1]
 0x00000001 (NEEDED)                     Shared library: [libdrm_intel.so.1]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so.6]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
lorn10 commented 1 year ago

Interesting, there is simply no d3d folder present in /usr/lib/i386-linux-gnu/ on my Kubuntu 22.04 LTS installation. So all of those files are missing.

And I have reinstalled Gallium Nine with ./winetricks -f galliumnine several times, no change.

But this works for the 64 bit part:

test@test-iMac:~/Downloads$ readelf -a /usr/lib/x86_64-linux-gnu/d3d/d3dadapter9.so.1|grep NEEDED
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libdrm.so.2]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libLLVM-15.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libexpat.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libz.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libzstd.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libsensors.so.5]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libdrm_nouveau.so.2]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libdrm_radeon.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libelf.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libdrm_amdgpu.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libdrm_intel.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libm.so.6]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Gemeinsame Bibliothek [libc.so.6]
dhewg commented 1 year ago

d3d/d3dadapter9.so.1 is part of mesa

lorn10 commented 1 year ago

Exactly and sudo apt install libd3dadapter9-mesa:i386 did the trick. :+1: :tada:

But why it wasn't installed automatically I have no idea. I mean sudo dpkg --add-architecture i386 should enforce the installation also of the 32bit Mesa part of Gallium Nine. Perhaps this is because I have applied that command after the installation of Gallium Nine.

Whatever I have learned again somewhat. And all of this will become much better and easier for end-users when Gallium Nine is converted to the PE format. :wink: