{"record":{"id":"ac24bfe8e7d00950","repo":"gfx-rs/wgpu","slug":"multi-draw-indirect-count-feature-must-be-enabled","errorCode":null,"errorMessage":"MULTI_DRAW_INDIRECT_COUNT feature must be enabled to call multi_draw_indirect_count","messagePattern":"MULTI_DRAW_INDIRECT_COUNT feature must be enabled to call multi_draw_indirect_count","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"wgpu/src/backend/webgpu.rs","lineNumber":3921,"sourceCode":"\n    fn multi_draw_mesh_tasks_indirect(\n        &mut self,\n        _indirect_buffer: &dispatch::DispatchBuffer,\n        _indirect_offset: crate::BufferAddress,\n        _count: u32,\n    ) {\n        panic!(\"MESH_SHADER feature must be enabled to call multi_draw_mesh_tasks_indirect\")\n    }\n\n    fn multi_draw_indirect_count(\n        &mut self,\n        _indirect_buffer: &dispatch::DispatchBuffer,\n        _indirect_offset: crate::BufferAddress,\n        _count_buffer: &dispatch::DispatchBuffer,\n        _count_buffer_offset: crate::BufferAddress,\n        _max_count: u32,\n    ) {\n        panic!(\n            \"MULTI_DRAW_INDIRECT_COUNT feature must be enabled to call multi_draw_indirect_count\"\n        )\n    }\n\n    fn multi_draw_indexed_indirect_count(\n        &mut self,\n        _indirect_buffer: &dispatch::DispatchBuffer,\n        _indirect_offset: crate::BufferAddress,\n        _count_buffer: &dispatch::DispatchBuffer,\n        _count_buffer_offset: crate::BufferAddress,\n        _max_count: u32,\n    ) {\n        panic!(\"MULTI_DRAW_INDIRECT_COUNT feature must be enabled to call multi_draw_indexed_indirect_count\")\n    }\n\n    fn multi_draw_mesh_tasks_indirect_count(\n        &mut self,\n        _indirect_buffer: &dispatch::DispatchBuffer,","sourceCodeStart":3903,"sourceCodeEnd":3939,"githubUrl":"https://github.com/gfx-rs/wgpu/blob/3e11ff59bf3f9795d285ecc045014089640d7248/wgpu/src/backend/webgpu.rs#L3903-L3939","documentation":"multi_draw_indirect_count (batched indirect draws with a GPU-side count) is not implemented by the WebGPU backend, so wgpu panics. The MULTI_DRAW_INDIRECT_COUNT feature must be enabled and a native backend used.","triggerScenarios":"Calling render_pass.multi_draw_indirect_count(indirect_buffer, offset, count_buffer, count_offset, max_count) on the webgpu backend, or on a native backend where Features::MULTI_DRAW_INDIRECT_COUNT was not requested at device creation.","commonSituations":"GPU-driven rendering with compute-produced draw counts compiled to wasm; device creation omitting the feature from required_features; code assuming the feature exists on all native adapters.","solutions":["Request Features::MULTI_DRAW_INDIRECT_COUNT in required_features and verify adapter.features() before use.","Emulate on web with a loop of draw_indirect using a CPU-side count.","Use plain multi_draw_indirect with a CPU-known count when the feature is unavailable.","Pick a rendering strategy at device creation that avoids count-driven indirect draws on unsupported backends."],"exampleFix":"// before\nrender_pass.multi_draw_indirect_count(&buf, 0, &count_buf, 0, max);\n// after\nif features.contains(Features::MULTI_DRAW_INDIRECT_COUNT) && !is_webgpu {\n    render_pass.multi_draw_indirect_count(&buf, 0, &count_buf, 0, max);\n} else {\n    render_pass.multi_draw_indirect(&buf, 0, cpu_count);\n}","handlingStrategy":"validation","validationCode":"let ok = device.features().contains(Features::MULTI_DRAW_INDIRECT_COUNT) && !is_webgpu_backend;\nif ok { render_pass.multi_draw_indirect_count(&buf, 0, &cb, 0, max); } else { render_pass.multi_draw_indirect(&buf, 0, cpu_count); }","typeGuard":"fn supports_multi_draw_indirect_count(f: Features, b: Backend) -> bool {\n    f.contains(Features::MULTI_DRAW_INDIRECT_COUNT) && b != Backend::Browser\n}","tryCatchPattern":null,"preventionTips":["Request MULTI_DRAW_INDIRECT_COUNT explicitly in required_features.","Verify feature presence from adapter.features() before enabling count-driven draws.","Maintain a CPU-count fallback path for web and minimal hardware.","Review device-creation feature lists when adding new draw APIs."],"tags":["panic","webgpu","indirect-draw","feature-flag","unsupported-feature"],"backgroundTag":"unsupported-feature-panic","analyzedSha":"3e11ff59bf3f9795d285ecc045014089640d7248","analyzedAt":"2026-09-03T01:43:21.459Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T07:17:11.731Z"}