Bug 129110

Summary: An unresolved WebGL Context should operate normally until used
Product: WebKit Reporter: Dean Jackson <dino>
Component: WebGLAssignee: Dean Jackson <dino>
Status: RESOLVED FIXED    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch bfulgham: review+

Description Dean Jackson 2014-02-20 10:24:51 PST
If a WebGLRenderingContext was created in an unresolved state, then it should appear normal until it is used, at which point it needs to resolve itself.

This allows for the common use of feature detection to happen without:
- causing a blocking policy resolution
- swapping to the discrete GPU on dual GPU systems
Comment 1 Dean Jackson 2014-02-20 14:02:14 PST
Created attachment 224795 [details]
Patch
Comment 2 Dean Jackson 2014-02-20 14:07:25 PST
<rdar://problem/16072775>
Comment 3 Brent Fulgham 2014-02-20 14:51:38 PST
Comment on attachment 224795 [details]
Patch

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

The only thing I don't get here is how do we decide we are in a pending state? Does webGLPolicyForURL do something clever?

> Source/WebCore/html/canvas/WebGLRenderingContext.cpp:410
> +

Extra blank line!

> Source/WebCore/html/canvas/WebGLRenderingContext.cpp:3313
> +        // FIXME: We don't currently do anything with the result from resolution. A more

Should we have a bug filed here so we don't forget about it?

> Source/WebCore/html/canvas/WebGLRenderingContext.h:342
> +    WebGLRenderingContext(HTMLCanvasElement*, GraphicsContext3D::Attributes);

Should this special constructor be private to prevent unintentional use of it outside of the "pending" use case?
Comment 4 Dean Jackson 2014-02-20 14:57:17 PST
(In reply to comment #3)
> (From update of attachment 224795 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=224795&action=review
> 
> The only thing I don't get here is how do we decide we are in a pending state? Does webGLPolicyForURL do something clever?
> 
> > Source/WebCore/html/canvas/WebGLRenderingContext.cpp:410
> > +
> 
> Extra blank line!
> 
> > Source/WebCore/html/canvas/WebGLRenderingContext.cpp:3313
> > +        // FIXME: We don't currently do anything with the result from resolution. A more
> 
> Should we have a bug filed here so we don't forget about it?

Yes. I will file one (although I don't expect we'll fix it soon)

> 
> > Source/WebCore/html/canvas/WebGLRenderingContext.h:342
> > +    WebGLRenderingContext(HTMLCanvasElement*, GraphicsContext3D::Attributes);
> 
> Should this special constructor be private to prevent unintentional use of it outside of the "pending" use case?

It already is :)
Comment 5 Dean Jackson 2014-02-20 15:08:53 PST
Committed r164452: <http://trac.webkit.org/changeset/164452>