summary refs log tree commit diff stats
path: root/results/scraper/fex/2192
blob: 7324b45b464e0930232b9beb061174d878ec6267 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
[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?**