webgpu.h introduce a base struct for extension structures.

struct WGPUChainedStruct {
     WGPUChainedStruct const * nextInChain;
     WGPUSType sType;
 };

And changes all the nextInChain to point to such structures. This adds
more type safety to extension structs and requires less casting to check
sTypes and friends.

Bug: dawn:269

Change-Id: I443f363cdb55dbec7c7f6e897245d4a7ea0ebe70
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15080
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
Corentin Wallez
2020-01-15 09:54:42 +00:00
committed by Commit Bot service account
parent 7f078e7ebe
commit 2b24c3d92d
11 changed files with 77 additions and 10 deletions

View File

@@ -140,7 +140,11 @@ class StructureType(Record, Type):
def __init__(self, name, json_data):
Record.__init__(self, name)
Type.__init__(self, name, json_data)
self.chained = json_data.get("chained", False)
self.extensible = json_data.get("extensible", False)
# Chained structs inherit from wgpu::ChainedStruct which has nextInChain so setting
# both extensible and chained would result in two nextInChain members.
assert(not (self.extensible and self.chained))
class Command(Record):
def __init__(self, name, members=None):