WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
216982
[GPU Process] fast/canvas/canvas-composite-canvas.html and fast/canvas/canvas-composite-image.html fail
https://bugs.webkit.org/show_bug.cgi?id=216982
Summary
[GPU Process] fast/canvas/canvas-composite-canvas.html and fast/canvas/canvas...
Wenson Hsieh
Reported
2020-09-25 11:00:35 PDT
SSIA
Attachments
Patch
(11.20 KB, patch)
2020-09-25 14:03 PDT
,
Wenson Hsieh
simon.fraser
: review+
ews-feeder
: commit-queue-
Details
Formatted Diff
Diff
Update ChangeLog entry to include ImageBufferCGBitmapBackend.h
(11.25 KB, patch)
2020-09-25 14:48 PDT
,
Wenson Hsieh
no flags
Details
Formatted Diff
Diff
Patch
(12.85 KB, patch)
2020-09-25 16:10 PDT
,
Wenson Hsieh
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Wenson Hsieh
Comment 1
2020-09-25 14:03:09 PDT
Created
attachment 409735
[details]
Patch
Wenson Hsieh
Comment 2
2020-09-25 14:48:04 PDT
Created
attachment 409743
[details]
Update ChangeLog entry to include ImageBufferCGBitmapBackend.h
Wenson Hsieh
Comment 3
2020-09-25 16:10:43 PDT
Created
attachment 409754
[details]
Patch
EWS
Comment 4
2020-09-25 19:44:06 PDT
Committed
r267616
: <
https://trac.webkit.org/changeset/267616
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 409754
[details]
.
Radar WebKit Bug Importer
Comment 5
2020-09-25 19:45:42 PDT
<
rdar://problem/69607603
>
Said Abou-Hallawa
Comment 6
2020-09-26 03:18:04 PDT
I think this patch is not the right approach. These tests are also broken when "Enable Display List Drawing" is turned on. So it is a display-list rendering issue. The LayoutTests change suggests that the display-list CPU drawing for canvas is now broken and/or the coordinates are flipped. Either way this does not seem right. I think the problem is the code in setupContext() is not recorded in the display list. If we succeed in recording them, getCTM() will return the correct CTM always and the compositing bug is fixed. To do that, I would suggest the following: 1. Remove the call to setupContext() from the constructor of ImageBufferCGBitmapBackend and ImageBufferIOSurfaceBackend. 2. Make setupContext() a virtual empty method of ImageBufferBackend and override it only in ImageBufferCGBackend. 3. Make setupContext() takes a GraphicsContext argument and use it instead of using ImageBufferBackend::context(). We need to pass ImageBuffer::context() always to setupContext(). ImageBuffer::context() can be either the backend or the display list context. So if the ImageBuffer is backed by a display list, these commands will be recorded before they are applied to the backend. 2. For CPU based ImageBuffers, make the call to setupContext() in ConcreteImageBuffer::create() after creating the ImageBuffer. 5. For GPU based ImageBuffer, the call to setupContext() should happen in the WebProcess after the backend is created (i.e. RemoteImageBuffer::createBackend()). For the GPU side (i.e. RemoteImageBufferProxy), we should never call setupContext(). Flipping the coordinates should happen while replaying back the display list. So we need to implement RemoteImageBufferProxy::create() instead of calling the ConcreteImageBuffer::create().
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug