crosire / d3d8to9

A D3D8 pseudo-driver which converts API calls and bytecode shaders to equivalent D3D9 ones.
BSD 2-Clause "Simplified" License
891 stars 80 forks source link

Problem playing .bik movie files ingame while using d3d8to9 #61

Open Radio30 opened 6 years ago

Radio30 commented 6 years ago

This in Indiana Jones and the Emporer's Tomb.

All the intro and cut-scene movies are in .bik format and while using d3d8to9 the audio plays during the videos but the screen is black. Any idea what could be causing this?

elishacloud commented 7 months ago

I'm leaning towards this being better off living in dxwrapper and just seeing d3d8to9 as the base component that takes care of the wrapping, but not doing much compatibility fixing beyond that.

Ok, sounds good.

A quick and dirty search @WinDLLsExports shows that while SwapEffectUpgradesShim is already shipping in W10 dlls, SwapEffectUpgradeEnable (and DX_DATABASE_QUERY_TYPE_SWAPEFFECTUPGRADE_ENABLE) is only present from W11.

Sounds like there is a compatibility fix in Windows 11 for this? I know the fix I put in works for both W10 and W11.

mirh commented 7 months ago

It has "shim" in the name, but after entering a colossal rabbit hole I just found out it's not a normal one implemented in the general application compatibility layers..

First of all, SwapEffectUpgradesShim inside of d3d9 and dxgi was added in W10 1709 (which was also about "peak FSO", before they scaled back on the amount of automatic upgrades). Maybe it was a new knob to toggle what they had already been doing for a while, maybe they refined or covered only some specific cases back then, but nonetheless today it is what it is (W10 1803 further added SwapEffectTransitionShim but idk).

Finally Windows 11 added WindowedSwapEffectUpgrade (which of course controls this) and this "DirectX Database query" thing that I spotted. After some creative search, I guessed that refers to DirectXApps.sdb, DirectXApps_FOD.sdb or DirectXApps_OEM.sdb which should have been introduced from W10 1903 onwards (and which only the god knows in functioning: presumably that's associated with a directxdatabaseupdater.exe scheduled task and starting in W11 with directxdatabasehelper.dll too).

Last but not least, after opening them with SDB explorer (because the ACT tools don't seem to parse anything besides the entries names) I found they are used to set some default value for settings like GpuPreference, AutoHDREnable and SwapEffectUpgradeEnable. The absolute lack of recognition of even just the existence of all of this kinda baffles me.

elishacloud commented 7 months ago

Thanks. A lot of good data.

Finally Windows 11 added WindowedSwapEffectUpgrade (which of course controls this)

I just tested the steps here and enabled "flip presentation model" and it did not fix the issue here with a black screen. I am not quite sure what it does, but it is not a fix for this issue.

I found they are used to set some default value for settings like GpuPreference, AutoHDREnable and SwapEffectUpgradeEnable.

I installed the latest Compatibility Manager for Windows 11 and I was unable to find any Compatibility Fix for SwapEffectUpgradeEnable. If you know a way to enable this outside of calling the API I listed above I would be interested in it.