Make dawn.h closer to webgpu.h

This includes several changes to make dawn.h closer to webgpu.h (apart
from the renames and copyright changes):

 - Make nextInChain follow the same type convention as the rest of the
   header.
 - Add defines that allow skipping the procs definition or the functions
   declaration part of the header.
 - Sort the methods by name for each object.
 - Put the callback definition inside extern "C"
 - Make the enums typedef have the name of the enum twice.

BUG=dawn:22

Change-Id: I36e4587d60ca43886636ebd19d54752004f4696d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11903
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Corentin Wallez 2019-10-08 07:38:01 +00:00 committed by Commit Bot service account
parent a83e0cdbcc
commit 97231682d0
3 changed files with 13 additions and 7 deletions

View File

@ -195,6 +195,7 @@ def link_object(obj, types):
methods = [make_method(m) for m in obj.json_data.get('methods', [])]
obj.methods = [method for method in methods if not is_native_method(method)]
obj.methods.sort(key=lambda method: method.name.canonical_case())
obj.native_methods = [method for method in methods if is_native_method(method)]
def link_structure(struct, types):
@ -439,7 +440,7 @@ def as_wireType(typ):
return as_cppType(typ.name)
def cpp_native_methods(types, typ):
return typ.methods + typ.native_methods
return sorted(typ.methods + typ.native_methods, key=lambda method: method.name.canonical_case())
def c_native_methods(types, typ):
return cpp_native_methods(types, typ) + [

View File

@ -28,7 +28,7 @@ const uint64_t DAWN_WHOLE_SIZE = 0xffffffffffffffffULL; // UINT64_MAX
{% endfor %}
{% for type in by_category["enum"] + by_category["bitmask"] %}
typedef enum {
typedef enum {{as_cType(type.name)}} {
{% for value in type.values %}
{{as_cEnum(type.name, value.name)}} = 0x{{format(value.value, "08X")}},
{% endfor %}
@ -40,7 +40,7 @@ const uint64_t DAWN_WHOLE_SIZE = 0xffffffffffffffffULL; // UINT64_MAX
{% for type in by_category["structure"] %}
typedef struct {{as_cType(type.name)}} {
{% if type.extensible %}
const void* nextInChain;
void const * nextInChain;
{% endif %}
{% for member in type.members %}
{{as_annotated_cType(member)}};
@ -49,6 +49,10 @@ const uint64_t DAWN_WHOLE_SIZE = 0xffffffffffffffffULL; // UINT64_MAX
{% endfor %}
#ifdef __cplusplus
extern "C" {
#endif
// Custom types depending on the target language
typedef void (*DawnErrorCallback)(DawnErrorType type, const char* message, void* userdata);
typedef void (*DawnBufferCreateMappedCallback)(DawnBufferMapAsyncStatus status,
@ -64,9 +68,7 @@ typedef void (*DawnBufferMapWriteCallback)(DawnBufferMapAsyncStatus status,
void* userdata);
typedef void (*DawnFenceOnCompletionCallback)(DawnFenceCompletionStatus status, void* userdata);
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(DAWN_SKIP_PROCS)
{% for type in by_category["object"] %}
// Procs of {{type.name.CamelCase()}}
@ -80,6 +82,7 @@ extern "C" {
{% endfor %}
{% endfor %}
#endif // !defined(DAWN_SKIP_PROCS)
struct DawnProcTable_s {
{% for type in by_category["object"] %}
@ -93,6 +96,8 @@ typedef struct DawnProcTable_s DawnProcTable;
// Stuff below is for convenience and will forward calls to a static DawnProcTable.
#if !defined(DAWN_SKIP_DECLARATIONS)
// Set which DawnProcTable will be used
DAWN_EXPORT void dawnSetProcs(const DawnProcTable* procs);
@ -108,6 +113,7 @@ DAWN_EXPORT void dawnSetProcs(const DawnProcTable* procs);
{% endfor %}
{% endfor %}
#endif // !defined(DAWN_SKIP_DECLARATIONS)
#ifdef __cplusplus
} // extern "C"

View File

@ -29,7 +29,6 @@ namespace dawn {
{% endfor %}
{% for type in by_category["structure"] %}
{% set CppType = as_cppType(type.name) %}
{% set CType = as_cType(type.name) %}