Open zaggynl opened 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.
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
That is indeed Wine/Proton being incapable of something there. The log has fixme's and other things going on there.
Tested under Proton 4.11-1 and changed Windows version to 10 by above winecfg method, same result.
Proton does not support direct3d 12 right now.
3DMark has multiple issues in proton 4.11-1 on top of direct 3D 12 not working:
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:
PROTON_DUMP_DEBUG_COMMANDS=1 %command%
./tmp/proton_${USER}/run regedit
HKEY_CURRENT_USER\Software\Futuremark
HKEY_CURRENT_USER\Software\Futuremark\3DMark
HKEY_CURRENT_USER\Software\Futuremark\3DMark\KeyCode
@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
@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.
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.
@kisak-valve Here you go: steam-223850.log
Disabling esync will prevent this from starting.
This is what happens when you start this (by forcing 32-bit or 64-bit) with esync disabled:
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.
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
The splash screen issue is gone on newer version. The crash is still here however.
- 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
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.
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.
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:
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.
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.
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.
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 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?
@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
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.
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.