* The current backend heavily depends on many extensions for shadow
rendering and texture cubes in the fragment shaders. All these
extensions were incorporated to core in 4.3. Support is practically
ubiquitous and requiring support for it makes things a lot easier
* This commit aims to both continue the rasterizer cache cleanup by
separating CachedSurface into a dedicated header and to start weeding
out the raw OpenGL code from the cache.
* The latter is achieved by abstracting most texture operations in a new
class called TextureRuntime. This has many benefits such as making it easier
to port the functionality to other graphics APIs and the removal of the need
to pass (read/draw) framebuffer handles everywhere. The filterer and
reinterpreter get their own sets of FBOs due to this, something that
might be a performance win since it reduces the state switching
overhead on the runtime FBOs.