{"record":{"id":"d2b06f89ca30f005","repo":"gfx-rs/wgpu","slug":"not-implemented-d2b06f","errorCode":null,"errorMessage":"not implemented","messagePattern":"not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"wgpu-hal/src/gles/device.rs","lineNumber":1430,"sourceCode":"                    .max()\n                    .map_or(0, |idx| idx as usize + 1)\n            ]\n            .into_boxed_slice();\n\n            for entry in bg_layout.entries.iter() {\n                let counter = match entry.ty {\n                    wgt::BindingType::Sampler { .. } => &mut num_samplers,\n                    wgt::BindingType::Texture { .. } => &mut num_textures,\n                    wgt::BindingType::StorageTexture { .. } => &mut num_images,\n                    wgt::BindingType::Buffer {\n                        ty: wgt::BufferBindingType::Uniform,\n                        ..\n                    } => &mut num_uniform_buffers,\n                    wgt::BindingType::Buffer {\n                        ty: wgt::BufferBindingType::Storage { .. },\n                        ..\n                    } => &mut num_storage_buffers,\n                    wgt::BindingType::AccelerationStructure { .. } => unimplemented!(),\n                    wgt::BindingType::ExternalTexture => unimplemented!(),\n                };\n\n                binding_to_slot[entry.binding as usize] = *counter;\n                let br = naga::ResourceBinding {\n                    group: group_index as u32,\n                    binding: entry.binding,\n                };\n                binding_map.insert(br, *counter);\n                *counter += entry.count.map_or(1, |c| c.get() as u8);\n            }\n\n            group_infos.push(Some(super::BindGroupLayoutInfo {\n                entries: Arc::clone(&bg_layout.entries),\n                binding_to_slot,\n            }));\n        }\n","sourceCodeStart":1412,"sourceCodeEnd":1448,"githubUrl":"https://github.com/gfx-rs/wgpu/blob/3e11ff59bf3f9795d285ecc045014089640d7248/wgpu-hal/src/gles/device.rs#L1412-L1448","documentation":"create_pipeline_layout in the GLES backend panics with `unimplemented!()` when a bind group layout entry has BindingType::AccelerationStructure. OpenGL ES has no acceleration structure bindings, so the layout cannot count/map them to uniform or storage buffer slots.","triggerScenarios":"Calling device.create_pipeline_layout (or a pipeline creation that implies it) where any referenced BindGroupLayout contains a ray-tracing acceleration-structure binding on the GLES backend.","commonSituations":"Sharing bind group layout definitions between RT and raster pipelines while running on GL/WebGL; enabling ray tracing behind a feature flag that still reaches pipeline layout creation on GLES.","solutions":["Do not include AccelerationStructure bindings in layouts used with the GLES backend","Gate RT-related bind group layouts (and their pipelines) behind a backend/capability check","Use a Vulkan/DX12/Metal backend for ray-tracing pipelines"],"exampleFix":"// before\nlet layout = device.create_pipeline_layout(&wgt::PipelineLayoutDescriptor { bind_group_layouts: &[&bgl_with_tlas], .. });\n// after\nif uses_acceleration_structures(&bgl_with_tlas) && adapter_info.backend == wgt::Backend::Gl {\n    return Err(Error::RayTracingNotSupportedOnGles);\n}\nlet layout = device.create_pipeline_layout(&wgt::PipelineLayoutDescriptor { bind_group_layouts: &[&bgl_with_tlas], .. });","handlingStrategy":"validation","validationCode":"fn layout_uses_acceleration_structure(l: &wgt::PipelineLayoutDescriptor) -> bool {\n    l.bind_group_layouts.iter().flatten().any(|b| b.entries.iter().any(|e| matches!(e.ty, wgt::BindingType::AccelerationStructure { .. })))\n}","typeGuard":"fn is_acceleration_structure_ty(t: wgt::BindingType) -> bool { matches!(t, wgt::BindingType::AccelerationStructure { .. }) }","tryCatchPattern":"match device.create_pipeline_layout(&layout_desc) {\n    Ok(l) => l,\n    Err(e) => { log::error!(\"layout creation failed: {e}\"); Err(e) }\n}","preventionTips":["Separate RT bind group layouts from raster ones","Only create RT layouts on RT-capable backends","Centralize layout construction behind a capability check"],"tags":["gles","pipeline-layout","ray-tracing","unimplemented"],"backgroundTag":"gles-ray-tracing-unimplemented","analyzedSha":"3e11ff59bf3f9795d285ecc045014089640d7248","analyzedAt":"2026-09-03T01:43:21.459Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T07:17:11.731Z"}