Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
XerTheSquirrel opened this issue May 19, 2024 · 2 comments

Comments

@XerTheSquirrel
Copy link

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

LUID GetAdapterLUID(UINT Adapter) {
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

@doitsujin
Copy link
Owner

doitsujin commented May 20, 2024

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.

@XerTheSquirrel
Copy link
Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants