https://bugs.winehq.org/show_bug.cgi?id=38845
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download URL| |http://dist.blizzard.com/do | |wnloads/wow-installers/full | |/World-of-Warcraft-Setup-en | |GB.exe CC| |focht@gmx.net Component|-unknown |directx-d3d Summary|Battle.net launcher no |Battle.net launcher doesn't |longer displays |render user interface in | |Win7+ mode, causing white | |screen (builtin | |'d3dcompiler_46.dll' is not | |mature enough) Regression SHA1|8609e2d2722b2a9533df2408002 |ca7ce1678b61b88966a48f591be |6206c75a6af79 |566e04f3d669f
--- Comment #15 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
The regression sha1 https://source.winehq.org/git/wine.git/commit/8609e2d2722b2a9533df2408002620... doesn't make sense here.
The game ships a native 'd3dcompiler_43.dll' on its own but not 'd3dcompiler_46.dll'.
If the Windows version of the WINEPREFIX' is set to 'Windows XP' (default), the launcher loads 'd3dcompiler_43.dll' which causes the loader to use native dll in the end (builtin 'd3dcompiler_43' -> prefer native over builtin -> native).
Relevant part of trace log:
--- snip --- ... 0042:Call KERNEL32.LoadLibraryW(01b2f360 L"D3DCompiler_43.dll") ret=10eba1a5 0042:trace:module:load_dll looking for L"D3DCompiler_43.dll" in L"C:\Program Files (x86)\Battle.net\Battle.net.5952;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0042:trace:module:get_load_order looking for L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll" 0042:trace:module:get_load_order got hardcoded default for L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll" 0042:trace:module:load_builtin_dll Trying built-in L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll" 0042:warn:module:load_builtin_dll failed to load .so lib for builtin L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll": /home/focht/wine-games/wineprefix-battlenet/dosdevices/c:/Program Files (x86)/Battle.net/Battle.net.5952/d3dcompiler_43.dll: invalid ELF header 0042:trace:module:load_builtin_dll Trying built-in L"D3DCompiler_43.dll" 0042:trace:module:load_dll looking for L"kernel32.dll" in L"C:\Program Files (x86)\Battle.net\Battle.net.5952;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0042:trace:module:load_dll Found L"C:\windows\system32\KERNEL32.dll" for L"kernel32.dll" at 0x7b820000, count=-1 0042:trace:module:load_builtin_callback loaded d3dcompiler_43.dll 0x177460 0x7c490000 0042:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\d3dcompiler_43.dll" at 0x7c490000: builtin 0042:Call PE DLL (proc=0x7c4d602c,module=0x7c490000 L"d3dcompiler_43.dll",reason=WINE_PREATTACH,res=(nil)) 0042:Ret PE DLL (proc=0x7c4d602c,module=0x7c490000 L"d3dcompiler_43.dll",reason=WINE_PREATTACH,res=(nil)) retval=0 0042:trace:module:load_dll L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll" pre-attach returned FALSE, preferring native 0042:trace:module:LdrUnloadDll (0x7c490000) 0042:trace:module:LdrUnloadDll (L"d3dcompiler_43.dll") - START 0042:trace:module:MODULE_DecRefCount (L"d3dcompiler_43.dll") ldr.LoadCount: 0 0042:trace:module:free_modref unloading L"C:\windows\system32\d3dcompiler_43.dll" 0042:trace:module:LdrUnloadDll END 0042:trace:module:load_native_dll Trying native dll L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll" 0042:trace:module:map_image mapped PE file at 0x3300000-0x3507000 0042:trace:module:map_image mapping section .text at 0x3301000 off 400 size 1ee200 virt 1ee053 flags 60000020 0042:trace:module:map_image clearing 0x34ef200 - 0x34f0000 0042:trace:module:map_image mapping section .data at 0x34f0000 off 1ee600 size 4200 virt 7ea4 flags c0000040 0042:trace:module:map_image clearing 0x34f4200 - 0x34f5000 0042:trace:module:map_image mapping section .rsrc at 0x34f8000 off 1f2800 size 400 virt 3c8 flags 40000040 0042:trace:module:map_image clearing 0x34f8400 - 0x34f9000 0042:trace:module:map_image mapping section .reloc at 0x34f9000 off 1f2c00 size e000 virt df44 flags 42000040 0042:trace:module:map_image relocating from 0x10000000-0x10207000 to 0x3300000-0x3507000 ... 0042:trace:loaddll:load_native_dll Loaded L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll" at 0x3300000: native 0042:trace:module:load_dll Loaded module L"C:\Program Files (x86)\Battle.net\Battle.net.5952\D3DCompiler_43.dll" (native) at 0x3300000 0042:trace:module:process_attach (L"D3DCompiler_43.dll",(nil)) - START 0042:trace:module:process_attach (L"msvcrt.dll",(nil)) - START --- snip ---
If the Windows version of the WINEPREFIX is set to 'Windows 7', the launcher loads 'd3dcompiler_46.dll' by default.
Relevant part of trace log:
--- snip --- ... 0039:Call KERNEL32.LoadLibraryW(01b2f360 L"D3DCompiler_46.dll") ret=10eba1a5 0039:trace:module:load_dll looking for L"D3DCompiler_46.dll" in L"C:\Program Files (x86)\Battle.net\Battle.net.5952;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0039:trace:module:get_load_order looking for L"C:\windows\system32\D3DCompiler_46.dll" 0039:trace:module:get_load_order got hardcoded default for L"D3DCompiler_46.dll" 0039:trace:module:load_dll L"C:\windows\system32\D3DCompiler_46.dll" is a fake Wine dll 0039:trace:module:load_builtin_dll Trying built-in L"D3DCompiler_46.dll" 0039:trace:module:load_dll looking for L"kernel32.dll" in L"C:\Program Files (x86)\Battle.net\Battle.net.5952;.;C:\windows\system32;C:\windows\system;C:\windows;C:\windows\system32;C:\windows;C:\windows\system32\wbem" 0039:trace:module:load_dll Found L"C:\windows\system32\KERNEL32.dll" for L"kernel32.dll" at 0x7b820000, count=-1 0039:trace:module:load_builtin_callback loaded d3dcompiler_46.dll 0x1776a8 0x7c440000 0039:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\d3dcompiler_46.dll" at 0x7c440000: builtin 0039:trace:module:load_dll Loaded module L"C:\windows\system32\D3DCompiler_46.dll" (builtin) at 0x7c440000 0039:trace:module:process_attach (L"d3dcompiler_46.dll",(nil)) - START 0039:Call PE DLL (proc=0x7c48e184,module=0x7c440000 L"d3dcompiler_46.dll",reason=PROCESS_ATTACH,res=(nil)) 0039:Call KERNEL32.DisableThreadLibraryCalls(7c440000) ret=7c45c4bd 0039:Ret KERNEL32.DisableThreadLibraryCalls() retval=00000001 ret=7c45c4bd 0039:Ret PE DLL (proc=0x7c48e184,module=0x7c440000 L"d3dcompiler_46.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 0039:trace:module:process_attach (L"d3dcompiler_46.dll",(nil)) - END 0039:Ret KERNEL32.LoadLibraryW() retval=7c440000 ret=10eba1a5 0039:Call KERNEL32.SetCurrentDirectoryW(01b378c0 L"C:\Program Files (x86)\Battle.net\Battle.net.5952") ret=100e33d5 0039:Ret KERNEL32.SetCurrentDirectoryW() retval=00000001 ret=100e33d5 ... 0034:Call d3dcompiler_46.D3DCompile(01cbe698,0000051f,011a397c "C:\fakepath",00000000,00000000,02098558 "main",0119ef80 "vs_3_0",00000000,00000000,0033cc40,0033cc3c) ret=02084ad2 ... 0034:err:d3dcompiler:compile_shader HLSL shader parsing failed. ... 0034:Call d3dcompiler_46.D3DCompile(01cfdbc0,00000230,011a397c "C:\fakepath",00000000,00000000,02098558 "main",0119ef70 "ps_3_0",00000000,00000000,0033cc40,0033cc3c) ret=02084ad2 ... 0034:err:d3dcompiler:compile_shader HLSL shader parsing failed. ... --- snip ---
Since the game doesn't ship native 'd3dcompiler_46.dll', it's Wine's builtin being used here - with all deficiencies.
If you want to blame a commit - it would be rather this one:
https://source.winehq.org/git/wine.git/commit/ca7ce1678b61b88966a48f591be566... ("d3dcompiler_46: Add stub dll.").
Anyway, there are various insufficiencies with Wine's d3dcompiler implementation, making this likely a dupe of already existing bugs.
Regards