diff --git a/dawn.json b/dawn.json
index e9eea72..5c3e5de 100644
--- a/dawn.json
+++ b/dawn.json
@@ -22,6 +22,7 @@
         "c_prefix": "WGPU",
         "namespace": "wgpu",
         "proc_table_prefix": "Dawn",
+        "native_namespace": "dawn native",
         "copyright_year": "2019"
     },
 
diff --git a/docs/codegen.md b/docs/codegen.md
index e0cfd55..d4054ea 100644
--- a/docs/codegen.md
+++ b/docs/codegen.md
@@ -28,8 +28,10 @@
  - `"api"` a string, the name of the Web API
  - `"namespace"` a string, the namespace of C++ wrapper
  - `"c_prefix"` (optional) a string, the prefix of C function and data type, it will default to upper-case of `"namespace"` if it's not provided.
-  - `"proc_table_prefix"` a string, the prefix of proc table.
- - `"copyright_year"` (optional) a string, templates will use the the year of copyright.
+ - `"proc_table_prefix"` a string, the prefix of proc table.
+ - `"impl_dir"` a string, the directory of API implementation
+ - `"native_namespace"` a string, the namespace of native implementation
+ - `"copyright_year"` (optional) a string, templates will use the year of copyright.
 
 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.
 
diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py
index ffee315..086f9cb 100644
--- a/generator/dawn_json_generator.py
+++ b/generator/dawn_json_generator.py
@@ -29,6 +29,8 @@
         self.namespace = metadata['namespace']
         self.c_prefix = metadata.get('c_prefix', self.namespace.upper())
         self.proc_table_prefix = metadata['proc_table_prefix']
+        self.impl_dir = metadata.get('impl_dir', '')
+        self.native_namespace = metadata['native_namespace']
         self.copyright_year = metadata.get('copyright_year', None)
 
 
@@ -856,13 +858,15 @@
                 }
             ]
 
+            impl_dir = metadata.impl_dir + '/' if metadata.impl_dir else ''
+            native_dir = impl_dir + Name(metadata.native_namespace).snake_case()
             renders.append(
                 FileRender('dawn_native/ValidationUtils.h',
-                           'src/dawn_native/ValidationUtils_autogen.h',
+                           'src/' + native_dir + '/ValidationUtils_autogen.h',
                            frontend_params))
             renders.append(
                 FileRender('dawn_native/ValidationUtils.cpp',
-                           'src/dawn_native/ValidationUtils_autogen.cpp',
+                           'src/' + native_dir + '/ValidationUtils_autogen.cpp',
                            frontend_params))
             renders.append(
                 FileRender('dawn_native/dawn_platform.h',
diff --git a/generator/templates/dawn_native/ValidationUtils.cpp b/generator/templates/dawn_native/ValidationUtils.cpp
index 199371e..abe0726 100644
--- a/generator/templates/dawn_native/ValidationUtils.cpp
+++ b/generator/templates/dawn_native/ValidationUtils.cpp
@@ -12,15 +12,19 @@
 //* See the License for the specific language governing permissions and
 //* limitations under the License.
 
-#include "dawn_native/ValidationUtils_autogen.h"
+{% set native_namespace = Name(metadata.native_namespace).snake_case() %}
+{% set impl_dir = metadata.impl_dir + "/" if metadata.impl_dir else "" %}
+{% set native_dir = impl_dir + native_namespace %}
+#include "{{native_dir}}/ValidationUtils_autogen.h"
 
-namespace dawn_native {
+namespace {{native_namespace}} {
 
+    {% set namespace = metadata.namespace %}
     {% for type in by_category["enum"] %}
-        MaybeError Validate{{type.name.CamelCase()}}(wgpu::{{as_cppType(type.name)}} value) {
+        MaybeError Validate{{type.name.CamelCase()}}({{namespace}}::{{as_cppType(type.name)}} value) {
             switch (value) {
                 {% for value in type.values if value.valid %}
-                    case wgpu::{{as_cppType(type.name)}}::{{as_cppEnum(value.name)}}:
+                    case {{namespace}}::{{as_cppType(type.name)}}::{{as_cppEnum(value.name)}}:
                         return {};
                 {% endfor %}
                 default:
@@ -31,8 +35,8 @@
     {% endfor %}
 
     {% for type in by_category["bitmask"] %}
-        MaybeError Validate{{type.name.CamelCase()}}(wgpu::{{as_cppType(type.name)}} value) {
-            if ((value & static_cast<wgpu::{{as_cppType(type.name)}}>(~{{type.full_mask}})) == 0) {
+        MaybeError Validate{{type.name.CamelCase()}}({{namespace}}::{{as_cppType(type.name)}} value) {
+            if ((value & static_cast<{{namespace}}::{{as_cppType(type.name)}}>(~{{type.full_mask}})) == 0) {
                 return {};
             }
             return DAWN_VALIDATION_ERROR("Invalid value for {{as_cType(type.name)}}");
@@ -40,4 +44,4 @@
 
     {% endfor %}
 
-} // namespace dawn_native
+} // namespace {{native_namespace}}
diff --git a/generator/templates/dawn_native/ValidationUtils.h b/generator/templates/dawn_native/ValidationUtils.h
index 1983249..68d7176 100644
--- a/generator/templates/dawn_native/ValidationUtils.h
+++ b/generator/templates/dawn_native/ValidationUtils.h
@@ -15,17 +15,22 @@
 #ifndef BACKEND_VALIDATIONUTILS_H_
 #define BACKEND_VALIDATIONUTILS_H_
 
-#include "dawn/webgpu_cpp.h"
+{% set api = metadata.api.lower() %}
+#include "dawn/{{api}}_cpp.h"
 
-#include "dawn_native/Error.h"
+{% set native_namespace = Name(metadata.native_namespace).snake_case() %}
+{% set impl_dir = metadata.impl_dir + "/" if metadata.impl_dir else "" %}
+{% set native_dir = impl_dir + native_namespace %}
+#include "{{native_dir}}/Error.h"
 
-namespace dawn_native {
+namespace {{native_namespace}} {
 
     // Helper functions to check the value of enums and bitmasks
     {% for type in by_category["enum"] + by_category["bitmask"] %}
-        MaybeError Validate{{type.name.CamelCase()}}(wgpu::{{as_cppType(type.name)}} value);
+        {% set namespace = metadata.namespace %}
+        MaybeError Validate{{type.name.CamelCase()}}({{namespace}}::{{as_cppType(type.name)}} value);
     {% endfor %}
 
-} // namespace dawn_native
+} // namespace {{native_namespace}}
 
 #endif  // BACKEND_VALIDATIONUTILS_H_
