Bug 238887

Summary: Have ImageBuffer store the RenderingPurpose, and send it to the GPU process
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   
Attachments:
Description Flags
Patch sabouhallawa: review+, ews-feeder: commit-queue-

Description Simon Fraser (smfr) 2022-04-06 13:47:36 PDT
Have ImageBuffer store the RenderingPurpose, and send it to the GPU process
Comment 1 Simon Fraser (smfr) 2022-04-06 13:50:23 PDT
Created attachment 456857 [details]
Patch
Comment 2 Said Abou-Hallawa 2022-04-06 14:21:01 PDT
Comment on attachment 456857 [details]
Patch

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

> Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:452
> +    RenderingPurpose purpose = m_imageBuffer ? m_imageBuffer->renderingPurpose() : RenderingPurpose::DOM;

I could not understand what this statement means.When can m_imageBuffer be null? And why do we use m_imageBuffer->renderingPurpose() or RenderingPurpose::DOM as the renderingPurpose of the new compatible ImageBuffer? Suppose RemoteDisplayListRecorderProxy was created for RenderingPurpose::Canvas and we are creating a compatible ImageBuffer for SVG clipper, why is this ImageBuffer created with RenderingPurpose::Canvas?
Comment 3 Simon Fraser (smfr) 2022-04-07 13:15:32 PDT
I tried plumbing RenderingPurpose through more but it got out of hand. Landing the patch with a FIXME.

https://trac.webkit.org/changeset/292557/webkit
Comment 4 Radar WebKit Bug Importer 2022-04-07 13:16:17 PDT
<rdar://problem/91440114>