Wire: Make validation error prior to OOM if mappedAtCreation == false
This patch updates the validations about CreateBuffer() with dawn_wire
to match the latest WebGPU SPEC.
According to the SPEC, the validations in CreateBuffer() should be
executed in the below order:
1. If mappedAtCreation == true, return nullptr and a RangeError will be
generated in Chromium.
2. Validate BufferDescriptor and check if there is OOM at device timeline
3. Check if there is OOM at content timeline
Bug: dawn:1586
Change-Id: I97ff5f82a42208442ddf6e46e66381c3b3680450
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109040
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
diff --git a/dawn.json b/dawn.json
index 817991f..972d68d 100644
--- a/dawn.json
+++ b/dawn.json
@@ -994,7 +994,10 @@
{
"name": "create error buffer",
"returns": "buffer",
- "tags": ["dawn"]
+ "tags": ["dawn"],
+ "args": [
+ {"name": "descriptor", "type": "buffer descriptor", "annotation": "const*"}
+ ]
},
{
"name": "create command encoder",
@@ -2567,7 +2570,8 @@
{"value": 1003, "name": "dawn encoder internal usage descriptor", "tags": ["dawn"]},
{"value": 1004, "name": "dawn instance descriptor", "tags": ["dawn", "native"]},
{"value": 1005, "name": "dawn cache device descriptor", "tags": ["dawn", "native"]},
- {"value": 1006, "name": "dawn adapter properties power preference", "tags": ["dawn", "native"]}
+ {"value": 1006, "name": "dawn adapter properties power preference", "tags": ["dawn", "native"]},
+ {"value": 1007, "name": "dawn buffer descriptor error info from wire client", "tags": ["dawn"]}
]
},
"texture": {
@@ -2979,5 +2983,14 @@
"members": [
{"name": "power preference", "type": "power preference", "default": "undefined"}
]
+ },
+ "dawn buffer descriptor error info from wire client": {
+ "category": "structure",
+ "chained": "in",
+ "chain roots": ["buffer descriptor"],
+ "tags": ["dawn"],
+ "members": [
+ {"name": "out of memory", "type": "bool", "default": "false"}
+ ]
}
}