Bug 129110 - An unresolved WebGL Context should operate normally until used
Summary: An unresolved WebGL Context should operate normally until used
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebGL (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Dean Jackson
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-02-20 10:24 PST by Dean Jackson
Modified: 2014-02-20 15:08 PST (History)
0 users

See Also:


Attachments
Patch (82.45 KB, patch)
2014-02-20 14:02 PST, Dean Jackson
bfulgham: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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>