Assuming it is not needed anymore for deferred and assuming you could afford it, I start to wonder if this idea of mine makes sense:
- GBuffer packing (opaque_models): write to multiple non-MS RTVs (GBuffer)
- GBuffer unpacking (opaque_models): write to one non-MS RTV (Color Buffer)
- Forward (opaque_models): fetch color from the Color Buffer and write to one MS RTV (back buffer)
- Remaining forward passes for emissive and transparent models and sprites
The vertex shader price of step 3 is equal to an early z-pass. What remains is a texture load/fragment which enables MSAA and alpha-to-coverage in a deferred shading algorithm.