Bug 239799

Summary: Avoid sending a flush IPC to the GPU process when destroying a RemoteImageBuffer
Product: WebKit Reporter: Simon Fraser (smfr) <simon.fraser>
Component: Layout and RenderingAssignee: Simon Fraser (smfr) <simon.fraser>
Status: RESOLVED FIXED    
Severity: Normal CC: bfulgham, sabouhallawa, simon.fraser, webkit-bug-importer, zalan
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=228673
Attachments:
Description Flags
Patch sabouhallawa: review+

Description Simon Fraser (smfr) 2022-04-26 20:33:23 PDT
Avoid sending a flush IPC to the GPU process when destroying a RemoteImageBuffer
Comment 1 Simon Fraser (smfr) 2022-04-26 20:36:14 PDT
Created attachment 458415 [details]
Patch
Comment 2 Said Abou-Hallawa 2022-04-26 22:39:46 PDT
Comment on attachment 458415 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=458415&action=review

> Source/WebCore/ChangeLog:8
> +        No new tests (OOPS!).

This should be removed before landing.

> Source/WebCore/platform/graphics/ImageBuffer.h:101
> +    virtual bool flushDrawingContextAsync() { return false; }

It is not clear from the name what this function returns. Should it be renamed flushDrawingContextAsyncIfNeeded()?

> Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:313
> +        return false;

The order in this function is a little bit hard to read. Can't it be rearranged like this:

// Nothing to flush, return true if we need the caller to wait.
if (!m_remoteDisplayList.needsFlush())
    return hasPendingFlush();

// Do the flushing and tell the caller to wait.
...
m_remoteDisplayList.flushContext(m_sentFlushIdentifier);
...
return true;
Comment 3 Simon Fraser (smfr) 2022-04-27 12:02:05 PDT
https://trac.webkit.org/changeset/293522/webkit
Comment 4 Radar WebKit Bug Importer 2022-04-27 12:03:14 PDT
<rdar://problem/92412491>