[Public WebGL] Some ARB_robustness questions

Benoit Jacob [email protected]
Thu May 26 10:37:17 PDT 2011



----- Original Message -----
> On Fri, May 13, 2011 at 6:56 AM, Benoit Jacob <[email protected]>
> wrote:
> >
> > Hi,
> >
> > Is ARB_robustness only an extension for desktop OpenGL, or is there
> > an ES version of it?
> 
> Right now it is only for desktop OpenGL. However, EGL already has a
> notion of losing the context, currently due to power management
> events. If the OpenGL ES / EGL drivers also triggered this when a
> given GPU operation took too long, then a WebGL implementation could
> build its denial of service defense on top of this mechanism. It would
> be better, though, if at least a subset of ARB_robustness were ported
> to EGL so that glGetGraphicsResetStatusARB() (which is supposed to be
> cheap) would be available.
> 
> > If there is, does anyone know how well supported ARB_robustness is
> > on mobile (Android, etc) devices?
> >
> > What about ANGLE's libGLESv2? Which is how most users get WebGL on
> > Windows. Is it possible to implement parts of ARB_robustness on top
> > of D3D9? What's the plan? Sorry if I'm missing an obvious reason why
> > that's not needed.
> 
> ANGLE exposes the EGL interface, and when Windows resets the GPU, the
> D3D9 device lost event is translated into an EGL context lost event.
> The WebGL implementation can use this as an indication that an
> "unknown" context reset occurred. Unfortunately, building on D3D, it
> isn't possible to be more precise and identify guilty vs. innocent
> contexts (to the best of my knowledge).
> 
> In Chrome, the current plan is:
> 
> - When ARB_robustness is available:
> - If a WebGL context gets a "guilty context reset" status, don't
> automatically restore it. Tell the user that WebGL caused the GPU to
> reset. Either tell them that the content won't be restored, or ask
> them if they want to continue running the content.
> - For the innocent context reset status, automatically restore the
> context.

How do you plan to implement the part where you restore the context and contine running the content? How can you restore all the GL state, including textures/shaders/buffers? Do you keep around a full copy of GL state, including textures? Or do you assume that GL state, including textures, is not corrupted?

> - For the unknown reset status, treat it the same as the guilty
> context reset status, only tell the user that WebGL *might* have
> caused the GPU to reset and ask if they want to continue running the
> content.
> 
> - On Windows with ANGLE / EGL:
> - If eglMakeCurrent fails and eglGetError returns
> EGL_CONTEXT_LOST, treat this the same as an unknown reset status with
> ARB_robustness.

Is it really needed here to check the error code? Don't you want to do that anyways, when eglMakeCurrent fails?

Benoit
-----------------------------------------------------------
You are currently subscribed to [email protected]
To unsubscribe, send an email to [email protected] with
the following command in the body of your email:
unsubscribe public_webgl
-----------------------------------------------------------




More information about the public_webgl mailing list