ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.48k stars 1.07k forks source link

3DMark (Demo) (231350) #2897

Open zaggynl opened 5 years ago

zaggynl commented 5 years ago

steam-231350.log

Compatibility Report

System Information

I confirm:

Symptoms

DX11 test (Firestrike) runs, unable to run DX12 test (Time Spy) as 3DMark shows "You are unable to run this test. To run this test you need a DirectX 12 compatible operating system." Tried using "winetricks --version win10" in Steam launch options, made no difference.

ghost commented 5 years ago

"unable to run DX12 test (Time Spy) as 3DMark shows "You are unable to run this test. To run this test you need a DirectX 12 compatible operating system."

I believe Proton still runs as Windows 7 so this should be working correctly as dx12 is technically Windows 10 and the application probably checks that.

Changing Windows versions in Proton prefix config to Windows 10 should fix that but I'm not testing it. If this works, then Proton would have to consider this as correct and this issue can be close, fake Windows 10 to the application, or use Windows 10 as the OS.

zaggynl commented 5 years ago

Used:

WINEPREFIX="$HOME/.steam/steam/steamapps/compatdata/231350/pfx" winecfg

and

WINEPREFIX="$HOME/.steam/steam/steamapps/compatdata/231350/pfx" winetricks

to set Windows version to 10 after I started 3DMark once to have the wineprefix created. Started using 64 bit shortcut in Steam, it starts the loading screen, the main screen flashes by, it keeps showing the loading screen indefinitely. Attempts to set it back to Windows 7 renders the same result. Had to reinstall 3DMark to get it back to work. ~/steam-231350.log: http://paste.ubuntu.com/p/qzjnDJrRsz/ Edit: added log as file as I don't know how long paste will remain. 3dmark_proton_log.txt

ghost commented 5 years ago

That is indeed Wine/Proton being incapable of something there. The log has fixme's and other things going on there.

zaggynl commented 5 years ago

Tested under Proton 4.11-1 and changed Windows version to 10 by above winecfg method, same result.

ryao commented 5 years ago

Proton does not support direct3d 12 right now.

ryao commented 5 years ago

3DMark has multiple issues in proton 4.11-1 on top of direct 3D 12 not working:

ryao commented 5 years ago

I found the cause of the issue preventing the Advanced Edition from working. It is a bug in the steam client where it is not doing what it does on Windows. I filed an issue in ValveSoftware/steam-for-linux for it:

https://github.com/ValveSoftware/steam-for-linux/issues/6436

Here are instructions on how to apply the workaround:

  1. Install 3DMark
  2. Edit the launch settings and PROTON_DUMP_DEBUG_COMMANDS=1 %command%.
  3. Launch 3DMark (by forcing 32-bit or 64-bit because normal launches are broken)
  4. Exit 3DMark
  5. Execute /tmp/proton_${USER}/run regedit
  6. Create the key HKEY_CURRENT_USER\Software\Futuremark
  7. Create the key HKEY_CURRENT_USER\Software\Futuremark\3DMark
  8. Create the string value HKEY_CURRENT_USER\Software\Futuremark\3DMark\KeyCode
  9. Set it to the CD key code from Steam.
  10. Exit regedit.
  11. Optionally, clear the launch settings.
  12. Start 3DMark and enjoy your Advanced Edition.
Sporif commented 5 years ago

@ryao Thanks, that works. Alternatively it can be done in one line with protontricks:

protontricks -c 'wine cmd /C reg add "HKEY_CURRENT_USER\Software\Futuremark\3DMark" /v "KeyCode" /t REG_SZ /d "<CDKEY>"' 223850
ryao commented 5 years ago

@kisak-valve I am no longer able to get this working with a fresh prefix on proton 4.11-3. It worked on proton 4.11-2. I had to downgrade to proton 4.2-9 to be able to use it.

kisak-valve commented 5 years ago

Hello @ryao, please add PROTON_LOG=1 %command% to the game's launch options, reproduce the regression, and drag and drop the generated $HOME/steam-$APPID.log into the comment box.

ryao commented 5 years ago

@kisak-valve Here you go: steam-223850.log

ryao commented 5 years ago

Disabling esync will prevent this from starting.

ryao commented 5 years ago

This is what happens when you start this (by forcing 32-bit or 64-bit) with esync disabled:

steam-223850.log

MegWATTT commented 5 years ago

I have no launch issues for 3DMark on Proton 4.11.

The bench will only accept to launch D3D12 benches if he detects Windows 10 as OS. However, 3DMark will crash if the OS is set as as Windows10 for 3DMark.exe.

i can also confirm that the Advanced edition isn't detected, and need the workaround from this comment.

MegWATTT commented 4 years ago

The bench now can't be launched if the prefix was created with Proton 5.0 (and when Proton 5.0 is used). There is definitively an issue with 3DMark when the OS reported is Windows 10. A minor issue also: the splash screen will appear in a window with Proton 5.0. EDIT: Log with Proton 5.0 (clean prefix): steam-223850.log

MegWATTT commented 4 years ago

The splash screen issue is gone on newer version. The crash is still here however.

ranisalt commented 4 years ago
  • Set it to the CD key code from Steam.

This is not possible as there is no CD key for 3DMark.

Edit: Huh. Weird af but after a couple of launches it now presents a key. Can confirm that this fix works and 3DMark reports as Advanced Edition now, on Proton 5.0-3

acergamebook commented 4 years ago

Following below step and occur "workload produced no results" and the result is incorrect. Have any missing?

Install 3DMark Edit the launch settings and PROTON_DUMP_DEBUGCOMMANDS=1 %command%. Launch 3DMark (by forcing 32-bit or 64-bit because normal launches are broken) Exit 3DMark Execute /tmp/proton${USER}/run regedit Create the key HKEY_CURRENT_USER\Software\Futuremark Create the key HKEY_CURRENT_USER\Software\Futuremark\3DMark Create the string value HKEY_CURRENT_USER\Software\Futuremark\3DMark\KeyCode Set it to the CD key code from Steam. Exit regedit. Start 3DMark Ice Storm and perform Custom Run.

MegWATTT commented 4 years ago

Looks like 3DMark now works on prefix created after proton 5.0 with proton 5.0-7. Unfortunately, I still can't run D3D12 benchmarks because of the "You are unable to run this test. To run this test you need a DirectX 12 compatible operating system.", despite proton 5.0 advertising Windows 10 as OS.

tycho commented 4 years ago

So the 3DMark launcher is responsible for determining what OS features are available. The launcher is written in Java, and the JDK gets the OS version by reading the version resource entry from kernel32.dll:

https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/4687075d8ccf/src/windows/native/java/lang/java_props_md.c#l408

If I do this in Wine, the launcher allows me to try to run the DirectX 12 benchmarks:

diff --git a/dlls/kernel32/version.rc b/dlls/kernel32/version.rc
index 82287e5da7..9d6c79f918 100644
--- a/dlls/kernel32/version.rc
+++ b/dlls/kernel32/version.rc
@@ -25,10 +25,10 @@ LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
 #define WINE_FILEDESCRIPTION_STR "Wine kernel DLL"
 #define WINE_FILENAME_STR "kernel32.dll"

-/* these values come from Windows 7 SP1 */
-#define WINE_FILEVERSION 6,1,7601,17514
-#define WINE_FILEVERSION_STR "6.1.7601.17514"
-#define WINE_PRODUCTVERSION 6,1,7601,17514
-#define WINE_PRODUCTVERSION_STR "6.1.7601.17514"
+/* these values come from Windows 10 2004 */
+#define WINE_FILEVERSION 10,0,19041,1000
+#define WINE_FILEVERSION_STR "10.0.19041.1000"
+#define WINE_PRODUCTVERSION 10,0,19041,1000
+#define WINE_PRODUCTVERSION_STR "10.0.19041.1000"

 #include "wine/wine_common_ver.rc"

But the only DirectX 12 test I've been able to run so far is the API overhead test. I'm not sure what's going on with the others yet, they just error immediately, and I haven't gotten a good log file to dig into yet.

tycho commented 4 years ago

Time Spy spews this error into the 3DMark launcher UI:

File: dx_shader_compiler.cpp Line: 218 Function: class eva::graphics::shader_bytecode __cdecl eva::graphics::dx::dx_shader_compiler::compile_shader(const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,enum eva::graphics::shader_type,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,enum eva::graphics::compilation_warning_mode,enum eva::graphics::compilation_profile_mode) const Expression: result: DirectX call failed [-2005530516]. :+1:

Here's some VKD3D_SHADER_DEBUG=trace output from vkd3d revision 1510680:

trace:vkd3d_shader_serialize_root_signature: root_signature 0x21ef50, dxbc 0x21ef40.
trace:vkd3d_shader_parse_root_signature: dxbc {0x7e867620, 68}, root_signature 0x21ed10.
trace:parse_dxbc: tag: 0x43425844.
warn:parse_dxbc: Ignoring DXBC checksum.
warn:skip_dword_unknown: Skipping 4 unknown DWORDs:
warn:skip_dword_unknown:        0x05bbd62e
warn:skip_dword_unknown:        0xc74d3646
warn:skip_dword_unknown:        0xde1407a5
warn:skip_dword_unknown:        0x0d99273d
trace:parse_dxbc: version: 0x1.
trace:parse_dxbc: total size: 0x44
trace:parse_dxbc: chunk count: 0x1
trace:parse_dxbc: chunk 0 at offset 0x24
trace:shader_parse_root_signature: Version 0x1.
trace:shader_parse_root_signature: Parameter count 0, offset 24.
trace:shader_parse_root_signature: Static sampler count 0, offset 24.
trace:shader_parse_root_signature: Flags 0x1.
trace:vkd3d_shader_serialize_root_signature: root_signature 0x21e400, dxbc 0x21e3f0.
trace:vkd3d_shader_parse_root_signature: dxbc {0x7e86b540, 228}, root_signature 0x21ea60.
trace:parse_dxbc: tag: 0x43425844.
warn:parse_dxbc: Ignoring DXBC checksum.
warn:skip_dword_unknown: Skipping 4 unknown DWORDs:
warn:skip_dword_unknown:        0x52a25b94
warn:skip_dword_unknown:        0xe0d74ff3
warn:skip_dword_unknown:        0x050b0fbe
warn:skip_dword_unknown:        0x61bc19da
trace:parse_dxbc: version: 0x1.
trace:parse_dxbc: total size: 0xe4
trace:parse_dxbc: chunk count: 0x1
trace:parse_dxbc: chunk 0 at offset 0x24
trace:shader_parse_root_signature: Version 0x1.
trace:shader_parse_root_signature: Parameter count 4, offset 24.
trace:shader_parse_root_parameters: Type 0, shader visibility 0.
trace:shader_parse_descriptor_table: Descriptor range count 1.
trace:shader_parse_descriptor_ranges: Type 0, descriptor count 128, base shader register 0, register space 0, offset 0.
trace:shader_parse_root_parameters: Type 0, shader visibility 0.
trace:shader_parse_descriptor_table: Descriptor range count 1.
trace:shader_parse_descriptor_ranges: Type 0x3, descriptor count 16, base shader register 0, register space 0, offset 0.
trace:shader_parse_root_parameters: Type 0, shader visibility 0.
trace:shader_parse_descriptor_table: Descriptor range count 1.
trace:shader_parse_descriptor_ranges: Type 0x2, descriptor count 8, base shader register 0, register space 0, offset 0.
trace:shader_parse_root_parameters: Type 0, shader visibility 0.
trace:shader_parse_descriptor_table: Descriptor range count 1.
trace:shader_parse_descriptor_ranges: Type 0x1, descriptor count 8, base shader register 0, register space 0, offset 0.
trace:shader_parse_root_signature: Static sampler count 0, offset 184.
trace:shader_parse_root_signature: Flags 0x1.

The "skip_dword_unknown" warnings seem suspect, but I haven't been using vkd3d for anything else yet, so I don't know what's expected behavior in these logs.

MegWATTT commented 4 years ago

Hello, nice find for Windows version detection. I managed to run both d3d12 bench on Windows using vkd3d built from here, with dxgi.dll from the latest DXVK. Timespy had very severe artifacts while NightRaid had some missing objects + freeze at CPU test. The RC version of Proton have updated vkd3d so it might be worth to test if you can still apply the patch.

SveSop commented 3 years ago

I am sorry for flogging a dead horse by necroing this thread, but with proton 5.13-4 (and previous 5.13-x), once i get the cd-key entered either by regedit or hacking the installscript.vdf and recreating the prefix, i only get a white window. It does however sais "Advanced Edition" on top.

If i do not do that, i can select menuitems and stuff (but ofc. getting the limitations of the Basic edition). I have no idea why this changes when i actually enabled Advanced Edition.

Screenshot

![Screenshot from 2020-12-14 21-27-44](https://user-images.githubusercontent.com/33990277/102131948-41147700-3e53-11eb-8983-64e71fc1cb0c.png)

It makes no difference if i choose 32 or 64 bit.. or default on the startup option. I can also see the mousepointer change to a little "hand" when it is a menuitem under it, so i guess stuff IS there somehow, its just not possible to see what. Resizing/moving/minimizing++ to no avail.

Tips?

chrisotter92 commented 3 years ago

@SveSop

I'm not using the Demo edition but you might try using --use-gl=osmesa in the launch options. As suggested by @MegWATTT in the non-demo version. https://github.com/ValveSoftware/Proton/issues/4034

SveSop commented 3 years ago

The "white screen" problem was not there when using "Proton-GE" (Glorious Eggroll) version. Have not really tested that much lately tho. Troublesome benchmark results anyway, due to scanning of "system info" not giving any useful result for the test. That probably will not work on Steam/wine anyway i guess.