Issue 846693 and Issue 847094 are caused by IOSurface synchronization issues between Chrome and SwiftShader. In the first case Chrome started uploading the IOSurface from system RAM to the GPU for compositing, before SwiftShader is done rendering to it, while in the other case an IOSurface is used as a texture and it is deleted while SwiftShader is still sampling from it.
Both issues were addressed by forcing SwiftShader to finish rendering before returning from draw calls. But this affects WebGL performance on Mac OS X, and may also lead to more timeouts in tests. The synchronization should be done by Chrome instead.
The use of IOSurfaces for OpenGL rendering is defined in the EGL_ANGLE_iosurface_client_buffer extension, and it states that "When a pbuffer is created with type EGL_IOSURFACE_ANGLE, the contents of the associcated IOSurface object are undefined while the pbuffer is bound to a client texture." Hence it needs to be unbound by Chrome to wait for OpenGL to finish rendering to it.
Some background info on Chrome's IOSurface usage: https://www.chromium.org/developers/design-documents/iosurface-meeting-notes
Comment 1 by xidac...@chromium.org
, Jun 7 2018