Skip to content
  • commit-queue@webkit.org's avatar
    2010-08-16 Vincent Scheib <scheib@chromium.org> · 91022996
    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