Add the "internal" error type

Currently only raised if Tint produces an Internal Compiler Error
(ICE). These were previously surfaced as validation errors.

Bug: dawn:1531
Change-Id: I9a10549b3e0bc2cbf962c99d157aa6dbe8032a3c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/101500
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Brandon Jones <bajones@chromium.org>
diff --git a/dawn.json b/dawn.json
index 8dedc59..c842e79 100644
--- a/dawn.json
+++ b/dawn.json
@@ -1302,7 +1302,8 @@
         "category": "enum",
         "values": [
             {"value": 0, "name": "validation"},
-            {"value": 1, "name": "out of memory"}
+            {"value": 1, "name": "out of memory"},
+            {"value": 2, "name": "internal"}
         ]
     },
     "error type": {
@@ -1312,8 +1313,9 @@
             {"value": 0, "name": "no error"},
             {"value": 1, "name": "validation"},
             {"value": 2, "name": "out of memory"},
-            {"value": 3, "name": "unknown"},
-            {"value": 4, "name": "device lost"}
+            {"value": 3, "name": "internal"},
+            {"value": 4, "name": "unknown"},
+            {"value": 5, "name": "device lost"}
         ]
     },
     "logging type": {
diff --git a/src/dawn/native/ErrorScope.cpp b/src/dawn/native/ErrorScope.cpp
index b90fb13..009a2cf 100644
--- a/src/dawn/native/ErrorScope.cpp
+++ b/src/dawn/native/ErrorScope.cpp
@@ -28,6 +28,8 @@
             return wgpu::ErrorType::Validation;
         case wgpu::ErrorFilter::OutOfMemory:
             return wgpu::ErrorType::OutOfMemory;
+        case wgpu::ErrorFilter::Internal:
+            return wgpu::ErrorType::Internal;
     }
     UNREACHABLE();
 }
diff --git a/src/dawn/native/TintUtils.cpp b/src/dawn/native/TintUtils.cpp
index f59e6e5..24d4cc6 100644
--- a/src/dawn/native/TintUtils.cpp
+++ b/src/dawn/native/TintUtils.cpp
@@ -29,7 +29,7 @@
 
 void TintICEReporter(const tint::diag::List& diagnostics) {
     if (tlDevice) {
-        tlDevice->HandleError(InternalErrorType::Validation, diagnostics.str().c_str());
+        tlDevice->HandleError(InternalErrorType::Internal, diagnostics.str().c_str());
     }
 }