-
commit-queue@webkit.org authored
Reviewed by Dimitri Glazkov. Canvas2D does not support images larger than system's GPU max texture size https://bugs.webkit.org/show_bug.cgi?id=43864 A new class "TilingData" has been created that provides logic for splitting a large image into a series of smaller tiles. GLES2Texture and CLES2Canvas are modified to use the TilingData to split images on texture upload and render one logical image as many smaller images. TilingData is tested via unit tests in WebKit/chromium/tests/TilingDataTest.cpp * WebCore.gypi: * platform/graphics/chromium/GLES2Canvas.cpp: (WebCore::GLES2Canvas::drawTexturedRect): (WebCore::GLES2Canvas::drawTexturedRectTile): * platform/graphics/chromium/GLES2Canvas.h: * platform/graphics/chromium/GLES2Texture.cpp: (WebCore::GLES2Texture::GLES2Texture): (WebCore::GLES2Texture::~GLES2Texture): (WebCore::GLES2Texture::create): (WebCore::copySubRect): (WebCore::GLES2Texture::load): (WebCore::GLES2Texture::bindTile): * platform/graphics/chromium/GLES2Texture.h: (WebCore::GLES2Texture::tiles): * platform/graphics/chromium/TilingData.cpp: Added. (WebCore::computeNumTiles): (WebCore::TilingData::TilingData): (WebCore::TilingData::tileXIndexFromSrcCoord): (WebCore::TilingData::tileYIndexFromSrcCoord): (WebCore::TilingData::tileBounds): (WebCore::TilingData::tileBoundsWithBorder): (WebCore::TilingData::tileBoundsNormalized): (WebCore::TilingData::tilePositionX): (WebCore::TilingData::tilePositionY): (WebCore::TilingData::tileSizeX): (WebCore::TilingData::tileSizeY): (WebCore::TilingData::overlappedTileIndices): (WebCore::TilingData::intersectDrawQuad): * platform/graphics/chromium/TilingData.h: Added. (WebCore::TilingData::maxTextureSize): (WebCore::TilingData::totalSizeX): (WebCore::TilingData::totalSizeY): (WebCore::TilingData::numTiles): (WebCore::TilingData::numTilesX): (WebCore::TilingData::numTilesY): (WebCore::TilingData::tileIndex): (WebCore::TilingData::tileXIndex): (WebCore::TilingData::tileYIndex): (WebCore::TilingData::TilingData): (WebCore::TilingData::assertTile): * platform/graphics/skia/ImageSkia.cpp: (WebCore::BitmapImage::draw): * platform/graphics/skia/PlatformContextSkia.cpp: (WebCore::PlatformContextSkia::uploadSoftwareToHardware): 2010-08-16 Vincent Scheib <scheib@chromium.org> Reviewed by Dimitri Glazkov. Canvas2D does not support images larger than system's GPU max texture size https://bugs.webkit.org/show_bug.cgi?id=43864 Unit tests for TilingData class. * WebKit.gyp: * tests/TilingDataTest.cpp: Added. (WebCore::TEST): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65455 268f45cc-cd09-0410-ab3c-d52691b4dbfc
91022996