Skip to content

Commit 794b1b7

Browse files
austinEngDawn LUCI CQ
authored and
Dawn LUCI CQ
committed
Re-number enum values part 2
- Makes enum values within an implementation-specific range packed at the front. - Tag emscripten-specific enum values. - Generate Dawn webgpu{_cpp}.h headers with all tags enabled except "upstream". This means we generate Emscripten-only things inside the header as well so the header can be used for either native or web. In native, Dawn would report these features as not supported. Currently the only such feature was the surface descriptor for HTML canvas element. Previously, it was specified in dawn.json without the "emscripten" tag, so Dawn headers already included it. - Remove the emscripten-only onSubmittedWorkDone function. This is necessary to avoid a function type conflict with the new function. The Emscripten signature was already changed in emscripten-core/emscripten#21299 - Update dawn native format utils to handle unknown enums. The header has all the enums in it, but Dawn native doesn't know the Emscripten enums. Fixed: 42241083 Change-Id: I4774053d1718ad6302ce2e4302ad8690787c10e6 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/196174 Reviewed-by: Loko Kung <[email protected]> Reviewed-by: Kai Ninomiya <[email protected]> Commit-Queue: Austin Eng <[email protected]>
1 parent 7a53b7c commit 794b1b7

File tree

4 files changed

+28
-28
lines changed

4 files changed

+28
-28
lines changed

generator/dawn_json_generator.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ def js_enum_case(self):
9494
result += chunk.lower()
9595
return result
9696

97-
9897
def concat_names(*names):
9998
return ' '.join([name.canonical_case() for name in names])
10099

@@ -1204,6 +1203,13 @@ def get_file_renders(self, args):
12041203
params_dawn = parse_json(
12051204
loaded_json,
12061205
enabled_tags=['compat', 'dawn', 'native', 'deprecated'])
1206+
1207+
params_all = parse_json(loaded_json,
1208+
enabled_tags=[
1209+
'compat', 'dawn', 'emscripten', 'native',
1210+
'deprecated'
1211+
])
1212+
12071213
metadata = params_dawn['metadata']
12081214
RENDER_PARAMS_BASE = make_base_render_params(metadata)
12091215

@@ -1212,7 +1218,7 @@ def get_file_renders(self, args):
12121218
if 'headers' in targets:
12131219
renders.append(
12141220
FileRender('api.h', 'include/dawn/' + api + '.h',
1215-
[RENDER_PARAMS_BASE, params_dawn]))
1221+
[RENDER_PARAMS_BASE, params_all]))
12161222
renders.append(
12171223
FileRender('dawn/wire/client/api.h',
12181224
'include/dawn/wire/client/' + api + '.h',
@@ -1225,7 +1231,7 @@ def get_file_renders(self, args):
12251231
if 'cpp_headers' in targets:
12261232
renders.append(
12271233
FileRender('api_cpp.h', 'include/dawn/' + api + '_cpp.h', [
1228-
RENDER_PARAMS_BASE, params_dawn, {
1234+
RENDER_PARAMS_BASE, params_all, {
12291235
'c_header': api + '/' + api + '.h',
12301236
'c_namespace': None,
12311237
}

generator/templates/dawn/native/api_absl_format.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,13 @@ namespace {{namespace}} {
8989
{% for value in type.values %}
9090
case {{as_cppType(type.name)}}::{{as_cppEnum(value.name)}}:
9191
s->Append("{{as_cppEnum(value.name)}}");
92-
break;
92+
return {true};
9393
{% endfor %}
94+
default:
95+
break;
9496
}
95-
} else {
96-
s->Append(absl::StrFormat("%u", static_cast<typename std::underlying_type<{{as_cppType(type.name)}}>::type>(value)));
9797
}
98+
s->Append(absl::StrFormat("%u", static_cast<typename std::underlying_type<{{as_cppType(type.name)}}>::type>(value)));
9899
return {true};
99100
}
100101
{% endfor %}

src/dawn/dawn.json

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2919,15 +2919,6 @@
29192919
{"name": "commands", "type": "command buffer", "annotation": "const*", "length": "command count"}
29202920
]
29212921
},
2922-
{
2923-
"name": "on submitted work done",
2924-
"tags": ["emscripten"],
2925-
"args": [
2926-
{"name": "signal value", "type": "uint64_t"},
2927-
{"name": "callback", "type": "queue work done callback"},
2928-
{"name": "userdata", "type": "void *"}
2929-
]
2930-
},
29312922
{
29322923
"name": "on submitted work done",
29332924
"tags": ["dawn", "upstream"],
@@ -3851,6 +3842,7 @@
38513842
"category": "structure",
38523843
"chained": "in",
38533844
"chain roots": ["surface descriptor"],
3845+
"tags": ["emscripten"],
38543846
"members": [
38553847
{"name": "selector", "type": "char", "annotation": "const*", "length": "strlen"}
38563848
]
@@ -3878,7 +3870,7 @@
38783870
"category": "structure",
38793871
"chained": "in",
38803872
"chain roots": ["surface descriptor"],
3881-
"tags": ["upstream"],
3873+
"tags": ["native"],
38823874
"members": [
38833875
{"name": "connection", "type": "void", "annotation": "*"},
38843876
{"name": "window", "type": "uint32_t"}
@@ -3956,20 +3948,22 @@
39563948
"category": "enum",
39573949
"emscripten_no_enum_table": true,
39583950
"values": [
3959-
{"value": 1, "name": "surface descriptor from metal layer", "tags": ["native"]},
3960-
{"value": 2, "name": "surface descriptor from windows HWND", "tags": ["native"]},
3961-
{"value": 3, "name": "surface descriptor from xlib window", "tags": ["native"]},
3962-
{"value": 4, "name": "surface descriptor from canvas HTML selector"},
3963-
{"value": 5, "name": "shader module SPIRV descriptor"},
3964-
{"value": 6, "name": "shader module WGSL descriptor"},
3965-
{"value": 7, "name": "primitive depth clip control"},
3966-
{"value": 8, "name": "surface descriptor from wayland surface", "tags": ["native"]},
3967-
{"value": 9, "name": "surface descriptor from android native window", "tags": ["native"]},
3968-
{"value": 10, "name": "surface descriptor from xcb window", "tags": ["upstream"]},
3969-
{"value": 11, "name": "render pass descriptor max draw count"},
3951+
{"value": 1, "name": "shader module SPIRV descriptor"},
3952+
{"value": 2, "name": "shader module WGSL descriptor"},
3953+
{"value": 3, "name": "primitive depth clip control"},
3954+
{"value": 4, "name": "render pass descriptor max draw count"},
39703955

39713956
{"value": 0, "name": "texture binding view dimension descriptor", "tags": ["compat"]},
39723957

3958+
{"value": 0, "name": "surface descriptor from canvas HTML selector", "tags": ["emscripten"]},
3959+
3960+
{"value": 0, "name": "surface descriptor from metal layer", "tags": ["native"]},
3961+
{"value": 1, "name": "surface descriptor from windows HWND", "tags": ["native"]},
3962+
{"value": 2, "name": "surface descriptor from xlib window", "tags": ["native"]},
3963+
{"value": 3, "name": "surface descriptor from wayland surface", "tags": ["native"]},
3964+
{"value": 4, "name": "surface descriptor from android native window", "tags": ["native"]},
3965+
{"value": 5, "name": "surface descriptor from xcb window", "tags": ["native"]},
3966+
39733967
{"value": 0, "name": "surface descriptor from windows core window", "tags": ["dawn"]},
39743968
{"value": 1, "name": "external texture binding entry", "tags": ["dawn"]},
39753969
{"value": 2, "name": "external texture binding layout", "tags": ["dawn"]},

tools/android/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,6 @@ dawn_json_generator("kotlin_gen") {
181181
"java/android/dawn/SurfaceConfiguration.kt",
182182
"java/android/dawn/SurfaceDescriptor.kt",
183183
"java/android/dawn/SurfaceDescriptorFromAndroidNativeWindow.kt",
184-
"java/android/dawn/SurfaceDescriptorFromCanvasHTMLSelector.kt",
185184
"java/android/dawn/SurfaceGetCurrentTextureStatus.kt",
186185
"java/android/dawn/SurfaceTexture.kt",
187186
"java/android/dawn/SwapChain.kt",

0 commit comments

Comments
 (0)