diff --git a/dawn.json b/dawn.json
index f6c237b..363d6aa 100644
--- a/dawn.json
+++ b/dawn.json
@@ -22,8 +22,8 @@
         "extensible": true,
         "output": true,
         "members": [
-            {"name": "device ID", "type": "uint32_t"},
             {"name": "vendor ID", "type": "uint32_t"},
+            {"name": "device ID", "type": "uint32_t"},
             {"name": "name", "type": "char", "annotation": "const*"},
             {"name": "driver description", "type": "char", "annotation": "const*"},
             {"name": "adapter type", "type": "adapter type"},
@@ -32,7 +32,7 @@
     },
     "adapter type": {
         "category": "enum",
-        "javascript": false,
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "discrete GPU"},
             {"value": 1, "name": "integrated GPU"},
@@ -50,7 +50,7 @@
     },
     "backend type": {
         "category": "enum",
-        "javascript": false,
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "null"},
             {"value": 1, "name": "D3D11"},
@@ -150,6 +150,7 @@
     "external texture binding entry": {
         "category": "structure",
         "chained": true,
+        "tags": ["dawn"],
         "members": [
             {"name": "external texture", "type": "external texture"}
         ]
@@ -158,6 +159,7 @@
     "external texture binding layout": {
         "category": "structure",
         "chained": true,
+        "tags": ["dawn"],
         "members": []
     },
 
@@ -165,7 +167,7 @@
         "category": "enum",
         "values": [
             {"value": 0, "name": "undefined", "jsrepr": "undefined", "valid": false},
-            {"value": 1, "name": "write only", "jsrepr": "writeonly"}
+            {"value": 1, "name": "write only"}
         ]
     },
     "storage texture binding layout": {
@@ -271,6 +273,8 @@
             {
                 "name": "set label",
                 "returns": "void",
+                "tags": ["dawn"],
+                "_TODO": "needs an upstream equivalent",
                 "args": [
                     {"name": "label", "type": "char", "annotation": "const*", "length": "strlen"}
                 ]
@@ -302,6 +306,7 @@
     },
     "buffer map async status": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "success"},
             {"value": 1, "name": "error"},
@@ -420,6 +425,7 @@
             },
             {
                 "name": "copy texture to texture internal",
+                "tags": ["dawn"],
                 "args": [
                     {"name": "source", "type": "image copy texture", "annotation": "const*"},
                     {"name": "destination", "type": "image copy texture", "annotation": "const*"},
@@ -428,10 +434,10 @@
             },
             {
                 "name": "inject validation error",
+                "tags": ["dawn"],
                 "args": [
                     {"name": "message", "type": "char", "annotation": "const*", "length": "strlen"}
-                ],
-                "TODO": "enga@: Make this a Dawn extension"
+                ]
             },
             {
                 "name": "insert debug marker",
@@ -499,6 +505,7 @@
     },
     "compilation info callback": {
         "category": "callback",
+        "tags": ["dawn"],
         "args": [
             {"name": "status", "type": "compilation info request status"},
             {"name": "compilation info", "type": "compilation info", "annotation": "const*"},
@@ -507,6 +514,7 @@
     },
     "compilation info request status": {
         "category": "enum",
+        "tags": ["dawn"],
         "values": [
             {"value": 0, "name": "success"},
             {"value": 1, "name": "error"},
@@ -528,6 +536,7 @@
     },
     "compilation message type": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "error"},
             {"value": 1, "name": "warning"},
@@ -632,6 +641,7 @@
     },
     "alpha op": {
         "category": "enum",
+        "tags": ["dawn"],
         "values": [
             {"value": 0, "name": "dont change"},
             {"value": 1, "name": "premultiply"},
@@ -641,6 +651,7 @@
     "copy texture for browser options": {
         "category": "structure",
         "extensible": true,
+        "tags": ["dawn"],
         "members": [
             {"name": "flipY", "type": "bool", "default": "false"},
             {"name": "alphaOp", "type": "alpha op", "default": "dont change"}
@@ -657,6 +668,7 @@
     },
     "create pipeline async status": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "success"},
             {"value": 1, "name": "error"},
@@ -709,7 +721,7 @@
             {
                 "name": "create error buffer",
                 "returns": "buffer",
-                "TODO": "enga@: Make this part of a dawn_wire extension"
+                "tags": ["dawn"]
             },
             {
                 "name": "create command encoder",
@@ -737,6 +749,7 @@
             {
                 "name": "create external texture",
                 "returns": "external texture",
+                "tags": ["dawn"],
                 "args": [
                     {"name": "external texture descriptor", "type": "external texture descriptor", "annotation": "const*"}
                 ]
@@ -824,13 +837,15 @@
                     {"name": "type", "type": "error type"},
                     {"name": "message", "type": "char", "annotation": "const*", "length": "strlen"}
                 ],
-                "TODO": "enga@: Make this a Dawn extension"
+                "tags": ["dawn"]
             },
             {
-                "name": "lose for testing"
+                "name": "lose for testing",
+                "tags": ["dawn"]
             },
             {
-                "name": "tick"
+                "name": "tick",
+                "tags": ["dawn"]
             },
             {
                 "name": "set uncaptured error callback",
@@ -841,6 +856,7 @@
             },
             {
                 "name": "set logging callback",
+                "tags": ["dawn"],
                 "args": [
                     {"name": "callback", "type": "logging callback"},
                     {"name": "userdata", "type": "void", "annotation": "*"}
@@ -879,6 +895,7 @@
     "device properties": {
         "category": "structure",
         "extensible": false,
+        "tags": ["dawn"],
         "members": [
             {"name": "device ID", "type": "uint32_t"},
             {"name": "vendor ID", "type": "uint32_t"},
@@ -954,6 +971,7 @@
     },
     "logging callback": {
         "category": "callback",
+        "tags": ["dawn"],
         "args": [
             {"name": "type", "type": "logging type"},
             {"name": "message", "type": "char", "annotation": "const*"},
@@ -970,6 +988,7 @@
     },
     "error type": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "no error"},
             {"value": 1, "name": "validation"},
@@ -980,6 +999,7 @@
     },
     "logging type": {
         "category": "enum",
+        "tags": ["dawn"],
         "values": [
             {"value": 0, "name": "verbose"},
             {"value": 1, "name": "info"},
@@ -997,6 +1017,7 @@
     },
     "external texture": {
         "category": "object",
+        "tags": ["dawn"],
         "methods": [
             {
                 "name": "destroy",
@@ -1007,6 +1028,7 @@
     "external texture descriptor": {
         "category": "structure",
         "extensible": true,
+        "tags": ["dawn"],
         "members": [
             {"name": "plane 0", "type": "texture view"},
             {"name": "format", "type": "texture format"}
@@ -1100,6 +1122,7 @@
     },
     "load op": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "clear"},
             {"value": 1, "name": "load"}
@@ -1152,6 +1175,7 @@
     },
     "present mode": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "immediate"},
             {"value": 1, "name": "mailbox"},
@@ -1243,6 +1267,7 @@
             {
                 "name": "copy texture for browser",
                 "extensible": true,
+                "tags": ["dawn"],
                 "args": [
                     {"name": "source", "type": "image copy texture", "annotation": "const*"},
                     {"name": "destination", "type": "image copy texture", "annotation": "const*"},
@@ -1261,6 +1286,7 @@
     },
     "queue work done status": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "success"},
             {"value": 1, "name": "error"},
@@ -1603,6 +1629,7 @@
 
     "request device status": {
         "category": "enum",
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "success"},
             {"value": 1, "name": "error"},
@@ -1734,6 +1761,7 @@
         "methods": [
             {
                 "name": "get compilation info",
+                "tags": ["dawn"],
                 "args": [
                     {"name": "callback", "type": "compilation info callback"},
                     {"name": "userdata", "type": "void", "annotation": "*"}
@@ -1822,7 +1850,7 @@
     "surface descriptor from metal layer": {
         "category": "structure",
         "chained": true,
-        "javascript": false,
+        "tags": ["native"],
         "members": [
             {"name": "layer", "type": "void", "annotation": "*"}
         ]
@@ -1830,7 +1858,7 @@
     "surface descriptor from windows HWND": {
         "category": "structure",
         "chained": true,
-        "javascript": false,
+        "tags": ["native"],
         "members": [
             {"name": "hinstance", "type": "void", "annotation": "*"},
             {"name": "hwnd", "type": "void", "annotation": "*"}
@@ -1839,7 +1867,7 @@
     "surface descriptor from xlib": {
         "category": "structure",
         "chained": true,
-        "javascript": false,
+        "tags": ["native"],
         "members": [
             {"name": "display", "type": "void", "annotation": "*"},
             {"name": "window", "type": "uint32_t"}
@@ -1848,7 +1876,7 @@
     "surface descriptor from windows core window": {
         "category": "structure",
         "chained": true,
-        "javascript": false,
+        "tags": ["dawn"],
         "members": [
             {"name": "core window", "type": "void", "annotation": "*"}
         ]
@@ -1856,7 +1884,7 @@
     "surface descriptor from windows swap chain panel": {
         "category": "structure",
         "chained": true,
-        "javascript": false,
+        "tags": ["dawn"],
         "members": [
             {"name": "swap chain panel", "type": "void", "annotation": "*"}
         ]
@@ -1866,6 +1894,7 @@
         "methods": [
             {
                 "name": "configure",
+                "tags": ["dawn"],
                 "args": [
                     {"name": "format", "type": "texture format"},
                     {"name": "allowed usage", "type": "texture usage"},
@@ -1887,26 +1916,26 @@
             {"name": "width", "type": "uint32_t"},
             {"name": "height", "type": "uint32_t"},
             {"name": "present mode", "type": "present mode"},
-            {"name": "implementation", "type": "uint64_t", "default": 0}
+            {"name": "implementation", "type": "uint64_t", "default": 0, "tags": ["deprecated"]}
         ]
     },
     "s type": {
         "category": "enum",
-        "javascript": false,
+        "emscripten_no_enum_table": true,
         "values": [
             {"value": 0, "name": "invalid", "valid": false},
-            {"value": 1, "name": "surface descriptor from metal layer"},
-            {"value": 2, "name": "surface descriptor from windows HWND"},
-            {"value": 3, "name": "surface descriptor from xlib"},
+            {"value": 1, "name": "surface descriptor from metal layer", "tags": ["native"]},
+            {"value": 2, "name": "surface descriptor from windows HWND", "tags": ["native"]},
+            {"value": 3, "name": "surface descriptor from xlib", "tags": ["native"]},
             {"value": 4, "name": "surface descriptor from canvas HTML selector"},
             {"value": 5, "name": "shader module SPIRV descriptor"},
             {"value": 6, "name": "shader module WGSL descriptor"},
             {"value": 7, "name": "primitive depth clamping state"},
-            {"value": 8, "name": "surface descriptor from windows core window"},
-            {"value": 9, "name": "external texture binding entry"},
-            {"value": 10, "name": "external texture binding layout"},
-            {"value": 11, "name": "surface descriptor from windows swap chain panel"},
-            {"value": 1000, "name": "dawn texture internal usage descriptor"}
+            {"value": 8, "name": "surface descriptor from windows core window", "tags": ["dawn"]},
+            {"value": 9, "name": "external texture binding entry", "tags": ["dawn"]},
+            {"value": 10, "name": "external texture binding layout", "tags": ["dawn"]},
+            {"value": 11, "name": "surface descriptor from windows swap chain panel", "tags": ["dawn"]},
+            {"value": 1000, "name": "dawn texture internal usage descriptor", "tags": ["dawn"]}
         ]
     },
     "texture": {
@@ -1922,6 +1951,8 @@
             {
                 "name": "set label",
                 "returns": "void",
+                "tags": ["dawn"],
+                "_TODO": "needs an upstream equivalent",
                 "args": [
                     {"name": "label", "type": "char", "annotation": "const*", "length": "strlen"}
                 ]
@@ -1937,8 +1968,8 @@
             {"value": 0, "name": "all"},
             {"value": 1, "name": "stencil only"},
             {"value": 2, "name": "depth only"},
-            {"value": 3, "name": "plane 0 only"},
-            {"value": 4, "name": "plane 1 only"}
+            {"value": 3, "name": "plane 0 only", "tags": ["dawn"]},
+            {"value": 4, "name": "plane 1 only", "tags": ["dawn"]}
         ]
     },
     "texture component type": {
@@ -1984,6 +2015,7 @@
         "category": "enum",
         "values": [
             {"value": 0, "name": "undefined", "valid": false, "jsrepr": "undefined"},
+
             {"value": 1, "name": "R8 unorm"},
             {"value": 2, "name": "R8 snorm"},
             {"value": 3, "name": "R8 uint"},
@@ -2086,7 +2118,7 @@
             {"value": 92, "name": "ASTC 12x12 unorm"},
             {"value": 93, "name": "ASTC 12x12 unorm srgb"},
 
-            {"value": 94, "name": "R8 BG8 Biplanar 420 unorm"}
+            {"value": 94, "name": "R8 BG8 Biplanar 420 unorm", "tags": ["dawn"]}
         ]
     },
     "texture usage": {
@@ -2098,7 +2130,7 @@
             {"value": 4, "name": "texture binding"},
             {"value": 8, "name": "storage binding"},
             {"value": 16, "name": "render attachment"},
-            {"value": 32, "name": "present"}
+            {"value": 32, "name": "present", "tags": ["dawn"]}
         ]
     },
     "texture view descriptor": {
@@ -2208,6 +2240,7 @@
     "dawn texture internal usage descriptor": {
         "category": "structure",
         "chained": true,
+        "tags": ["dawn"],
         "members": [
             {"name": "internal usage", "type": "texture usage", "default": "none"}
         ]
diff --git a/docs/codegen.md b/docs/codegen.md
index d79c0e9..036305c 100644
--- a/docs/codegen.md
+++ b/docs/codegen.md
@@ -10,10 +10,10 @@
 
 At this time it is used to generate:
 
- - the `webgpu.h` C header
- - the `webgpu_cpp.cpp/h` C++ wrapper over the C header
+ - the Dawn, Emscripten, and upstream webgpu-native `webgpu.h` C header
+ - the Dawn and Emscripten `webgpu_cpp.cpp/h` C++ wrapper over the C header
  - libraries that implements `webgpu.h` by calling in a static or `thread_local` proc table
- - parts of the [Emscripten](https://emscripten.org/) WebGPU implementation
+ - other parts of the [Emscripten](https://emscripten.org/) WebGPU implementation
  - a GMock version of the API with its proc table for testing
  - validation helper functions for dawn_native
  - the definition of dawn_native's proc table
@@ -25,6 +25,8 @@
 
 The basic schema is that every entry is a thing with a `"category"` key what determines the sub-schema to apply to that thing. Categories and their sub-shema are defined below. Several parts of the schema use the concept of "record" which is a list of "record members" which are a combination of a type, a name and other metadata. For example the list of arguments of a function is a record. The list of structure members is a record. This combined concept is useful for the dawn_wire generator to generate code for structure and function calls in a very similar way.
 
+Most items and sub-items can include a list of `"tags"`, which, if specified, conditionally includes the item if any of its tags appears in the `enabled_tags` configuration passed to `parse_json`. This is used to include and exclude various items for Dawn, Emscripten, or upstream header variants. Tags are applied in the "parse_json" step ([rather than later](https://docs.google.com/document/d/1fBniVOxx3-hQbxHMugEPcQsaXaKBZYVO8yG9iXJp-fU/edit?usp=sharing)): this has the benefit of automatically catching when, for a particular tag configuration, an included item references an excluded item.
+
 A **record** is a list of **record members**, each of which is a dictionary with the following schema:
  - `"name"` a string
  - `"type"` a string, the name of the base type for this member
@@ -44,6 +46,7 @@
    - `"value"` a number that can be decimal or hexadecimal
    - `"jsrepr"` (optional) a string to allow overriding how this value map to Javascript for the Emscripten bits
    - `"valid"` (defaults to true) a boolean that controls whether the dawn_native validation utilities will consider this enum value valid.
+ - `"emscripten_no_enum_table"` (optional) if true, skips generating an enum table in `library_webgpu_enum_tables.js`
 
 **`"bitmask"`** an `uint32_t`-based bitmask. It is similar to **`"enum"`** but can be output differently.
 
diff --git a/generator/dawn_generator.gni b/generator/dawn_generator.gni
index 370fc2c..b92b19d 100644
--- a/generator/dawn_generator.gni
+++ b/generator/dawn_generator.gni
@@ -45,6 +45,8 @@
   "src/dawn_wire/server/",
   "src/dawn_wire/",
   "src/include/dawn/",
+  "emscripten-bits/",
+  "webgpu-headers/",
 ]
 
 # Template to help invoking Dawn code generators based on generator_lib
diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py
index 23558e6..684be3f 100644
--- a/generator/dawn_json_generator.py
+++ b/generator/dawn_json_generator.py
@@ -76,27 +76,27 @@
         self.dict_name = name
         self.name = Name(name, native=native)
         self.category = json_data['category']
-        self.javascript = self.json_data.get('javascript', True)
 
 
-EnumValue = namedtuple('EnumValue', ['name', 'value', 'valid', 'jsrepr'])
+EnumValue = namedtuple('EnumValue', ['name', 'value', 'valid', 'json_data'])
 
 
 class EnumType(Type):
-    def __init__(self, name, json_data):
+    def __init__(self, is_enabled, name, json_data):
         Type.__init__(self, name, json_data)
 
         self.values = []
         self.contiguousFromZero = True
         lastValue = -1
         for m in self.json_data['values']:
+            if not is_enabled(m):
+                continue
             value = m['value']
             if value != lastValue + 1:
                 self.contiguousFromZero = False
             lastValue = value
             self.values.append(
-                EnumValue(Name(m['name']), value, m.get('valid', True),
-                          m.get('jsrepr', None)))
+                EnumValue(Name(m['name']), value, m.get('valid', True), m))
 
         # Assert that all values are unique in enums
         all_values = set()
@@ -107,15 +107,15 @@
             all_values.add(value.value)
 
 
-BitmaskValue = namedtuple('BitmaskValue', ['name', 'value'])
+BitmaskValue = namedtuple('BitmaskValue', ['name', 'value', 'json_data'])
 
 
 class BitmaskType(Type):
-    def __init__(self, name, json_data):
+    def __init__(self, is_enabled, name, json_data):
         Type.__init__(self, name, json_data)
         self.values = [
-            BitmaskValue(Name(m['name']), m['value'])
-            for m in self.json_data['values']
+            BitmaskValue(Name(m['name']), m['value'], m)
+            for m in self.json_data['values'] if is_enabled(m)
         ]
         self.full_mask = 0
         for value in self.values:
@@ -123,19 +123,19 @@
 
 
 class CallbackType(Type):
-    def __init__(self, name, json_data):
+    def __init__(self, is_enabled, name, json_data):
         Type.__init__(self, name, json_data)
         self.arguments = []
 
 
 class TypedefType(Type):
-    def __init__(self, name, json_data):
+    def __init__(self, is_enabled, name, json_data):
         Type.__init__(self, name, json_data)
         self.type = None
 
 
 class NativeType(Type):
-    def __init__(self, name, json_data):
+    def __init__(self, is_enabled, name, json_data):
         Type.__init__(self, name, json_data, native=True)
 
 
@@ -146,6 +146,7 @@
                  name,
                  typ,
                  annotation,
+                 json_data,
                  optional=False,
                  is_return_value=False,
                  default_value=None,
@@ -153,6 +154,7 @@
         self.name = name
         self.type = typ
         self.annotation = annotation
+        self.json_data = json_data
         self.length = None
         self.optional = optional
         self.is_return_value = is_return_value
@@ -165,14 +167,18 @@
         self.handle_type = handle_type
 
 
-Method = namedtuple('Method', ['name', 'return_type', 'arguments'])
+Method = namedtuple('Method',
+                    ['name', 'return_type', 'arguments', 'json_data'])
 
 
 class ObjectType(Type):
-    def __init__(self, name, json_data):
-        Type.__init__(self, name, json_data)
-        self.methods = []
-        self.built_type = None
+    def __init__(self, is_enabled, name, json_data):
+        json_data_override = {'methods': []}
+        if 'methods' in json_data:
+            json_data_override['methods'] = [
+                m for m in json_data['methods'] if is_enabled(m)
+            ]
+        Type.__init__(self, name, dict(json_data, **json_data_override))
 
 
 class Record:
@@ -201,9 +207,14 @@
 
 
 class StructureType(Record, Type):
-    def __init__(self, name, json_data):
+    def __init__(self, is_enabled, name, json_data):
         Record.__init__(self, name)
-        Type.__init__(self, name, json_data)
+        json_data_override = {}
+        if 'members' in json_data:
+            json_data_override['members'] = [
+                m for m in json_data['members'] if is_enabled(m)
+            ]
+        Type.__init__(self, name, dict(json_data, **json_data_override))
         self.chained = json_data.get("chained", False)
         self.extensible = json_data.get("extensible", False)
         self.output = json_data.get("output", False)
@@ -228,6 +239,7 @@
         member = RecordMember(Name(m['name']),
                               types[m['type']],
                               m.get('annotation', 'value'),
+                              m,
                               optional=m.get('optional', False),
                               is_return_value=m.get('is_return_value', False),
                               default_value=m.get('default', None),
@@ -263,7 +275,8 @@
     def make_method(json_data):
         arguments = linked_record_members(json_data.get('args', []), types)
         return Method(Name(json_data['name']),
-                      types[json_data.get('returns', 'void')], arguments)
+                      types[json_data.get('returns',
+                                          'void')], arguments, json_data)
 
     obj.methods = [make_method(m) for m in obj.json_data.get('methods', [])]
     obj.methods.sort(key=lambda method: method.name.canonical_case())
@@ -324,7 +337,8 @@
     return result
 
 
-def parse_json(json):
+def parse_json(json, enabled_tags):
+    is_enabled = lambda json_data: item_is_enabled(enabled_tags, json_data)
     category_to_parser = {
         'bitmask': BitmaskType,
         'enum': EnumType,
@@ -342,10 +356,10 @@
         by_category[name] = []
 
     for (name, json_data) in json.items():
-        if name[0] == '_':
+        if name[0] == '_' or not item_is_enabled(enabled_tags, json_data):
             continue
         category = json_data['category']
-        parsed = category_to_parser[category](name, json_data)
+        parsed = category_to_parser[category](is_enabled, name, json_data)
         by_category[category].append(parsed)
         types[name] = parsed
 
@@ -370,7 +384,18 @@
     for struct in by_category['structure']:
         struct.update_metadata()
 
-    return {'types': types, 'by_category': by_category}
+    api_params = {
+        'types': types,
+        'by_category': by_category,
+        'enabled_tags': enabled_tags,
+    }
+    return {
+        'types': types,
+        'by_category': by_category,
+        'enabled_tags': enabled_tags,
+        'c_methods': lambda typ: c_methods(api_params, typ),
+        'c_methods_sorted_by_name': get_c_methods_sorted_by_name(api_params),
+    }
 
 
 ############################################################
@@ -411,7 +436,7 @@
             # Create object method commands by prepending "self"
             members = [
                 RecordMember(Name('self'), types[api_object.dict_name],
-                             'value')
+                             'value', {})
             ]
             members += method.arguments
 
@@ -420,7 +445,7 @@
             if method.return_type.category == 'object':
                 result = RecordMember(Name('result'),
                                       types['ObjectHandle'],
-                                      'value',
+                                      'value', {},
                                       is_return_value=True)
                 result.set_handle_type(method.return_type)
                 members.append(result)
@@ -490,7 +515,7 @@
 
 
 def as_jsEnumValue(value):
-    if value.jsrepr: return value.jsrepr
+    if 'jsrepr' in value.json_data: return value.json_data['jsrepr']
     return "'" + value.name.js_enum_case() + "'"
 
 
@@ -537,6 +562,12 @@
     return decorate(name, typ, arg)
 
 
+def item_is_enabled(enabled_tags, json_data):
+    tags = json_data.get('tags')
+    if tags is None: return True
+    return any(tag in enabled_tags for tag in tags)
+
+
 def as_cEnum(type_name, value_name):
     assert not type_name.native and not value_name.native
     return 'WGPU' + type_name.CamelCase() + '_' + value_name.CamelCase()
@@ -600,17 +631,21 @@
         return as_cppType(typ.name)
 
 
-def c_methods(types, typ):
+def c_methods(params, typ):
     return typ.methods + [
-        Method(Name('reference'), types['void'], []),
-        Method(Name('release'), types['void'], []),
+        x for x in [
+            Method(Name('reference'), params['types']['void'], [],
+                   {'tags': ['dawn', 'emscripten']}),
+            Method(Name('release'), params['types']['void'], [],
+                   {'tags': ['dawn', 'emscripten']}),
+        ] if item_is_enabled(params['enabled_tags'], x.json_data)
     ]
 
 
 def get_c_methods_sorted_by_name(api_params):
     unsorted = [(as_MethodSuffix(typ.name, method.name), typ, method) \
             for typ in api_params['by_category']['object'] \
-            for method in c_methods(api_params['types'], typ) ]
+            for method in c_methods(api_params, typ) ]
     return [(typ, method) for (_, typ, method) in sorted(unsorted)]
 
 
@@ -643,11 +678,9 @@
             help=
             'Comma-separated subset of targets to output. Available targets: '
             + ', '.join(allowed_targets))
-
     def get_file_renders(self, args):
         with open(args.dawn_json) as f:
             loaded_json = json.loads(f.read())
-        api_params = parse_json(loaded_json)
 
         targets = args.targets.split(',')
 
@@ -656,7 +689,9 @@
             with open(args.wire_json) as f:
                 wire_json = json.loads(f.read())
 
-        base_params = {
+        renders = []
+
+        RENDER_PARAMS_BASE = {
             'Name': lambda name: Name(name),
             'as_annotated_cType': \
                 lambda arg: annotated(as_cTypeEnumSpecialCase(arg.type), arg),
@@ -677,59 +712,75 @@
             'convert_cType_to_cppType': convert_cType_to_cppType,
             'as_varName': as_varName,
             'decorate': decorate,
-            'c_methods': lambda typ: c_methods(api_params['types'], typ),
-            'c_methods_sorted_by_name': \
-                get_c_methods_sorted_by_name(api_params),
         }
 
-        renders = []
+        params_dawn = parse_json(loaded_json,
+                                 enabled_tags=['dawn', 'native', 'deprecated'])
 
         if 'dawn_headers' in targets:
             renders.append(
                 FileRender('webgpu.h', 'src/include/dawn/webgpu.h',
-                           [base_params, api_params]))
+                           [RENDER_PARAMS_BASE, params_dawn]))
             renders.append(
                 FileRender('dawn_proc_table.h',
                            'src/include/dawn/dawn_proc_table.h',
-                           [base_params, api_params]))
+                           [RENDER_PARAMS_BASE, params_dawn]))
 
         if 'dawncpp_headers' in targets:
             renders.append(
                 FileRender('webgpu_cpp.h', 'src/include/dawn/webgpu_cpp.h',
-                           [base_params, api_params]))
+                           [RENDER_PARAMS_BASE, params_dawn]))
 
             renders.append(
                 FileRender('webgpu_cpp_print.h',
                            'src/include/dawn/webgpu_cpp_print.h',
-                           [base_params, api_params]))
+                           [RENDER_PARAMS_BASE, params_dawn]))
 
         if 'dawn_proc' in targets:
             renders.append(
                 FileRender('dawn_proc.c', 'src/dawn/dawn_proc.c',
-                           [base_params, api_params]))
+                           [RENDER_PARAMS_BASE, params_dawn]))
             renders.append(
                 FileRender('dawn_thread_dispatch_proc.cpp',
                            'src/dawn/dawn_thread_dispatch_proc.cpp',
-                           [base_params, api_params]))
+                           [RENDER_PARAMS_BASE, params_dawn]))
 
         if 'dawncpp' in targets:
             renders.append(
                 FileRender('webgpu_cpp.cpp', 'src/dawn/webgpu_cpp.cpp',
-                           [base_params, api_params]))
+                           [RENDER_PARAMS_BASE, params_dawn]))
+
+        if 'webgpu_headers' in targets:
+            params_upstream = parse_json(loaded_json,
+                                         enabled_tags=['upstream', 'native'])
+            renders.append(
+                FileRender('webgpu.h', 'webgpu-headers/webgpu.h',
+                           [RENDER_PARAMS_BASE, params_upstream]))
 
         if 'emscripten_bits' in targets:
+            params_emscripten = parse_json(
+                loaded_json, enabled_tags=['upstream', 'emscripten'])
+            renders.append(
+                FileRender('webgpu.h', 'emscripten-bits/webgpu.h',
+                           [RENDER_PARAMS_BASE, params_emscripten]))
+            renders.append(
+                FileRender('webgpu_cpp.h', 'emscripten-bits/webgpu_cpp.h',
+                           [RENDER_PARAMS_BASE, params_emscripten]))
+            renders.append(
+                FileRender('webgpu_cpp.cpp', 'emscripten-bits/webgpu_cpp.cpp',
+                           [RENDER_PARAMS_BASE, params_emscripten]))
             renders.append(
                 FileRender('webgpu_struct_info.json',
-                           'src/dawn/webgpu_struct_info.json',
-                           [base_params, api_params]))
+                           'emscripten-bits/webgpu_struct_info.json',
+                           [RENDER_PARAMS_BASE, params_emscripten]))
             renders.append(
                 FileRender('library_webgpu_enum_tables.js',
-                           'src/dawn/library_webgpu_enum_tables.js',
-                           [base_params, api_params]))
+                           'emscripten-bits/library_webgpu_enum_tables.js',
+                           [RENDER_PARAMS_BASE, params_emscripten]))
 
         if 'mock_webgpu' in targets:
             mock_params = [
-                base_params, api_params, {
+                RENDER_PARAMS_BASE, params_dawn, {
                     'has_callback_arguments': has_callback_arguments
                 }
             ]
@@ -742,8 +793,8 @@
 
         if 'dawn_native_utils' in targets:
             frontend_params = [
-                base_params,
-                api_params,
+                RENDER_PARAMS_BASE,
+                params_dawn,
                 {
                     # TODO: as_frontendType and co. take a Type, not a Name :(
                     'as_frontendType': lambda typ: as_frontendType(typ),
@@ -781,10 +832,10 @@
                            frontend_params))
 
         if 'dawn_wire' in targets:
-            additional_params = compute_wire_params(api_params, wire_json)
+            additional_params = compute_wire_params(params_dawn, wire_json)
 
             wire_params = [
-                base_params, api_params, {
+                RENDER_PARAMS_BASE, params_dawn, {
                     'as_wireType': as_wireType,
                     'as_annotated_wireType': \
                         lambda arg: annotated(as_wireType(arg.type), arg),
diff --git a/generator/templates/library_webgpu_enum_tables.js b/generator/templates/library_webgpu_enum_tables.js
index 44048ad..2ec4eb6 100644
--- a/generator/templates/library_webgpu_enum_tables.js
+++ b/generator/templates/library_webgpu_enum_tables.js
@@ -17,7 +17,7 @@
 //* Emscripten's library_webgpu.js.
 //* https://github.com/emscripten-core/emscripten/blob/master/src/library_webgpu.js
 //*
-    {% for type in by_category["enum"] if type.javascript %}
+    {% for type in by_category["enum"] if not type.json_data.get("emscripten_no_enum_table") %}
         {{type.name.CamelCase()}}: {% if type.contiguousFromZero -%}
             [
                 {% for value in type.values %}
diff --git a/generator/templates/webgpu.h b/generator/templates/webgpu.h
index e42c7ac..a0a6e3e 100644
--- a/generator/templates/webgpu.h
+++ b/generator/templates/webgpu.h
@@ -74,8 +74,10 @@
 #include <stdbool.h>
 
 #define WGPU_WHOLE_SIZE (0xffffffffffffffffULL)
-// TODO(crbug.com/dawn/520): Remove WGPU_STRIDE_UNDEFINED in favor of WGPU_COPY_STRIDE_UNDEFINED.
-#define WGPU_STRIDE_UNDEFINED (0xffffffffUL)
+{% if 'deprecated' in enabled_tags %}
+    // TODO(crbug.com/dawn/520): Remove WGPU_STRIDE_UNDEFINED in favor of WGPU_COPY_STRIDE_UNDEFINED.
+    #define WGPU_STRIDE_UNDEFINED (0xffffffffUL)
+{% endif %}
 #define WGPU_COPY_STRIDE_UNDEFINED (0xffffffffUL)
 #define WGPU_LIMIT_U32_UNDEFINED (0xffffffffUL)
 #define WGPU_LIMIT_U64_UNDEFINED (0xffffffffffffffffULL)
@@ -99,7 +101,7 @@
         typedef WGPUFlags {{as_cType(type.name)}}Flags;
     {% endif %}
 
-{% endfor %}
+{% endfor -%}
 
 typedef struct WGPUChainedStruct {
     struct WGPUChainedStruct const * next;
@@ -127,19 +129,19 @@
     } {{as_cType(type.name)}};
 
 {% endfor %}
-
 {% for typeDef in by_category["typedef"] %}
     // {{as_cType(typeDef.name)}} is deprecated.
     // Use {{as_cType(typeDef.type.name)}} instead.
     typedef {{as_cType(typeDef.type.name)}} {{as_cType(typeDef.name)}};
 
 {% endfor %}
+{% if 'deprecated' in enabled_tags %}
+    // TODO(crbug.com/dawn/1023): Remove after the deprecation period.
+    #define WGPUInputStepMode_Vertex WGPUVertexStepMode_Vertex
+    #define WGPUInputStepMode_Instance WGPUVertexStepMode_Instance
+    #define WGPUInputStepMode_Force32 WGPUVertexStepMode_Force32
 
-// TODO(crbug.com/dawn/1023): Remove after the deprecation period.
-#define WGPUInputStepMode_Vertex WGPUVertexStepMode_Vertex
-#define WGPUInputStepMode_Instance WGPUVertexStepMode_Instance
-#define WGPUInputStepMode_Force32 WGPUVertexStepMode_Force32
-
+{% endif %}
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/generator/templates/webgpu_cpp.cpp b/generator/templates/webgpu_cpp.cpp
index be17a5d..7f5dd59 100644
--- a/generator/templates/webgpu_cpp.cpp
+++ b/generator/templates/webgpu_cpp.cpp
@@ -11,7 +11,11 @@
 //* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 //* See the License for the specific language governing permissions and
 //* limitations under the License.
-#include "dawn/webgpu_cpp.h"
+{% if 'dawn' in enabled_tags %}
+    #include "dawn/webgpu_cpp.h"
+{% else %}
+    #include "webgpu/webgpu_cpp.h"
+{% endif %}
 
 namespace wgpu {
     {% for type in by_category["enum"] %}
diff --git a/generator/templates/webgpu_cpp.h b/generator/templates/webgpu_cpp.h
index fbb386d..951f6ad 100644
--- a/generator/templates/webgpu_cpp.h
+++ b/generator/templates/webgpu_cpp.h
@@ -20,8 +20,10 @@
 namespace wgpu {
 
     static constexpr uint64_t kWholeSize = WGPU_WHOLE_SIZE;
-    // TODO(crbug.com/520): Remove kStrideUndefined in favor of kCopyStrideUndefined.
-    static constexpr uint32_t kStrideUndefined = WGPU_STRIDE_UNDEFINED;
+    {% if 'deprecated' in enabled_tags %}
+        // TODO(crbug.com/520): Remove kStrideUndefined in favor of kCopyStrideUndefined.
+        static constexpr uint32_t kStrideUndefined = WGPU_STRIDE_UNDEFINED;
+    {% endif %}
     static constexpr uint32_t kCopyStrideUndefined = WGPU_COPY_STRIDE_UNDEFINED;
     static constexpr uint32_t kLimitU32Undefined = WGPU_LIMIT_U32_UNDEFINED;
     static constexpr uint64_t kLimitU64Undefined = WGPU_LIMIT_U64_UNDEFINED;
@@ -73,7 +75,6 @@
         using {{as_cppType(typeDef.name)}} = {{as_cppType(typeDef.type.name)}};
 
     {% endfor %}
-
     template<typename Derived, typename CType>
     class ObjectBase {
       public:
@@ -237,7 +238,6 @@
         };
 
     {% endfor %}
-
 }  // namespace wgpu
 
 #endif // WEBGPU_CPP_H_
diff --git a/generator/templates/webgpu_struct_info.json b/generator/templates/webgpu_struct_info.json
index c4b4000..6dd38af 100644
--- a/generator/templates/webgpu_struct_info.json
+++ b/generator/templates/webgpu_struct_info.json
@@ -26,7 +26,7 @@
                 "next",
                 "sType"
             ],
-            {% for type in by_category["structure"] if type.javascript %}
+            {% for type in by_category["structure"] %}
                 "{{as_cType(type.name)}}": [
                     {% if type.chained %}
                         "chain"
diff --git a/src/dawn/BUILD.gn b/src/dawn/BUILD.gn
index 543c51e..feddfee 100644
--- a/src/dawn/BUILD.gn
+++ b/src/dawn/BUILD.gn
@@ -29,14 +29,6 @@
   ]
 }
 
-dawn_json_generator("emscripten_bits_gen") {
-  target = "emscripten_bits"
-  outputs = [
-    "src/dawn/webgpu_struct_info.json",
-    "src/dawn/library_webgpu_enum_tables.js",
-  ]
-}
-
 source_set("dawn_headers") {
   all_dependent_configs = [ "${dawn_root}/src/common:dawn_public_include_dirs" ]
   public_deps = [ ":dawn_headers_gen" ]
@@ -107,3 +99,23 @@
     "${dawn_root}/src/include/dawn/dawn_thread_dispatch_proc.h",
   ]
 }
+
+###############################################################################
+# Other generated files (upstream header, emscripten header, emscripten bits)
+###############################################################################
+
+dawn_json_generator("webgpu_headers_gen") {
+  target = "webgpu_headers"
+  outputs = [ "webgpu-headers/webgpu.h" ]
+}
+
+dawn_json_generator("emscripten_bits_gen") {
+  target = "emscripten_bits"
+  outputs = [
+    "emscripten-bits/webgpu.h",
+    "emscripten-bits/webgpu_cpp.h",
+    "emscripten-bits/webgpu_cpp.cpp",
+    "emscripten-bits/webgpu_struct_info.json",
+    "emscripten-bits/library_webgpu_enum_tables.js",
+  ]
+}
diff --git a/src/dawn/CMakeLists.txt b/src/dawn/CMakeLists.txt
index ff7d278..389b6b0 100644
--- a/src/dawn/CMakeLists.txt
+++ b/src/dawn/CMakeLists.txt
@@ -87,3 +87,29 @@
 endif()
 target_sources(dawn_proc PRIVATE ${DAWNPROC_GEN_SOURCES})
 target_link_libraries(dawn_proc PUBLIC dawn_headers)
+
+###############################################################################
+# Other generated files (upstream header, emscripten header, emscripten bits)
+###############################################################################
+
+DawnJSONGenerator(
+    TARGET "webgpu_headers"
+    PRINT_NAME "WebGPU headers"
+    RESULT_VARIABLE "WEBGPU_HEADERS_GEN_SOURCES"
+)
+
+add_library(webgpu_headers STATIC ${DAWN_DUMMY_FILE})
+target_sources(webgpu_headers PRIVATE
+    ${WEBGPU_HEADERS_GEN_SOURCES}
+)
+
+DawnJSONGenerator(
+    TARGET "emscripten_bits"
+    PRINT_NAME "Emscripten WebGPU bits"
+    RESULT_VARIABLE "EMSCRIPTEN_BITS_GEN_SOURCES"
+)
+
+add_library(emscripten_bits STATIC ${DAWN_DUMMY_FILE})
+target_sources(emscripten_bits PRIVATE
+    ${EMSCRIPTEN_BITS_GEN_SOURCES}
+)
