[WebGPU] Default non-debug validation mode set to disabled (#28679)
## Summary
This PR updates WebGPU release behavior to improve default runtime
performance while preserving explicit user control over validation.
In non-debug builds, the provider enables Dawn's `skip_validation`
toggle by default **only when `validationMode` is not explicitly
configured or when explicitly configured to a mode weaker than strict
validation**. If `validationMode` is explicitly set to a stricter
validation level (> disabled), that setting is honored and
`skip_validation` is not forced.
Debug build behavior is unchanged.
## Motivation
Release users generally prioritize performance, while advanced users
need predictable diagnostic control when they explicitly request a
stronger validation mode.
This change provides a release-friendly default without removing
configurability or forcing performance penalties when users explicitly
enable validation for debugging.
## Behavior Matrix
| Build Type | validationMode Explicitly Set | Behavior |
|---|---|---|
| Debug | No | No behavior change |
| Debug | Yes | Respect explicit validationMode |
| Release | No | Enable skip_validation by default |
| Release | Yes (validationMode ≤ disabled) | Enable skip_validation |
| Release | Yes (validationMode > disabled) | Respect explicit
validationMode; do not force skip_validation |
## Implementation
- Track whether `validationMode` was explicitly provided during provider
option parsing.
- Plumb explicitness into WebGpuContext initialization.
- In non-debug builds: apply `skip_validation` default only when
`validationMode` is absent or weaker than strict validation; otherwise
honor explicit choice.
## Why this approach
- Improves release-path defaults for performance-sensitive scenarios.
- Preserves explicit override semantics for diagnostics/troubleshooting.
- Respects user intent: if they explicitly enable strong validation,
that choice is honored.
- Keeps the change narrowly scoped and low risk.
## Related PRs
- [PR](https://github.com/microsoft/onnxruntime/pull/28581) to use
direct dispatch instead of indirect dispatch in the FA kernels to
work-around the Dawn inefficiency with basic valiation mode - This is no
longer needed
- [PR](https://github.com/microsoft/onnxruntime-genai/pull/2177) fix to
create the dummy ORT session with user provided device knobs is still
needed for other knobs (validation mode is just one such knob)
## Motivation and Context
Perf improvement on **Vulkan backend** for **Qwen3-1.7B** model on a
**Windows** machine with **RTX 5060Ti** card
<img width="387" height="200" alt="image"
src="https://github.com/user-attachments/assets/f2d79200-f7cf-48cd-973c-3ba6bdf3c5da"
/>
The default state for validationMode to disabled greatly helps deocde
TPS on Vulkan as it helps reduce the indirect dispatch inefficiency on
Vulkan. There is a very small marginal improvement on D3D12 as well
although not as marked as the inefficiency with indirect dispatch on
D3D12 backend is greatly helped by D3D12's aggressive sub-allocator
pooling (something Vulkan backend lacks).
NOTE: The "Branch" perf improvement numbers also includes the fusion in
https://github.com/microsoft/onnxruntime/pull/28484 but the fusion's
decode TPS gains is under 10%. The rest are contributed by the
validationMode default.
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>