Enable dual source blending feature by default

This CL makes Feature::DualSourceBlending a stable feature and
cleans up outdated doc.

Bug: 341973423
Change-Id: Ib58decccb8d9b0927cd169f40be80e628a89d7ef
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/203475
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Fr <beaufort.francois@gmail.com>
diff --git a/docs/dawn/features/dual_source_blending.md b/docs/dawn/features/dual_source_blending.md
deleted file mode 100644
index 4d3220c..0000000
--- a/docs/dawn/features/dual_source_blending.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Dual Source Blending
-
-The `dual-source-blending` feature adds additional blend factors and the WGSL @blend_src attribute to allow a fragment shader to blend two color outputs into a single output buffer.
-
-This feature adds the following `wgpu::BlendFactors`:
-- `Src1`
-- `OneMinusSrc1`
-- `Src1Alpha`
-- `OneMinusSrc1Alpha`
-
-This feature introduces the @blend_src WGSL attribute. This attribute is added to a fragment output at @location(0) to denote the blending source index. You must use `enable chromium_internal_dual_source_blending` in a shader to use the @blend_src attribute.
-
-Example Fragment Shader:
-```
-    enable chromium_internal_dual_source_blending;
-
-    struct FragOut {
-        @location(0) @blend_src(0) color : vec4<f32>,
-        @location(0) @blend_src(1) blend : vec4<f32>,
-    }
-
-    @fragment fn main() -> FragOut {
-        var output : FragOut;
-        output.color = {1.0, 1.0, 1.0, 1.0};
-        output.blend = {0.5, 0.5, 0.5, 0.5};
-        return output;
-    }
-```
-
-### Restrictions:
-    - Dual source blending must occur on color attachment 0.
-    - Dual source blending makes it invalid to render to multiple render targets.
-
diff --git a/docs/tint/extensions/chromium_internal_dual_source_blending.md b/docs/tint/extensions/chromium_internal_dual_source_blending.md
deleted file mode 100644
index 9d1aa89..0000000
--- a/docs/tint/extensions/chromium_internal_dual_source_blending.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Chromium Internal Dual Source Blending
-
-The `chromium_internal_dual_source_blending` extension adds support for specifying dual-source blending outputs in fragment shaders.
-This is useful in combination with `wgpu::BlendFactor` enum values to do hardware blending for Porter-Duff gradients between others.
-
-## Status
-
-Dual source blending support in Tint is for internal use in Chromium and subprojects.
-It follows the agreed-upon design decided by the WebGPU W3C group but cannot be a stable extension until the `dual-source-blending` is added to the main WebGPU spec.
-
-## Pseudo-specification
-
-A new attribute `@blend_src(N)` (N = 0 or 1) is added that can be specified on fragment shader outputs.
-It can only be used on outputs for `@location(0)` and if one of the outputs for `@location(0)` has an `@blend_src` then they must all have one.
-
-## Example usages
-
-```
-enable chromium_internal_dual_source_blending;
-
-struct FragInput {
-  @location(0) a : vec4<f32>,
-  @location(1) b : vec4<f32>,
-};
-
-struct FragOutput {
-  @location(0) @blend_src(0) color : vec4<f32>,
-  @location(0) @blend_src(1) blend : vec4<f32>,
-};
-
-@fragment
-fn frag_main(in : FragInput) -> FragOutput {
-  var output : FragOutput;
-  output.color = in.a;
-  output.blend = in.b;
-  return output;
-}
-```
diff --git a/src/dawn/native/Features.cpp b/src/dawn/native/Features.cpp
index f802884e..074a974 100644
--- a/src/dawn/native/Features.cpp
+++ b/src/dawn/native/Features.cpp
@@ -191,9 +191,8 @@
     {Feature::DualSourceBlending,
      {"Support dual source blending. Enables Src1, OneMinusSrc1, Src1Alpha, and OneMinusSrc1Alpha "
       "blend factors along with @blend_src WGSL output attribute.",
-      "https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/dawn/features/"
-      "dual_source_blending.md",
-      FeatureInfo::FeatureState::Experimental}},
+      "https://gpuweb.github.io/gpuweb/#dom-gpufeaturename-dual-source-blending",
+      FeatureInfo::FeatureState::Stable}},
     {Feature::D3D11MultithreadProtected,
      {"Enable ID3D11Multithread protection for interop with external users of the D3D11 device.",
       "https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/dawn/features/"
diff --git a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
index a188a98..02a7c2c 100644
--- a/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
+++ b/src/dawn/tests/unittests/validation/ShaderModuleValidationTests.cpp
@@ -767,7 +767,7 @@
 
 const struct WGSLExtensionInfo kExtensions[] = {
     {"f16", false, {"shader-f16"}, {}},
-    {"dual_source_blending", true, {"dual-source-blending"}, {}},
+    {"dual_source_blending", false, {"dual-source-blending"}, {}},
     {"chromium_experimental_subgroups", true, {"chromium-experimental-subgroups"}, {}},
     {"subgroups", false, {"subgroups"}, {}},
     {"subgroups_f16", false, {"shader-f16", "subgroups", "subgroups-f16"}, {"f16", "subgroups"}},