I'd like to suggest that the preserveDrawingBuffer = false spec be
The spec was written so that the drawing buffer is cleared if a
compositing operation is done. This was done so that apps would not
rely on the contents of the drawing buffer being preserved.
Unfortunately it has the opposite effect. Apps are now written to
expect the drawing buffer to be cleared. But, the spec does not
actually require the drawing buffer to be cleared unless the buffer
So, we have the same situation. Apps expect the drawing buffer to be
cleared but depending on the browser, timing, etc there is no
guarantee that the buffer was actually composited. If it wasn't the
contents is still there. You write some code, it seems to work and
only later do you find out that on some slow machine or some
specific browser on a specific platform you're getting inconsistent
behavior and tracking that down can be really hard (I just got
it down for one app)
Would it be possible to change the spec to effectively say
callback if the user does not clear the drawingbuffer before the
first draw call the implementation will clear it?
This doesn't seem like it would change any of the performance issues
nor the effective semantics of the spec but it would make the
behavior 100% consistent.