Releasing the last reference to a surface interface has a significant
performance impact. Mitigating the issue by eliminating some frequent
but unnecessary QueryInterface calls.
Fixes most of the performance drop reported in issue #24.
Changed primary surface caps to report video memory in case the surface
was only forced into system memory by DDrawCompat.
Fixes startup issues in C&C 95 and Red Alert, reported in issue #3.
When the primary surface chain is requested to be created in system memory,
flip should be emulated (copy from back buffer to front buffer) to be
consistent with legacy DirectDraw behavior.
Fixes flashing graphical artifacts in Carmageddon (Win95 version) menus
when exiting from a race, mentioned in issue #3.
8/16 bit display mode emulation is now implemented internally instead of
relying on the builtin Windows shims, as those are sometimes unreliable
(not triggering for some games on some systems when they should).
External DirectDraw hooks (such as the DWM8And16BitMitigation shim)
are disabled to avoid interference.
Fixes issues reported in #8, #9, #15.