Replace hardcode functions in templates
Make dawn_proc.c and dawn_thread_dispatch_proc.cpp flexible
BUG=dawn:1201
Change-Id: Ifca73b33d6aed70b2dda3cf181a4650380f0a2fb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/72065
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Junwei Fu <junwei.fu@intel.com>
diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py
index 6d21eb8..fd95ccc 100644
--- a/generator/dawn_json_generator.py
+++ b/generator/dawn_json_generator.py
@@ -757,8 +757,8 @@
RENDER_PARAMS_BASE = make_base_render_params(metadata)
api = metadata.api.lower()
+ prefix = metadata.proc_table_prefix.lower()
if 'dawn_headers' in targets:
- prefix = metadata.proc_table_prefix.lower()
renders.append(
FileRender('api.h', 'src/include/dawn/' + api + '.h',
[RENDER_PARAMS_BASE, params_dawn]))
@@ -779,11 +779,11 @@
if 'dawn_proc' in targets:
renders.append(
- FileRender('dawn_proc.c', 'src/dawn/dawn_proc.c',
+ FileRender('dawn_proc.c', 'src/dawn/' + prefix + '_proc.c',
[RENDER_PARAMS_BASE, params_dawn]))
renders.append(
FileRender('dawn_thread_dispatch_proc.cpp',
- 'src/dawn/dawn_thread_dispatch_proc.cpp',
+ 'src/dawn/' + prefix + '_thread_dispatch_proc.cpp',
[RENDER_PARAMS_BASE, params_dawn]))
if 'webgpu_dawn_native_proc' in targets:
diff --git a/generator/templates/dawn_proc.c b/generator/templates/dawn_proc.c
index 9d77755..68970c6 100644
--- a/generator/templates/dawn_proc.c
+++ b/generator/templates/dawn_proc.c
@@ -12,13 +12,15 @@
//* See the License for the specific language governing permissions and
//* limitations under the License.
-#include "dawn/dawn_proc.h"
+{% set Prefix = metadata.proc_table_prefix %}
+{% set prefix = Prefix.lower() %}
+#include "dawn/{{prefix}}_proc.h"
-static DawnProcTable procs;
+static {{Prefix}}ProcTable procs;
-static DawnProcTable nullProcs;
+static {{Prefix}}ProcTable nullProcs;
-void dawnProcSetProcs(const DawnProcTable* procs_) {
+void {{prefix}}ProcSetProcs(const {{Prefix}}ProcTable* procs_) {
if (procs_) {
procs = *procs_;
} else {
@@ -26,13 +28,20 @@
}
}
-WGPUInstance wgpuCreateInstance(WGPUInstanceDescriptor const * descriptor) {
- return procs.createInstance(descriptor);
-}
-
-WGPUProc wgpuGetProcAddress(WGPUDevice device, const char* procName) {
- return procs.getProcAddress(device, procName);
-}
+{% for function in by_category["function"] %}
+ {{as_cType(function.return_type.name)}} {{as_cMethod(None, function.name)}}(
+ {%- for arg in function.arguments -%}
+ {% if not loop.first %}, {% endif %}{{as_annotated_cType(arg)}}
+ {%- endfor -%}
+ ) {
+ {% if function.return_type.name.canonical_case() != "void" %}return {% endif %}
+ procs.{{as_varName(function.name)}}(
+ {%- for arg in function.arguments -%}
+ {% if not loop.first %}, {% endif %}{{as_varName(arg.name)}}
+ {%- endfor -%}
+ );
+ }
+{% endfor %}
{% for type in by_category["object"] %}
{% for method in c_methods(type) %}
diff --git a/generator/templates/dawn_thread_dispatch_proc.cpp b/generator/templates/dawn_thread_dispatch_proc.cpp
index ab6b24f..fc79464 100644
--- a/generator/templates/dawn_thread_dispatch_proc.cpp
+++ b/generator/templates/dawn_thread_dispatch_proc.cpp
@@ -15,13 +15,20 @@
}
}
-static WGPUProc ThreadDispatchGetProcAddress(WGPUDevice device, const char* procName) {
- return perThreadProcs.getProcAddress(device, procName);
-}
-
-static WGPUInstance ThreadDispatchCreateInstance(WGPUInstanceDescriptor const * descriptor) {
- return perThreadProcs.createInstance(descriptor);
-}
+{% for function in by_category["function"] %}
+ static {{as_cType(function.return_type.name)}} ThreadDispatch{{as_cppType(function.name)}}(
+ {%- for arg in function.arguments -%}
+ {% if not loop.first %}, {% endif %}{{as_annotated_cType(arg)}}
+ {%- endfor -%}
+ ) {
+ {% if function.return_type.name.canonical_case() != "void" %}return {% endif %}
+ perThreadProcs.{{as_varName(function.name)}}(
+ {%- for arg in function.arguments -%}
+ {% if not loop.first %}, {% endif %}{{as_varName(arg.name)}}
+ {%- endfor -%}
+ );
+ }
+{% endfor %}
{% for type in by_category["object"] %}
{% for method in c_methods(type) %}