dxvk icon indicating copy to clipboard operation
dxvk copied to clipboard

Battle.net's BlizzardBrowser.exe (Chromium) "Failed to find the GPU adapter with the specified Luid."

Open XerTheSquirrel opened this issue 1 year ago • 2 comments

Software information

Warcraft 3: Reforged

System information

  • GPU: Intel (R) Graphics (RPL-P)
  • Driver: Intel open-source Mesa Driver
  • Wine version: 9.0 (via Crossover 24.0.2)
  • DXVK version: 2.3.1

Apitrace file(s)

N/A Currently.

Weird Stuff

So Warcraft 3 Reforged uses Direct3D 11 for rendering graphics. When in the Main Menu or the "Options -> Options" menu in the actual game it uses a Chromium based browser that is in a separate process called BlizzardBrowser.exe to render whatever fancy GUI they use. Initially it fails because msvproc.dll is missing, copying that over from Windows 10 and setting it to native in Wine fixes that. The log constantly spits out "Failed to find the GPU adapter with the specified Luid." and then BlizzardBrowser.exe just dies and tries again. I believe what is happening is that Warcraft 3 is saying the GPU is at the given LUID and since the browser is a completely separate process, it is unable to find that LUID because looking at the code in https://github.com/doitsujin/dxvk/blob/c1f665f92be1b6bcd8ef53afbdbb684424cb4942/src/util/util_luid.cpp#L22 generates a new random LUID. There may need to be some kind of IPC or similar so the Chromium browser can render in the context of Warcraft 3 which is in another process.

The documentation on GetAdapterLUID says:

A locally unique identifier (LUID) is a 64-bit value that is guaranteed to be unique only on the system on which it was generated. The uniqueness of a locally unique identifier (LUID) is guaranteed only until the system is restarted.

So, from this I believe that the ID has to be cached somewhere so it can be found again rather than randomly generated.

Note that using built-in DLLs does not work, as in this happens regardless of DXVK being used. Additionally, it matters not whether Virtual Desktop is being used or not.  

Log files

The log BlizzardBrower.exe generates:

Browser-20240519T032605.log

ps aux | grep BlizzardBrowser:

psaux.txt

The editor working just fine:

Screenshot_20240518_233406

The game completely failing because BlizzardBrowser.exe just keeps failing over and over and spits the same log file constantly without end:

image

XerTheSquirrel avatar May 19 '24 03:05 XerTheSquirrel

We get LUIDs from winevulkan if supported by the wine build in question in order to avoid problems like these, we should never hit the code you linked in practice. If your wine doesn't support this, there's nothing we can do on our end since LUIDs are expected to be compatible across APIs.

doitsujin avatar May 20 '24 15:05 doitsujin

We get LUIDs from winevulkan if supported by the wine build in question in order to avoid problems like these, we should never hit the code you linked in practice. If your wine doesn't support this, there's nothing we can do on our end since LUIDs are expected to be compatible across APIs.

Ah I see. I am using CodeWeaver's version of Wine via Crossover 24.0.2, which is Wine 9.0. There is this patch which just was merged a few days ago https://gitlab.winehq.org/wine/wine/-/merge_requests/5616 which should be applicable to me as I am on Wayland, when this comes out in Wine 10.0 I will come back to this issue and see if it still occurs.

XerTheSquirrel avatar May 25 '24 04:05 XerTheSquirrel