AaryamanThank you!I've attached all the commits which lead to the point of implementing CreateDeviceFromSurface.Other than the above peculiarity, the behaviour is identical.CreateDeviceFromD3D will be pushed as soon as patch 9 is finalised. The main concern right now is the thunking of the Release methods of the device.This concern comes up from the fact that the CreateDeviceFromSurface methods from all 3 versions behave the same way except for one difference in version 3, which I mention below.When you create a device from IDirect3DRM3::CreateDeviceFromSurface and release it, native will also destroy the depth surface attached to it (if it created it internally), otherwise it'll let the application keep the reference to the depth surface it created.
Please, review the patches as much as you'd like and if possible, provide feedback and suggestions on any improvements that can be made, possible comments required, any stupid mistakes I made etc. :)