[wine-i386]: [opengl can't detect hardware vendor] **wine-i386 and winecheck* Wine(https://www.winehq.org/) winecheck **Describe the bug** I try to run x86 program in ubuntu-aarch64, so i use FEXLoader to load wine, then wine load x86 program wincheck.exe. But it seems cant find vendor ``` progwrapper$ FEXLoader -R Ubuntu_i386 ./wine-progwrapper/bin/wine ./winecheck.exe [ERROR] Couldn't connect to FEXServer socket 1000.FEXServer.Socket 111 Connection refused RootFS Position: /home/bogus/.fex-emu/RootFS/Ubuntu_i386 : ./wine-progwrapper/bin/wine RootFS Position: /home/bogus/.fex-emu/RootFS/Ubuntu_i386 : /usr/local/share/progwrapper/wine-progwrapper/bin/wine-preloader RootFS Position: /home/bogus/.fex-emu/RootFS/Ubuntu_i386 : /usr/local/share/progwrapper/wine-progwrapper/bin/wineserver fixme:winediag:start_process Wine Staging 1.9.7 is a testing version containing experimental patches. fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org. err:menubuilder:init_xdg error looking up the desktop directory Checking OpenGL ... radeon: Failed to get PCI ID, error number -1 libGL error: failed to create dri screen libGL error: failed to load driver: radeonsi OpenGL Vendor: VMware, Inc. OpenGL Renderer: llvmpipe (LLVM 6.0, 128 bits) OpenGL Direct Rendering: True ERROR: found bad OpenGL Vendor: VMware, Inc. ERROR: found bad OpenGL Renderer: llvmpipe OpenGL: FAILURE ``` I read the source code, it seems failure in below part code, like this(https://github.com/wine-mirror/wine/blob/master/dlls/opengl32/tests/opengl.c#L1190), but is not the same: ``` hWnd = CreateWindowExA(0, clsName, "OpenGL Test", WS_TILEDWINDOW, 0, 0, 100, 100, 0, 0, 0, 0); if (!hWnd) return false; hDC = GetDC(hWnd); if (!hDC) goto error; pixelformat = ChoosePixelFormat(hDC, &pfd); if (!pixelformat) goto error; if (!SetPixelFormat(hDC, pixelformat, &pfd)) goto error; context = wglCreateContext(hDC); if (!context) goto error; if (!wglMakeCurrent(hDC, context)) goto error; vendor = (const char *)glGetString(GL_VENDOR); renderer = (const char *)glGetString(GL_RENDERER); extensions = (const char *)glGetString(GL_EXTENSIONS); if (extensions && strstr(extensions, "WINE_EXT_direct_rendering")) directRendering = true; printf("OpenGL Vendor: %s\n", vendor); printf("OpenGL Renderer: %s\n", renderer); printf("OpenGL Direct Rendering: %s\n", directRendering ? "True" : "False (or old/wrong wine version)"); ``` glGetString(GL_VENDOR) cant get real vendor info, it's just return software implement. real vendor info : ![image](https://user-images.githubusercontent.com/618485/205528127-1a1fb4a1-d3ed-497d-957f-0942ff63b959.png) Because I cant run winecheck, so I use some opengl test program do test, all is ok 1. FEXLoader ~/Downloads/ogl/glxinfo 2. WINEPREFIX="/home/bogus/.wine64/" ./wine ~/.wine64/drive_c/users/bogus/Temp/wct/opengl32_test.exe 3. FEXLoader -k ~/.fex-emu/ThunkConfigs/thunks.json -t /usr/lib/fex-emu/HostThunks/ -j /usr/share/fex-emu/GuestThunks -R ~/.fex-emu/RootFS/Ubuntu_22_04 -- ~/Downloads/ogl/glxinfo And I think it is maybe FEX not implement some opengl32 compatibility interface, But how can I to verify my guess and to fix it? **To Reproduce** FEXLoader -R Ubuntu_i386 ./wine-progwrapper/bin/wine ./winecheck.exe **Expected behavior** should like this: ![image](https://user-images.githubusercontent.com/618485/205528127-1a1fb4a1-d3ed-497d-957f-0942ff63b959.png) **Screenshots and Video** **System information:** - OS: Ubuntu 22.04.1 LTS - CPU/SoC: AMD - Video driver version: Device: AMD OLAND (LLVM 13.0.1, DRM 2.50, 5.15.0-54-generic) (0x6611) - RootFS used: Ubuntu 16.04 (i386) - FEX version: commit c37fcf136ababf13b491ae8f1a878cc70f8d1c33 (FEXGetConfig build by myself, it seems is the latest version ) - Thunks Enabled: No (I don't know how to enable libgl32 thunk) **Additional context** - Is this an x86 or x86-64 game: No - Does this reproduce on x86-64 host with FEX: NoTest - Does this reproduce on AArch64 with Radeon/Intel/Nvidia: yes - Is this a Vulkan game: No - **And I think it is maybe FEX not implement some opengl32 compatibility interface, But how can I to verify my guess and to fix it?**