Because of my inexperience with the Core Graphics APIs, there is a redundant data copy occurring in GraphicsContext3D while reading back the framebuffer in order to draw it to the Canvas's backing store via CGContextDrawImage. Fixing this will partly address the embarrassing performance gap reported in http://news.cnet.com/8301-30685_3-10416966-264.html?tag=mncol .
Created attachment 45219 [details] Patch Eliminated useless creation of a CGBitmapContext and from there a CGImage. Now create CGImage directly from data. Also changed readPixels parameters and CGImage alpha info to try to avoid byte swapping, and disabled interpolation when drawing the GL content. Some test cases run twice as fast with these changes, though more work is needed to achieve desired performance. No test case; performance optimization only. Ran WebGL demos from Khronos site to verify changes.
style-queue ran check-webkit-style on attachment 45219 [details] without any errors.
Comment on attachment 45219 [details] Patch Clearing flags on attachment: 45219 Committed r52380: <http://trac.webkit.org/changeset/52380>
All reviewed patches have been landed. Closing bug.