AlpyneDreams / d8vk

Direct3D 8 to Vulkan translation for DXVK! Merged into dxvk: https://github.com/doitsujin/dxvk
zlib License
486 stars 6 forks source link

[d3d8] Forward calls to TestCooperativeLevel #171

Closed WinterSnowfall closed 1 year ago

WinterSnowfall commented 1 year ago

Closes #168 (hopefully should be enough, I still need to test it). Should ensure proper DEVICENOTRESET behavior in d3d8 as well. For more details, please see: https://github.com/doitsujin/dxvk/pull/3486 . I have a test in place that has confirmed WineD3D and native AMD enforce the behavior in D3D8, and in this regard the specs are the same anyway.

WinterSnowfall commented 1 year ago

So, it turns out it's not nearly enough. The missing piece of the puzzle is that the bridge uses an extended d3d9 device, whereas we want it to act as a regular device for the new Reset() logic to work properly.

I'm not sure how to fix this properly, but I've confirmed that making the device behave like a regular device (basically IsExtended() always returning false) does make things work as expected and passes the tests I wrote.

WinterSnowfall commented 1 year ago

Ok, now that we use a non-extended d3d9 device, the entire process works if we also pipe TestCooperativeLevel().