You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Calling Release() on D3D9DeviceChild currently causes refcount underruns if an application keeps calling it even after the refcount has reached 0. In some cases (especially due to race conditions) this can cause livelocking, although I expect this to be exceptionally rare if it's even a problem in practice.
In d3d8 land we have encountered a game that depends on this behaving correctly however (without underruning), namely Motor City Online, which is why we've added this bit. While it perhaps isn't fully thread safe, it does solve the underlying problem. I have PRed the same change on d3d9 side in the past but it was deemed to not be an ideal way of handling it.
There is also a WineD3D d3d9 device test centered around device refcounts which currently fails due to our mishandling of the situation.
We should, at some point, fully fix this properly in both d3d8 and d3d9.
The text was updated successfully, but these errors were encountered:
Calling Release() on D3D9DeviceChild currently causes refcount underruns if an application keeps calling it even after the refcount has reached 0. In some cases (especially due to race conditions) this can cause livelocking, although I expect this to be exceptionally rare if it's even a problem in practice.
In d3d8 land we have encountered a game that depends on this behaving correctly however (without underruning), namely Motor City Online, which is why we've added this bit. While it perhaps isn't fully thread safe, it does solve the underlying problem. I have PRed the same change on d3d9 side in the past but it was deemed to not be an ideal way of handling it.
There is also a WineD3D d3d9 device test centered around device refcounts which currently fails due to our mishandling of the situation.
We should, at some point, fully fix this properly in both d3d8 and d3d9.
The text was updated successfully, but these errors were encountered: