diff --git a/crates/bevy_render/src/settings.rs b/crates/bevy_render/src/settings.rs index 9db9489d21048..07eff236f5f7d 100644 --- a/crates/bevy_render/src/settings.rs +++ b/crates/bevy_render/src/settings.rs @@ -129,7 +129,18 @@ impl Default for WgpuSettings { let mut instance_flags = InstanceFlags::default(); #[cfg(not(debug_assertions))] + { + // wgpu executes additional necessary logic during validation passes for the DX12 backend, + // so the `VALIDATION_INDIRECT_CALL` flag should stay for DX12. + if !backends.is_some_and(|backends| backends.contains(Backends::DX12)) { + // Removing this flag improves performance. + instance_flags.remove(InstanceFlags::VALIDATION_INDIRECT_CALL); + } + } + #[cfg(all(not(debug_assertions), feature = "raw_vulkan_init"))] + // intending to use vulkan even if backends may contain DX12 instance_flags.remove(InstanceFlags::VALIDATION_INDIRECT_CALL); + instance_flags = instance_flags.with_env(); Self {