MR is firstly initializing present extension of slave screen despite of glamor is disabled. I don't know if that was intentional to not initialize present extension when glamor is not supported.
Then during present operation I'm it is traversing slave outputs and query them for crtc that covers window to present. Later it consequently is using present_screen_priv structure taken from found crtc used for synchronization.
I am aware this patch is not the best quality. But it proves the change is working. This was tested on various set of machines intel only, amd only, intel - nvidia (with Nouveau driver configured as output slave) + udl and evdi devices.
I want to hear your opinion how to properly implement that. E.g. the difficulty I struggle is which Screen object should be used where. There are various structures like Window, RRCrtc, Drawable, Pixmap referencing Screen and functions parametrized with Screen. For current state I am using slave Screen only for operations related to crtc. For others I keep using primary screen.
All suggestions are welcome:)