Port a commit from the master branch.
Finally properly fix the flashing on ARM Mali T880 GPU.
The flashing is caused by a 'full pipeline flush' (see DarkPhoton, https://www.opengl.org/discussion_boards/showthread.php/200754-Flashes-on-ARM-Mali?p=1291679&viewfull=1#post1291679 ). In order to combat it, first introduce the possibility that a single DistortedOutputSurface is backed up by more than one FBO. Then make DistortedScreen be derived from DistortedFramebuffer (which itself is derived from DistortedOutputSurface) and make it contain 3 FBOs, render to them in a circular queue fashion, and blit from a given FBO to the system FBO. The 'more than 1 intermediate FBO' queue prevents the pipeline flush....
Revert last changes to the postprocessing FBO.
This reverts commit 2dbed690bdbee80d9bfb22c800073855eb5d0946.
In an attempt to contain the flashes on Mali GPU, re-structure the post-processing FBOs from 1 FBO with 2 color attachments + combined depth-stencil to 2 separate FBOs sharing a depth-stencil texture.
Result: this appears to make the flashes slightly worse.
OIT: fixes. Everything looks correct now except for the curious return of the 'dancing lower-left corner' small glitch in the 'Transparency' app.
Make sure we don't create a feedback loop in oitRender
Reengineer DistortedScreen
- remove counting of transparent pixels from main fragment shader- remove debugs and tidy up- some fixes for the Mali GPU
Introduce possibility that an OutputSurface is backed up by a larger texture than necessary and the 'cloneSize()' method.
First try at the SSBO (doesn't work - reads in the application don't pick up changes in the shader; crashes.
Up library requirements to OpenGL ES 3.1 (needed for the upcoming GL_SHADER_STORAGE_BUFFER)
1) Fix for the last fix in Framebuffer2) in RenderState, reset everything to a known state (rather than mark as unknown)
Fix in Framebuffer
All knowledge about Postporcessing moved to the respective Effect classes.
Progress with support for Effect classes.