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>
This commit is contained in:
parent
0e922b5995
commit
a840574db0
|
@ -757,8 +757,8 @@ class MultiGeneratorFromDawnJSON(Generator):
|
||||||
RENDER_PARAMS_BASE = make_base_render_params(metadata)
|
RENDER_PARAMS_BASE = make_base_render_params(metadata)
|
||||||
|
|
||||||
api = metadata.api.lower()
|
api = metadata.api.lower()
|
||||||
|
prefix = metadata.proc_table_prefix.lower()
|
||||||
if 'dawn_headers' in targets:
|
if 'dawn_headers' in targets:
|
||||||
prefix = metadata.proc_table_prefix.lower()
|
|
||||||
renders.append(
|
renders.append(
|
||||||
FileRender('api.h', 'src/include/dawn/' + api + '.h',
|
FileRender('api.h', 'src/include/dawn/' + api + '.h',
|
||||||
[RENDER_PARAMS_BASE, params_dawn]))
|
[RENDER_PARAMS_BASE, params_dawn]))
|
||||||
|
@ -779,11 +779,11 @@ class MultiGeneratorFromDawnJSON(Generator):
|
||||||
|
|
||||||
if 'dawn_proc' in targets:
|
if 'dawn_proc' in targets:
|
||||||
renders.append(
|
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]))
|
[RENDER_PARAMS_BASE, params_dawn]))
|
||||||
renders.append(
|
renders.append(
|
||||||
FileRender('dawn_thread_dispatch_proc.cpp',
|
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]))
|
[RENDER_PARAMS_BASE, params_dawn]))
|
||||||
|
|
||||||
if 'webgpu_dawn_native_proc' in targets:
|
if 'webgpu_dawn_native_proc' in targets:
|
||||||
|
|
|
@ -12,13 +12,15 @@
|
||||||
//* See the License for the specific language governing permissions and
|
//* See the License for the specific language governing permissions and
|
||||||
//* limitations under the License.
|
//* 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_) {
|
if (procs_) {
|
||||||
procs = *procs_;
|
procs = *procs_;
|
||||||
} else {
|
} else {
|
||||||
|
@ -26,13 +28,20 @@ void dawnProcSetProcs(const DawnProcTable* procs_) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WGPUInstance wgpuCreateInstance(WGPUInstanceDescriptor const * descriptor) {
|
{% for function in by_category["function"] %}
|
||||||
return procs.createInstance(descriptor);
|
{{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)}}
|
||||||
WGPUProc wgpuGetProcAddress(WGPUDevice device, const char* procName) {
|
{%- endfor -%}
|
||||||
return procs.getProcAddress(device, procName);
|
) {
|
||||||
}
|
{% 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 type in by_category["object"] %}
|
||||||
{% for method in c_methods(type) %}
|
{% for method in c_methods(type) %}
|
||||||
|
|
|
@ -15,13 +15,20 @@ void {{prefix}}ProcSetPerThreadProcs(const {{Prefix}}ProcTable* procs) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static WGPUProc ThreadDispatchGetProcAddress(WGPUDevice device, const char* procName) {
|
{% for function in by_category["function"] %}
|
||||||
return perThreadProcs.getProcAddress(device, procName);
|
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)}}
|
||||||
static WGPUInstance ThreadDispatchCreateInstance(WGPUInstanceDescriptor const * descriptor) {
|
{%- endfor -%}
|
||||||
return perThreadProcs.createInstance(descriptor);
|
) {
|
||||||
}
|
{% 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 type in by_category["object"] %}
|
||||||
{% for method in c_methods(type) %}
|
{% for method in c_methods(type) %}
|
||||||
|
|
Loading…
Reference in New Issue