Re: Directx Error (CreatedCommitResource),(Invalid was passed to returning fucntion)
Hello,
This is all painfully obvious what is wrong. I will try to explain this and keep it brief. All M.S. Windows applications are essentially portable. Meaning all you actually need is the code of the application(Game.exe) and the support files to run it in the same folder.(3D data files / audio files / .DLL files / etc.) With that in mind...
What is going on is that the BF2042.EXE is calling an old version of DirectX from the users Windows System32 folder or WinSxS folder.(Even if you have performed an: " Upgrade " on your Windows 10 version you could potentially still be loading older DirectX .dll's. It is complicated.) The error that is being thrown AFTER a 3D window is being generated(The loading screen with the ship.) is due to the fact that the application is calling (Obviously) a specific part of Direct X that is NOT currently loaded on the users system.(Even if the newer version is present. Hello .DLL hell anyone? Windows Side by Side my *.) How to check? You can install a new copy of Windows 10 21H1 or Windows 11 on a V.M. and copy out D3D12.dll / DXGI.dll / Etc from that install. Drop those files into your Battlefield 2042 folder. BF 2042 will now launch... right up to the point where Easy Anticheat freaks out because the D3D12.dll that was loaded was from the game directory and not your System32 directory or WinSxS folder. You are OBVIOUSLY a: " hacker." /s (As if I couldn't root kit my own machine and bypass Easy Anticheat anyways. What a pile of useless excrement.)
The REAL cockup as usual is that E.A. / Dice ON THE OFFICIAL WEB PAGE only states that a: Windows 10 64bit version of DirectX 12 is required. THIS IS A BOLD FACE LIE. You MUST have a correctly loaded version of DirectX that is: 10.00.22000.1000. OR later FROM YOUR Windows\System32 directory.(Testing with all version of Windows 10 x64 via Virtual machine has confirmed this.) How do you know what version you have? In your Windows System32 folder you will find D3D12.dll. If you right click on it it will in the DETAILS tab tell you the version. Older versions of D3D12.dll such as: 10.00.17763.0001 that are included in say Windows 10 64bit LTSC 2019 will initially launch the game but fail at a certain point that is CLEARLY stated in the error message as to why. " An invalid parameter was passed to the returning function. " Your copy of D3D12.dll does not have the correct parameters for the function that is being called.
THE FIX WE NEED: E.A. / Dice needs to build the application against the OLDER version of DirectX 12 that are part of all versions of Windows 10, write some code to strip out when applicable the parts of D3D12 that are different between versions and have Nvidia patch up some of the driver code. OR they can just put an asterisk next to the official requirements that say you need a specific version of Windows 10 or 11 / DX12.
The attached images are from the current official Dice page for system requirements. NO MENTION of a specific version of DirectX.
Test Hardware:
C.P.U. Intel Core i9 7900x
Memory: 64GB D.D.R. 4 3200Mhz
Video Cards: Nvidia Titan R.T.X.
Nvidia Titan Pascal
Nvidia 1080ti F.E.
4K
P.S. Funny side note. The path: D:\dev\TnT\LocalPackages\RenderCore2\2.04.00-ks\sourece\platform\Dx12\ResourceUplaodHeapDx12.cpp " is sitting on some dev's box just waiting to have that: ResourceUploadHeapDx12.cpp function patched as we sit and wait. :-) TnT = Nvidia? Hehe.