Add shader_features documentation for Dawn.

Note that it is pretty bare bones because the documentation should
mostly be in the Tint docs since these are shader features.

Bug: None
Change-Id: Ia24784cade0e4534afcc16cc299bd2c9bd5b3d18
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/161683
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/docs/dawn/features/shader_features.md b/docs/dawn/features/shader_features.md
new file mode 100644
index 0000000..02c8fc5
--- /dev/null
+++ b/docs/dawn/features/shader_features.md
@@ -0,0 +1,23 @@
+# Shader features
+
+New shader features require the extensions to be enabled at device creation in addition to adding a `enable` directive in the WGSL.
+This file regroups the documentation for all the Dawn-specific shader-only features.
+
+## ChromiumExperimentalDp4a
+
+This adds support for the [`chromium_experimental_dp4a`](Link to do) WGSL `enable`.
+
+## ChromiumExperimentalSubgroups
+
+This adds support for the [`chromium_experimental_subgroups`](Link to do) WGSL `enable`.
+Currently used to investigate subgroup functionality and not for general use.
+
+It also provides the `wgpu::DawnExperimentalSubgroupLimits` structure used to gather data about the subgroup minimum and maximum size on the device.
+(the limit cannot be changed when requesting a device)
+`wgpu::DawnExperimentalSubgroupLimits` is populated by chaining it to the `wgpu::SupportedLimits` in the calls to `wgpu::Adapter::GetLimits` and `wgpu::Device::GetLimits`.
+
+## ChromiumExperimentalSubgroupsUniformControlFlow
+
+Used to expose that the device supports `VK_KHR_shader_subgroup_uniform_control_flow`.
+This is only for use in the investigation of subgroup functionality.
+
diff --git a/src/dawn/native/Features.cpp b/src/dawn/native/Features.cpp
index 47fd613..e3c8f11 100644
--- a/src/dawn/native/Features.cpp
+++ b/src/dawn/native/Features.cpp
@@ -74,7 +74,7 @@
       "https://bugs.chromium.org/p/dawn/issues/detail?id=690", FeatureInfo::FeatureState::Stable}},
     {Feature::ChromiumExperimentalDp4a,
      {"Support experimental DP4a instructions in WGSL",
-      "https://bugs.chromium.org/p/tint/issues/detail?id=1497",
+      "https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/dawn/features/shader_features.md",
       FeatureInfo::FeatureState::Experimental}},
     {Feature::IndirectFirstInstance,
      {"Support non-zero first instance values on indirect draw calls",
@@ -96,12 +96,12 @@
      {"Experimental, allows using subgroup and supports the \"enable "
       "chromium_experimental_subgroups\" directive in WGSL. Only used to investigate the semantic "
       "of subgroups and should not be relied upon.",
-      "https://bugs.chromium.org/p/dawn/issues/detail?id=464",
+      "https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/dawn/features/shader_features.md",
       FeatureInfo::FeatureState::Experimental}},
     {Feature::ChromiumExperimentalSubgroupUniformControlFlow,
      {"Experimental, supports VK_KHR_shader_subgroup_uniform_control_flow on Vulkan devices. Only "
       "used to investigate the semantic of subgroups and should not be relied upon.",
-      "https://bugs.chromium.org/p/dawn/issues/detail?id=464",
+      "https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/dawn/features/shader_features.md",
       FeatureInfo::FeatureState::Experimental}},
     {Feature::DawnInternalUsages,
      {"Add internal usages to resources to affect how the texture is allocated, but not "