Bug 21498 - REGRESSION(r35966): Canvex game (DOOM for <canvas>) is broken
Summary: REGRESSION(r35966): Canvex game (DOOM for <canvas>) is broken
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: DOM (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac OS X 10.5
: P1 Major
Assignee: Nobody
URL: http://canvex.lazyilluminati.com/83/p...
Keywords: Regression
: 20665 (view as bug list)
Depends on: 21510
Blocks:
  Show dependency treegraph
 
Reported: 2008-10-08 23:02 PDT by Oliver Hunt
Modified: 2008-10-16 02:24 PDT (History)
2 users (show)

See Also:


Attachments
Fix transformed patterns (36.79 KB, patch)
2008-10-09 15:04 PDT, Eric Seidel (no email)
oliver: review+
Details | Formatted Diff | Diff
Reviewed by Oliver Hunt. (3.05 KB, patch)
2008-10-09 19:20 PDT, Eric Seidel (no email)
oliver: review+
Details | Formatted Diff | Diff
Test cases (9.10 KB, patch)
2008-10-09 19:20 PDT, Eric Seidel (no email)
oliver: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Oliver Hunt 2008-10-08 23:02:45 PDT
Migrating gradient and pattern logic to GraphicsContext appears to have horked the world :-(
Comment 1 Oliver Hunt 2008-10-09 01:21:51 PDT
Okay this also regresses fast/canvas/patternfill-repeat.html
Comment 2 Eric Seidel (no email) 2008-10-09 15:04:33 PDT
Created attachment 24239 [details]
Fix transformed patterns

 LayoutTests/ChangeLog                              |   59 +++++++++++
 .../canvas/canvas-transform-identity-expected.png  |  Bin 3259 -> 10631 bytes
 .../canvas/canvas-transform-infinity-expected.png  |  Bin 3259 -> 10631 bytes
 .../canvas/canvas-transform-multiply-expected.png  |  Bin 3259 -> 10631 bytes
 .../fast/canvas/canvas-transform-nan-expected.png  |  Bin 3259 -> 10631 bytes
 .../canvas-transform-non-invertible-expected.png   |  Bin 3259 -> 10631 bytes
 .../canvas/canvas-transform-skewed-expected.png    |  Bin 3259 -> 10631 bytes
 .../canvas/canvas-before-css-expected.checksum     |    2 +-
 .../mac/fast/canvas/canvas-before-css-expected.png |  Bin 9165 -> 17055 bytes
 .../mac/fast/canvas/canvas-bg-expected.png         |  Bin 17964 -> 29420 bytes
 .../fast/canvas/canvas-composite-expected.checksum |    2 +-
 .../mac/fast/canvas/canvas-composite-expected.png  |  Bin 20635 -> 30590 bytes
 .../canvas/canvas-draw-xbm-image-expected.checksum |    2 +-
 .../fast/canvas/canvas-draw-xbm-image-expected.png |  Bin 3462 -> 10690 bytes
 .../canvas/canvas-resize-reset-expected.checksum   |    2 +-
 .../fast/canvas/canvas-resize-reset-expected.png   |  Bin 7586 -> 15066 bytes
 ...nvas-size-change-after-layout-expected.checksum |    2 +-
 .../canvas-size-change-after-layout-expected.png   |  Bin 7574 -> 15340 bytes
 .../fast/canvas/canvas-text-alignment-expected.png |  Bin 97978 -> 105596 bytes
 .../fast/canvas/canvas-text-baseline-expected.png  |  Bin 12181 -> 19326 bytes
 ...canvas-transforms-during-path-expected.checksum |    2 +-
 .../canvas-transforms-during-path-expected.png     |  Bin 14377 -> 23272 bytes
 .../fast/canvas/canvasDrawingIntoSelf-expected.png |  Bin 8111 -> 16216 bytes
 .../mac/fast/canvas/drawImage-expected.png         |  Bin 8111 -> 16216 bytes
 .../fillrect-gradient-zero-stops-expected.checksum |    2 +-
 .../fillrect-gradient-zero-stops-expected.png      |  Bin 20065 -> 29200 bytes
 .../canvas/fillrect_gradient-expected.checksum     |    2 +-
 .../mac/fast/canvas/fillrect_gradient-expected.png |  Bin 51331 -> 88750 bytes
 ...ent-add-second-start-end-stop-expected.checksum |    2 +-
 ...gradient-add-second-start-end-stop-expected.png |  Bin 3663 -> 14103 bytes
 .../canvas/gradient-empty-path-expected.checksum   |    2 +-
 .../fast/canvas/gradient-empty-path-expected.png   |  Bin 9564 -> 19579 bytes
 .../image-object-in-canvas-expected.checksum       |    2 +-
 .../canvas/image-object-in-canvas-expected.png     |  Bin 48986 -> 58593 bytes
 .../canvas/patternfill-repeat-expected.checksum    |    2 +-
 .../fast/canvas/patternfill-repeat-expected.png    |  Bin 38575 -> 50815 bytes
 .../fast/canvas/quadraticCurveTo-expected.checksum |    2 +-
 .../mac/fast/canvas/quadraticCurveTo-expected.png  |  Bin 11850 -> 19600 bytes
 .../mac/fast/canvas/shadow-offset-1-expected.png   |  Bin 8875 -> 16958 bytes
 .../mac/fast/canvas/shadow-offset-2-expected.png   |  Bin 8927 -> 16986 bytes
 .../mac/fast/canvas/shadow-offset-3-expected.png   |  Bin 8875 -> 16958 bytes
 .../mac/fast/canvas/shadow-offset-4-expected.png   |  Bin 8892 -> 16971 bytes
 .../mac/fast/canvas/shadow-offset-5-expected.png   |  Bin 8892 -> 16971 bytes
 .../mac/fast/canvas/shadow-offset-6-expected.png   |  Bin 8930 -> 16989 bytes
 .../mac/fast/canvas/shadow-offset-7-expected.png   |  Bin 8939 -> 16996 bytes
 .../canvas/zero-size-fill-rect-expected.checksum   |    2 +-
 .../fast/canvas/zero-size-fill-rect-expected.png   |  Bin 8044 -> 15632 bytes
 WebCore/ChangeLog                                  |   27 +++++
 WebCore/WebCore.xcodeproj/project.pbxproj          |    4 +
 WebCore/platform/graphics/GraphicsContext.cpp      |    4 -
 WebCore/platform/graphics/GraphicsContext.h        |    4 -
 .../graphics/cairo/GraphicsContextCairo.cpp        |   17 ---
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |  105 +++++++++-----------
 WebCore/platform/graphics/qt/GraphicsContextQt.cpp |   16 ---
 WebCore/platform/graphics/wx/GraphicsContextWx.cpp |   16 ---
 55 files changed, 152 insertions(+), 128 deletions(-)
Comment 3 Eric Seidel (no email) 2008-10-09 15:07:35 PDT
This fix for transformed patterns is a correctness fix, but still leaves a possible performance regression (we have no performance tests to verify such, but I plan to follow this up with a caching solution to improve performance of pattern painting.)  bug 21510
Comment 4 Eric Seidel (no email) 2008-10-09 15:27:07 PDT
I confirm Oliver's findings, that r35963	works fine, but the nightly from r35973 fails in the same way as ToT.  Even after fixing transformed patterns that does not fix whatever bug DOOM is hitting. :(	
Comment 5 Eric Seidel (no email) 2008-10-09 15:53:22 PDT
These tests are newly busted as well:
http://philip.html5.org/tests/canvas/suite/tests/2d.pattern.paint.repeatx.basic.html
http://philip.html5.org/tests/canvas/suite/tests/2d.pattern.paint.repeatx.coord1.html

Fixing those two might fix our DOOM issues, although I kinda doubt it.
Comment 6 Oliver Hunt 2008-10-09 15:58:51 PDT
Comment on attachment 24239 [details]
Fix transformed patterns

r=me
Comment 7 Eric Seidel (no email) 2008-10-09 16:09:45 PDT
Unfortunately the tree had some sort of canvas relating crash which causes:
http://philip.html5.org/tests/canvas/suite/tests/reportgen.html?175,1
to crash, making this extra hard to debug. :(
Comment 8 Eric Seidel (no email) 2008-10-09 16:49:25 PDT
The patch of doom: http://trac.webkit.org/changeset/35966
Comment 9 Eric Seidel (no email) 2008-10-09 19:20:32 PDT
Created attachment 24248 [details]
        Reviewed by Oliver Hunt.


        Fix Canvex DOOM Game
        Gradient clips were not getting cleared after filling the
        gradient, this was causing nothing to draw in Canvex
        https://bugs.webkit.org/show_bug.cgi?id=21498

        Tests forthcoming.

        * WebCore.xcodeproj/project.pbxproj:
        * platform/graphics/cg/GraphicsContextCG.cpp:
        (WebCore::GraphicsContext::fillPath):
        (WebCore::GraphicsContext::strokePath):
        (WebCore::GraphicsContext::fillRect):
---
 WebCore/ChangeLog                                  |   17 +++++++++++++++++
 WebCore/platform/graphics/cg/GraphicsContextCG.cpp |   15 +++++++++++----
 2 files changed, 28 insertions(+), 4 deletions(-)
Comment 10 Eric Seidel (no email) 2008-10-09 19:20:33 PDT
Created attachment 24249 [details]
Test cases

 LayoutTests/ChangeLog                              |   14 ++++
 .../fast/canvas/gradient-with-clip-expected.txt    |   10 +++
 LayoutTests/fast/canvas/gradient-with-clip.html    |   13 ++++
 .../canvas/pattern-with-transform-expected.txt     |   10 +++
 .../fast/canvas/pattern-with-transform.html        |   13 ++++
 LayoutTests/fast/canvas/resources/TEMPLATE.html    |   13 ++++
 .../fast/canvas/resources/gradient-with-clip.js    |   65 ++++++++++++++++++++
 .../canvas/resources/pattern-with-transform.js     |   57 +++++++++++++++++
 WebKitTools/ChangeLog                              |    8 +++
 WebKitTools/Scripts/make-js-test-wrappers          |    1 +
 10 files changed, 204 insertions(+), 0 deletions(-)
Comment 11 Eric Seidel (no email) 2008-10-09 19:28:37 PDT
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/cg/GraphicsContextCG.cpp
Committed r37460

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/canvas/gradient-with-clip-expected.txt
	A	LayoutTests/fast/canvas/gradient-with-clip.html
	A	LayoutTests/fast/canvas/pattern-with-transform-expected.txt
	A	LayoutTests/fast/canvas/pattern-with-transform.html
	A	LayoutTests/fast/canvas/resources/TEMPLATE.html
	A	LayoutTests/fast/canvas/resources/gradient-with-clip.js
	A	LayoutTests/fast/canvas/resources/pattern-with-transform.js
	M	WebKitTools/ChangeLog
	M	WebKitTools/Scripts/make-js-test-wrappers
Committed r37461

bug 21510 still remains,but that will have to wait until after my vacation. :)
Comment 12 Oliver Hunt 2008-10-16 02:24:36 PDT
*** Bug 20665 has been marked as a duplicate of this bug. ***