// TODO: copy the original swap chain's vtable (sizeof IDXGISwapChain4), then somehow call the virtual methods in that vtable using the this-pointer from ourselves...
// TODO: copy the original swap chain's vtable (sizeof IDXGISwapChain4), then somehow call the virtual methods in that vtable using the this-pointer from ourselves...
// Then forward the call to the original vtable function, reusing that this-pointer where necessary
// Then forward the call to the original vtable function, reusing that this-pointer where necessary
// Only thing we really need to know for sure: the offset in the vtable of each virtual function
// Only thing we really need to know for sure: the offset in the vtable of each virtual function
// This doesn't feel like it would work but try it anyway: https://stackoverflow.com/questions/5590015/detect-the-the-vtable-offset-of-a-specific-virtual-function-using-visual-c/5590181
// This doesn't feel like it would work but try it anyway: https://stackoverflow.com/questions/5590015/detect-the-the-vtable-offset-of-a-specific-virtual-function-using-visual-c/5590181
// TODO: might also be able to do something with IDXGIObject::Get/SetPrivateData
// TODO: not sure if any of this is really necessary? If we can destroy the original swap chain, construct a new one through FFX, then plug that in here, we're already done right?