W3C home > Mailing lists > Public > whatwg@whatwg.org > June 2013

Re: [whatwg] Challenging canvas.supportsContext

From: James Robinson <jamesr@google.com>
Date: Wed, 19 Jun 2013 15:06:41 -0700
Message-ID: <CAD73md+dGDdYw9xYNNmqSOGDsCuTrNvOZ9yXB4VDfPdWoxsutQ@mail.gmail.com>
To: Kenneth Russell <kbr@google.com>
Cc: whatwg <whatwg@lists.whatwg.org>, Brandon Benvie <bbenvie@mozilla.com>
On Wed, Jun 19, 2013 at 3:04 PM, Kenneth Russell <kbr@google.com> wrote:

> On Wed, Jun 19, 2013 at 2:20 PM, Brandon Benvie <bbenvie@mozilla.com>
> wrote:
> > On 6/19/2013 2:05 PM, James Robinson wrote:
> >>
> >> What would a page using Modernizr (or other library) to feature detect
> >> WebGL do if the supportsContext('webgl') call succeeds but the later
> >> getContext('webgl') call fails?
> >
> >
> > I don't have an example, I was just explaining how Mozernizr is often
> used.
> >
> >
> >> I'm also failing to see the utility of the supportsContext() call.  It's
> >> impossible for a browser to promise that supportsContext('webgl')
> implies
> >> that getContext('webgl') will succeed without doing all of the expensive
> >> work, so any correctly authored page will have to handle a
> >> getContext('webgl') failure anyway.
> >
> >
> > Given this, it would seem supportsContext is completely useless. The
> whole
> > purpose of a feature detection check is to detect if a feature actually
> > works or not. Accuracy is more important than cost.
>
> supportsContext() can give a much more accurate answer than
> !!window.WebGLRenderingContext. I can only speak for Chromium, but in
> that browser, it can take into account factors such as whether the GPU
> sub-process was able to start, whether WebGL is blacklisted on the
> current card, whether WebGL is disabled on the current domain due to
> previous GPU resets, and whether WebGL initialization succeeded on any
> other page. All of these checks can be done without the heavyweight
> operation of actually creating an OpenGL context.
>

That's true, but the answer still doesn't promise anything about what
getContext() will do.  It may still return null and code will have to check
for that.  What's the use case for calling supportsContext() without
calling getContext()?

- James


> -Ken
>
Received on Wednesday, 19 June 2013 22:07:05 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:09:22 UTC