Changeset 83674 in webkit


Ignore:
Timestamp:
Apr 12, 2011 5:50:36 PM (13 years ago)
Author:
enne@google.com
Message:

2011-04-12 Adrienne Walker <enne@google.com>

Reviewed by James Robinson.

[chromium] TilingData mishandles very small texture sizes
https://bugs.webkit.org/show_bug.cgi?id=58364

Use zero tiles when the texture size is too small for tiling.

  • platform/graphics/gpu/TilingData.cpp: (WebCore::TilingData::TilingData): (WebCore::TilingData::setMaxTextureSize):

2011-04-12 Adrienne Walker <enne@google.com>

Reviewed by James Robinson.

[chromium] TilingData mishandles very small texture sizes
https://bugs.webkit.org/show_bug.cgi?id=58364

Update test to properly handle texture sizes of 0-3.

  • tests/TilingDataTest.cpp: (WebCore::TEST):
Location:
trunk/Source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r83673 r83674  
     12011-04-12  Adrienne Walker  <enne@google.com>
     2
     3        Reviewed by James Robinson.
     4
     5        [chromium] TilingData mishandles very small texture sizes
     6        https://bugs.webkit.org/show_bug.cgi?id=58364
     7
     8        Use zero tiles when the texture size is too small for tiling.
     9
     10        * platform/graphics/gpu/TilingData.cpp:
     11        (WebCore::TilingData::TilingData):
     12        (WebCore::TilingData::setMaxTextureSize):
     13
    1142011-04-12  Csaba Osztrogonác  <ossy@webkit.org>
    215
  • trunk/Source/WebCore/platform/graphics/gpu/TilingData.cpp

    r80824 r83674  
    4545static int computeNumTiles(int maxTextureSize, int totalSize, int borderTexels)
    4646{
     47    if (maxTextureSize - 2 * borderTexels <= 0)
     48        return 0;
     49
    4750    int numTiles = max(1, 1 + (totalSize - 1 - 2 * borderTexels) / (maxTextureSize - 2 * borderTexels));
    4851    return totalSize > 0 ? numTiles : 0;
  • trunk/Source/WebKit/chromium/ChangeLog

    r83666 r83674  
     12011-04-12  Adrienne Walker  <enne@google.com>
     2
     3        Reviewed by James Robinson.
     4
     5        [chromium] TilingData mishandles very small texture sizes
     6        https://bugs.webkit.org/show_bug.cgi?id=58364
     7
     8        Update test to properly handle texture sizes of 0-3.
     9
     10        * tests/TilingDataTest.cpp:
     11        (WebCore::TEST):
     12
    1132011-04-12  Jian Li  <jianli@chromium.org>
    214
  • trunk/Source/WebKit/chromium/tests/TilingDataTest.cpp

    r80894 r83674  
    5050TEST(TilingDataTest, numTiles_TilingNoBorders)
    5151{
     52    EXPECT_EQ(0, TilingData(0,  0,  0, false).numTiles());
     53    EXPECT_EQ(0, TilingData(0,  4,  0, false).numTiles());
     54    EXPECT_EQ(0, TilingData(0,  0,  4, false).numTiles());
     55    EXPECT_EQ(0, TilingData(4,  4,  0, false).numTiles());
     56    EXPECT_EQ(0, TilingData(4,  0,  4, false).numTiles());
     57    EXPECT_EQ(0, TilingData(-8, 1,  1, false).numTiles());
     58    EXPECT_EQ(0, TilingData(-1, 1,  1, false).numTiles());
     59    EXPECT_EQ(0, TilingData(0,  1,  1, false).numTiles());
     60
     61    EXPECT_EQ(1, TilingData(1,  1,  1, false).numTiles());
     62    EXPECT_EQ(2, TilingData(1,  1,  2, false).numTiles());
     63    EXPECT_EQ(1, TilingData(2,  2,  2, false).numTiles());
     64    EXPECT_EQ(1, TilingData(3,  3,  3, false).numTiles());
     65
    5266    EXPECT_EQ(1, TilingData(4,  1,  4, false).numTiles());
    5367    EXPECT_EQ(1, TilingData(4,  2,  4, false).numTiles());
     
    8397TEST(TilingDataTest, numTiles_TilingWithBorders)
    8498{
     99    EXPECT_EQ(0, TilingData(0,  0,  0, true).numTiles());
     100    EXPECT_EQ(0, TilingData(0,  4,  0, true).numTiles());
     101    EXPECT_EQ(0, TilingData(0,  0,  4, true).numTiles());
     102    EXPECT_EQ(0, TilingData(4,  4,  0, true).numTiles());
     103    EXPECT_EQ(0, TilingData(4,  0,  4, true).numTiles());
     104    EXPECT_EQ(0, TilingData(-8, 1,  1, true).numTiles());
     105    EXPECT_EQ(0, TilingData(-1, 1,  1, true).numTiles());
     106    EXPECT_EQ(0, TilingData(0,  1,  1, true).numTiles());
     107
     108    EXPECT_EQ(0, TilingData(1,  1,  1, true).numTiles());
     109    EXPECT_EQ(0, TilingData(1,  1,  2, true).numTiles());
     110    EXPECT_EQ(0, TilingData(2,  2,  2, true).numTiles());
     111
    85112    EXPECT_EQ(1, TilingData(3,  1,  3, true).numTiles());
    86113    EXPECT_EQ(1, TilingData(3,  2,  3, true).numTiles());
     
    362389}
    363390
    364 TEST(TilingDataTest, setMaxTextureSize)
     391TEST(TilingDataTest, setMaxTextureSizeNoBorders)
    365392{
    366393    TilingData data(8, 16, 32, false);
     
    384411}
    385412
     413TEST(TilingDataTest, setMaxTextureSizeBorders)
     414{
     415    TilingData data(8, 16, 32, true);
     416    EXPECT_EQ(3, data.numTilesX());
     417    EXPECT_EQ(5, data.numTilesY());
     418
     419    data.setMaxTextureSize(32);
     420    EXPECT_EQ(32, data.maxTextureSize());
     421    EXPECT_EQ(1, data.numTilesX());
     422    EXPECT_EQ(1, data.numTilesY());
     423
     424    data.setMaxTextureSize(2);
     425    EXPECT_EQ(2, data.maxTextureSize());
     426    EXPECT_EQ(0, data.numTilesX());
     427    EXPECT_EQ(0, data.numTilesY());
     428
     429    data.setMaxTextureSize(5);
     430    EXPECT_EQ(5, data.maxTextureSize());
     431    EXPECT_EQ(5, data.numTilesX());
     432    EXPECT_EQ(10, data.numTilesY());
     433}
     434
    386435} // namespace
Note: See TracChangeset for help on using the changeset viewer.