IntSize TileController::tileSize() const { if (m_inLiveResize || m_tileSizeLocked) return tileGrid().tileSize(); const int kLowestCommonDenominatorMaxTileSize = 4 * 1024; IntSize maxTileSize(kLowestCommonDenominatorMaxTileSize, kLowestCommonDenominatorMaxTileSize); #if USE(IOSURFACE) IntSize surfaceSizeLimit = IOSurface::maximumSize(); surfaceSizeLimit.scale(1 / m_deviceScaleFactor); maxTileSize = maxTileSize.shrunkTo(surfaceSizeLimit); #endif if (owningGraphicsLayer()->platformCALayerUseGiantTiles()) return maxTileSize; IntSize tileSize(kDefaultTileSize, kDefaultTileSize); if (m_scrollability == NotScrollable) { IntSize scaledSize = expandedIntSize(boundsWithoutMargin().size() * tileGrid().scale()); tileSize = scaledSize.constrainedBetween(IntSize(kDefaultTileSize, kDefaultTileSize), maxTileSize); } else if (m_scrollability == VerticallyScrollable) tileSize.setWidth(std::min(std::max<int>(ceilf(boundsWithoutMargin().width() * tileGrid().scale()), kDefaultTileSize), maxTileSize.width())); LOG_WITH_STREAM(Scrolling, stream << "TileController::tileSize newSize=" << tileSize); m_tileSizeLocked = true; return tileSize; }