mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-05 06:03:34 +00:00
This replaces all instances of "natively defined" with callbacks and adds information about the callbacks arguments so that their typedefs can be autogenerated in dawn.json. Also adds all the methods using callbacks to the list of handwritten client commands so that the wire templates don't try to generate code for them. BUG=dawn:22 Change-Id: I30ce01e3e688a16b31efa74d0c94ebafdca00985 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13901 Commit-Queue: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
143 lines
4.9 KiB
C
143 lines
4.9 KiB
C
// BSD 3-Clause License
|
|
//
|
|
// Copyright (c) 2019, "WebGPU native" developers
|
|
// All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are met:
|
|
//
|
|
// 1. Redistributions of source code must retain the above copyright notice, this
|
|
// list of conditions and the following disclaimer.
|
|
//
|
|
// 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
// this list of conditions and the following disclaimer in the documentation
|
|
// and/or other materials provided with the distribution.
|
|
//
|
|
// 3. Neither the name of the copyright holder nor the names of its
|
|
// contributors may be used to endorse or promote products derived from
|
|
// this software without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#ifndef WEBGPU_H_
|
|
#define WEBGPU_H_
|
|
|
|
#if defined(WGPU_SHARED_LIBRARY)
|
|
# if defined(_WIN32)
|
|
# if defined(WGPU_IMPLEMENTATION)
|
|
# define WGPU_EXPORT __declspec(dllexport)
|
|
# else
|
|
# define WGPU_EXPORT __declspec(dllimport)
|
|
# endif
|
|
# else // defined(_WIN32)
|
|
# if defined(WGPU_IMPLEMENTATION)
|
|
# define WGPU_EXPORT __attribute__((visibility("default")))
|
|
# else
|
|
# define WGPU_EXPORT
|
|
# endif
|
|
# endif // defined(_WIN32)
|
|
#else // defined(WGPU_SHARED_LIBRARY)
|
|
# define WGPU_EXPORT
|
|
#endif // defined(WGPU_SHARED_LIBRARY)
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
|
|
const uint64_t WGPU_WHOLE_SIZE = 0xffffffffffffffffULL; // UINT64_MAX
|
|
|
|
typedef uint32_t WGPUFlags;
|
|
|
|
{% for type in by_category["object"] %}
|
|
typedef struct {{as_cType(type.name)}}Impl* {{as_cType(type.name)}};
|
|
{% endfor %}
|
|
|
|
{% for type in by_category["enum"] + by_category["bitmask"] %}
|
|
typedef enum {{as_cType(type.name)}} {
|
|
{% for value in type.values %}
|
|
{{as_cEnum(type.name, value.name)}} = 0x{{format(value.value, "08X")}},
|
|
{% endfor %}
|
|
{{as_cEnum(type.name, Name("force32"))}} = 0x7FFFFFFF
|
|
} {{as_cType(type.name)}};
|
|
{% if type.category == "bitmask" %}
|
|
typedef WGPUFlags {{as_cType(type.name)}}Flags;
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
{% for type in by_category["structure"] %}
|
|
typedef struct {{as_cType(type.name)}} {
|
|
{% if type.extensible %}
|
|
void const * nextInChain;
|
|
{% endif %}
|
|
{% for member in type.members %}
|
|
{{as_annotated_cType(member)}};
|
|
{% endfor %}
|
|
} {{as_cType(type.name)}};
|
|
|
|
{% endfor %}
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
{% for type in by_category["callback"] %}
|
|
typedef void (*{{as_cType(type.name)}})(
|
|
{%- for arg in type.arguments -%}
|
|
{% if not loop.first %}, {% endif %}{{as_annotated_cType(arg)}}
|
|
{%- endfor -%}
|
|
);
|
|
{% endfor %}
|
|
|
|
typedef void (*WGPUProc)();
|
|
|
|
#if !defined(WGPU_SKIP_PROCS)
|
|
|
|
typedef WGPUProc (*WGPUProcGetProcAddress)(WGPUDevice device, const char* procName);
|
|
|
|
{% for type in by_category["object"] if len(native_methods(type)) > 0 %}
|
|
// Procs of {{type.name.CamelCase()}}
|
|
{% for method in native_methods(type) %}
|
|
typedef {{as_cType(method.return_type.name)}} (*{{as_cProc(type.name, method.name)}})(
|
|
{{-as_cType(type.name)}} {{as_varName(type.name)}}
|
|
{%- for arg in method.arguments -%}
|
|
, {{as_annotated_cType(arg)}}
|
|
{%- endfor -%}
|
|
);
|
|
{% endfor %}
|
|
|
|
{% endfor %}
|
|
#endif // !defined(WGPU_SKIP_PROCS)
|
|
|
|
#if !defined(WGPU_SKIP_DECLARATIONS)
|
|
|
|
WGPU_EXPORT WGPUProc WGPUGetProcAddress(WGPUDevice device, const char* procName);
|
|
|
|
{% for type in by_category["object"] if len(native_methods(type)) > 0 %}
|
|
// Methods of {{type.name.CamelCase()}}
|
|
{% for method in native_methods(type) %}
|
|
WGPU_EXPORT {{as_cType(method.return_type.name)}} {{as_cMethod(type.name, method.name)}}(
|
|
{{-as_cType(type.name)}} {{as_varName(type.name)}}
|
|
{%- for arg in method.arguments -%}
|
|
, {{as_annotated_cType(arg)}}
|
|
{%- endfor -%}
|
|
);
|
|
{% endfor %}
|
|
|
|
{% endfor %}
|
|
#endif // !defined(WGPU_SKIP_DECLARATIONS)
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif // WEBGPU_H_
|