Changeset 87094 in webkit


Ignore:
Timestamp:
May 23, 2011 1:40:23 PM (13 years ago)
Author:
enne@google.com
Message:

2011-05-23 Adrienne Walker <enne@google.com>

Reviewed by James Robinson.

[chromium] Fix division by zero in TilingData for boundary case texture sizes
https://bugs.webkit.org/show_bug.cgi?id=61164

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

2011-05-23 Adrienne Walker <enne@google.com>

Reviewed by James Robinson.

[chromium] Fix division by zero in TilingData for boundary case texture sizes
https://bugs.webkit.org/show_bug.cgi?id=61164

Add additional tests for small max texture sizes.

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

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r87090 r87094  
     12011-05-23  Adrienne Walker  <enne@google.com>
     2
     3        Reviewed by James Robinson.
     4
     5        [chromium] Fix division by zero in TilingData for boundary case texture sizes
     6        https://bugs.webkit.org/show_bug.cgi?id=61164
     7
     8        * platform/graphics/gpu/TilingData.cpp:
     9        (WebCore::TilingData::tileXIndexFromSrcCoord):
     10        (WebCore::TilingData::tileYIndexFromSrcCoord):
     11
    1122011-05-23  Adam Barth  <abarth@webkit.org>
    213
  • trunk/Source/WebCore/platform/graphics/gpu/TilingData.cpp

    r83891 r87094  
    7676int TilingData::tileXIndexFromSrcCoord(int srcPos) const
    7777{
     78    if (numTilesX() <= 1)
     79        return 0;
     80
     81    ASSERT(m_maxTextureSize - 2 * m_borderTexels);
    7882    int x = (srcPos - m_borderTexels) / (m_maxTextureSize - 2 * m_borderTexels);
    7983    return min(max(x, 0), numTilesX() - 1);
     
    8286int TilingData::tileYIndexFromSrcCoord(int srcPos) const
    8387{
     88    if (numTilesY() <= 1)
     89        return 0;
     90
     91    ASSERT(m_maxTextureSize - 2 * m_borderTexels);
    8492    int y = (srcPos - m_borderTexels) / (m_maxTextureSize - 2 * m_borderTexels);
    8593    return min(max(y, 0), numTilesY() - 1);
  • trunk/Source/WebKit/chromium/ChangeLog

    r87089 r87094  
     12011-05-23  Adrienne Walker  <enne@google.com>
     2
     3        Reviewed by James Robinson.
     4
     5        [chromium] Fix division by zero in TilingData for boundary case texture sizes
     6        https://bugs.webkit.org/show_bug.cgi?id=61164
     7
     8        Add additional tests for small max texture sizes.
     9
     10        * tests/TilingDataTest.cpp:
     11        (WebCore::TEST):
     12
    1132011-05-23  Ruben  <chromium@hybridsource.org>
    214
  • trunk/Source/WebKit/chromium/tests/TilingDataTest.cpp

    r83891 r87094  
    178178    EXPECT_EQ(7, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(10));
    179179    EXPECT_EQ(7, TilingData(3, 10, 10, true).tileXIndexFromSrcCoord(11));
     180
     181    EXPECT_EQ(0, TilingData(1, 1, 1, false).tileXIndexFromSrcCoord(0));
     182    EXPECT_EQ(0, TilingData(2, 2, 2, false).tileXIndexFromSrcCoord(0));
     183    EXPECT_EQ(0, TilingData(2, 2, 2, false).tileXIndexFromSrcCoord(1));
     184    EXPECT_EQ(0, TilingData(3, 3, 3, false).tileXIndexFromSrcCoord(0));
     185    EXPECT_EQ(0, TilingData(3, 3, 3, false).tileXIndexFromSrcCoord(1));
     186    EXPECT_EQ(0, TilingData(3, 3, 3, false).tileXIndexFromSrcCoord(2));
     187
     188    EXPECT_EQ(0, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(0));
     189    EXPECT_EQ(0, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(1));
     190    EXPECT_EQ(0, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(2));
     191    EXPECT_EQ(1, TilingData(3, 4, 3, false).tileXIndexFromSrcCoord(3));
     192
     193    EXPECT_EQ(0, TilingData(1, 1, 1, true).tileXIndexFromSrcCoord(0));
     194    EXPECT_EQ(0, TilingData(2, 2, 2, true).tileXIndexFromSrcCoord(0));
     195    EXPECT_EQ(0, TilingData(2, 2, 2, true).tileXIndexFromSrcCoord(1));
     196    EXPECT_EQ(0, TilingData(3, 3, 3, true).tileXIndexFromSrcCoord(0));
     197    EXPECT_EQ(0, TilingData(3, 3, 3, true).tileXIndexFromSrcCoord(1));
     198    EXPECT_EQ(0, TilingData(3, 3, 3, true).tileXIndexFromSrcCoord(2));
     199
     200    EXPECT_EQ(0, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(0));
     201    EXPECT_EQ(0, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(1));
     202    EXPECT_EQ(1, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(2));
     203    EXPECT_EQ(1, TilingData(3, 4, 3, true).tileXIndexFromSrcCoord(3));
    180204}
    181205TEST(TilingDataTest, tileYIndexFromSrcCoord)
     
    206230    EXPECT_EQ(7, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(10));
    207231    EXPECT_EQ(7, TilingData(3, 10, 10, true).tileYIndexFromSrcCoord(11));
     232
     233    EXPECT_EQ(0, TilingData(1, 1, 1, false).tileYIndexFromSrcCoord(0));
     234    EXPECT_EQ(0, TilingData(2, 2, 2, false).tileYIndexFromSrcCoord(0));
     235    EXPECT_EQ(0, TilingData(2, 2, 2, false).tileYIndexFromSrcCoord(1));
     236    EXPECT_EQ(0, TilingData(3, 3, 3, false).tileYIndexFromSrcCoord(0));
     237    EXPECT_EQ(0, TilingData(3, 3, 3, false).tileYIndexFromSrcCoord(1));
     238    EXPECT_EQ(0, TilingData(3, 3, 3, false).tileYIndexFromSrcCoord(2));
     239
     240    EXPECT_EQ(0, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(0));
     241    EXPECT_EQ(0, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(1));
     242    EXPECT_EQ(0, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(2));
     243    EXPECT_EQ(1, TilingData(3, 3, 4, false).tileYIndexFromSrcCoord(3));
     244
     245    EXPECT_EQ(0, TilingData(1, 1, 1, true).tileYIndexFromSrcCoord(0));
     246    EXPECT_EQ(0, TilingData(2, 2, 2, true).tileYIndexFromSrcCoord(0));
     247    EXPECT_EQ(0, TilingData(2, 2, 2, true).tileYIndexFromSrcCoord(1));
     248    EXPECT_EQ(0, TilingData(3, 3, 3, true).tileYIndexFromSrcCoord(0));
     249    EXPECT_EQ(0, TilingData(3, 3, 3, true).tileYIndexFromSrcCoord(1));
     250    EXPECT_EQ(0, TilingData(3, 3, 3, true).tileYIndexFromSrcCoord(2));
     251
     252    EXPECT_EQ(0, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(0));
     253    EXPECT_EQ(0, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(1));
     254    EXPECT_EQ(1, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(2));
     255    EXPECT_EQ(1, TilingData(3, 3, 4, true).tileYIndexFromSrcCoord(3));
    208256}
    209257
Note: See TracChangeset for help on using the changeset viewer.