[webgpu-headers] Introduces WGPUBool for boolean compatibility.

On Dawn side, this includes some compatibility changes so that it is
ergonomic to use the new underlying bool type transparently.

This change must wait for the following change(s) to land:
- https://chromium-review.googlesource.com/c/chromium/src/+/4740656

github.com/webgpu-native/webgpu-headers/issues/84

Change-Id: Ie0f37dfc313ec32ae4aa5236ec0ecf4dab353923
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/144207
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py
index 1605ceb..daaec67 100644
--- a/generator/dawn_json_generator.py
+++ b/generator/dawn_json_generator.py
@@ -699,7 +699,8 @@
 
 
 def as_cType(c_prefix, name):
-    if name.native:
+    # Special case for 'bool' because it has a typedef for compatibility.
+    if name.native and name.get() != 'bool':
         return name.concatcase()
     else:
         return c_prefix + name.CamelCase()
@@ -713,7 +714,8 @@
 
 
 def as_cppType(name):
-    if name.native:
+    # Special case for 'bool' because it has a typedef for compatibility.
+    if name.native and name.get() != 'bool':
         return name.concatcase()
     else:
         return name.CamelCase()
@@ -798,7 +800,7 @@
 def as_frontendType(metadata, typ):
     if typ.category == 'object':
         return typ.name.CamelCase() + 'Base*'
-    elif typ.category in ['bitmask', 'enum']:
+    elif typ.category in ['bitmask', 'enum'] or typ.name.get() == 'bool':
         return metadata.namespace + '::' + typ.name.CamelCase()
     elif typ.category == 'structure':
         return as_cppType(typ.name)