WebGLRenderingContext: isContextLost() method
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The
WebGLRenderingContext.isContextLost()
method returns a
boolean value indicating whether or not the WebGL context has been lost and
must be re-established before rendering can resume.
Syntax
js
isContextLost()
Parameters
None.
Return value
A boolean value which is true
if the context is lost, or
false
if not.
Usage notes
There are several reasons why a WebGL context may be lost, making it necessary to re-establish the context before resuming rendering. Examples include:
- Two or more pages are using the GPU, but together place too high a demand on the GPU, so the browser tells the two contexts that they've lost the connection, then selects one of the two to restore access for.
- The user's computer has multiple graphics processors (such as a laptop with both mobile and desktop class GPUs, the former used primarily when on battery power), and the user or system decides to switch GPUs. In this case, all contexts are lost, then restored after switching GPUs.
- Another page running in the user's browser performs an operation using the GPU that takes too long, causing the browser to decide to reset the GPU in order to break the stall. This would cause every WebGL context to be lost throughout the entire browser.
- The user updates their graphics driver on an operating system that allows graphics drivers to be updated without restarting the system.
Examples
For example, when checking for program linking success, you could also check if the context is not lost:
js
gl.linkProgram(program);
if (!gl.getProgramParameter(program, gl.LINK_STATUS) && !gl.isContextLost()) {
const info = gl.getProgramInfoLog(program);
console.log(`Error linking program:\n${info}`);
}
Specifications
Specification |
---|
WebGL Specification # 5.14.13 |
Browser compatibility
BCD tables only load in the browser
See also
- The
WebGLContextEvent
signals changes in the context state. - Handling lost context in WebGL: Khronos WebGL wiki