Hi,
actually it is expected that your frame rate goes down when you stretch the window on the second GPU. Since the Window/Context was created on GPU 1 this GPU will be used for rendering. When stretching the window to be on GPU 2 as well, you will still render on GPU 1 but when presenting the pixels that need to be displayed on GPU 2 need to be copied from GPU 1 to GPU 2. This adds overhead and impacts the performance.
Using the S400 might improve the quality but will not guarantee a proper synchronization for this use case.
To have a proper synchronization with the S400 you would need the application to create a Window on both GPUs and then run a rendering thread per GPU. Now the S400 can synchronize the SwapBuffer/present calls of both windows and the GPUs will display the frames synchronously. Unfortunately this needs changes on the application side.
Chris