gfx-rs/wgpu · error
Could not create shader
Error message
Could not create shader
What it means
Panic in the GLES adapter's shader-clear helper: gl.create_shader returned no shader object for the internal clear shader, indicating the GL context rejected shader creation (context lost or resource limits). The faulty input is the current GL context state.
Source
Thrown at wgpu-hal/src/gles/adapter.rs:1020
unsafe fn compile_shader(
source: &str,
gl: &glow::Context,
shader_type: u32,
es: bool,
) -> Option<glow::Shader> {
let source = if es {
format!("#version 300 es\nprecision lowp float;\n{source}")
} else {
let version = gl.version();
if version.major == 3 && version.minor == 0 {
// OpenGL 3.0 only supports this format
format!("#version 130\n{source}")
} else {
// OpenGL 3.1+ support this format
format!("#version 140\n{source}")
}
};
let shader = unsafe { gl.create_shader(shader_type) }.expect("Could not create shader");
unsafe { gl.shader_source(shader, &source) };
unsafe { gl.compile_shader(shader) };
if !unsafe { gl.get_shader_compile_status(shader) } {
let msg = unsafe { gl.get_shader_info_log(shader) };
if !msg.is_empty() {
log::error!("\tShader compile error: {msg}");
}
unsafe { gl.delete_shader(shader) };
None
} else {
Some(shader)
}
}
unsafe fn create_shader_clear_program(
gl: &glow::Context,
es: bool,View on GitHub (pinned to 3e11ff59bf)
Solutions
- Retry after the GL context is restored; check for context-loss before adapter use
- Avoid exhausting GL object limits; recreate the context if creation persistently fails
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at wgpu-hal/src/gles/adapter.rs:1020 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of gfx-rs/wgpu@3e11ff59bf (2026-09-03).
Data as JSON: /api/errors/2988ed48b3d7b902.
Report an issue: GitHub.