Wrt 5/5, I think that reducing the complexity of multiple contexts is a good idea (and worth the risk if it fixes bugs—do we ), but I also don't know if there are any reasons to reject it besides "churn and/or risk of regressions". From private conversation, I got the impression there's no real reason [performance advantage or anything else?] to use multiple contexts, and that it was just done because it was somehow the easiest thing to do at the time?
I can't think of any real downside, except for the glFinish() below that you already commented on.
(Also, is it possible to split out wined3d_swapchain_gl_get_backup_dc() -> wined3d_device_gl_get_backup_dc() into a separate change?)
It was a separate, following change initially. Moving the contexts from the swapchain to the device without also moving backup_dc handling seemed a bit awkward to me. It can certainly be separated again though.
Actually, I guess there's the option to do it before the other change instead. Hmm, I might try that one.