Our scan converters (paths, hairlines) use 16.16 to represent their edges, and therefore we cannot draw to a coordinate outside of that range. Currently those code paths just clip their geometry to avoid overflow, and so we just draw nothing. A possible solution is to tile our rendering (perhaps at a high level like canvas : device boundary) where we would just (re)draw NxN times, each time - translate the geometry to re-zero it to the local tile's origin - somehow flag shaders that their device coordinates need to be adjust when they invert them to deduce local coordinates
Dec 7 2015, Project Member
Sep 23 2016,
Any news on this issue? This bug block the ability for screenshot to be greater than 16384px as per my post to Chrome Headless : https://groups.google.com/a/chromium.org/forum/#!topic/headless-dev/t0ixeHXCzK0 which for long page is quiet problematic.
Sep 23 2016, Project Member
I don't think the Chrome headless issue is related to Skia. From the log it looks like chrome headless is using OSMesa (sw impl of OpenGL) and that OSMesa context creation is failing to create a context with a large backing store. Chrome uses Skia to draw into tiles that are small enough not to hit the limitation described in this bug.
Sep 23 2016,
Thanks for the clarification, I will check it further with the OSmesa project.
Jan 18 2018, Project Member
Sign in to add a comment