Add gn_v2 MSVC Debug builders

Adds the gn_v2 MSVC Debug parent builder and its software child tester.
Since there is no indication that there should be any debug-specific
issues, this also enables tests at the same time.

Bug: 385317083
Change-Id: I025445ca3cea08acad6b6853242d180eafcb7a0a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/265475
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@google.com>
Auto-Submit: Brian Sheedy <bsheedy@google.com>
diff --git a/infra/config/global/generated/builders/ci/dawn-win-x64-builder-msvc-dbg/gn-args.json b/infra/config/global/generated/builders/ci/dawn-win-x64-builder-msvc-dbg/gn-args.json
new file mode 100644
index 0000000..69f7662
--- /dev/null
+++ b/infra/config/global/generated/builders/ci/dawn-win-x64-builder-msvc-dbg/gn-args.json
@@ -0,0 +1,21 @@
+{
+  "gn_args": {
+    "dawn_build_node_bindings": true,
+    "dawn_use_swiftshader": true,
+    "is_clang": false,
+    "is_component_build": false,
+    "is_debug": true,
+    "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_custom_libcxx": false,
+    "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 d76f53e..792e23c 100644
--- a/infra/config/global/generated/builders/gn_args_locations.json
+++ b/infra/config/global/generated/builders/gn_args_locations.json
@@ -12,6 +12,7 @@
     "dawn-mac-x64-builder-dbg": "ci/dawn-mac-x64-builder-dbg/gn-args.json",
     "dawn-mac-x64-builder-rel": "ci/dawn-mac-x64-builder-rel/gn-args.json",
     "dawn-win-x64-builder-dbg": "ci/dawn-win-x64-builder-dbg/gn-args.json",
+    "dawn-win-x64-builder-msvc-dbg": "ci/dawn-win-x64-builder-msvc-dbg/gn-args.json",
     "dawn-win-x64-builder-msvc-rel": "ci/dawn-win-x64-builder-msvc-rel/gn-args.json",
     "dawn-win-x64-builder-rel": "ci/dawn-win-x64-builder-rel/gn-args.json",
     "dawn-win-x86-builder-dbg": "ci/dawn-win-x86-builder-dbg/gn-args.json",
@@ -43,6 +44,7 @@
     "dawn-try-mac-x64-sws-dbg": "try/dawn-try-mac-x64-sws-dbg/gn-args.json",
     "dawn-try-mac-x64-sws-rel": "try/dawn-try-mac-x64-sws-rel/gn-args.json",
     "dawn-try-win-x64-sws-dbg": "try/dawn-try-win-x64-sws-dbg/gn-args.json",
+    "dawn-try-win-x64-sws-msvc-dbg": "try/dawn-try-win-x64-sws-msvc-dbg/gn-args.json",
     "dawn-try-win-x64-sws-msvc-rel": "try/dawn-try-win-x64-sws-msvc-rel/gn-args.json",
     "dawn-try-win-x64-sws-rel": "try/dawn-try-win-x64-sws-rel/gn-args.json",
     "dawn-try-win-x86-sws-dbg": "try/dawn-try-win-x86-sws-dbg/gn-args.json",
diff --git a/infra/config/global/generated/builders/try/dawn-try-win-x64-sws-msvc-dbg/gn-args.json b/infra/config/global/generated/builders/try/dawn-try-win-x64-sws-msvc-dbg/gn-args.json
new file mode 100644
index 0000000..69f7662
--- /dev/null
+++ b/infra/config/global/generated/builders/try/dawn-try-win-x64-sws-msvc-dbg/gn-args.json
@@ -0,0 +1,21 @@
+{
+  "gn_args": {
+    "dawn_build_node_bindings": true,
+    "dawn_use_swiftshader": true,
+    "is_clang": false,
+    "is_component_build": false,
+    "is_debug": true,
+    "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_custom_libcxx": false,
+    "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 67a5aa4..316a2f4 100644
--- a/infra/config/global/generated/luci/commit-queue.cfg
+++ b/infra/config/global/generated/luci/commit-queue.cfg
@@ -981,6 +981,11 @@
         disable_reuse_footers: "Include-Ci-Only-Tests"
       }
       builders {
+        name: "dawn/try/dawn-try-win-x64-sws-msvc-dbg"
+        includable_only: true
+        disable_reuse_footers: "Include-Ci-Only-Tests"
+      }
+      builders {
         name: "dawn/try/dawn-try-win-x64-sws-msvc-rel"
         includable_only: true
         disable_reuse_footers: "Include-Ci-Only-Tests"
diff --git a/infra/config/global/generated/luci/cr-buildbucket.cfg b/infra/config/global/generated/luci/cr-buildbucket.cfg
index c299265..5f1f653 100644
--- a/infra/config/global/generated/luci/cr-buildbucket.cfg
+++ b/infra/config/global/generated/luci/cr-buildbucket.cfg
@@ -3871,6 +3871,194 @@
       }
     }
     builders {
+      name: "dawn-win-x64-builder-msvc-dbg"
+      swarming_host: "chromium-swarm.appspot.com"
+      dimensions: "builderless:1"
+      dimensions: "cores:8"
+      dimensions: "os:Windows-10"
+      dimensions: "pool:luci.chromium.gpu.ci"
+      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-msvc-dbg/gn-args.json"'
+        '      ],'
+        '      "builder_db": {'
+        '        "entries": ['
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-builder-msvc-dbg",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "COMPILE_AND_TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Debug",'
+        '                "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-msvc-dbg",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Debug",'
+        '                "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-msvc-dbg",'
+        '                "project": "dawn"'
+        '              },'
+        '              "run_tests_serially": true'
+        '            }'
+        '          }'
+        '        ]'
+        '      },'
+        '      "builder_ids": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-builder-msvc-dbg",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "builder_ids_in_scope_for_testing": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-sws-msvc-dbg",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "mirroring_builder_group_and_names": ['
+        '        {'
+        '          "builder": "dawn-try-win-x64-sws-msvc-dbg",'
+        '          "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 debug Dawn test binaries for Windows/x64 using MSVC<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-msvc-dbg\">dawn-try-win-x64-sws-msvc-dbg</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"
+        properties:
+          '{'
+          '  "$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'
+          '  }'
+          '}'
+      }
+      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-builder-msvc-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -4407,6 +4595,158 @@
       }
     }
     builders {
+      name: "dawn-win-x64-sws-msvc-dbg"
+      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-msvc-dbg",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "COMPILE_AND_TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Debug",'
+        '                "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-msvc-dbg",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Debug",'
+        '                "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-msvc-dbg",'
+        '                "project": "dawn"'
+        '              },'
+        '              "run_tests_serially": true'
+        '            }'
+        '          }'
+        '        ]'
+        '      },'
+        '      "builder_ids": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-sws-msvc-dbg",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "mirroring_builder_group_and_names": ['
+        '        {'
+        '          "builder": "dawn-try-win-x64-sws-msvc-dbg",'
+        '          "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 debug Dawn on Windows/x64 with SwiftShader using binaries built with MSVC<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-msvc-dbg\">dawn-try-win-x64-sws-msvc-dbg</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-msvc-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
@@ -9768,6 +10108,170 @@
       max_concurrent_builds: 1
     }
     builders {
+      name: "dawn-try-win-x64-sws-msvc-dbg"
+      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-msvc-dbg/gn-args.json"'
+        '      ],'
+        '      "builder_db": {'
+        '        "entries": ['
+        '          {'
+        '            "builder_id": {'
+        '              "bucket": "ci",'
+        '              "builder": "dawn-win-x64-builder-msvc-dbg",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "COMPILE_AND_TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Debug",'
+        '                "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-msvc-dbg",'
+        '              "project": "dawn"'
+        '            },'
+        '            "builder_spec": {'
+        '              "builder_group": "ci",'
+        '              "execution_mode": "TEST",'
+        '              "legacy_chromium_config": {'
+        '                "build_config": "Debug",'
+        '                "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-msvc-dbg",'
+        '                "project": "dawn"'
+        '              },'
+        '              "run_tests_serially": true'
+        '            }'
+        '          }'
+        '        ]'
+        '      },'
+        '      "builder_ids": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-builder-msvc-dbg",'
+        '          "project": "dawn"'
+        '        }'
+        '      ],'
+        '      "builder_ids_in_scope_for_testing": ['
+        '        {'
+        '          "bucket": "ci",'
+        '          "builder": "dawn-win-x64-sws-msvc-dbg",'
+        '          "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 debug Dawn on Windows/x64 with SwiftShader using binaries built with MSVC. 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-msvc-dbg\">dawn-win-x64-builder-msvc-dbg</a></li><li><a href=\"https://ci.chromium.org/p/dawn/builders/ci/dawn-win-x64-sws-msvc-dbg\">dawn-win-x64-sws-msvc-dbg</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: "dawn-try-win-x64-sws-msvc-rel"
       swarming_host: "chromium-swarm.appspot.com"
       dimensions: "builderless:1"
diff --git a/infra/config/global/generated/luci/luci-milo.cfg b/infra/config/global/generated/luci/luci-milo.cfg
index 87a0d2f..225b8e5 100644
--- a/infra/config/global/generated/luci/luci-milo.cfg
+++ b/infra/config/global/generated/luci/luci-milo.cfg
@@ -166,6 +166,11 @@
     short_name: "x86"
   }
   builders {
+    name: "buildbucket/luci.dawn.ci/dawn-win-x64-builder-msvc-dbg"
+    category: "win|build|msvc|dbg"
+    short_name: "x64"
+  }
+  builders {
     name: "buildbucket/luci.dawn.ci/dawn-win-x64-builder-msvc-rel"
     category: "win|build|msvc|rel"
     short_name: "x64"
@@ -211,6 +216,11 @@
     short_name: "sws"
   }
   builders {
+    name: "buildbucket/luci.dawn.ci/dawn-win-x64-sws-msvc-dbg"
+    category: "win|test|msvc|dbg|x64"
+    short_name: "sws"
+  }
+  builders {
     name: "buildbucket/luci.dawn.ci/dawn-win-x64-sws-msvc-rel"
     category: "win|test|msvc|rel|x64"
     short_name: "sws"
@@ -325,6 +335,9 @@
     name: "buildbucket/luci.dawn.try/dawn-try-win-x64-sws-dbg"
   }
   builders {
+    name: "buildbucket/luci.dawn.try/dawn-try-win-x64-sws-msvc-dbg"
+  }
+  builders {
     name: "buildbucket/luci.dawn.try/dawn-try-win-x64-sws-msvc-rel"
   }
   builders {
diff --git a/infra/config/global/generated/luci/luci-scheduler.cfg b/infra/config/global/generated/luci/luci-scheduler.cfg
index 956e77c..f8b21cf 100644
--- a/infra/config/global/generated/luci/luci-scheduler.cfg
+++ b/infra/config/global/generated/luci/luci-scheduler.cfg
@@ -289,6 +289,16 @@
   }
 }
 job {
+  id: "dawn-win-x64-builder-msvc-dbg"
+  realm: "ci"
+  schedule: "triggered"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "ci"
+    builder: "dawn-win-x64-builder-msvc-dbg"
+  }
+}
+job {
   id: "dawn-win-x64-builder-msvc-rel"
   realm: "ci"
   schedule: "triggered"
@@ -318,6 +328,15 @@
   }
 }
 job {
+  id: "dawn-win-x64-sws-msvc-dbg"
+  realm: "ci"
+  buildbucket {
+    server: "cr-buildbucket.appspot.com"
+    bucket: "ci"
+    builder: "dawn-win-x64-sws-msvc-dbg"
+  }
+}
+job {
   id: "dawn-win-x64-sws-msvc-rel"
   realm: "ci"
   buildbucket {
@@ -416,6 +435,7 @@
   triggers: "dawn-mac-x64-builder-dbg"
   triggers: "dawn-mac-x64-builder-rel"
   triggers: "dawn-win-x64-builder-dbg"
+  triggers: "dawn-win-x64-builder-msvc-dbg"
   triggers: "dawn-win-x64-builder-msvc-rel"
   triggers: "dawn-win-x64-builder-rel"
   triggers: "dawn-win-x86-builder-dbg"
diff --git a/infra/config/global/generated/luci/realms.cfg b/infra/config/global/generated/luci/realms.cfg
index daf784b..b13b630 100644
--- a/infra/config/global/generated/luci/realms.cfg
+++ b/infra/config/global/generated/luci/realms.cfg
@@ -80,6 +80,7 @@
         values: "dawn-mac-x64-sws-dbg"
         values: "dawn-mac-x64-sws-rel"
         values: "dawn-win-x64-sws-dbg"
+        values: "dawn-win-x64-sws-msvc-dbg"
         values: "dawn-win-x64-sws-msvc-rel"
         values: "dawn-win-x64-sws-rel"
         values: "dawn-win-x86-sws-dbg"
diff --git a/infra/config/global/gn_standalone_ci.star b/infra/config/global/gn_standalone_ci.star
index 8e50b74..662e21b 100644
--- a/infra/config/global/gn_standalone_ci.star
+++ b/infra/config/global/gn_standalone_ci.star
@@ -308,6 +308,46 @@
 )
 
 ci.builder(
+    name = "dawn-win-x64-builder-msvc-dbg",
+    description_html = "Compiles debug Dawn test binaries for Windows/x64 using MSVC",
+    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.DEBUG,
+            target_arch = builder_config.target_arch.INTEL,
+            target_bits = 64,
+            target_platform = builder_config.target_platform.WIN,
+        ),
+    ),
+    gn_args = gn_args.config(
+        configs = [
+            # Component builds cause compile failures for the `default` target
+            # with MSVC, so use non_component. See crbug.com/449779009.
+            "dawn_node_bindings",
+            "dawn_swiftshader",
+            "debug",
+            "non_component",
+            "win_msvc",
+            "x64",
+        ],
+    ),
+    cores = 8,
+    os = os.WINDOWS_DEFAULT,
+    ssd = None,
+    console_view_entry = consoles.console_view_entry(
+        category = "win|build|msvc|dbg",
+        short_name = "x64",
+    ),
+)
+
+ci.builder(
     name = "dawn-win-x64-builder-msvc-rel",
     description_html = "Compiles release Dawn test binaries for Windows/x64 using MSVC",
     schedule = "triggered",
@@ -802,6 +842,30 @@
 )
 
 ci.thin_tester(
+    name = "dawn-win-x64-sws-msvc-dbg",
+    description_html = "Tests debug Dawn on Windows/x64 with SwiftShader using binaries built with MSVC",
+    parent = "dawn-win-x64-builder-msvc-dbg",
+    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.DEBUG,
+            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|msvc|dbg|x64",
+        short_name = "sws",
+    ),
+)
+
+ci.thin_tester(
     name = "dawn-win-x64-sws-msvc-rel",
     description_html = "Tests release Dawn on Windows/x64 with SwiftShader using binaries built with MSVC",
     parent = "dawn-win-x64-builder-msvc-rel",
diff --git a/infra/config/global/gn_standalone_try.star b/infra/config/global/gn_standalone_try.star
index 25abb74..c9cf89e 100644
--- a/infra/config/global/gn_standalone_try.star
+++ b/infra/config/global/gn_standalone_try.star
@@ -372,6 +372,16 @@
 )
 
 dawn_win_manual_builder(
+    name = "dawn-try-win-x64-sws-msvc-dbg",
+    description_html = "Tests debug Dawn on Windows/x64 with SwiftShader using binaries built with MSVC. Manual only.",
+    mirrors = [
+        "ci/dawn-win-x64-builder-msvc-dbg",
+        "ci/dawn-win-x64-sws-msvc-dbg",
+    ],
+    gn_args = "ci/dawn-win-x64-builder-msvc-dbg",
+)
+
+dawn_win_manual_builder(
     name = "dawn-try-win-x64-sws-msvc-rel",
     description_html = "Tests release Dawn on Windows/x64 with SwiftShader using binaries built with MSVC. Manual only.",
     mirrors = [
diff --git a/infra/specs/ci.json b/infra/specs/ci.json
index d774336..86d5172 100644
--- a/infra/specs/ci.json
+++ b/infra/specs/ci.json
@@ -1220,6 +1220,11 @@
       "default"
     ]
   },
+  "dawn-win-x64-builder-msvc-dbg": {
+    "additional_compile_targets": [
+      "default"
+    ]
+  },
   "dawn-win-x64-builder-msvc-rel": {
     "additional_compile_targets": [
       "default"
@@ -1382,6 +1387,182 @@
       }
     ]
   },
+  "dawn-win-x64-sws-msvc-dbg": {
+    "gtest_tests": [
+      {
+        "args": [
+          "--backend=opengles",
+          "--use-angle=swiftshader",
+          "--enable-toggles=gl_force_es_31_and_no_extensions"
+        ],
+        "merge": {
+          "script": "//scripts/merge_scripts/true_noop_merge.py"
+        },
+        "name": "dawn_end2end_swangle_tests",
+        "resultdb": {
+          "result_format": "gtest_json"
+        },
+        "swarming": {
+          "containment_type": "AUTO",
+          "dimensions": {
+            "cpu": "x86-64",
+            "gpu": "none",
+            "os": "Windows-10-19045",
+            "pool": "chromium.tests.gpu"
+          },
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 2
+        },
+        "test": "dawn_end2end_tests",
+        "test_id_prefix": "ninja://src/dawn/tests:dawn_end2end_tests/"
+      },
+      {
+        "args": [
+          "--adapter-vendor-id=0x1AE0"
+        ],
+        "merge": {
+          "script": "//scripts/merge_scripts/true_noop_merge.py"
+        },
+        "name": "dawn_end2end_sws_tests",
+        "resultdb": {
+          "result_format": "gtest_json"
+        },
+        "swarming": {
+          "containment_type": "AUTO",
+          "dimensions": {
+            "cpu": "x86-64",
+            "gpu": "none",
+            "os": "Windows-10-19045",
+            "pool": "chromium.tests.gpu"
+          },
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com",
+          "shards": 3
+        },
+        "test": "dawn_end2end_tests",
+        "test_id_prefix": "ninja://src/dawn/tests:dawn_end2end_tests/"
+      },
+      {
+        "args": [
+          "--adapter-vendor-id=0x1414"
+        ],
+        "merge": {
+          "script": "//scripts/merge_scripts/true_noop_merge.py"
+        },
+        "name": "dawn_end2end_warp_tests",
+        "resultdb": {
+          "result_format": "gtest_json"
+        },
+        "swarming": {
+          "containment_type": "AUTO",
+          "dimensions": {
+            "cpu": "x86-64",
+            "gpu": "none",
+            "os": "Windows-10-19045",
+            "pool": "chromium.tests.gpu"
+          },
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "dawn_end2end_tests",
+        "test_id_prefix": "ninja://src/dawn/tests:dawn_end2end_tests/"
+      },
+      {
+        "merge": {
+          "script": "//scripts/merge_scripts/true_noop_merge.py"
+        },
+        "name": "dawn_unittests",
+        "resultdb": {
+          "result_format": "gtest_json"
+        },
+        "swarming": {
+          "containment_type": "AUTO",
+          "dimensions": {
+            "cpu": "x86-64",
+            "gpu": "none",
+            "os": "Windows-10-19045",
+            "pool": "chromium.tests.gpu"
+          },
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "dawn_unittests",
+        "test_id_prefix": "ninja://src/dawn/tests:dawn_unittests/"
+      },
+      {
+        "args": [
+          "--use-wire"
+        ],
+        "merge": {
+          "script": "//scripts/merge_scripts/true_noop_merge.py"
+        },
+        "name": "dawn_wire_unittests",
+        "resultdb": {
+          "result_format": "gtest_json"
+        },
+        "swarming": {
+          "containment_type": "AUTO",
+          "dimensions": {
+            "cpu": "x86-64",
+            "gpu": "none",
+            "os": "Windows-10-19045",
+            "pool": "chromium.tests.gpu"
+          },
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "dawn_unittests",
+        "test_id_prefix": "ninja://src/dawn/tests:dawn_unittests/"
+      },
+      {
+        "merge": {
+          "script": "//scripts/merge_scripts/true_noop_merge.py"
+        },
+        "name": "tint_unittests",
+        "resultdb": {
+          "result_format": "gtest_json"
+        },
+        "swarming": {
+          "containment_type": "AUTO",
+          "dimensions": {
+            "cpu": "x86-64",
+            "gpu": "none",
+            "os": "Windows-10-19045",
+            "pool": "chromium.tests.gpu"
+          },
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "tint_unittests",
+        "test_id_prefix": "ninja://src/tint/cmd/test:tint_unittests/"
+      }
+    ],
+    "isolated_scripts": [
+      {
+        "args": [
+          "-backend",
+          "d3d12",
+          "-adapter",
+          "Microsoft Basic Render Driver",
+          "webgpu:api,operation,adapter,requestDevice:default:*"
+        ],
+        "merge": {
+          "script": "//scripts/merge_scripts/true_noop_merge.py"
+        },
+        "name": "dawn_node_software_d3d12_cts",
+        "resultdb": {
+          "result_format": "single"
+        },
+        "swarming": {
+          "containment_type": "AUTO",
+          "dimensions": {
+            "cpu": "x86-64",
+            "gpu": "none",
+            "os": "Windows-10-19045",
+            "pool": "chromium.tests.gpu"
+          },
+          "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
+        },
+        "test": "dawn_node_cts",
+        "test_id_prefix": "ninja://scripts/dawn_node_cts:dawn_node_cts/"
+      }
+    ]
+  },
   "dawn-win-x64-sws-msvc-rel": {
     "gtest_tests": [
       {
diff --git a/infra/specs/waterfalls.pyl b/infra/specs/waterfalls.pyl
index 759626b..ab1966f 100644
--- a/infra/specs/waterfalls.pyl
+++ b/infra/specs/waterfalls.pyl
@@ -172,6 +172,11 @@
           'default',
         ],
       },
+      'dawn-win-x64-builder-msvc-dbg': {
+        'additional_compile_targets': [
+          'default',
+        ],
+      },
       'dawn-win-x64-builder-msvc-rel': {
         'additional_compile_targets': [
           'default',
@@ -195,6 +200,19 @@
           'isolated_scripts': 'dawn_node_cts_win_software_tests',
         },
       },
+      'dawn-win-x64-sws-msvc-dbg': {
+        'os_type': 'win',
+        'mixins': [
+          'gpu-swarming-pool',
+          'no_gpu',
+          'win10',
+          'x86-64',
+        ],
+        'test_suites': {
+          'gtest_tests': 'win_software_renderer_gtests',
+          'isolated_scripts': 'dawn_node_cts_win_software_tests',
+        },
+      },
       'dawn-win-x64-sws-msvc-rel': {
         'os_type': 'win',
         'mixins': [