Bug 231427

Summary: CA Accelerated compositing compositor should not refer to WebGLLayer for contents provided layers
Product: WebKit Reporter: Kimmo Kinnunen <kkinnunen>
Component: WebGLAssignee: Kimmo Kinnunen <kkinnunen>
Status: RESOLVED CONFIGURATION CHANGED    
Severity: Normal CC: annulen, dino, ews-watchlist, gyuyoung.kim, kbr, kkinnunen, ryuan.choi, sergio, simon.fraser, thorton, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Local Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 231009    
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
none
Patch none

Description Kimmo Kinnunen 2021-10-08 07:26:16 PDT
CA Accelerated compositing compositor should not refer to WebGLLayer for contents provided layers

If it does, all contents provided layers need to be subclasses of WebGLLayer

UI side compositing for WebGL needs a hosted CA layer.
This layer cannot be the sole layer in the layer hierarchy, because the layer also needs to capture setBounds and send it to the GPU Process CALayer.
Comment 1 Kimmo Kinnunen 2021-10-08 07:36:13 PDT
Created attachment 440607 [details]
Patch
Comment 2 Kimmo Kinnunen 2021-10-08 07:37:38 PDT
Created attachment 440608 [details]
Patch
Comment 3 Kimmo Kinnunen 2021-10-08 07:41:14 PDT
Created attachment 440609 [details]
Patch
Comment 4 Kimmo Kinnunen 2021-10-08 07:43:39 PDT
Created attachment 440611 [details]
Patch
Comment 5 Kimmo Kinnunen 2021-10-11 05:28:10 PDT
Created attachment 440777 [details]
Patch
Comment 6 Tim Horton 2021-10-11 11:09:23 PDT
Comment on attachment 440777 [details]
Patch

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

> Source/WebCore/platform/graphics/ca/cocoa/WebContentsProviderLayer.h:34
> +@interface WebContentsProviderLayer : CALayer {
> +}

Get rid of random curly braces

> Source/WebCore/platform/graphics/ca/cocoa/WebContentsProviderLayer.mm:35
> +    for (CALayer* layer in self.sublayers)
> +        layer.frame = bounds;

This is pretty surprising behavior to have generically; usually I would expect this to be up to each subclass (and probably in -layoutSublayers). Alternatively like smfr suggested, use -autoresizingMask

> Source/WebCore/platform/graphics/cocoa/WebGLLayer.mm:59
> +    contentsLayer.get().transform = CATransform3DScale(CATransform3DIdentity, 1, -1, 1);

`[x set*:]` instead of .get(). (https://trac.webkit.org/changeset/283706/webkit)
Comment 7 Kimmo Kinnunen 2021-10-15 06:21:15 PDT
Comment on attachment 440777 [details]
Patch

probably not needed in this form
Comment 8 Radar WebKit Bug Importer 2021-10-15 07:27:15 PDT
<rdar://problem/84300467>