If it's queryable from the device and not the d3d9, it should be an interface on the device and not the d3d9.
Direct3DCreate9On12 returns IDirect3D9, not IDirect3DDevice9[Ex]. How would you handle the arguments? They need to be stored somewhere.
Also, I added a refcount test which shows struct d3d9on12 is its own object with its own refcount. I don't know how to add it to `struct d3d9_device` in Direct3DCreate9On12.
Also, what is that FIXME doing in QueryInterface()?
@Mystral said a FIXME is necessary https://gitlab.winehq.org/wine/wine/-/merge_requests/4915#note_58810
I can remove it if this is not the case.