Closed GitArUs closed 6 years ago
@GitArUs can you create an apitrace on Windows or with wined3d, or is this what you were doing already?
When in DxgiAdapter::EnumOutputs I addded Output=nullptr before DXGI_ERROR_NOT_FOUND is returned (like it is done in wine's dxgi)
This might actually be the correct thing to do. It's not documented anywhere on MSDN, but most DXGI and D3D11 methods seem to reset the pointers prior to returning an error code.
@Altosk this is not a wine support thread.
Unfortunately I haven't Windows at all. And I could not get any trace with wined3d so far, but I'll try again different way. If a trace of working program is necessary and if I won't be able to obtain it on Linux, I'll look for a computer with Windows to get it. I can also provide output from wined3d with WINEDEBUG=+dxgi, but I'm not sure if it would help at all (I haven't seen anything interesting, but I'm not a programmer).
@Altosk I just clicked "Play" and it started. I haven't done anything unusual besides normal things required to run d3d11 apps.
Congratulations, looks like commit 6babc22 fixed it. Well, kind of. Now I can see all-white screen and something crashes immediately after showing it (the process is not terminated though and the all-white window stays on the screen). This should probably go to separate issue, but anyway:
I tried winedebug on minidump but it does not show anything sane (backtrace is just one line with one hexadecimal number). But maybe I am doing it wrong, never used winedebug before. Output of winedebug: winedebug.txt
You can close this case if You feel like it, or I can check which line(s) exactly fixed the issue if You want. But I can not continue until after holidays, so Happy Easter :)
That crash might very well be a related issue. The game rather seems to check if a given pointer is nullptr
rather than checking the return values of D3D/DXGI functions, and that backtrace looks like it's calling some method of an undefined object.
FWIW, the fix only applies to DXGI methods, not to D3D11 methods. An apitrace would be really helpful to see what the game is trying to do, and more importantly, to (possibly) reproduce the issue.
Understood. I'll get the trace, but it has to wait a few days.
I tried the game with latest commits and it still behaves the same way. I have managed to get apitraces, although it was tricky. Here is the apitrace taken on Windows 10. Keep in mind, that I used quite different hardware (ati radeon mobility 5450 or something like that): FFXII_TZA-until-menu-windows.7z I was able to replay it on Windows, but under wine apitrace crashes when I try to replay it, with both wined3d and dxvk: apitrace-backtrace.txt On the console there also was: apitrace-crash-console.txt Apitrace dump looks ok though.
And here is the apitrace taken with wined3d (with builtin dxgi and d3d11, but native d3dx11_42.dll and d3dx11_43.dll): FFXII_TZA-until-menu-wined3d.7z I could replay it on wine when using wined3d, with dxvk it surprisingly shows something more than game itself (loading icon), but then the whole XWindows becomes unresponsive, I have to log in remotely and kill apitrace.
Doesn't the game use Denuvo? I think it's not supported by Wine yet.
@GitArUs The apitrace does indeed replay fine. Can you try to record an apitrace with DXVK rather than wined3d? It should be able to record everything that happens before the crash which might help find the issue.
@Progman-DT if it works on wined3d, Denuvo is obviously not the issue...
Sure, here You are: FFXII_TZA_until_crash_dxvk.zip
And below - console output captured with WINEDEBUG="+loaddll,+relay,+seh,+tid", 500 lines before and 500 lines after exception 0xc0000005. lines_before_after_crash.txt
I have just recompiled DXVK from current git master and now the game works and looks good ! :) It means that changes made during last 4 days fixed it. Thank You !
Alright, thanks :+1:
I don't know who commented on this, but yes, game hangs when crossing areas, but only when vsync is disabled. With vsync enabled in game options and in system options it is ok. Feel free to make a new report or wait until I do it. Or maybe it will be resolved automagically like this issue.
The game starts and kind of works with plain wine 3.4, however it is not very playable, because most of world textures are missing. With DXVK the game "hangs" at startup using 100% cpu before it displays anything (I mean it displays empty, 100% transparent, unresponsive window). I tried to to some debugging and found out, that it can not get past enumerating outputs, where output numbers go from 0 to infinity. I have added some more logging to dxgi to show the effect (although apitrace shows the same). Console window shows nothing more besides those lines which are visible in dxgi.log. When in DxgiAdapter::EnumOutputs I addded Output=nullptr before DXGI_ERROR_NOT_FOUND is returned (like it is done in wine's dxgi), the loop started to alternate between outputs 0 and 1 instead of continuously increasing the output number. I haven't any ideas how to find a workaround or solution. Unigine Heaven works with DXVK pretty well, Unigine Superposition shows something too, so my environment shoud be ok I suppose.
Software information
Final Fantasy XII The Zodiac Age (Steam)
System information
Apitrace file(s)
Apitrace dump shows only this: FFXII_TZA.dump.txt
Log files
d3d11.log: FFXII_TZA_d3d11.log
dxgi.log: FFXII_TZA_dxgi.log