Make MetaOnscreenNative a thin wrapper around MetaRenderSurface
MetaRenderSurface is a planned type intended to take over much of the functionality that currently lives in MetaOnscreenNative, leaving MetaOnscreenNative be a bit more of a thin wrapper around MetaRenderSurface taking care of Cogl specific behavior. Part of the reason for this is shrink meta-onscreen-native.c, while also avoid being limited by CoglOnscreen/CoglFramebuffer semantics.
The goal is for MetaRenderSurface to provide an API used to implement MetaOnscreenNative. It will have a base class and two implementations:
- MetaRenderSurfaceKms
- Buffer tracking and management (gbm surface lock / release)
- Buffer content migration (to secondary GPUs or GPU-less drm devices (DisplayLink)
- Integrating with mode setting objects (MetaKms*)
- Owner of gbm_surface, EGLSurface
- MetaRenderSurfaceEglstream
- The equivalent of MetaRenderSurfaceKms but for the legacy NVIDIA support