RESOLVED FIXED 175376
[CoordGraphics] Track dirty rects that need update in CoordinatedGraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=175376
Summary [CoordGraphics] Track dirty rects that need update in CoordinatedGraphicsLayer
Zan Dobersek
Reported 2017-08-09 04:18:16 PDT
[CoordGraphics] Track dirty rects that need update in CoordinatedGraphicsLayer
Attachments
WIP (4.70 KB, patch)
2017-08-09 04:18 PDT, Zan Dobersek
no flags
Patch (5.71 KB, patch)
2018-03-20 09:56 PDT, Zan Dobersek
no flags
Patch (5.73 KB, patch)
2018-03-21 06:13 PDT, Zan Dobersek
no flags
Zan Dobersek
Comment 1 2017-08-09 04:18:31 PDT
Zan Dobersek
Comment 2 2018-03-20 09:56:36 PDT
EWS Watchlist
Comment 3 2018-03-20 09:59:17 PDT
Attachment 336128 [details] did not pass style-queue: ERROR: Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:561: More than one command on the same line [whitespace/newline] [4] Total errors found: 1 in 3 files If any of these errors are false positives, please file a bug against check-webkit-style.
Carlos Garcia Campos
Comment 4 2018-03-21 02:04:39 PDT
Comment on attachment 336128 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=336128&action=review > Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:220 > + bool fullRect { false }; I find this name a bit confusing, I've had to read the patch several times to understand it. I guess it means the full rect is dirty, so we do nothing when it's false and dirty rects is empty right? I think that instead of using a boolean for this we could make the dirty rects vector std::optional. What do you think?
Zan Dobersek
Comment 5 2018-03-21 03:22:31 PDT
Comment on attachment 336128 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=336128&action=review >> Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:220 >> + bool fullRect { false }; > > I find this name a bit confusing, I've had to read the patch several times to understand it. I guess it means the full rect is dirty, so we do nothing when it's false and dirty rects is empty right? I think that instead of using a boolean for this we could make the dirty rects vector std::optional. What do you think? In addition to doing nothing when this is false and no other dirty rect was registered, in setNeedsDisplay() this is set to true, and any recorded rect is dropped, with the intention of redrawing the whole layer during the flush. After this is set to true, any other call to setNeedsDisplay() or setNeedsDisplayInRect() is ignored, because we don't have to bother recording anything anymore if we know the layer will be redrawn in full. Corresponding to that logic, during flush the whole backing store is invalidated if fullRect is true, otherwise we do invalidation rect-by-rect.
Zan Dobersek
Comment 6 2018-03-21 03:25:41 PDT
Comment on attachment 336128 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=336128&action=review >>> Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:220 >>> + bool fullRect { false }; >> >> I find this name a bit confusing, I've had to read the patch several times to understand it. I guess it means the full rect is dirty, so we do nothing when it's false and dirty rects is empty right? I think that instead of using a boolean for this we could make the dirty rects vector std::optional. What do you think? > > In addition to doing nothing when this is false and no other dirty rect was registered, in setNeedsDisplay() this is set to true, and any recorded rect is dropped, with the intention of redrawing the whole layer during the flush. After this is set to true, any other call to setNeedsDisplay() or setNeedsDisplayInRect() is ignored, because we don't have to bother recording anything anymore if we know the layer will be redrawn in full. > > Corresponding to that logic, during flush the whole backing store is invalidated if fullRect is true, otherwise we do invalidation rect-by-rect. I can find a better name though.
Zan Dobersek
Comment 7 2018-03-21 06:13:00 PDT
EWS Watchlist
Comment 8 2018-03-21 06:14:11 PDT
Attachment 336187 [details] did not pass style-queue: ERROR: Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:561: More than one command on the same line [whitespace/newline] [4] Total errors found: 1 in 3 files If any of these errors are false positives, please file a bug against check-webkit-style.
Zan Dobersek
Comment 9 2018-03-21 07:16:24 PDT
Comment on attachment 336187 [details] Patch Clearing flags on attachment: 336187 Committed r229804: <https://trac.webkit.org/changeset/229804>
Zan Dobersek
Comment 10 2018-03-21 07:16:28 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 11 2018-03-21 07:17:16 PDT
Note You need to log in before you can comment on or make changes to this bug.