Bug 156050

Summary: [iOS WK2] Avoid creating tiles that are too large for rendering
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: New BugsAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: simon.fraser, thorton
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch darin: review+

Description Simon Fraser (smfr) 2016-03-30 17:54:44 PDT
[iOS WK2] Avoid creating tiles that are too large for rendering
Comment 1 Simon Fraser (smfr) 2016-03-30 17:58:47 PDT
Created attachment 275247 [details]
Patch
Comment 2 Simon Fraser (smfr) 2016-03-30 18:31:19 PDT
Created attachment 275253 [details]
Patch
Comment 3 Darin Adler 2016-03-30 18:37:39 PDT
Comment on attachment 275253 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=275253&action=review

> Source/WebCore/platform/graphics/ca/TileController.cpp:499
> +    surfaceSizeLimit.scale(1 / m_deviceScaleFactor);

Is this always going to be correct when devices have more than a single display with different device scale factors?

> Source/WebCore/platform/graphics/ca/TileController.cpp:512
> +        tileSize.setWidth(std::min(std::max<int>(ceilf(boundsWithoutMargin().width() * tileGrid().scale()), kDefaultTileSize), maxTileSize.height()));

Surprised to see maxTileSize.height() here in a line that’s about width. Wouldn’t width() be right?
Comment 4 Simon Fraser (smfr) 2016-03-30 19:00:20 PDT
(In reply to comment #3)
> Comment on attachment 275253 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=275253&action=review
> 
> > Source/WebCore/platform/graphics/ca/TileController.cpp:499
> > +    surfaceSizeLimit.scale(1 / m_deviceScaleFactor);
> 
> Is this always going to be correct when devices have more than a single
> display with different device scale factors?

Yes, this is the m_deviceScaleFactor for the window that this TileController's view is (primarily) on.

> > Source/WebCore/platform/graphics/ca/TileController.cpp:512
> > +        tileSize.setWidth(std::min(std::max<int>(ceilf(boundsWithoutMargin().width() * tileGrid().scale()), kDefaultTileSize), maxTileSize.height()));
> 
> Surprised to see maxTileSize.height() here in a line that’s about width.
> Wouldn’t width() be right?

Yes, thanks.
Comment 5 Simon Fraser (smfr) 2016-03-30 19:08:24 PDT
https://trac.webkit.org/r198875