Add gn_v2 Win/x64/Release/SwS builders

Adds the following gn_v2 CI builders and their manual trybot mirrors:
* dawn-win-x64-builder-rel
* dawn-win-x64-sws-rel

A fuzz builder is not added since there is no equivalent coverage of
that from the older standalone Windows builders.

Test will be enabled in a follow-up CL.

Bug: 385317083
Change-Id: I4425a141015823c057618dfeee268023cba05dd8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/261796
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@google.com>
diff --git a/infra/config/global/generated/builders/ci/dawn-win-x64-builder-rel/gn-args.json b/infra/config/global/generated/builders/ci/dawn-win-x64-builder-rel/gn-args.json
new file mode 100644
index 0000000..6a8e2e6
--- /dev/null
+++ b/infra/config/global/generated/builders/ci/dawn-win-x64-builder-rel/gn-args.json
@@ -0,0 +1,20 @@
+{
+  "gn_args": {
+    "dawn_build_node_bindings": true,
+    "dawn_use_swiftshader": true,
+    "is_clang": true,
+    "is_component_build": true,
+    "is_debug": false,
+    "target_cpu": "x64",
+    "target_os": "win",
+    "tint_build_hlsl_writer": true,
+    "tint_build_msl_writer": true,
+    "tint_build_spv_reader": true,
+    "tint_build_spv_writer": true,
+    "tint_build_wgsl_reader": true,
+    "tint_build_wgsl_writer": true,
+    "use_reclient": false,
+    "use_remoteexec": true,
+    "use_siso": true
+  }
+}
\ No newline at end of file
diff --git a/infra/config/global/generated/builders/gn_args_locations.json b/infra/config/global/generated/builders/gn_args_locations.json
index 02bec1e..f49bd93 100644
--- a/infra/config/global/generated/builders/gn_args_locations.json
+++ b/infra/config/global/generated/builders/gn_args_locations.json
@@ -5,7 +5,8 @@
     "dawn-linux-x64-fuzz-dbg": "ci/dawn-linux-x64-fuzz-dbg/gn-args.json",
     "dawn-linux-x64-fuzz-rel": "ci/dawn-linux-x64-fuzz-rel/gn-args.json",
     "dawn-linux-x86-builder-rel": "ci/dawn-linux-x86-builder-rel/gn-args.json",
-    "dawn-linux-x86-fuzz-rel": "ci/dawn-linux-x86-fuzz-rel/gn-args.json"
+    "dawn-linux-x86-fuzz-rel": "ci/dawn-linux-x86-fuzz-rel/gn-args.json",
+    "dawn-win-x64-builder-rel": "ci/dawn-win-x64-builder-rel/gn-args.json"
   },
   "try": {
     "dawn-cq-linux-x64-fuzz-rel": "try/dawn-cq-linux-x64-fuzz-rel/gn-args.json",
@@ -15,6 +16,7 @@
     "dawn-try-linux-x64-sws-dbg": "try/dawn-try-linux-x64-sws-dbg/gn-args.json",
     "dawn-try-linux-x64-sws-rel": "try/dawn-try-linux-x64-sws-rel/gn-args.json",
     "dawn-try-linux-x86-fuzz-rel": "try/dawn-try-linux-x86-fuzz-rel/gn-args.json",
-    "dawn-try-linux-x86-sws-rel": "try/dawn-try-linux-x86-sws-rel/gn-args.json"
+    "dawn-try-linux-x86-sws-rel": "try/dawn-try-linux-x86-sws-rel/gn-args.json",
+    "dawn-try-win-x64-sws-rel": "try/dawn-try-win-x64-sws-rel/gn-args.json"
   }
 }
\ No newline at end of file
diff --git a/infra/config/global/generated/builders/try/dawn-try-win-x64-sws-rel/gn-args.json b/infra/config/global/generated/builders/try/dawn-try-win-x64-sws-rel/gn-args.json
new file mode 100644
index 0000000..6a8e2e6
--- /dev/null
+++ b/infra/config/global/generated/builders/try/dawn-try-win-x64-sws-rel/gn-args.json
@@ -0,0 +1,20 @@
+{
+  "gn_args": {
+    "dawn_build_node_bindings": true,
+    "dawn_use_swiftshader": true,
+    "is_clang": true,
+    "is_component_build": true,
+    "is_debug": false,
+    "target_cpu": "x64",
+    "target_os": "win",
+    "tint_build_hlsl_writer": true,
+    "tint_build_msl_writer": true,
+    "tint_build_spv_reader": true,
+    "tint_build_spv_writer": true,
+    "tint_build_wgsl_reader": true,
+    "tint_build_wgsl_writer": true,
+    "use_reclient": false,
+    "use_remoteexec": true,
+    "use_siso": true
+  }
+}
\ No newline at end of file
diff --git a/infra/config/global/generated/luci/commit-queue.cfg b/infra/config/global/generated/luci/commit-queue.cfg
index cd65cd6..28ed5f2 100644
--- a/infra/config/global/generated/luci/commit-queue.cfg
+++ b/infra/config/global/generated/luci/commit-queue.cfg
@@ -538,6 +538,11 @@
         disable_reuse_footers: "Include-Ci-Only-Tests"
       }
       builders {
+        name: "dawn/try/dawn-try-win-x64-sws-rel"
+        includable_only: true
+        disable_reuse_footers: "Include-Ci-Only-Tests"
+      }
+      builders {
         name: "dawn/try/linux-clang-dbg-x64"
         location_filters {
           gerrit_host_regexp: ".*"
diff --git a/infra/config/global/generated/luci/cr-buildbucket.cfg b/infra/config/global/generated/luci/cr-buildbucket.cfg
index 73c125c..982b0c0 100644
--- a/infra/config/global/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/global/generated/luci/cr-buildbucket.cfg
@@ -2226,6 +2226,332 @@
       }
     }
     builders {
+      name: "dawn-win-x64-builder-rel"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builderless:1"
+      dimensions: "cores:8"
+      dimensions: "os:Windows-10"
+      dimensions: "pool:luci.chromium.gpu.ci"
+      dimensions: "ssd:0"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$build/chromium_tests_builder_config": {'
+        '    "builder_config": {'
+        '      "additional_exclusions": ['
+        '        "infra/config/generated/builders/ci/dawn-win-x64-builder-rel/gn-args.json"'
+        '      ],'
+        '      "builder_db": {'
+        '        "entries": ['
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-builder-rel",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "COMPILE_AND_TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Release",'
+        '                "config": "dawn_base",'
+        '                "target_arch": "intel",'
+        '                "target_bits": 64,'
+        '                "target_platform": "win"'
+        '              },'
+        '              "legacy_gclient_config": {'
+        '                "apply_configs": ['
+        '                  "dawn_node"'
+        '                ],'
+        '                "config": "dawn"'
+        '              }'
+        '            }'
+        '          },'
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-sws-rel",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Release",'
+        '                "config": "dawn_base",'
+        '                "target_arch": "intel",'
+        '                "target_bits": 64,'
+        '                "target_platform": "win"'
+        '              },'
+        '              "legacy_gclient_config": {'
+        '                "config": "dawn"'
+        '              },'
+        '              "parent": {'
+        '                "bucket": "ci",'
+        '                "builder": "dawn-win-x64-builder-rel",'
+        '                "project": "dawn"'
+        '              },'
+        '              "run_tests_serially": true'
+        '            }'
+        '          }'
+        '        ]'
+        '      },'
+        '      "builder_ids": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-builder-rel",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "builder_ids_in_scope_for_testing": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-sws-rel",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "mirroring_builder_group_and_names": ['
+        '        {'
+        '          "builder": "dawn-try-win-x64-sws-rel",'
+        '          "group": "try"'
+        '        }'
+        '      ]'
+        '    }'
+        '  },'
+        '  "$build/siso": {'
+        '    "configs": ['
+        '      "builder"'
+        '    ],'
+        '    "enable_cloud_monitoring": true,'
+        '    "enable_cloud_profiler": true,'
+        '    "enable_cloud_trace": true,'
+        '    "experiments": [],'
+        '    "metrics_project": "chromium-reclient-metrics",'
+        '    "project": "rbe-chromium-trusted",'
+        '    "remote_jobs": 250'
+        '  },'
+        '  "builder_group": "ci",'
+        '  "recipe": "dawn/gn_v2"'
+        '}'
+      build_numbers: YES
+      service_account: "dawn-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "chromium.use_per_builder_build_dir_name"
+        value: 100
+      }
+      resultdb {
+        enable: true
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "ci_test_results"
+          test_results {}
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "gpu_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome|content)/test:telemetry_gpu_integration_test[^/]*/.+"
+            }
+          }
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "blink_web_tests_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)|(ninja://[^/]*headless_shell_wpt/.+)"
+            }
+          }
+        }
+        history_options {
+          use_invocation_timestamp: true
+        }
+      }
+      description_html: "Compiles release Dawn test binaries for Windows/x64<br/>This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/dawn/builders/try/dawn-try-win-x64-sws-rel\">dawn-try-win-x64-sws-rel</a></li></ul><br/>Builder owner: <a href=mailto:chrome-gpu-infra@google.com>chrome-gpu-infra@google.com</a>"
+      shadow_builder_adjustments {
+        service_account: "dawn-try-builder@chops-service-accounts.iam.gserviceaccount.com"
+      }
+      contact_team_email: "chrome-gpu-infra@google.com"
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/cached_count"
+        predicates: "has(build.output.properties.is_cached)"
+        predicates: "string(build.output.properties.is_cached) == \"true\""
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/ran_tests_retry_shard_count"
+        predicates: "has(build.output.properties.ran_tests_retry_shard)"
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/ran_tests_without_patch_count"
+        predicates: "has(build.output.properties.ran_tests_without_patch)"
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/uncached_count"
+        predicates: "has(build.output.properties.is_cached)"
+        predicates: "string(build.output.properties.is_cached) == \"false\""
+      }
+    }
+    builders {
+      name: "dawn-win-x64-sws-rel"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builderless:1"
+      dimensions: "cores:2"
+      dimensions: "os:Ubuntu-22.04"
+      dimensions: "pool:luci.chromium.gpu.ci"
+      dimensions: "ssd:0"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$build/chromium_tests_builder_config": {'
+        '    "builder_config": {'
+        '      "builder_db": {'
+        '        "entries": ['
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-builder-rel",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "COMPILE_AND_TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Release",'
+        '                "config": "dawn_base",'
+        '                "target_arch": "intel",'
+        '                "target_bits": 64,'
+        '                "target_platform": "win"'
+        '              },'
+        '              "legacy_gclient_config": {'
+        '                "apply_configs": ['
+        '                  "dawn_node"'
+        '                ],'
+        '                "config": "dawn"'
+        '              }'
+        '            }'
+        '          },'
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-sws-rel",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Release",'
+        '                "config": "dawn_base",'
+        '                "target_arch": "intel",'
+        '                "target_bits": 64,'
+        '                "target_platform": "win"'
+        '              },'
+        '              "legacy_gclient_config": {'
+        '                "config": "dawn"'
+        '              },'
+        '              "parent": {'
+        '                "bucket": "ci",'
+        '                "builder": "dawn-win-x64-builder-rel",'
+        '                "project": "dawn"'
+        '              },'
+        '              "run_tests_serially": true'
+        '            }'
+        '          }'
+        '        ]'
+        '      },'
+        '      "builder_ids": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-sws-rel",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "mirroring_builder_group_and_names": ['
+        '        {'
+        '          "builder": "dawn-try-win-x64-sws-rel",'
+        '          "group": "try"'
+        '        }'
+        '      ]'
+        '    }'
+        '  },'
+        '  "builder_group": "ci",'
+        '  "recipe": "dawn/gn_v2"'
+        '}'
+      build_numbers: YES
+      service_account: "dawn-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "chromium.use_per_builder_build_dir_name"
+        value: 100
+      }
+      resultdb {
+        enable: true
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "ci_test_results"
+          test_results {}
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "gpu_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome|content)/test:telemetry_gpu_integration_test[^/]*/.+"
+            }
+          }
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "blink_web_tests_ci_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)|(ninja://[^/]*headless_shell_wpt/.+)"
+            }
+          }
+        }
+        history_options {
+          use_invocation_timestamp: true
+        }
+      }
+      description_html: "Tests release Dawn on Windows/x64 with SwiftShader<br/>This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/dawn/builders/try/dawn-try-win-x64-sws-rel\">dawn-try-win-x64-sws-rel</a></li></ul><br/>Builder owner: <a href=mailto:chrome-gpu-infra@google.com>chrome-gpu-infra@google.com</a>"
+      shadow_builder_adjustments {
+        service_account: "dawn-try-builder@chops-service-accounts.iam.gserviceaccount.com"
+      }
+      contact_team_email: "chrome-gpu-infra@google.com"
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/cached_count"
+        predicates: "has(build.output.properties.is_cached)"
+        predicates: "string(build.output.properties.is_cached) == \"true\""
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/ran_tests_retry_shard_count"
+        predicates: "has(build.output.properties.ran_tests_retry_shard)"
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/ran_tests_without_patch_count"
+        predicates: "has(build.output.properties.ran_tests_without_patch)"
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/uncached_count"
+        predicates: "has(build.output.properties.is_cached)"
+        predicates: "string(build.output.properties.is_cached) == \"false\""
+      }
+    }
+    builders {
       name: "linux-clang-dbg-x64"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "cpu:x86-64"
@@ -4557,6 +4883,170 @@
       max_concurrent_builds: 1
     }
     builders {
+      name: "dawn-try-win-x64-sws-rel"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builderless:1"
+      dimensions: "os:Windows-10"
+      dimensions: "pool:luci.chromium.gpu.try"
+      exe {
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
+        cipd_version: "refs/heads/main"
+        cmd: "luciexe"
+      }
+      properties:
+        '{'
+        '  "$build/chromium_tests_builder_config": {'
+        '    "builder_config": {'
+        '      "additional_exclusions": ['
+        '        "infra/config/generated/builders/try/dawn-try-win-x64-sws-rel/gn-args.json"'
+        '      ],'
+        '      "builder_db": {'
+        '        "entries": ['
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-builder-rel",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "COMPILE_AND_TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Release",'
+        '                "config": "dawn_base",'
+        '                "target_arch": "intel",'
+        '                "target_bits": 64,'
+        '                "target_platform": "win"'
+        '              },'
+        '              "legacy_gclient_config": {'
+        '                "apply_configs": ['
+        '                  "dawn_node"'
+        '                ],'
+        '                "config": "dawn"'
+        '              }'
+        '            }'
+        '          },'
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-sws-rel",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Release",'
+        '                "config": "dawn_base",'
+        '                "target_arch": "intel",'
+        '                "target_bits": 64,'
+        '                "target_platform": "win"'
+        '              },'
+        '              "legacy_gclient_config": {'
+        '                "config": "dawn"'
+        '              },'
+        '              "parent": {'
+        '                "bucket": "ci",'
+        '                "builder": "dawn-win-x64-builder-rel",'
+        '                "project": "dawn"'
+        '              },'
+        '              "run_tests_serially": true'
+        '            }'
+        '          }'
+        '        ]'
+        '      },'
+        '      "builder_ids": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-builder-rel",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "builder_ids_in_scope_for_testing": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-sws-rel",'
+        '          "project": "dawn"'
+        '        }'
+        '      ]'
+        '    }'
+        '  },'
+        '  "$build/siso": {'
+        '    "configs": ['
+        '      "builder"'
+        '    ],'
+        '    "enable_cloud_monitoring": true,'
+        '    "enable_cloud_profiler": true,'
+        '    "enable_cloud_trace": true,'
+        '    "experiments": [],'
+        '    "metrics_project": "chromium-reclient-metrics",'
+        '    "project": "rbe-chromium-untrusted",'
+        '    "remote_jobs": 250'
+        '  },'
+        '  "builder_group": "try",'
+        '  "recipe": "dawn/gn_v2_trybot"'
+        '}'
+      build_numbers: YES
+      service_account: "dawn-try-builder@chops-service-accounts.iam.gserviceaccount.com"
+      experiments {
+        key: "chromium.use_per_builder_build_dir_name"
+        value: 100
+      }
+      resultdb {
+        enable: true
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "try_test_results"
+          test_results {}
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "gpu_try_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "ninja://(chrome|content)/test:telemetry_gpu_integration_test[^/]*/.+"
+            }
+          }
+        }
+        bq_exports {
+          project: "chrome-luci-data"
+          dataset: "chromium"
+          table: "blink_web_tests_try_test_results"
+          test_results {
+            predicate {
+              test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)|(ninja://[^/]*headless_shell_wpt/.+)"
+            }
+          }
+        }
+        history_options {
+          use_invocation_timestamp: true
+        }
+      }
+      description_html: "Tests release Dawn on Windows/x64 with SwiftShader. Manual only.<br/>This builder mirrors the following CI builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/dawn/builders/ci/dawn-win-x64-builder-rel\">dawn-win-x64-builder-rel</a></li><li><a href=\"https://ci.chromium.org/p/dawn/builders/ci/dawn-win-x64-sws-rel\">dawn-win-x64-sws-rel</a></li></ul><br/>Builder owner: <a href=mailto:chrome-gpu-infra@google.com>chrome-gpu-infra@google.com</a>"
+      contact_team_email: "chrome-gpu-infra@google.com"
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/cached_count"
+        predicates: "has(build.output.properties.is_cached)"
+        predicates: "string(build.output.properties.is_cached) == \"true\""
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/ran_tests_retry_shard_count"
+        predicates: "has(build.output.properties.ran_tests_retry_shard)"
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/ran_tests_without_patch_count"
+        predicates: "has(build.output.properties.ran_tests_without_patch)"
+      }
+      custom_metric_definitions {
+        name: "/chrome/infra/browser/builds/uncached_count"
+        predicates: "has(build.output.properties.is_cached)"
+        predicates: "string(build.output.properties.is_cached) == \"false\""
+      }
+      max_concurrent_builds: 1
+    }
+    builders {
       name: "linux-clang-dbg-x64"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "cpu:x86-64"
diff --git a/infra/config/global/generated/luci/luci-milo.cfg b/infra/config/global/generated/luci/luci-milo.cfg
index 2d2b16d..1d83ef2 100644
--- a/infra/config/global/generated/luci/luci-milo.cfg
+++ b/infra/config/global/generated/luci/luci-milo.cfg
@@ -131,6 +131,11 @@
     short_name: "rel"
   }
   builders {
+    name: "buildbucket/luci.dawn.ci/dawn-win-x64-builder-rel"
+    category: "win|build|clang|rel"
+    short_name: "x64"
+  }
+  builders {
     name: "buildbucket/luci.dawn.ci/win-clang-dbg-x64"
     category: "win|clang|dbg"
     short_name: "x64"
@@ -170,6 +175,11 @@
     category: "win|msvc"
     short_name: "rel"
   }
+  builders {
+    name: "buildbucket/luci.dawn.ci/dawn-win-x64-sws-rel"
+    category: "win|test|clang|rel|x64"
+    short_name: "sws"
+  }
 }
 consoles {
   id: "try"
@@ -229,6 +239,9 @@
     name: "buildbucket/luci.dawn.try/dawn-try-linux-x86-sws-rel"
   }
   builders {
+    name: "buildbucket/luci.dawn.try/dawn-try-win-x64-sws-rel"
+  }
+  builders {
     name: "buildbucket/luci.dawn.try/linux-clang-dbg-x64"
   }
   builders {
diff --git a/infra/config/global/generated/luci/luci-scheduler.cfg b/infra/config/global/generated/luci/luci-scheduler.cfg
index 8385d29..da75f64 100644
--- a/infra/config/global/generated/luci/luci-scheduler.cfg
+++ b/infra/config/global/generated/luci/luci-scheduler.cfg
@@ -202,6 +202,25 @@
   }
 }
 job {
+  id: "dawn-win-x64-builder-rel"
+  realm: "ci"
+  schedule: "triggered"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "ci"
+    builder: "dawn-win-x64-builder-rel"
+  }
+}
+job {
+  id: "dawn-win-x64-sws-rel"
+  realm: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "ci"
+    builder: "dawn-win-x64-sws-rel"
+  }
+}
+job {
   id: "linux-clang-dbg-x64"
   realm: "ci"
   buildbucket {
@@ -319,6 +338,7 @@
   triggers: "dawn-linux-x64-fuzz-rel"
   triggers: "dawn-linux-x86-builder-rel"
   triggers: "dawn-linux-x86-fuzz-rel"
+  triggers: "dawn-win-x64-builder-rel"
   triggers: "linux-clang-dbg-x64"
   triggers: "linux-clang-dbg-x86"
   triggers: "linux-clang-rel-x86"
diff --git a/infra/config/global/generated/luci/realms.cfg b/infra/config/global/generated/luci/realms.cfg
index b5ce5db..b9addba 100644
--- a/infra/config/global/generated/luci/realms.cfg
+++ b/infra/config/global/generated/luci/realms.cfg
@@ -76,6 +76,7 @@
         values: "dawn-linux-x64-sws-dbg"
         values: "dawn-linux-x64-sws-rel"
         values: "dawn-linux-x86-sws-rel"
+        values: "dawn-win-x64-sws-rel"
       }
     }
   }
diff --git a/infra/config/global/gn_args.star b/infra/config/global/gn_args.star
index b4b226a..14d8716 100644
--- a/infra/config/global/gn_args.star
+++ b/infra/config/global/gn_args.star
@@ -181,6 +181,26 @@
 )
 
 gn_args.config(
+    name = "win",
+    args = {
+        "target_os": "win",
+    },
+)
+
+gn_args.config(
+    name = "win_clang",
+    configs = [
+        "clang",
+        "siso",
+        "tint_hlsl_writer",
+        "tint_msl_writer",
+        "tint_spv_reader_writer",
+        "tint_wgsl_reader_writer",
+        "win",
+    ],
+)
+
+gn_args.config(
     name = "x64",
     args = {
         "target_cpu": "x64",
diff --git a/infra/config/global/gn_standalone_ci.star b/infra/config/global/gn_standalone_ci.star
index ea0b1e7..3c7e9a1 100644
--- a/infra/config/global/gn_standalone_ci.star
+++ b/infra/config/global/gn_standalone_ci.star
@@ -49,6 +49,10 @@
     thin_tester_cores = 2,
 )
 
+################################################################################
+# Parent Builders                                                              #
+################################################################################
+
 ci.builder(
     name = "dawn-linux-x64-builder-dbg",
     description_html = "Compile debug Dawn test binaries for Linux/x64",
@@ -124,39 +128,6 @@
 )
 
 ci.builder(
-    name = "dawn-linux-x64-fuzz-dbg",
-    description_html = "Compiles and runs debug Dawn binaries for 'tools/run fuzz' for Linux/x64",
-    schedule = "triggered",
-    builder_spec = builder_config.builder_spec(
-        gclient_config = builder_config.gclient_config(
-            config = "dawn",
-        ),
-        chromium_config = builder_config.chromium_config(
-            config = "dawn_base",
-            build_config = builder_config.build_config.DEBUG,
-            target_arch = builder_config.target_arch.INTEL,
-            target_bits = 64,
-            target_platform = builder_config.target_platform.LINUX,
-        ),
-    ),
-    gn_args = gn_args.config(
-        configs = [
-            "libfuzzer",
-            "linux_clang",
-            "non_component",
-            "debug",
-            "x64",
-        ],
-    ),
-    cores = 8,
-    os = os.LINUX_DEFAULT,
-    console_view_entry = consoles.console_view_entry(
-        category = "linux|build|clang|dbg|fuzz",
-        short_name = "x64",
-    ),
-)
-
-ci.builder(
     name = "dawn-linux-x86-builder-rel",
     description_html = "Compiles release Dawn test binaries for Linux/x86",
     schedule = "triggered",
@@ -192,6 +163,80 @@
 )
 
 ci.builder(
+    name = "dawn-win-x64-builder-rel",
+    description_html = "Compiles release Dawn test binaries for Windows/x64",
+    schedule = "triggered",
+    builder_spec = builder_config.builder_spec(
+        gclient_config = builder_config.gclient_config(
+            config = "dawn",
+            apply_configs = [
+                "dawn_node",
+            ],
+        ),
+        chromium_config = builder_config.chromium_config(
+            config = "dawn_base",
+            build_config = builder_config.build_config.RELEASE,
+            target_arch = builder_config.target_arch.INTEL,
+            target_bits = 64,
+            target_platform = builder_config.target_platform.WIN,
+        ),
+    ),
+    gn_args = gn_args.config(
+        configs = [
+            "component",
+            "dawn_node_bindings",
+            "dawn_swiftshader",
+            "release",
+            "win_clang",
+            "x64",
+        ],
+    ),
+    cores = 8,
+    os = os.WINDOWS_DEFAULT,
+    console_view_entry = consoles.console_view_entry(
+        category = "win|build|clang|rel",
+        short_name = "x64",
+    ),
+)
+
+################################################################################
+# Fuzz Builders                                                                #
+################################################################################
+
+ci.builder(
+    name = "dawn-linux-x64-fuzz-dbg",
+    description_html = "Compiles and runs debug Dawn binaries for 'tools/run fuzz' for Linux/x64",
+    schedule = "triggered",
+    builder_spec = builder_config.builder_spec(
+        gclient_config = builder_config.gclient_config(
+            config = "dawn",
+        ),
+        chromium_config = builder_config.chromium_config(
+            config = "dawn_base",
+            build_config = builder_config.build_config.DEBUG,
+            target_arch = builder_config.target_arch.INTEL,
+            target_bits = 64,
+            target_platform = builder_config.target_platform.LINUX,
+        ),
+    ),
+    gn_args = gn_args.config(
+        configs = [
+            "libfuzzer",
+            "linux_clang",
+            "non_component",
+            "debug",
+            "x64",
+        ],
+    ),
+    cores = 8,
+    os = os.LINUX_DEFAULT,
+    console_view_entry = consoles.console_view_entry(
+        category = "linux|build|clang|dbg|fuzz",
+        short_name = "x64",
+    ),
+)
+
+ci.builder(
     name = "dawn-linux-x64-fuzz-rel",
     description_html = "Compiles and runs release Dawn binaries for 'tools/run fuzz' for Linux/x64",
     schedule = "triggered",
@@ -257,6 +302,10 @@
     ),
 )
 
+################################################################################
+# Child Testers                                                                #
+################################################################################
+
 ci.thin_tester(
     name = "dawn-linux-x64-sws-dbg",
     description_html = "Tests debug Dawn on Linux/x64 with SwiftShader",
@@ -328,3 +377,27 @@
         short_name = "sws",
     ),
 )
+
+ci.thin_tester(
+    name = "dawn-win-x64-sws-rel",
+    description_html = "Tests release Dawn on Windows/x64 with SwiftShader",
+    parent = "dawn-win-x64-builder-rel",
+    builder_spec = builder_config.builder_spec(
+        execution_mode = builder_config.execution_mode.TEST,
+        gclient_config = builder_config.gclient_config(
+            config = "dawn",
+        ),
+        chromium_config = builder_config.chromium_config(
+            config = "dawn_base",
+            build_config = builder_config.build_config.RELEASE,
+            target_arch = builder_config.target_arch.INTEL,
+            target_bits = 64,
+            target_platform = builder_config.target_platform.WIN,
+        ),
+        run_tests_serially = True,
+    ),
+    console_view_entry = consoles.console_view_entry(
+        category = "win|test|clang|rel|x64",
+        short_name = "sws",
+    ),
+)
diff --git a/infra/config/global/gn_standalone_try.star b/infra/config/global/gn_standalone_try.star
index 7ea8321..c2e2e16 100644
--- a/infra/config/global/gn_standalone_try.star
+++ b/infra/config/global/gn_standalone_try.star
@@ -47,7 +47,9 @@
     siso_remote_jobs = siso.remote_jobs.DEFAULT,
 )
 
-# CQ Builders
+################################################################################
+# CQ Builders                                                                  #
+################################################################################
 
 try_.builder(
     name = "dawn-cq-linux-x64-rel",
@@ -80,7 +82,9 @@
     ),
 )
 
-# Manual trybots
+################################################################################
+# Manual Trybots                                                               #
+################################################################################
 
 def dawn_linux_manual_builder(*, name, **kwargs):
     return try_.builder(
@@ -91,6 +95,17 @@
         **kwargs
     )
 
+def dawn_win_manual_builder(*, name, **kwargs):
+    return try_.builder(
+        name = name,
+        max_concurrent_builds = 1,
+        os = os.WINDOWS_DEFAULT,
+        # This can be changed to prefer SSDs once the GPU Windows GCE fleet has
+        # been switched to primarily using SSDs.
+        ssd = None,
+        **kwargs
+    )
+
 dawn_linux_manual_builder(
     name = "dawn-try-linux-x64-sws-dbg",
     description_html = "Tests debug Dawn on Linux/x64 with SwiftShader. Manual only.",
@@ -147,3 +162,13 @@
     ],
     gn_args = "ci/dawn-linux-x86-fuzz-rel",
 )
+
+dawn_win_manual_builder(
+    name = "dawn-try-win-x64-sws-rel",
+    description_html = "Tests release Dawn on Windows/x64 with SwiftShader. Manual only.",
+    mirrors = [
+        "ci/dawn-win-x64-builder-rel",
+        "ci/dawn-win-x64-sws-rel",
+    ],
+    gn_args = "ci/dawn-win-x64-builder-rel",
+)
diff --git a/infra/specs/ci.json b/infra/specs/ci.json
index 4489a05..efd87a9 100644
--- a/infra/specs/ci.json
+++ b/infra/specs/ci.json
@@ -163,5 +163,6 @@
     ]
   },
   "dawn-linux-x86-fuzz-rel": {},
-  "dawn-linux-x86-sws-rel": {}
+  "dawn-linux-x86-sws-rel": {},
+  "dawn-win-x64-sws-rel": {}
 }
diff --git a/infra/specs/mixins.pyl b/infra/specs/mixins.pyl
index 7d4bd0d..44bd816 100644
--- a/infra/specs/mixins.pyl
+++ b/infra/specs/mixins.pyl
@@ -48,5 +48,6 @@
   'result_adapter_gtest_json': {'resultdb': {'result_format': 'gtest_json'}},
   'swarming_containment_auto': { 'fail_if_unused': False,
                                  'swarming': {'containment_type': 'AUTO'}},
+  'win10': {'swarming': {'dimensions': {'os': 'Windows-10-19045'}}},
   'x86-64': { 'fail_if_unused': False,
               'swarming': {'dimensions': {'cpu': 'x86-64'}}}}
diff --git a/infra/specs/waterfalls.pyl b/infra/specs/waterfalls.pyl
index 7d705bc..7b30836 100644
--- a/infra/specs/waterfalls.pyl
+++ b/infra/specs/waterfalls.pyl
@@ -70,6 +70,16 @@
         ],
         'test_suites': {},
       },
+      'dawn-win-x64-sws-rel': {
+        'os_type': 'win',
+        'mixins': [
+          'gpu-swarming-pool',
+          'no_gpu',
+          'win10',
+          'x86-64',
+        ],
+        'test_suites': {},
+      },
     },
   },
 ]