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

Just Cause 3 issue #9

Open
WernerAUT opened this issue Feb 5, 2019 · 54 comments
Open

Just Cause 3 issue #9

WernerAUT opened this issue Feb 5, 2019 · 54 comments
Labels
OWNED Part of the maintainers Steam library Works with Lutris The game is reported to work with Lutris Works with Staging The game is reported to work with Staging

Comments

@WernerAUT
Copy link

Hello first thanks for your work :)

I tried your wine-proton build, it runs on my LinuxMint 19.1 after installing some of the deb files you listed.
I play JustCause 3 over Lutris Wine-Steam using Wine 4.0 Staging + Esync + DXVK 0.96 without issues, so i was hoping that with your wine-proton i would be able to kick wine steam and use Steam with proton-wine, but the Game doesn't even launch, so i think it is missing a patch from the staging, but i have no idea which one. As i searched around i saw that Just Cause 3 is using Denuvo and this can only work with wine staging because it has some patches which makes them working.
I attached also the log i get using your build.

steam-225540.log

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

This line looks strange:

0025:err:winediag:wined3d_dll_init Setting maximum allowed wined3d GL version to 0.0.

Do you happen to run the game in the same prefix created by wine-staging? Could you clean the prefix and try again? Note: This may wipe out your saved games.

The prefix is stored in the compatdata folder, in a folder named by the gameid.

I have to check if I have access to a Steam lib having this game to try out myself. If it is really the Denuvo copy protection, I'd probably need to run this locally on my system to figure out which patch is missing.

@WernerAUT
Copy link
Author

WernerAUT commented Feb 6, 2019

Hi kakra,

thanks for the reply, do you think it would help if i make also a log from running Just Cause 3 on the working Steam for Windows running inside Wine.
Or would it be even better if i would make a full log, not only fixme?
Some one over at the proton github said he thinks it is related to proton patches, so i am not sure if it is fixable at all.

ValveSoftware/Proton#682

It doesn't start with a wine 3.19 + staging + dxvk + Proton patches(*), running steam-for-linux, on
nvidia.

But it does run fine without Proton patches (so wine + staging + dxvk, at least on nvidia), so with steam installed manually inside wine. (actually the only Proton patch to disable to get it working with steam-in-wine is the load_library's steamclient-lsteamclient swap)

FWIW, my guess is that Proton's lsteamclient is not enough for Just Cause 3: it might be looking for something else in the Steam install (it's not gameoverlay, you can disable it from steam and it still works with steam-in-wine, and I don't the see the "load module gameoverlay" anymore with Proton).

(I did not test without wine-staging)

(*): "Proton patches" as in Proton's wine fork steam hacks and patches

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

A log comparing to the working version could give me first clues, so it could help. I'm not a core wine developer, so a full log with traces might not help me seeing where the problem is because I don't know much about which values logged in a trace are to be expected. But as the game crashes very early, a full log is probably short enough for a quick investigation, so feel free to post it. I may have time to look into this deeper in the weekend (that's when I get access to another Steam lib via family sharing).

@WernerAUT
Copy link
Author

sure no problem i will make a log tonight, also not a big issue if you won't waste time on it, because it runs without issue inside Wine with Steam for Windows, i was just wondering and interested why it really doesn't work even with your updated wine included into proton. Is the wine you include just with some selected staging patches by you, then maybe it really miss only another patch.

@pchome
Copy link

pchome commented Feb 6, 2019

Just Cause 3 crashing even w/ wine-proton+staging, at least for me when I tried it earlier.

So the problem somewhere in the Steam client itself (or in Steam.dll, lsteamclient, the patch for lsteamclient, ...).

There are some known problems with different copy protections, and there are some tricks to load failing games, but none of them was applicable to Just Cause 3, e.g.:

  • re-downloading executable under Steam client in Windows/WINE, and use it to launch a game in Proton (see Alien vs Predator)
  • shifting date using libfaketime (see Just Cause 2)

Actually I have current fork built w/ all wine-staging patches, but unfortunately Just Cause 3 was uninstalled from my library by one of recent Steam client Beta update.

@WernerAUT
Copy link
Author

WernerAUT commented Feb 6, 2019

@pchome do you mean you have a proton based on wine 4.x with all staging patches included? So if you could upload the proton folder somewhere then i could test it out if you want.
I started to make backups of my games, i was also affected that after a steam beta update a game was deleted and again downloaded :)
I have a backup of Just Cause 3 :)

@pchome
Copy link

pchome commented Feb 6, 2019

I have a couple of shell scripts to generate such patch, but I should update them for 4.1 (later).

Here is the patch generated for current branch: 0001-Proton-Staging-4.1.patch.gz

Use $ patch -p1 < /path/to/0001-Proton-Staging-4.1.patch.

@WernerAUT
Copy link
Author

WernerAUT commented Feb 6, 2019

i don't use the branch, i only use the released pebruilt ones https://github.com/kakra/wine-proton/releases
because i just wanted to test it out if this fixes the Just Cause 3 issue :)

@pchome
Copy link

pchome commented Feb 6, 2019

Well, I can't share my build, cause it was built using custom CFLAGS and won't work for you.

🤷‍♂️

@WernerAUT
Copy link
Author

Ok thanks @pchome maybe @kakra can use your patch and built one for me :)

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

I'm currently installing the game, I'll try to reproduce the problem here... No need for logs currently.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

I started to make backups of my games, i was also affected that after a steam beta update a game was deleted and again downloaded :)

I do too. But I found that re-downloading here is faster than restoring from backup: 120 MBytes/s download rate ;-)

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

Well, I can't share my build, cause it was built using custom CFLAGS and won't work for you.

Mine is built with custom flags, too... But for a pretty common combination of CPU features because my platform is somewhat older (Ivy Bridge). If JC3 works for me with my build, I figure we should look into changing CPU flags of my build.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

@WernerAUT Okay, crashes for me too, tho I'm not having the d3d warning in the log:

0025:fixme:heap:RtlSetHeapInformation 0x490000 0 0x24e810 4 stub
0025:fixme:debug_buffer:RtlCreateQueryDebugBuffer (0, 0): stub
0025:fixme:debug_buffer:RtlCreateQueryDebugBuffer (168, 0): returning 0x98e90
0025:fixme:debug_buffer:RtlQueryProcessDebugInformation (37, 14, 0x98e90): stub
0025:fixme:debug_buffer:RtlDestroyQueryDebugBuffer (0x98e90): stub
0025:fixme:thread:NtSetInformationThread info class 7 not supported yet
002b:fixme:thread:NtSetInformationThread info class 7 not supported yet
002b:fixme:thread:NtSetInformationThread info class 7 not supported yet
Setting breakpad minidump AppID = 225540
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198086800809 [API loaded no]
pid 23133 != 23132, skipping destruction (fork without exec?)

I'm now trying to figure out which patches are missing. But you probably need to find why you're having the d3d warning about the max GL version = 0.0.

@WernerAUT
Copy link
Author

@kakra i think i have the d3d warning because i am testing with the Nvidia 418.30 driver, i wanted to try out
freesync with my monitor :) on Linux Mint which is just in a testing repo.
I will go back to 415.27 and will retest and look if the log shows something else

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

@WernerAUT You should use the latest NVIDIA vulkan beta driver to fully support DXVK. I'm using 415.22.05, this actually has more features and extensions related to Vulkan than 415.27, so the older version number is actually the newer version (minus support for GPUs introduced after 415.22).

@WernerAUT
Copy link
Author

ok the 418.30 was not the reason, i know about 415.22.05 but i won't use it for now without a ppa were it is available

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

And okay here: ntdll-NtSetLdtEntries from staging doesn't fix the problem. Still investigating.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

@WernerAUT Could you gist a full log of JC3 working in staging?

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

Ok thanks @pchome maybe @kakra can use your patch and built one for me :)

Sorry, no monolithic patches accepted as outlined in the README. But I'm in for trying to isolate the patches needed to get this running so we can concentrate on getting those specific patches upstreamed. Do you have any hints which patches would be needed? Info on JC3 in wine is very sparse except "use lutris" or "use staging". That's not very helpful if we want to get support for getting it run under Proton.

@WernerAUT
Copy link
Author

@kakra attached a full log, i hope correct one :)
justcause3_staging.log

@pchome
Copy link

pchome commented Feb 6, 2019

@kakra

Sorry, no monolithic patches accepted as outlined in the README.

You can change --backend=git-am in mentioned scripts to get separate commits.
--backend=git-apply was good for testing and investigation.

The difference for 4.1:

# Applied! 4.1
SKIP="${SKIP} -W httpapi-HttpCreateServerSession"
SKIP="${SKIP} -W ntdll-Hide_Wine_Exports"
SKIP="${SKIP} -W ntdll-NtContinue"
SKIP="${SKIP} -W ntdll-User_Shared_Data"
SKIP="${SKIP} -W winebuild-Fake_Dlls"
SKIP="${SKIP} -W wined3d-Silence_FIXMEs"
SKIP="${SKIP} -W wined3d-CSMT_Main"

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

Okay, that's messy because it contains the logs of the steam client itself. Let's try different:

Run Steam with WINEDEBUG=-all but still capture the logs generated as you previously did.

Now, with the Steam client running, please run the game exe directly and also capture the logs:

export WINEDEBUG=fixme+all,+timestamp,+pid,+tid,+seh,+debugstr,+module,+server,+loaddll 
cd /path/to/game/exe
WINEPREFIX=/path/to/prefix wine NameOfGame.exe

I'm not sure if that would work but let's see. One of the captured logs should have logs of the game only, except Steam does something magic and hands over launching of the game back to the running steam client (which, apparently, games sometimes do). I no longer have such a setup (I ditched my WineSteam prefix months ago) but if I remember correctly I was able to capture logs clean of Steam client logs that way.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

The difference for 4.1

@pchome All those are in my branch (minus CSMT because wine-4.x should have an inferior implementation and the other is the older one). See https://github.com/kakra/wine-proton/blob/rebase/proton_3.16/docs/patches/staging.yml

Some of those have been cherry-picked from the queue at https://source.winehq.org/patches/ so those are not yet listed there. I'll do that when I'm seeing rebase conflicts.

Current research tells me that concentrating on Denuvo may be a dead end. First glance of the logs @WernerAUT provided more looks like it's another component, probably handling certificates or crypto, or some runtime library stuff. Denuvo compatibility has been proven working for multiple titles meanwhile suspecting Denuvo first, but it turned out to be something else.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

BTW: I'm doing this "just cause" I wanted to play it too for some time now :-)

@pchome
Copy link

pchome commented Feb 6, 2019

All those are in my branch

Yes, -W mean skip. I'm applied them (Staging-4.1 patches) on top of your branch.
"All" w/o "listed".

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

@pchome Ah okay. I'm not familiar with using the patchapply script from staging (it failed me several times and I gave up). But you seem comfortable with it. Maybe we can join efforts to isolate the required patches. Could you remove all staging patches you applied on top of my branch which are obviously not related to this problem and then try the game (I'm pretending you're owning the game and could run it).

This way we can probably reduce the footprint a lot. Combined with the logs @WernerAUT hopefully will provide, it should be more easy to find what's needed. Thanks.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

FWIW, my guess is that Proton's lsteamclient is not enough for Just Cause 3: it might be looking for something else in the Steam install (it's not gameoverlay, you can disable it from steam and it still works with steam-in-wine, and I don't the see the "load module gameoverlay" anymore with Proton).

@WernerAUT I don't expect any of the Steam client requirements have something to do with it. There's another couple of patches you might want to remove: The patches replacing the Linux user name with "steamuser" so that the profile path is the same, no matter how your user is named. I think this is needed for the cloud sync to work correctly, and for when you restored your library from a backup but to a different user. It gets messy if you run the same prefix with alternating wine implementations (Proton vs non-Proton) because you end up with two user profiles in the prefix.

But other than that, we need to isolate the patches missing from my branch but existing in staging, or more exactly: we need to isolate the specific missing patches in that set of patches. Staging is a lot of patches, I really do not want to carry around all of these during rebase. It will backfire hard once Proton upstream rebases to a newer wine base version (I did that once, don't want to repeat that, that's when I threw away a lot of patches to carry around).

Also, just applying all staging and "then it works" doesn't help anyone to get it upstream (either in Proton, or even in winehq upstream). Please do not read as critique, I just wanted to explain my reasoning why I'm picky about which patches to accept. :-)

@pchome
Copy link

pchome commented Feb 6, 2019

@kakra

Could you remove all staging patches you applied on top of my branch which are obviously not related to this problem and then try the game

Before isolating specific patch we need to launch the game with success. Then, for sure, I'll help you to isolate some patches.
So for testing purposes you can apply attached monolithic patch on your local testing build.

Also, it maybe worth to look close into following patches:

kernel32: Don't force-load Steam.dll
HACK: kernel32: Load hard-coded Steam.dll path if relative load fails
HACK: kernel32: Return steamclient instead of lsteamclient during GetModuleHandleEx
HACK: kernel32: Swap requests for steamclient.dll with lsteamclient

Maybe add some additional traces to figure out why (if it should) Steam.dll wasn't loaded.

I'm pretending you're owning the game and could run it

I need to free some additional disk space and re-download the game. I'll do it later.

@WernerAUT
Copy link
Author

@kakra no that didn't work, for sure because i installed it using Lutris, maybe you can see in this log more, i started Lutris in debug mode
lutris_debug.log

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

@pchome Is it easily possible for you to apply the patches with git-am instead? Then create a pseudo-monolithic patch with git format-patch --stdout tag-before-applying > jc3-testing.patch (or push that branch)? This will result in a single file similar to your monolithic patch but it still tracks the individual commits. That way I filter-out unrelated patches and bisect the remainders.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

no that didn't work, for sure because i installed it using Lutris, maybe you can see in this log more, i started Lutris in debug mode
lutris_debug.log

@WernerAUT It's more or less the same with added Lutris noise. Can you tell Lutris to use different WINEDEBUG settings, as posted above?

I'm not sure if you could easily compile yourself for running wine in Lutris, but just in case here's a patch which should silence these "useless" ThreadInfo logs:
https://gist.github.com/kakra/aa2819fd7394a27700cff3694a04d59c

@pchome
Copy link

pchome commented Feb 6, 2019

If you need the list: jc3-testing.list.txt
Use $ grep '^Applying ' jc3-testing.list.txt | grep -o -E '/patches/[^/]+' | sort | uniq for compact list.

As requested: jc3-testing.patch.gz

@pchome
Copy link

pchome commented Feb 6, 2019

BTW: I have Deus Ex: MD installed, which have similar issue.
Staging patches applied to wine-proton don't help.

pcgamingwiki.com:games using Denuvo Anti-Tamper DRM

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

Deux Ex: MD has a native Linux version, I completed the game without issues and started one DLC (not yet completed). Thanks for the logs/patches/links. I'm looking into it right now.

@kakra
Copy link
Owner

kakra commented Feb 6, 2019

pcgamingwiki.com:games using Denuvo Anti-Tamper DRM

This lists a few games that I'm successfully playing with my branch... This hardens the idea that Denuvo is not the problem.

@kakra
Copy link
Owner

kakra commented Feb 7, 2019

Okay, I've added the following patches which are documented to solve problems with anti-tamper/anti-cheat implementations (mostly around Leage of Legends):

advapi32-CreateRestrictedToken server-Misc_ACL Staging:
  advapi32-Token_Integrity_Level:
    ntdll-LdrInitializeThunk:
      ntdll-RtlCreateUserThread: []
Compiler_Warnings:
  dxva2-Video_Decoder ntoskrnl-Stubs:
      winedevice-Default_Drivers: []
wow64cpu-Wow64Transition: []

JC3 still fails in the same way, so this list is either incomplete or that's the wrong track.

@pchome I'll diff that against your list later and try another set of patches. But now: Time to go to bed. ;-)

@kakra
Copy link
Owner

kakra commented Feb 8, 2019

Could you check if this version fixes any games for you? It includes a current pull from wine-master plus all staging patches related to anti-tamper/anti-cheat modules:
https://cloudflare-ipfs.com/ipfs/QmXop5HhKZTM5pnYRyNuQTRKZb5w91KrhAu9HHC9nbUh8S

Please do not share the link in other forums as it is a crypto-link and I cannot change it except remove it.

It doesn't fix JC3 for me, but maybe some of the other games with similar problems.

Output from tools/mkpatchlist.rb:

# expanded from patches/Compiler_Warnings/*.patch
patches/Compiler_Warnings/0001-windowscodecs-Avoid-implicit-cast-of-interface-point.patch
patches/Compiler_Warnings/0020-amstream-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0021-d2d1-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0022-d3d11-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0023-d3d8-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0024-d3d9-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0025-ddraw-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0026-dwrite-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0027-msxml3-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0028-oleaut32-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0029-rpcrt4-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0030-vbscript-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0031-include-Check-element-type-in-CONTAINING_RECORD-and-.patch
patches/Compiler_Warnings/0032-wsdapi-Avoid-implicit-cast-of-interface-pointer.patch
patches/Compiler_Warnings/0033-evr-Avoid-implicit-cast-of-interface-pointer.patch

# expanded from patches/dxva2-Video_Decoder/*.patch
# Fixes: Support for MPEG2 DXVA2 GPU video decoding through vaapi
# Fixes: Support for H264 DXVA2 GPU video decoding through vaapi
patches/dxva2-Video_Decoder/0001-dxva2-Implement-semi-stub-for-Direct3DDeviceManager9.patch
patches/dxva2-Video_Decoder/0002-dxva2-Implement-stubbed-interfaces-for-IDirectXVideo.patch
patches/dxva2-Video_Decoder/0004-dxva2-Implement-stubbed-DirectX-Software-VideoProces.patch
patches/dxva2-Video_Decoder/0005-include-Add-dxva.h-header-file.patch
patches/dxva2-Video_Decoder/0006-dxva2-tests-Add-tests-for-dxva2-decoder.patch
patches/dxva2-Video_Decoder/0007-dxva2-Initial-implementation-of-MPEG2-decoder-using-.patch
patches/dxva2-Video_Decoder/0008-dxva2-Implement-h264-decoder.patch
patches/dxva2-Video_Decoder/0009-dxva2-Add-DRM-mode-for-vaapi.patch
patches/dxva2-Video_Decoder/0010-dxva2-Fill-h264-luma-and-chroma-weights-offsets-with.patch
patches/dxva2-Video_Decoder/0011-dxva2-Always-destroy-buffers-when-calling-vaRenderPi.patch
patches/dxva2-Video_Decoder/0012-dxva2-Only-declare-debug-channels-when-they-are-actu.patch

# expanded from patches/ntoskrnl-Stubs/*.patch
# Fixes: Add stub for ntoskrnl.Mm{Map,Unmap}LockedPages
# Fixes: Add stub for ntoskrnl.IoGetDeviceAttachmentBaseRef
# Fixes: Implement ntoskrnl.NtBuildNumber
patches/ntoskrnl-Stubs/0009-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch
patches/ntoskrnl-Stubs/0011-ntoskrnl.exe-Add-IoGetDeviceAttachmentBaseRef-stub.patch
patches/ntoskrnl-Stubs/0013-ntoskrnl.exe-Implement-NtBuildNumber.patch

# expanded from patches/winedevice-Default_Drivers/*.patch
# Fixes: Simulate a more realistic kernel environment in ntoskrnl/winedevice
# Depends: dxva2-Video_Decoder
# Depends: ntoskrnl-Stubs
patches/winedevice-Default_Drivers/0001-win32k.sys-Add-stub-driver.patch
patches/winedevice-Default_Drivers/0002-dxgkrnl.sys-Add-stub-driver.patch
patches/winedevice-Default_Drivers/0003-dxgmms1.sys-Add-stub-driver.patch
patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch

# expanded from patches/advapi32-CreateRestrictedToken/*.patch
# Fixes: [25834] Implement advapi32.CreateRestrictedToken
patches/advapi32-CreateRestrictedToken/0001-ntdll-Implement-NtFilterToken.patch
patches/advapi32-CreateRestrictedToken/0002-advapi32-Implement-CreateRestrictedToken.patch
patches/advapi32-CreateRestrictedToken/0003-server-Correctly-validate-SID-length-in-sd_is_valid.patch

# expanded from patches/server-Misc_ACL/*.patch
# Fixes: [15980] GetSecurityInfo returns NULL DACL for process object
patches/server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch
patches/server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch

# expanded from patches/Staging/*.patch
patches/Staging/0001-kernel32-Add-winediag-message-to-show-warning-that-t.patch
patches/Staging/0002-winelib-Append-Staging-at-the-end-of-the-version-s.patch
patches/Staging/0003-loader-Add-commandline-option-patches-to-show-the-pa.patch
patches/Staging/0004-loader-Add-commandline-option-check-libs.patch
patches/Staging/0005-loader-Print-library-paths-for-check-libs-on-Mac-OS-.patch

# expanded from patches/advapi32-Token_Integrity_Level/*.patch
# Fixes: [40613] Basic implementation for token integrity levels and UAC handling
# Fixes: [39262] Run explorer.exe as unevaluated process
# Depends: advapi32-CreateRestrictedToken
# Depends: server-Misc_ACL
# Depends: Staging
patches/advapi32-Token_Integrity_Level/0001-advapi32-tests-Extend-security-label-token-integrity.patch
patches/advapi32-Token_Integrity_Level/0002-server-Implement-token-elevation-information.patch
patches/advapi32-Token_Integrity_Level/0003-server-Correctly-treat-zero-access-mask-in-duplicate.patch
patches/advapi32-Token_Integrity_Level/0004-server-Implement-token-integrity-level.patch
patches/advapi32-Token_Integrity_Level/0005-server-Use-all-group-attributes-in-create_token.patch
patches/advapi32-Token_Integrity_Level/0006-ntdll-Add-function-to-create-new-tokens-for-elevatio.patch
patches/advapi32-Token_Integrity_Level/0007-shell32-Implement-process-elevation-using-runas-verb.patch
patches/advapi32-Token_Integrity_Level/0008-ntdll-Implement-process-token-elevation-through-mani.patch
patches/advapi32-Token_Integrity_Level/0010-server-Implement-support-for-creating-processes-usin.patch
patches/advapi32-Token_Integrity_Level/0012-user32-Start-explorer.exe-using-limited-rights.patch
patches/advapi32-Token_Integrity_Level/0013-server-Correctly-assign-security-labels-for-tokens.patch
patches/advapi32-Token_Integrity_Level/0014-programs-runas-Basic-implementation-for-starting-pro.patch
patches/advapi32-Token_Integrity_Level/0015-ntdll-Add-semi-stub-for-TokenLinkedToken-info-class.patch

# expanded from patches/ntdll-LdrInitializeThunk/*.patch
# Fixes: [45570] League of Legends 8.12+ fails to start a game (anticheat engine, incorrect implementation of LdrInitializeThunk)
# Depends: advapi32-Token_Integrity_Level
patches/ntdll-LdrInitializeThunk/0001-ntdll-Refactor-LdrInitializeThunk.patch

# expanded from patches/ntdll-RtlCreateUserThread/*.patch
# Fixes: [45571] League of Legends 8.12+ fails to start a game (anticheat engine, hooking of NtCreateThread/Ex)
# Depends: ntdll-LdrInitializeThunk
patches/ntdll-RtlCreateUserThread/0001-ntdll-Refactor-RtlCreateUserThread-into-NtCreateThre.patch

# expanded from patches/api-ms-win-Stub_DLLs/*.patch
# Fixes: Add ext-ms-win-xaml-pal-l1-1-0 dll and XamlBehaviourEnabled() stub
# Fixes: Add ext-ms-win-xaml-pal-l1-1-0.GetThemeServices() stub
# Fixes: Add ext-ms-win-appmodel-usercontext-l1-1-0 dll and UserContextExtInitialize() stub
# Fixes: Add iertutil dll
# Fixes: Return dummy interface in some uiautomationcore functions
patches/api-ms-win-Stub_DLLs/0006-iertutil-Add-dll-and-add-stub-for-ordinal-811.patch
patches/api-ms-win-Stub_DLLs/0009-ext-ms-win-xaml-pal-l1-1-0-Add-dll-and-add-stub-for-.patch
patches/api-ms-win-Stub_DLLs/0010-ext-ms-win-appmodel-usercontext-l1-1-0-Add-dll-and-a.patch
patches/api-ms-win-Stub_DLLs/0012-ext-ms-win-xaml-pal-l1-1-0-Add-stub-for-GetThemeServ.patch
patches/api-ms-win-Stub_DLLs/0027-uiautomationcore-Add-dll-and-stub-some-functions.patch

# expanded from patches/kernel32-Processor_Group/*.patch
# Fixes: Implement some processor group functions and SetThreadIdealProcessorEx
# Depends: api-ms-win-Stub_DLLs
patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch
patches/kernel32-Processor_Group/0002-kernel32-Add-stub-for-SetThreadIdealProcessorEx.patch

# expanded from patches/d3d9-DesktopWindow/*.patch
# Fixes: [18490] Allow to set pixel format for desktop window
patches/d3d9-DesktopWindow/0001-winex11.drv-Allow-changing-the-opengl-pixel-format-o.patch

# expanded from patches/ddraw-Rendering_Targets/*.patch
# Fixes: [34906] Use video memory for rendering targets if possible
patches/ddraw-Rendering_Targets/0001-ddraw-Create-rendering-targets-in-video-memory-if-po.patch

# expanded from patches/ddraw-Silence_FIXMEs/*.patch
patches/ddraw-Silence_FIXMEs/0001-ddraw-Silence-noisy-FIXME-about-unimplemented-D3DPRO.patch

# expanded from patches/dinput-Deadlock/*.patch
# Fixes: [43356] Avoid possible deadlock in dinput when CS are acquired in different order
patches/dinput-Deadlock/0001-dinput-Avoid-possible-deadlock-when-CS-are-acquired-.patch

# expanded from patches/dsound-Fast_Mixer/*.patch
# Fixes: [30639] Audio stuttering and performance drops in multiple applications
patches/dsound-Fast_Mixer/0001-dsound-Add-a-linear-resampler-for-use-with-a-large-n.patch

# expanded from patches/gdi32-Lazy_Font_Initialization/*.patch
# Fixes: Improve startup performance by delaying font initialization
# 
patches/gdi32-Lazy_Font_Initialization/0001-gdi32-Perform-lazy-initialization-of-fonts-to-improv.patch

# expanded from patches/gdi32-MultiMonitor/*.patch
# Fixes: [34978] Multiple applications need EnumDisplayDevicesW implementation
# Fixes: [37709] GetMonitorInfo returns the same name for all monitors
# Fixes: [41258] Return a more reasonable display DeviceID
patches/gdi32-MultiMonitor/0001-gdi32-Also-accept-.-DISPLAY-n-devices-names-with-n-o.patch
patches/gdi32-MultiMonitor/0002-winex11-Make-GetMonitorInfo-give-a-different-device-.patch
patches/gdi32-MultiMonitor/0003-user32-Implement-EnumDisplayDevicesW-based-on-EnumDi.patch
patches/gdi32-MultiMonitor/0004-winemac-Make-GetMonitorInfo-give-a-different-device-.patch
patches/gdi32-MultiMonitor/0005-user32-Return-a-more-reasonable-display-DeviceID.patch

# expanded from patches/gdiplus-Performance-Improvements/*.patch
# Fixes: Improve performance of bilinear bitmap scaling
patches/gdiplus-Performance-Improvements/0001-gdiplus-Change-the-order-of-x-y-loops-in-the-scaler.patch
patches/gdiplus-Performance-Improvements/0002-gdiplus-Change-multiplications-by-additions-in-the-x.patch
patches/gdiplus-Performance-Improvements/0003-gdiplus-Remove-ceilf-floorf-calls-from-bilinear-scal.patch
patches/gdiplus-Performance-Improvements/0004-gdiplus-Prefer-using-pre-multiplied-ARGB-data-in-the.patch

# expanded from patches/iphlpapi-System_Ping/*.patch
# Fixes: [8332] Fallback to system ping command when CAP_NET_RAW is not available
patches/iphlpapi-System_Ping/0001-iphlpapi-Fallback-to-system-ping-when-ICMP-permissio.patch

# expanded from patches/kernel32-K32GetPerformanceInfo/*.patch
# Fixes: Use separate wineserver call for kernel32.K32GetPerformanceInfo
patches/kernel32-K32GetPerformanceInfo/0001-kernel32-Make-K32GetPerformanceInfo-faster.patch

# expanded from patches/kernel32-NormalizeString/*.patch
# Fixes: [42734] Implement NormalizeString
patches/kernel32-NormalizeString/0001-tools-make_unicode-Implement-full-Unicode-character-.patch
patches/kernel32-NormalizeString/0002-tools-make_unicode-Implement-canonical-composition-f.patch
patches/kernel32-NormalizeString/0003-kernel32-Implement-NormalizeString-API-function.patch
patches/kernel32-NormalizeString/0004-libs-Generated-make_unicode-files.patch

# expanded from patches/libs-Unicode_Collation/*.patch
# Fixes: [10767] Fix comparison of punctuation characters in lstrcmp
# Fixes: [32490] Graphical issues in Inquisitor
# Depends: kernel32-NormalizeString
patches/libs-Unicode_Collation/0001-libs-Fix-most-problems-with-CompareString.patch

# expanded from patches/kernel32-SCSI_Sysfs/*.patch
# Fixes: [31592] Use sysfs to populate SCSI registry keys
patches/kernel32-SCSI_Sysfs/0001-kernel32-Convert-scsi-device-type-in-SCSI_getprocent.patch
patches/kernel32-SCSI_Sysfs/0002-kernel32-Add-support-for-reading-scsi-devices-from-s.patch

# expanded from patches/ntdll-APC_Performance/*.patch
patches/ntdll-APC_Performance/0001-ntdll-Reuse-old-async-fileio-structures-if-possible.patch

# expanded from patches/ntdll-CriticalSection/*.patch
patches/ntdll-CriticalSection/0001-include-Move-interlocked_inc-dec-to-port.h.patch
patches/ntdll-CriticalSection/0002-ntdll-Add-inline-versions-of-RtlEnterCriticalSection.patch
patches/ntdll-CriticalSection/0003-ntdll-Use-fast-CS-functions-for-heap-locking.patch
patches/ntdll-CriticalSection/0004-ntdll-Use-fast-CS-functions-for-threadpool-locking.patch

# expanded from patches/ntdll-NtSetLdtEntries/*.patch
patches/ntdll-NtSetLdtEntries/0001-ntdll-Implement-NtSetLdtEntries.patch
patches/ntdll-NtSetLdtEntries/0002-libs-wine-Allow-to-modify-reserved-LDT-entries.patch

# expanded from patches/ntdll-ThreadTime/*.patch
# Fixes: [20230] Return correct values for GetThreadTimes function
# Fixes: Return correct thread creation time in SystemProcessInformation
# Fixes: Fill process virtual memory counters in NtQuerySystemInformation
patches/ntdll-ThreadTime/0001-ntdll-Return-correct-values-in-GetThreadTimes-for-al.patch
patches/ntdll-ThreadTime/0002-ntdll-Set-correct-thread-creation-time-for-SystemPro.patch
patches/ntdll-ThreadTime/0003-ntdll-Fill-process-kernel-and-user-time.patch
patches/ntdll-ThreadTime/0004-ntdll-Set-process-start-time.patch
patches/ntdll-ThreadTime/0005-ntdll-Fill-out-thread-times-in-process-enumeration.patch
patches/ntdll-ThreadTime/0006-ntdll-Fill-process-virtual-memory-counters-in-NtQuer.patch

# expanded from patches/server-Realtime_Priority/*.patch
# Fixes: Support for linux priority levels for faster performance
# Depends: ntdll-ThreadTime
patches/server-Realtime_Priority/0001-wineserver-Draft-to-implement-priority-levels-throug.patch

# expanded from patches/ntdll-HideWineExports/*.patch

# expanded from patches/ntdll-UserSharedData/*.patch

# expanded from patches/winebuild-FakeDLLs/*.patch

# expanded from patches/ntdll-NtContinue/*.patch
# Fixes: [31910] Add stub for NtContinue
# Fixes: [45572] League of Legends 8.12+ fails to start a game (anticheat engine, hooking of NtContinue)
# Depends: winebuild-Fake_Dlls
patches/ntdll-NtContinue/0001-ntdll-Add-stub-for-NtContinue.patch
patches/ntdll-NtContinue/0002-Use-NtContinue-to-continue-execution-after-exception.patch

# expanded from patches/ntdll-Threading/*.patch
# Fixes: Fix race-condition when threads are killed during shutdown
patches/ntdll-Threading/0001-ntdll-Fix-race-condition-when-threads-are-killed-dur.patch

# expanded from patches/ntdll-Wait_User_APC/*.patch
# Fixes: [14697] Do not allow interruption of system APC in server_select
patches/ntdll-Wait_User_APC/0001-ntdll-Block-signals-while-executing-system-APCs.patch

# expanded from patches/server-Key_State/*.patch
# Fixes: [31899] Implement locking and synchronization of key states
# Fixes: [35907] Fix caps lock state issues with multiple processes
patches/server-Key_State/0001-server-Introduce-a-helper-function-to-update-the-thr.patch
patches/server-Key_State/0002-server-Implement-locking-and-synchronization-of-keys.patch

# expanded from patches/server-PeekMessage/*.patch
# Fixes: [28884] GetMessage should remove already seen messages with higher priority
patches/server-PeekMessage/0001-server-Fix-handling-of-GetMessage-after-previous-Pee.patch

# expanded from patches/server-ClipCursor/*.patch
# Fixes: [38791] Fix handling of cursor position clipping
patches/server-ClipCursor/0001-server-Fix-handling-of-cursor-position-clipping.patch

# expanded from patches/server-Signal_Thread/*.patch
# Fixes: Do not signal threads until they are really gone
patches/server-Signal_Thread/0001-server-Do-not-signal-thread-until-it-is-really-gone.patch

# expanded from patches/server-Shared_Memory/*.patch
# Depends: ntdll-Threading
# Depends: ntdll-Wait_User_APC
# Depends: server-Key_State
# Depends: server-PeekMessage
# Depends: server-ClipCursor
# Depends: server-Signal_Thread
patches/server-Shared_Memory/0001-ntdll-Implement-virtual_map_shared_memory.patch
patches/server-Shared_Memory/0002-server-Implement-support-for-global-and-local-shared.patch
patches/server-Shared_Memory/0003-user32-Get-rid-of-wineserver-call-for-GetInputState.patch
patches/server-Shared_Memory/0004-user32-Avoid-unnecessary-wineserver-calls-in-PeekMes.patch
patches/server-Shared_Memory/0005-user32-Get-rid-of-wineserver-call-for-GetLastInputIn.patch
patches/server-Shared_Memory/0006-ntdll-Only-enable-wineserver-shared-memory-communica.patch
patches/server-Shared_Memory/0007-server-Store-a-list-of-associated-queues-for-each-th.patch
patches/server-Shared_Memory/0008-user32-Get-rid-of-wineserver-call-for-GetActiveWindo.patch
patches/server-Shared_Memory/xxx9-user32-Cache-the-result-of-GetForegroundWindow.patch

# expanded from patches/setupapi-Display_Device/*.patch
# Fixes: [35345] Fix enumeration of display driver properties using setupapi
patches/setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch
patches/setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch
patches/setupapi-Display_Device/0003-setupapi-Also-create-HardwareId-registry-key-for-dis.patch

# expanded from patches/shell32-IconCache/*.patch
# Fixes: [45696] shell32: Generate icons from available icons if required.
patches/shell32-IconCache/0001-shell32-iconcache-Generate-icons-from-available-icons-.patch

# expanded from patches/user32-minimized_windows/*.patch
# Fixes: [7287] Redundant "tabs" appear with tabbed MDI (test with LTSpice)
patches/user32-minimized_windows/0001-user32-tests-Add-tests-for-GetWindowPlacement-and-Se.patch
patches/user32-minimized_windows/0002-user32-SetWindowPos-shouldn-t-change-the-client-rect.patch
patches/user32-minimized_windows/0003-user32-Correctly-calculate-the-client-size-of-a-mini.patch
patches/user32-minimized_windows/0004-user32-Use-the-C-XY-MINIMIZED-rather-than-C-XY-ICON-.patch
patches/user32-minimized_windows/0005-user32-AdjustWindowRect-shouldn-t-ignore-WS_MINIMIZE.patch
patches/user32-minimized_windows/0006-user32-tests-Add-tests-for-maximizing-and-minimizing.patch
patches/user32-minimized_windows/0007-user32-tests-Add-tests-for-maximizing-and-minimizing.patch
patches/user32-minimized_windows/0008-user32-tests-Add-tests-for-maximizing-and-minimizing.patch
patches/user32-minimized_windows/0009-user32-tests-Add-tests-for-ArrangeIconicWindows.patch
patches/user32-minimized_windows/0010-user32-Reimplement-ArrangeIconicWindows-using-minimi.patch
patches/user32-minimized_windows/0011-user32-Correctly-place-minimized-windows.patch
patches/user32-minimized_windows/0012-user32-Paint-title-bars-for-minimized-windows.patch
patches/user32-minimized_windows/0013-user32-Allow-clicking-the-restore-and-maximize-boxes.patch
patches/user32-minimized_windows/0014-user32-Get-rid-of-icon-titles.patch
patches/user32-minimized_windows/0015-user32-Move-iconic-windows-as-their-border-instead-o.patch

# expanded from patches/windowscodecs-GIF_Encoder/*.patch
# Fixes: Add initial implementation of GIF encoder to windowscodecs
patches/windowscodecs-GIF_Encoder/0007-windowscodecs-tests-Add-IWICBitmapEncoderInfo-test.patch
patches/windowscodecs-GIF_Encoder/0008-windowscodecs-Add-initial-implementation-of-the-GIF-.patch
patches/windowscodecs-GIF_Encoder/0010-windowscodecs-Initialize-empty-property-bag-in-GIF-e.patch
patches/windowscodecs-GIF_Encoder/0020-windowscodecs-Add-registration-of-the-GIF-encoder.patch
patches/windowscodecs-GIF_Encoder/0021-windowscodecs-Fix-IWICBitmapDecoder-CopyPalette-for-.patch
patches/windowscodecs-GIF_Encoder/0022-windowscodecs-Better-follow-the-GIF-spec-and-don-t-s.patch
patches/windowscodecs-GIF_Encoder/0026-windowscodecs-tests-Add-the-tests-for-GIF-encoder-an.patch
patches/windowscodecs-GIF_Encoder/0028-windowscodecs-Correctly-indicate-that-the-global-inf.patch

# expanded from patches/windowscodecs-IWICPalette_InitializeFromBitmap/*.patch

# expanded from patches/windowscodecs-TIFF_Support/*.patch
# Fixes: Improve TIFF support in windowscodecs.dll
# Depends: windowscodecs-GIF_Encoder
# 
patches/windowscodecs-TIFF_Support/0001-windowscodecs-tests-Add-a-test-for-8bpp-indexed-TIFF.patch
patches/windowscodecs-TIFF_Support/0002-windowscodecs-tests-Make-the-test-for-8bpp-indexed-T.patch
patches/windowscodecs-TIFF_Support/0003-windowscodecs-Fix-the-SupportsTransparency-flag-valu.patch
patches/windowscodecs-TIFF_Support/0004-windowscodecs-Fail-earlier-in-TIFF-decoder-s-Initial.patch
patches/windowscodecs-TIFF_Support/0005-windowscodecs-Avoid-redundant-checks-when-reading-a-.patch
patches/windowscodecs-TIFF_Support/0006-windowscodecs-Add-support-for-16bppGray-and-32bppGra.patch
patches/windowscodecs-TIFF_Support/0007-windowscodecs-Add-support-for-3bps-RGB-format-to-TIF.patch
patches/windowscodecs-TIFF_Support/0008-windowscodecs-Add-support-for-12bpp-RGB-format-to-TI.patch
patches/windowscodecs-TIFF_Support/0009-windowscodecs-Add-support-for-128bppRGBAFloat-format.patch
patches/windowscodecs-TIFF_Support/0011-windowscodecs-Add-support-for-32bppCMYK-and-64bppCMY.patch
patches/windowscodecs-TIFF_Support/0012-windowscodecs-Add-support-for-4bpp-RGBA-format-to-TI.patch
patches/windowscodecs-TIFF_Support/0013-windowscodecs-Add-support-for-16bpp-RGBA-format-to-T.patch
patches/windowscodecs-TIFF_Support/0014-windowscodecs-Add-some-tests-for-various-TIFF-color-.patch
patches/windowscodecs-TIFF_Support/0015-windowscodecs-Tolerate-partial-reads-in-the-IFD-meta.patch
patches/windowscodecs-TIFF_Support/0016-gdiplus-Add-support-for-more-image-color-formats.patch
patches/windowscodecs-TIFF_Support/0017-gdiplus-tests-Add-some-tests-for-loading-TIFF-images.patch

# expanded from patches/windowscodecs-32bppPRGBA/*.patch
# Fixes: Implement support for 32bppRGB, 32bppRGBA and 32bppPRGBA in format converter
# Depends: windowscodecs-TIFF_Support
patches/windowscodecs-32bppPRGBA/0001-windowscodecs-Add-support-for-32bppRGB-32bppRGBA-and.patch
patches/windowscodecs-32bppPRGBA/0002-windowscodecs-Fix-32bppRGB-to-32bppRGBA-conversion.patch

# expanded from patches/wined3d-Accounting/*.patch
# Fixes: Use NVX_GPU_MEMORY_INFO extension for more exact video memory accounting on NVIDIA graphic cards
patches/wined3d-Accounting/0001-wined3d-Use-real-values-for-memory-accounting-on-NVI.patch

# expanded from patches/wined3d-WINED3D_RS_COLORWRITEENABLE/*.patch
# Fixes: Implement support for all d3d11 color write masks in wined3d
patches/wined3d-WINED3D_RS_COLORWRITEENABLE/0001-wined3d-Implement-all-8-d3d11-color-write-masks.patch

# expanded from patches/wined3d-Indexed_Vertex_Blending/*.patch
# Fixes: [39057] Support for indexed vertex blending
# Depends: wined3d-WINED3D_RS_COLORWRITEENABLE
patches/wined3d-Indexed_Vertex_Blending/0001-d3d9-tests-Add-test-for-indexed-vertex-blending.patch
patches/wined3d-Indexed_Vertex_Blending/0002-wined3d-Implement-hardware-indexed-vertex-blending-w.patch
patches/wined3d-Indexed_Vertex_Blending/0003-d3d9-tests-Test-normal-calculation-when-indexed-vert.patch
patches/wined3d-Indexed_Vertex_Blending/0004-wined3d-Fix-calculation-of-normal-when-vertex-blendi.patch
patches/wined3d-Indexed_Vertex_Blending/0005-wined3d-Move-matrix-inversion-functions-into-utils.c.patch
patches/wined3d-Indexed_Vertex_Blending/0006-wined3d-Implement-software-processing-for-indexed-ve.patch
patches/wined3d-Indexed_Vertex_Blending/0007-d3d9-tests-Check-MaxVertexBlendMatrixIndex-capabilit.patch
patches/wined3d-Indexed_Vertex_Blending/0008-wined3d-Report-correct-number-of-blend-matrices-when.patch
patches/wined3d-Indexed_Vertex_Blending/0009-wined3d-Track-updates-of-vertex-blend-matrices-separ.patch

# expanded from patches/wined3d-WINED3D_TEXF_ANISOTROPIC/*.patch
# Fixes: [41929] wined3d: Multiple games need WINED3D_TEXF_ANISOTROPIC filter mode
patches/wined3d-WINED3D_TEXF_ANISOTROPIC/0001-wined3d-Multiple-games-need-WINED3D_TEXF_ANISOTROPIC.patch

# expanded from patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/*.patch
# Fixes: [44888] Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion
patches/wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch

# expanded from patches/wined3d-DXTn/*.patch
# Fixes: [25486] Lego Stunt Rally requires DXTn software de/encoding support
# Fixes: [29586] Tumblebugs 2 requires DXTn software encoding support
# Fixes: [17913] Port Royale doesn't display ocean correctly
# Depends: wined3d-WINED3DFMT_B8G8R8X8_UNORM
patches/wined3d-DXTn/0001-wined3d-add-DXTn-support.patch

# expanded from patches/d3dx9_36-DXTn/*.patch
# Depends: wined3d-DXTn
# Fixes: [33768] Fix texture corruption in CSI: Fatal Conspiracy
# Fixes: [37391] Exception during start of fr-043 caused by missing DXTn support
# Fixes: [34692] Fix wrong colors in Wolfenstein (2009)
# Fixes: [24983] Fix crash in Space Rangers2 caused by missing DXTn support
patches/d3dx9_36-DXTn/0001-d3dx9_36-Add-dxtn-support.patch

# expanded from patches/winepulse-PulseAudio_Support/*.patch
# Fixes: Allow selection of audio device for PulseAudio backend
# Fixes: [37042] Implement exclusive mode in PulseAudio backend
# Fixes: Fix possible segfault in pulse_rd_loop of PulseAudio backend
# Fixes: Add support for GetPropValue to PulseAudio backend
# Fixes: Use actual program name if available to describe PulseAudio streams
# Fixes: Expose PKEY_AudioEndpoint_PhysicalSpeakers device property in PulseAudio driver
# Fixes: [28282] Sound constantly crackling in a lot of games
patches/winepulse-PulseAudio_Support/0001-winepulse.drv-Use-a-separate-mainloop-and-ctx-for-pu.patch
patches/winepulse-PulseAudio_Support/0002-winepulse-Don-t-rely-on-pulseaudio-callbacks-for-tim.patch
patches/winepulse-PulseAudio_Support/0003-winepulse-expose-audio-devices-directly-to-programs.patch
patches/winepulse-PulseAudio_Support/0004-winepulse-fix-segfault-in-pulse_rd_loop.patch
patches/winepulse-PulseAudio_Support/0005-winepulse-implement-GetPropValue.patch
patches/winepulse-PulseAudio_Support/0006-winepulse-fetch-actual-program-name-if-possible.patch
patches/winepulse-PulseAudio_Support/0007-winepulse-return-PKEY_AudioEndpoint_PhysicalSpeakers.patch
patches/winepulse-PulseAudio_Support/0008-winepulse-Fix-up-recording.patch
patches/winepulse-PulseAudio_Support/0009-winepulse.drv-Fix-getting-the-same-timing-info.patch
patches/winepulse-PulseAudio_Support/0010-winepulse-Update-last-time-on-underrun.patch
patches/winepulse-PulseAudio_Support/0011-winepulse-account-for-PA-devices-that-fall-way-behin.patch
patches/winepulse-PulseAudio_Support/0012-winepulse-Fix-local-buffer-offset-wrapping.patch
patches/winepulse-PulseAudio_Support/0013-winepulse-Don-t-fake-being-one-period-behind-in-GetP.patch

# expanded from patches/wow64cpu-Wow64Transition/*.patch
# Fixes: [45567] League of Legends 8.12+ fails to start a game (anticheat engine, validation of WoW64 syscall dispatcher)
patches/wow64cpu-Wow64Transition/0001-wow64cpu-Add-stub-dll.patch
patches/wow64cpu-Wow64Transition/0002-ntdll-Add-a-stub-implementation-of-Wow64Transition.patch

# expanded from patches/ws2_32-APC_Performance/*.patch
patches/ws2_32-APC_Performance/0001-ws2_32-Reuse-old-async-ws2_async_io-structures-if-po.patch

@WernerAUT
Copy link
Author

sorry i have no other Denuvo protected games, so can't help here :(

@WernerAUT
Copy link
Author

just for your info since i used your build and played some of my games, i found out that with this test build controller controll is weird, i tried rocket league (i know its also available as native) and with your test build i can't turn right only left works, going back to your last official build and everything works normal again.

I use a Xbox One Controller connected over bluetooth using xpadneo driver.

@pchome
Copy link

pchome commented Feb 9, 2019

I started to check if a failure affected by steamuser, by building standalone WINE tests and comparing wine-proton-3.16 vs wine-staging-4.0.

The most noticeable difference so far:

+security.c:3030: Test failed: duplicating handle should have failed with STATUS_ACCESS_DENIED, instead of err:-559038737
+security.c:3038: Test failed: OpenProcess(PROCESS_VM_READ) should have failed
+security.c:3041: Test failed: OpenProcess(PROCESS_ALL_ACCESS) should have failed
...
+security.c:4746: Test failed: Current User ACE (S-1-5-18) != Current User SID (S-1-5-21-0-0-0-1000).
+security.c:4758: Test failed: Administators Group ACE (S-1-5-21-0-0-0-1000) != Administators Group SID (S-1-5-32-544).
+security.c:5136: Test failed: not a member
+security.c:5151: Test failed: got wrong attributes
+security.c:5153: Test failed: got wrong attributes

$ diff -u test-advapi32-security.exe.txt test-advapi32-security.exe.proton.txt

Sources and prebuilt binary: proton-secur-tests-64.tar.gz
($ sh tests-init.sh to init sources)

@kakra
If it makes any sense -- you could test your build. I also looking into other related tests (which uses GetUserName).

Additional thoughts:

  • 1c79a38
  • alias for steamuser (?)
  • create/use real steamuser (?)
  • ...

@kakra
Copy link
Owner

kakra commented Feb 9, 2019

@WernerAUT Using xpadneo here, too. AFAIR, wine upstream changed controller axis mapping from signed (-32768..32767) to unsigned (0..65535) as that matches what Windows uses (wine-mirror/wine@b16fb11). xpadneo had a similar change lately. Maybe this interferes with each other somehow?

You could try switching xpadneo between both modes, tho I don't see this behavior here (but other games). But please open a new issue for that, I'll then try to reproduce.

@kakra
Copy link
Owner

kakra commented Feb 9, 2019

@pchome Thanks for the work, I'm on a similar track by running through gdb. JC3 fails at trying to close an invalid handle, it seems to happen after loading an audio API tho this is probably not a clue (in the debugger I see it after loading the Steam API):

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x000000007bc90ff1 in close_handle (handle=handle@entry=0x2502e0) at ../../../../dlls/ntdll/om.c:415
415                 RtlRaiseException( &record );

So your tests make it plausible it's a duplicate handle, and a problem introduced after 4.0?

Did your tests include any of my patches, or did you run against vanilla versions (that is proton-vanilla vs staging-vanilla)?

@pchome
Copy link

pchome commented Feb 9, 2019

your tests

No, it's WINE's tests ;)
Plain vanilla WINE tests (from proton_3.16 branch) built as standalone "executable".

I picked proton_3.16 branch for the reason -- those tests are not supposed to fail on wine-3.16. So if it fails on proton_3.16, then there is definitely something wrong in proton. Easy to check.

Currently I have only proton_3.16 and wine-staging-4.0 installed in my system, so I'm checking this two.
Yes, proton-vanilla vs staging-vanilla.

It's easy to add new tests into build system, or change repo/branch.
Or ask me to add additional tests into repo: wine-proton-tests

@kakra
Copy link
Owner

kakra commented Feb 9, 2019

The tests crash for me on my vanilla-wine 4.0 build along these lines in advapi32/tests/security.c:

    bret = pGetAclInformation(pDacl, &acl_size, sizeof(acl_size), AclSizeInformation);
    ok(bret, "GetAclInformation failed\n");
    ok(acl_size.AceCount != 0, "GetAclInformation returned no ACLs\n");

I'm not sure yet if this is the same crash as with JC3 and my Proton branch...

But since I'm seeing this with vanilla-wine 4.0, it's probably a regression that should be reported.

@kakra
Copy link
Owner

kakra commented Feb 9, 2019

Does no longer crash on a fresh prefix... This is strange because my default prefix should be quite vanilla (but it has gone through some wine upgraded but I never really used it for anything).

@kakra
Copy link
Owner

kakra commented Feb 9, 2019

I purged the JC3 prefix and it still crashes:

106252.054:0024:0025:trace:module:MODULE_InitDLL (0x3b400000,PROCESS_DETACH,0x1) - RETURN 1
106252.054:0024:0025:trace:module:MODULE_InitDLL (0x7fffff8e0000 L"jc3AudioDSP_MultibandCompressor_SSE_F.dll",PROCESS_DETACH,0x1) - CALL
106252.054:0024:0025:trace:module:MODULE_InitDLL (0x7fffff8e0000,PROCESS_DETACH,0x1) - RETURN 1
106252.054:0024:0025:trace:module:MODULE_InitDLL (0x7fffff890000 L"cudart64_55.dll",PROCESS_DETACH,0x1) - CALL
106252.055:0024:0025:trace:module:MODULE_InitDLL (0x7fffff890000,PROCESS_DETACH,0x1) - RETURN 1
106252.055:0024:0025:trace:module:MODULE_InitDLL (0x7fffff8f0000 L"gfsdk_waveworks.win64.dll",PROCESS_DETACH,0x1) - CALL
106252.055:0024:0025:trace:seh:NtRaiseException code=c0000005 flags=0 addr=0x7fffff89cd73 ip=7fffff89cd73 tid=0025
106252.055:0024:0025:trace:seh:NtRaiseException  info[0]=0000000000000000
106252.055:0024:0025:trace:seh:NtRaiseException  info[1]=00000000006d0c60
106252.055:0024:0025:trace:seh:NtRaiseException  rax=0000000000240038 rbx=00000000006d0c60 rcx=00007fffff8cf220 rdx=00000000006d0c60
106252.055:0024:0025:trace:seh:NtRaiseException  rsi=0000000000090f60 rdi=00000000006d0910 rbp=000000007bcf17a7 rsp=0000000000240000
106252.055:0024:0025:trace:seh:NtRaiseException   r8=0000000000000000  r9=000000000023fe17 r10=00007fffff94e100 r11=0000000000000000
106252.055:0024:0025:trace:seh:NtRaiseException  r12=0000000000090f60 r13=0000000000000000 r14=0000000000000001 r15=0000000000090f90
106252.055:0024:0025:trace:seh:RtlVirtualUnwind type 1 rip 7fffff89cd73 rsp 240000

@kakra
Copy link
Owner

kakra commented Feb 10, 2019

I've played with the makefile a while, here's my change:

diff --git a/makefile b/makefile
index 67a08ef3594..03d66a78069 100644
--- a/makefile
+++ b/makefile
@@ -138,6 +139,23 @@ install-wine: install-wine64 install-wine32
        echo "Done installing wine libraries!"


+# Run tests
+
+TESTS = \
+       advapi32 \
+       secur32
+
+tests: $(addsuffix /tests,$(TESTS))
+
+$(addsuffix /tests,$(TESTS)): build/wine64/Makefile
+       echo "Running $@..."
+       +$(MAKE) -C build/wine64/dlls/$@ \
+               WINEPREFIX=$(abspath prefix/test) \
+               LANG=C \
+               RUNTESTFLAGS="-v" \
+               test 2>/dev/null | tee tests-$(@:%/tests=%)-$(shell git describe --dirty).txt
+
+
 # Bundle vendor project into the distribution

 vendor/faudio/dist.tar.xz::

The tests seem fine, some are marked todo. Removing -v from RUNTESTFLAGS show no failures at all. So if there's a problem, it may be in the failures expected to fail because of todo.

Attaching my results:
tests-advapi32-wine-4.1-532-gc2bd4fd1917-dirty.txt
tests-secur32-wine-4.1-532-gc2bd4fd1917-dirty.txt

Meanwhile, I have removed the staging patch sets I've listed above because after rebase to latest wine-master, no game would start at all. This is likely due to resolving a conflict wrong during rebase. But since none of these patches did anything useful for this problem anyway, I just removed them.

@kakra
Copy link
Owner

kakra commented Feb 10, 2019

Running your pre-built test shows failures (WINEPREFIX=$(realpath prefix/test) dist/bin/wine ../proton-tests/proton-secur-tests-64/bin/test-advapi32-security.exe.so):

0022:security: 2520 tests executed (176 marked as todo, 7 failures), 32 skipped.

Running my version does not (make RUNTESTFLAGS="-v" advapi32/tests):

0008:security: 2732 tests executed (175 marked as todo, 0 failures), 28 skipped.

@kakra
Copy link
Owner

kakra commented Feb 10, 2019

What if this is related to NVAPI? The game crashes shortly after loading cudart64_55.dll.

@pchome
Copy link

pchome commented Feb 10, 2019

... it seems to happen after loading an audio API
What if this is related to NVAPI? The game crashes shortly after loading cudart64_55.dll.

Threads, likely.
The game trying to do it's usual work, but then interrupted by something.

Running your pre-built test shows failures

WINE dev's vs user's approach.

For WINE dev those failures are TODOs, but for regular app it should be failures.
I don't know why it fails for command you posted, but I'm explicitly set export WINETEST_PLATFORM=windows in the runner script, and expecting failures.

@kakra
Copy link
Owner

kakra commented Feb 12, 2019

@WernerAUT Okay, a fix for the controller regression is queued at https://source.winehq.org/patches/. I reported it, and Zeb found a strange bug and fixed it. Will be in my next update.

@WernerAUT
Copy link
Author

@kakra thanks hadn't time to report it but was planing todo it this week, so thanks that you did 👍

@kakra
Copy link
Owner

kakra commented Feb 12, 2019

@WernerAUT FTR, I was seeing it too, now. It was a long-standing bug hidden behind some quirky behavior in xinput, and was only uncovered by the latest changes fixing yet another bug. Bug-ception? :-D

kakra added a commit that referenced this issue Feb 23, 2019
This really messes up logging in some games and may reduce performance.

Github-Link: #9
Signed-off-by: Kai Krakow <kai@kaishome.de>
kakra added a commit that referenced this issue Mar 9, 2019
This really messes up logging in some games and may reduce performance.

Github-Link: #9
Signed-off-by: Kai Krakow <kai@kaishome.de>
@kakra kakra added Works with Lutris The game is reported to work with Lutris Works with Staging The game is reported to work with Staging OWNED Part of the maintainers Steam library labels Mar 17, 2019
kakra added a commit that referenced this issue Mar 17, 2019
This really messes up logging in some games and may reduce performance.

Github-Link: #9
Signed-off-by: Kai Krakow <kai@kaishome.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OWNED Part of the maintainers Steam library Works with Lutris The game is reported to work with Lutris Works with Staging The game is reported to work with Staging
Projects
None yet
Development

No branches or pull requests

3 participants