zgpu

git clone git://git.electrosoup.com/zgpu
Log | Files | Refs | Submodules | README

webgpu.h (162592B)


      1 /**
      2  * Copyright 2019-2023 WebGPU-Native developers
      3  *
      4  * SPDX-License-Identifier: BSD-3-Clause
      5  */
      6 
      7 /** @file */
      8 
      9 /**
     10  * \mainpage
     11  *
     12  * **Important:** *This documentation is a Work In Progress.*
     13  *
     14  * This is the home of WebGPU C API specification. We define here the standard
     15  * `webgpu.h` header that all implementations should provide.
     16  */
     17 
     18 #ifndef WEBGPU_H_
     19 #define WEBGPU_H_
     20 
     21 #if defined(WGPU_SHARED_LIBRARY)
     22 #    if defined(_WIN32)
     23 #        if defined(WGPU_IMPLEMENTATION)
     24 #            define WGPU_EXPORT __declspec(dllexport)
     25 #        else
     26 #            define WGPU_EXPORT __declspec(dllimport)
     27 #        endif
     28 #    else  // defined(_WIN32)
     29 #        if defined(WGPU_IMPLEMENTATION)
     30 #            define WGPU_EXPORT __attribute__((visibility("default")))
     31 #        else
     32 #            define WGPU_EXPORT
     33 #        endif
     34 #    endif  // defined(_WIN32)
     35 #else       // defined(WGPU_SHARED_LIBRARY)
     36 #    define WGPU_EXPORT
     37 #endif  // defined(WGPU_SHARED_LIBRARY)
     38 
     39 #if !defined(WGPU_OBJECT_ATTRIBUTE)
     40 #define WGPU_OBJECT_ATTRIBUTE
     41 #endif
     42 #if !defined(WGPU_ENUM_ATTRIBUTE)
     43 #define WGPU_ENUM_ATTRIBUTE
     44 #endif
     45 #if !defined(WGPU_STRUCTURE_ATTRIBUTE)
     46 #define WGPU_STRUCTURE_ATTRIBUTE
     47 #endif
     48 #if !defined(WGPU_FUNCTION_ATTRIBUTE)
     49 #define WGPU_FUNCTION_ATTRIBUTE
     50 #endif
     51 #if !defined(WGPU_NULLABLE)
     52 #define WGPU_NULLABLE
     53 #endif
     54 
     55 #include <stdint.h>
     56 #include <stddef.h>
     57 
     58 #define _wgpu_COMMA ,
     59 #if defined(__cplusplus)
     60 #  if __cplusplus >= 201103L
     61 #    define _wgpu_MAKE_INIT_STRUCT(type, value) (type value)
     62 #  else
     63 #    define _wgpu_MAKE_INIT_STRUCT(type, value) value
     64 #  endif
     65 #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
     66 #  define _wgpu_MAKE_INIT_STRUCT(type, value) ((type) value)
     67 #else
     68 #  define _wgpu_MAKE_INIT_STRUCT(type, value) value
     69 #endif
     70 
     71 
     72 /**
     73  * \defgroup Constants
     74  * \brief Constants.
     75  *
     76  * @{
     77  */
     78 #define WGPU_ARRAY_LAYER_COUNT_UNDEFINED (UINT32_MAX)
     79 #define WGPU_COPY_STRIDE_UNDEFINED (UINT32_MAX)
     80 #define WGPU_DEPTH_SLICE_UNDEFINED (UINT32_MAX)
     81 #define WGPU_LIMIT_U32_UNDEFINED (UINT32_MAX)
     82 #define WGPU_LIMIT_U64_UNDEFINED (UINT64_MAX)
     83 #define WGPU_MIP_LEVEL_COUNT_UNDEFINED (UINT32_MAX)
     84 #define WGPU_QUERY_SET_INDEX_UNDEFINED (UINT32_MAX)
     85 #define WGPU_WHOLE_MAP_SIZE (SIZE_MAX)
     86 #define WGPU_WHOLE_SIZE (UINT64_MAX)
     87 
     88 
     89 /** @} */
     90 
     91 /**
     92  * \defgroup UtilityTypes Utility Types
     93  *
     94  * @{
     95  */
     96 typedef uint64_t WGPUFlags;
     97 typedef uint32_t WGPUBool;
     98 
     99 /**
    100  * Nullable value defining a pointer+length view into a UTF-8 encoded string.
    101  *
    102  * Values passed into the API may use the special length value @ref WGPU_STRLEN
    103  * to indicate a null-terminated string.
    104  * Non-null values passed out of the API (for example as callback arguments)
    105  * always provide an explicit length and **may or may not be null-terminated**.
    106  *
    107  * Some inputs to the API accept null values. Those which do not accept null
    108  * values "default" to the empty string when null values are passed.
    109  *
    110  * Values are encoded as follows:
    111  * - `{NULL, WGPU_STRLEN}`: the null value.
    112  * - `{non_null_pointer, WGPU_STRLEN}`: a null-terminated string view.
    113  * - `{any, 0}`: the empty string.
    114  * - `{NULL, non_zero_length}`: not allowed (null dereference).
    115  * - `{non_null_pointer, non_zero_length}`: an explictly-sized string view with
    116  *   size `non_zero_length` (in bytes).
    117  *
    118  * For info on how this is used in various places, see \ref Strings.
    119  */
    120 typedef struct WGPUStringView {
    121     char const * WGPU_NULLABLE data;
    122     size_t length;
    123 } WGPUStringView;
    124 
    125 /**
    126  * Sentinel value used in @ref WGPUStringView to indicate that the pointer
    127  * is to a null-terminated string, rather than an explicitly-sized string.
    128  */
    129 #define WGPU_STRLEN SIZE_MAX
    130 
    131 #define WGPU_STRING_VIEW_INIT _wgpu_MAKE_INIT_STRUCT(WGPUStringView, { \
    132     /*.data=*/NULL _wgpu_COMMA \
    133     /*.length=*/WGPU_STRLEN _wgpu_COMMA \
    134 })
    135 
    136 
    137 /** @} */
    138 
    139 /**
    140  * \defgroup Objects
    141  * \brief Opaque, non-dispatchable handles to WebGPU objects.
    142  *
    143  * @{
    144  */
    145 typedef struct WGPUAdapterImpl* WGPUAdapter WGPU_OBJECT_ATTRIBUTE;
    146 typedef struct WGPUBindGroupImpl* WGPUBindGroup WGPU_OBJECT_ATTRIBUTE;
    147 typedef struct WGPUBindGroupLayoutImpl* WGPUBindGroupLayout WGPU_OBJECT_ATTRIBUTE;
    148 typedef struct WGPUBufferImpl* WGPUBuffer WGPU_OBJECT_ATTRIBUTE;
    149 typedef struct WGPUCommandBufferImpl* WGPUCommandBuffer WGPU_OBJECT_ATTRIBUTE;
    150 typedef struct WGPUCommandEncoderImpl* WGPUCommandEncoder WGPU_OBJECT_ATTRIBUTE;
    151 typedef struct WGPUComputePassEncoderImpl* WGPUComputePassEncoder WGPU_OBJECT_ATTRIBUTE;
    152 typedef struct WGPUComputePipelineImpl* WGPUComputePipeline WGPU_OBJECT_ATTRIBUTE;
    153 typedef struct WGPUDeviceImpl* WGPUDevice WGPU_OBJECT_ATTRIBUTE;
    154 typedef struct WGPUInstanceImpl* WGPUInstance WGPU_OBJECT_ATTRIBUTE;
    155 typedef struct WGPUPipelineLayoutImpl* WGPUPipelineLayout WGPU_OBJECT_ATTRIBUTE;
    156 typedef struct WGPUQuerySetImpl* WGPUQuerySet WGPU_OBJECT_ATTRIBUTE;
    157 typedef struct WGPUQueueImpl* WGPUQueue WGPU_OBJECT_ATTRIBUTE;
    158 typedef struct WGPURenderBundleImpl* WGPURenderBundle WGPU_OBJECT_ATTRIBUTE;
    159 typedef struct WGPURenderBundleEncoderImpl* WGPURenderBundleEncoder WGPU_OBJECT_ATTRIBUTE;
    160 typedef struct WGPURenderPassEncoderImpl* WGPURenderPassEncoder WGPU_OBJECT_ATTRIBUTE;
    161 typedef struct WGPURenderPipelineImpl* WGPURenderPipeline WGPU_OBJECT_ATTRIBUTE;
    162 typedef struct WGPUSamplerImpl* WGPUSampler WGPU_OBJECT_ATTRIBUTE;
    163 typedef struct WGPUShaderModuleImpl* WGPUShaderModule WGPU_OBJECT_ATTRIBUTE;
    164 /**
    165  * An object used to continuously present image data to the user, see @ref Surfaces for more details.
    166  */
    167 typedef struct WGPUSurfaceImpl* WGPUSurface WGPU_OBJECT_ATTRIBUTE;
    168 typedef struct WGPUTextureImpl* WGPUTexture WGPU_OBJECT_ATTRIBUTE;
    169 typedef struct WGPUTextureViewImpl* WGPUTextureView WGPU_OBJECT_ATTRIBUTE;
    170 
    171 
    172 /** @} */
    173 // Structure forward declarations
    174 struct WGPUAdapterInfo;
    175 struct WGPUBindGroupEntry;
    176 struct WGPUBlendComponent;
    177 struct WGPUBufferBindingLayout;
    178 struct WGPUBufferDescriptor;
    179 struct WGPUColor;
    180 struct WGPUCommandBufferDescriptor;
    181 struct WGPUCommandEncoderDescriptor;
    182 struct WGPUCompilationMessage;
    183 struct WGPUComputePassTimestampWrites;
    184 struct WGPUConstantEntry;
    185 struct WGPUExtent3D;
    186 struct WGPUFuture;
    187 struct WGPUInstanceCapabilities;
    188 struct WGPULimits;
    189 struct WGPUMultisampleState;
    190 struct WGPUOrigin3D;
    191 struct WGPUPipelineLayoutDescriptor;
    192 struct WGPUPrimitiveState;
    193 struct WGPUQuerySetDescriptor;
    194 struct WGPUQueueDescriptor;
    195 struct WGPURenderBundleDescriptor;
    196 struct WGPURenderBundleEncoderDescriptor;
    197 struct WGPURenderPassDepthStencilAttachment;
    198 struct WGPURenderPassMaxDrawCount;
    199 struct WGPURenderPassTimestampWrites;
    200 struct WGPURequestAdapterOptions;
    201 struct WGPUSamplerBindingLayout;
    202 struct WGPUSamplerDescriptor;
    203 struct WGPUShaderModuleDescriptor;
    204 struct WGPUShaderSourceSPIRV;
    205 struct WGPUShaderSourceWGSL;
    206 struct WGPUStencilFaceState;
    207 struct WGPUStorageTextureBindingLayout;
    208 struct WGPUSupportedFeatures;
    209 struct WGPUSupportedWGSLLanguageFeatures;
    210 struct WGPUSurfaceCapabilities;
    211 struct WGPUSurfaceConfiguration;
    212 struct WGPUSurfaceDescriptor;
    213 struct WGPUSurfaceSourceAndroidNativeWindow;
    214 struct WGPUSurfaceSourceMetalLayer;
    215 struct WGPUSurfaceSourceWaylandSurface;
    216 struct WGPUSurfaceSourceWindowsHWND;
    217 struct WGPUSurfaceSourceXCBWindow;
    218 struct WGPUSurfaceSourceXlibWindow;
    219 struct WGPUSurfaceTexture;
    220 struct WGPUTexelCopyBufferLayout;
    221 struct WGPUTextureBindingLayout;
    222 struct WGPUTextureViewDescriptor;
    223 struct WGPUVertexAttribute;
    224 struct WGPUBindGroupDescriptor;
    225 struct WGPUBindGroupLayoutEntry;
    226 struct WGPUBlendState;
    227 struct WGPUCompilationInfo;
    228 struct WGPUComputePassDescriptor;
    229 struct WGPUDepthStencilState;
    230 struct WGPUDeviceDescriptor;
    231 struct WGPUFutureWaitInfo;
    232 struct WGPUInstanceDescriptor;
    233 struct WGPUProgrammableStageDescriptor;
    234 struct WGPURenderPassColorAttachment;
    235 struct WGPUTexelCopyBufferInfo;
    236 struct WGPUTexelCopyTextureInfo;
    237 struct WGPUTextureDescriptor;
    238 struct WGPUVertexBufferLayout;
    239 struct WGPUBindGroupLayoutDescriptor;
    240 struct WGPUColorTargetState;
    241 struct WGPUComputePipelineDescriptor;
    242 struct WGPURenderPassDescriptor;
    243 struct WGPUVertexState;
    244 struct WGPUFragmentState;
    245 struct WGPURenderPipelineDescriptor;
    246 
    247 // Callback info structure forward declarations
    248 struct WGPUBufferMapCallbackInfo;
    249 struct WGPUCompilationInfoCallbackInfo;
    250 struct WGPUCreateComputePipelineAsyncCallbackInfo;
    251 struct WGPUCreateRenderPipelineAsyncCallbackInfo;
    252 struct WGPUDeviceLostCallbackInfo;
    253 struct WGPUPopErrorScopeCallbackInfo;
    254 struct WGPUQueueWorkDoneCallbackInfo;
    255 struct WGPURequestAdapterCallbackInfo;
    256 struct WGPURequestDeviceCallbackInfo;
    257 struct WGPUUncapturedErrorCallbackInfo;
    258 
    259 
    260 /**
    261  * \defgroup Enumerations
    262  * \brief Enums.
    263  *
    264  * @{
    265  */
    266 typedef enum WGPUAdapterType {
    267     WGPUAdapterType_DiscreteGPU = 0x00000001,
    268     WGPUAdapterType_IntegratedGPU = 0x00000002,
    269     WGPUAdapterType_CPU = 0x00000003,
    270     WGPUAdapterType_Unknown = 0x00000004,
    271     WGPUAdapterType_Force32 = 0x7FFFFFFF
    272 } WGPUAdapterType WGPU_ENUM_ATTRIBUTE;
    273 
    274 typedef enum WGPUAddressMode {
    275     /**
    276      * `0x00000000`.
    277      * Indicates no value is passed for this argument. See @ref SentinelValues.
    278      */
    279     WGPUAddressMode_Undefined = 0x00000000,
    280     WGPUAddressMode_ClampToEdge = 0x00000001,
    281     WGPUAddressMode_Repeat = 0x00000002,
    282     WGPUAddressMode_MirrorRepeat = 0x00000003,
    283     WGPUAddressMode_Force32 = 0x7FFFFFFF
    284 } WGPUAddressMode WGPU_ENUM_ATTRIBUTE;
    285 
    286 typedef enum WGPUBackendType {
    287     /**
    288      * `0x00000000`.
    289      * Indicates no value is passed for this argument. See @ref SentinelValues.
    290      */
    291     WGPUBackendType_Undefined = 0x00000000,
    292     WGPUBackendType_Null = 0x00000001,
    293     WGPUBackendType_WebGPU = 0x00000002,
    294     WGPUBackendType_D3D11 = 0x00000003,
    295     WGPUBackendType_D3D12 = 0x00000004,
    296     WGPUBackendType_Metal = 0x00000005,
    297     WGPUBackendType_Vulkan = 0x00000006,
    298     WGPUBackendType_OpenGL = 0x00000007,
    299     WGPUBackendType_OpenGLES = 0x00000008,
    300     WGPUBackendType_Force32 = 0x7FFFFFFF
    301 } WGPUBackendType WGPU_ENUM_ATTRIBUTE;
    302 
    303 typedef enum WGPUBlendFactor {
    304     /**
    305      * `0x00000000`.
    306      * Indicates no value is passed for this argument. See @ref SentinelValues.
    307      */
    308     WGPUBlendFactor_Undefined = 0x00000000,
    309     WGPUBlendFactor_Zero = 0x00000001,
    310     WGPUBlendFactor_One = 0x00000002,
    311     WGPUBlendFactor_Src = 0x00000003,
    312     WGPUBlendFactor_OneMinusSrc = 0x00000004,
    313     WGPUBlendFactor_SrcAlpha = 0x00000005,
    314     WGPUBlendFactor_OneMinusSrcAlpha = 0x00000006,
    315     WGPUBlendFactor_Dst = 0x00000007,
    316     WGPUBlendFactor_OneMinusDst = 0x00000008,
    317     WGPUBlendFactor_DstAlpha = 0x00000009,
    318     WGPUBlendFactor_OneMinusDstAlpha = 0x0000000A,
    319     WGPUBlendFactor_SrcAlphaSaturated = 0x0000000B,
    320     WGPUBlendFactor_Constant = 0x0000000C,
    321     WGPUBlendFactor_OneMinusConstant = 0x0000000D,
    322     WGPUBlendFactor_Src1 = 0x0000000E,
    323     WGPUBlendFactor_OneMinusSrc1 = 0x0000000F,
    324     WGPUBlendFactor_Src1Alpha = 0x00000010,
    325     WGPUBlendFactor_OneMinusSrc1Alpha = 0x00000011,
    326     WGPUBlendFactor_Force32 = 0x7FFFFFFF
    327 } WGPUBlendFactor WGPU_ENUM_ATTRIBUTE;
    328 
    329 typedef enum WGPUBlendOperation {
    330     /**
    331      * `0x00000000`.
    332      * Indicates no value is passed for this argument. See @ref SentinelValues.
    333      */
    334     WGPUBlendOperation_Undefined = 0x00000000,
    335     WGPUBlendOperation_Add = 0x00000001,
    336     WGPUBlendOperation_Subtract = 0x00000002,
    337     WGPUBlendOperation_ReverseSubtract = 0x00000003,
    338     WGPUBlendOperation_Min = 0x00000004,
    339     WGPUBlendOperation_Max = 0x00000005,
    340     WGPUBlendOperation_Force32 = 0x7FFFFFFF
    341 } WGPUBlendOperation WGPU_ENUM_ATTRIBUTE;
    342 
    343 typedef enum WGPUBufferBindingType {
    344     /**
    345      * `0x00000000`.
    346      * Indicates that this @ref WGPUBufferBindingLayout member of
    347      * its parent @ref WGPUBindGroupLayoutEntry is not used.
    348      * (See also @ref SentinelValues.)
    349      */
    350     WGPUBufferBindingType_BindingNotUsed = 0x00000000,
    351     /**
    352      * `0x00000001`.
    353      * Indicates no value is passed for this argument. See @ref SentinelValues.
    354      */
    355     WGPUBufferBindingType_Undefined = 0x00000001,
    356     WGPUBufferBindingType_Uniform = 0x00000002,
    357     WGPUBufferBindingType_Storage = 0x00000003,
    358     WGPUBufferBindingType_ReadOnlyStorage = 0x00000004,
    359     WGPUBufferBindingType_Force32 = 0x7FFFFFFF
    360 } WGPUBufferBindingType WGPU_ENUM_ATTRIBUTE;
    361 
    362 typedef enum WGPUBufferMapState {
    363     WGPUBufferMapState_Unmapped = 0x00000001,
    364     WGPUBufferMapState_Pending = 0x00000002,
    365     WGPUBufferMapState_Mapped = 0x00000003,
    366     WGPUBufferMapState_Force32 = 0x7FFFFFFF
    367 } WGPUBufferMapState WGPU_ENUM_ATTRIBUTE;
    368 
    369 /**
    370  * The callback mode controls how a callback for an asynchronous operation may be fired. See @ref Asynchronous-Operations for how these are used.
    371  */
    372 typedef enum WGPUCallbackMode {
    373     /**
    374      * `0x00000001`.
    375      * Callbacks created with `WGPUCallbackMode_WaitAnyOnly`:
    376      * - fire when the asynchronous operation's future is passed to a call to `::wgpuInstanceWaitAny`
    377      *   AND the operation has already completed or it completes inside the call to `::wgpuInstanceWaitAny`.
    378      */
    379     WGPUCallbackMode_WaitAnyOnly = 0x00000001,
    380     /**
    381      * `0x00000002`.
    382      * Callbacks created with `WGPUCallbackMode_AllowProcessEvents`:
    383      * - fire for the same reasons as callbacks created with `WGPUCallbackMode_WaitAnyOnly`
    384      * - fire inside a call to `::wgpuInstanceProcessEvents` if the asynchronous operation is complete.
    385      */
    386     WGPUCallbackMode_AllowProcessEvents = 0x00000002,
    387     /**
    388      * `0x00000003`.
    389      * Callbacks created with `WGPUCallbackMode_AllowSpontaneous`:
    390      * - fire for the same reasons as callbacks created with `WGPUCallbackMode_AllowProcessEvents`
    391      * - **may** fire spontaneously on an arbitrary or application thread, when the WebGPU implementations discovers that the asynchronous operation is complete.
    392      *
    393      *   Implementations _should_ fire spontaneous callbacks as soon as possible.
    394      *
    395      * @note Because spontaneous callbacks may fire at an arbitrary time on an arbitrary thread, applications should take extra care when acquiring locks or mutating state inside the callback. It undefined behavior to re-entrantly call into the webgpu.h API if the callback fires while inside the callstack of another webgpu.h function that is not `wgpuInstanceWaitAny` or `wgpuInstanceProcessEvents`.
    396      */
    397     WGPUCallbackMode_AllowSpontaneous = 0x00000003,
    398     WGPUCallbackMode_Force32 = 0x7FFFFFFF
    399 } WGPUCallbackMode WGPU_ENUM_ATTRIBUTE;
    400 
    401 typedef enum WGPUCompareFunction {
    402     /**
    403      * `0x00000000`.
    404      * Indicates no value is passed for this argument. See @ref SentinelValues.
    405      */
    406     WGPUCompareFunction_Undefined = 0x00000000,
    407     WGPUCompareFunction_Never = 0x00000001,
    408     WGPUCompareFunction_Less = 0x00000002,
    409     WGPUCompareFunction_Equal = 0x00000003,
    410     WGPUCompareFunction_LessEqual = 0x00000004,
    411     WGPUCompareFunction_Greater = 0x00000005,
    412     WGPUCompareFunction_NotEqual = 0x00000006,
    413     WGPUCompareFunction_GreaterEqual = 0x00000007,
    414     WGPUCompareFunction_Always = 0x00000008,
    415     WGPUCompareFunction_Force32 = 0x7FFFFFFF
    416 } WGPUCompareFunction WGPU_ENUM_ATTRIBUTE;
    417 
    418 typedef enum WGPUCompilationInfoRequestStatus {
    419     WGPUCompilationInfoRequestStatus_Success = 0x00000001,
    420     WGPUCompilationInfoRequestStatus_InstanceDropped = 0x00000002,
    421     WGPUCompilationInfoRequestStatus_Error = 0x00000003,
    422     WGPUCompilationInfoRequestStatus_Unknown = 0x00000004,
    423     WGPUCompilationInfoRequestStatus_Force32 = 0x7FFFFFFF
    424 } WGPUCompilationInfoRequestStatus WGPU_ENUM_ATTRIBUTE;
    425 
    426 typedef enum WGPUCompilationMessageType {
    427     WGPUCompilationMessageType_Error = 0x00000001,
    428     WGPUCompilationMessageType_Warning = 0x00000002,
    429     WGPUCompilationMessageType_Info = 0x00000003,
    430     WGPUCompilationMessageType_Force32 = 0x7FFFFFFF
    431 } WGPUCompilationMessageType WGPU_ENUM_ATTRIBUTE;
    432 
    433 /**
    434  * Describes how frames are composited with other contents on the screen when `::wgpuSurfacePresent` is called.
    435  */
    436 typedef enum WGPUCompositeAlphaMode {
    437     /**
    438      * `0x00000000`.
    439      * Lets the WebGPU implementation choose the best mode (supported, and with the best performance) between @ref WGPUCompositeAlphaMode_Opaque or @ref WGPUCompositeAlphaMode_Inherit.
    440      */
    441     WGPUCompositeAlphaMode_Auto = 0x00000000,
    442     /**
    443      * `0x00000001`.
    444      * The alpha component of the image is ignored and teated as if it is always 1.0.
    445      */
    446     WGPUCompositeAlphaMode_Opaque = 0x00000001,
    447     /**
    448      * `0x00000002`.
    449      * The alpha component is respected and non-alpha components are assumed to be already multiplied with the alpha component. For example, (0.5, 0, 0, 0.5) is semi-transparent bright red.
    450      */
    451     WGPUCompositeAlphaMode_Premultiplied = 0x00000002,
    452     /**
    453      * `0x00000003`.
    454      * The alpha component is respected and non-alpha components are assumed to NOT be already multiplied with the alpha component. For example, (1.0, 0, 0, 0.5) is semi-transparent bright red.
    455      */
    456     WGPUCompositeAlphaMode_Unpremultiplied = 0x00000003,
    457     /**
    458      * `0x00000004`.
    459      * The handling of the alpha component is unknown to WebGPU and should be handled by the application using system-specific APIs. This mode may be unavailable (for example on Wasm).
    460      */
    461     WGPUCompositeAlphaMode_Inherit = 0x00000004,
    462     WGPUCompositeAlphaMode_Force32 = 0x7FFFFFFF
    463 } WGPUCompositeAlphaMode WGPU_ENUM_ATTRIBUTE;
    464 
    465 typedef enum WGPUCreatePipelineAsyncStatus {
    466     WGPUCreatePipelineAsyncStatus_Success = 0x00000001,
    467     WGPUCreatePipelineAsyncStatus_InstanceDropped = 0x00000002,
    468     WGPUCreatePipelineAsyncStatus_ValidationError = 0x00000003,
    469     WGPUCreatePipelineAsyncStatus_InternalError = 0x00000004,
    470     WGPUCreatePipelineAsyncStatus_Unknown = 0x00000005,
    471     WGPUCreatePipelineAsyncStatus_Force32 = 0x7FFFFFFF
    472 } WGPUCreatePipelineAsyncStatus WGPU_ENUM_ATTRIBUTE;
    473 
    474 typedef enum WGPUCullMode {
    475     /**
    476      * `0x00000000`.
    477      * Indicates no value is passed for this argument. See @ref SentinelValues.
    478      */
    479     WGPUCullMode_Undefined = 0x00000000,
    480     WGPUCullMode_None = 0x00000001,
    481     WGPUCullMode_Front = 0x00000002,
    482     WGPUCullMode_Back = 0x00000003,
    483     WGPUCullMode_Force32 = 0x7FFFFFFF
    484 } WGPUCullMode WGPU_ENUM_ATTRIBUTE;
    485 
    486 typedef enum WGPUDeviceLostReason {
    487     WGPUDeviceLostReason_Unknown = 0x00000001,
    488     WGPUDeviceLostReason_Destroyed = 0x00000002,
    489     WGPUDeviceLostReason_InstanceDropped = 0x00000003,
    490     WGPUDeviceLostReason_FailedCreation = 0x00000004,
    491     WGPUDeviceLostReason_Force32 = 0x7FFFFFFF
    492 } WGPUDeviceLostReason WGPU_ENUM_ATTRIBUTE;
    493 
    494 typedef enum WGPUErrorFilter {
    495     WGPUErrorFilter_Validation = 0x00000001,
    496     WGPUErrorFilter_OutOfMemory = 0x00000002,
    497     WGPUErrorFilter_Internal = 0x00000003,
    498     WGPUErrorFilter_Force32 = 0x7FFFFFFF
    499 } WGPUErrorFilter WGPU_ENUM_ATTRIBUTE;
    500 
    501 typedef enum WGPUErrorType {
    502     WGPUErrorType_NoError = 0x00000001,
    503     WGPUErrorType_Validation = 0x00000002,
    504     WGPUErrorType_OutOfMemory = 0x00000003,
    505     WGPUErrorType_Internal = 0x00000004,
    506     WGPUErrorType_Unknown = 0x00000005,
    507     WGPUErrorType_Force32 = 0x7FFFFFFF
    508 } WGPUErrorType WGPU_ENUM_ATTRIBUTE;
    509 
    510 /**
    511  * See @ref WGPURequestAdapterOptions::featureLevel.
    512  */
    513 typedef enum WGPUFeatureLevel {
    514     /**
    515      * `0x00000001`.
    516      * "Compatibility" profile which can be supported on OpenGL ES 3.1.
    517      */
    518     WGPUFeatureLevel_Compatibility = 0x00000001,
    519     /**
    520      * `0x00000002`.
    521      * "Core" profile which can be supported on Vulkan/Metal/D3D12.
    522      */
    523     WGPUFeatureLevel_Core = 0x00000002,
    524     WGPUFeatureLevel_Force32 = 0x7FFFFFFF
    525 } WGPUFeatureLevel WGPU_ENUM_ATTRIBUTE;
    526 
    527 typedef enum WGPUFeatureName {
    528     WGPUFeatureName_Undefined = 0x00000000,
    529     WGPUFeatureName_DepthClipControl = 0x00000001,
    530     WGPUFeatureName_Depth32FloatStencil8 = 0x00000002,
    531     WGPUFeatureName_TimestampQuery = 0x00000003,
    532     WGPUFeatureName_TextureCompressionBC = 0x00000004,
    533     WGPUFeatureName_TextureCompressionBCSliced3D = 0x00000005,
    534     WGPUFeatureName_TextureCompressionETC2 = 0x00000006,
    535     WGPUFeatureName_TextureCompressionASTC = 0x00000007,
    536     WGPUFeatureName_TextureCompressionASTCSliced3D = 0x00000008,
    537     WGPUFeatureName_IndirectFirstInstance = 0x00000009,
    538     WGPUFeatureName_ShaderF16 = 0x0000000A,
    539     WGPUFeatureName_RG11B10UfloatRenderable = 0x0000000B,
    540     WGPUFeatureName_BGRA8UnormStorage = 0x0000000C,
    541     WGPUFeatureName_Float32Filterable = 0x0000000D,
    542     WGPUFeatureName_Float32Blendable = 0x0000000E,
    543     WGPUFeatureName_ClipDistances = 0x0000000F,
    544     WGPUFeatureName_DualSourceBlending = 0x00000010,
    545     WGPUFeatureName_Force32 = 0x7FFFFFFF
    546 } WGPUFeatureName WGPU_ENUM_ATTRIBUTE;
    547 
    548 typedef enum WGPUFilterMode {
    549     /**
    550      * `0x00000000`.
    551      * Indicates no value is passed for this argument. See @ref SentinelValues.
    552      */
    553     WGPUFilterMode_Undefined = 0x00000000,
    554     WGPUFilterMode_Nearest = 0x00000001,
    555     WGPUFilterMode_Linear = 0x00000002,
    556     WGPUFilterMode_Force32 = 0x7FFFFFFF
    557 } WGPUFilterMode WGPU_ENUM_ATTRIBUTE;
    558 
    559 typedef enum WGPUFrontFace {
    560     /**
    561      * `0x00000000`.
    562      * Indicates no value is passed for this argument. See @ref SentinelValues.
    563      */
    564     WGPUFrontFace_Undefined = 0x00000000,
    565     WGPUFrontFace_CCW = 0x00000001,
    566     WGPUFrontFace_CW = 0x00000002,
    567     WGPUFrontFace_Force32 = 0x7FFFFFFF
    568 } WGPUFrontFace WGPU_ENUM_ATTRIBUTE;
    569 
    570 typedef enum WGPUIndexFormat {
    571     /**
    572      * `0x00000000`.
    573      * Indicates no value is passed for this argument. See @ref SentinelValues.
    574      */
    575     WGPUIndexFormat_Undefined = 0x00000000,
    576     WGPUIndexFormat_Uint16 = 0x00000001,
    577     WGPUIndexFormat_Uint32 = 0x00000002,
    578     WGPUIndexFormat_Force32 = 0x7FFFFFFF
    579 } WGPUIndexFormat WGPU_ENUM_ATTRIBUTE;
    580 
    581 typedef enum WGPULoadOp {
    582     /**
    583      * `0x00000000`.
    584      * Indicates no value is passed for this argument. See @ref SentinelValues.
    585      */
    586     WGPULoadOp_Undefined = 0x00000000,
    587     WGPULoadOp_Load = 0x00000001,
    588     WGPULoadOp_Clear = 0x00000002,
    589     WGPULoadOp_Force32 = 0x7FFFFFFF
    590 } WGPULoadOp WGPU_ENUM_ATTRIBUTE;
    591 
    592 typedef enum WGPUMapAsyncStatus {
    593     WGPUMapAsyncStatus_Success = 0x00000001,
    594     WGPUMapAsyncStatus_InstanceDropped = 0x00000002,
    595     WGPUMapAsyncStatus_Error = 0x00000003,
    596     WGPUMapAsyncStatus_Aborted = 0x00000004,
    597     WGPUMapAsyncStatus_Unknown = 0x00000005,
    598     WGPUMapAsyncStatus_Force32 = 0x7FFFFFFF
    599 } WGPUMapAsyncStatus WGPU_ENUM_ATTRIBUTE;
    600 
    601 typedef enum WGPUMipmapFilterMode {
    602     /**
    603      * `0x00000000`.
    604      * Indicates no value is passed for this argument. See @ref SentinelValues.
    605      */
    606     WGPUMipmapFilterMode_Undefined = 0x00000000,
    607     WGPUMipmapFilterMode_Nearest = 0x00000001,
    608     WGPUMipmapFilterMode_Linear = 0x00000002,
    609     WGPUMipmapFilterMode_Force32 = 0x7FFFFFFF
    610 } WGPUMipmapFilterMode WGPU_ENUM_ATTRIBUTE;
    611 
    612 typedef enum WGPUOptionalBool {
    613     WGPUOptionalBool_False = 0x00000000,
    614     WGPUOptionalBool_True = 0x00000001,
    615     WGPUOptionalBool_Undefined = 0x00000002,
    616     WGPUOptionalBool_Force32 = 0x7FFFFFFF
    617 } WGPUOptionalBool WGPU_ENUM_ATTRIBUTE;
    618 
    619 typedef enum WGPUPopErrorScopeStatus {
    620     /**
    621      * `0x00000001`.
    622      * The error scope stack was successfully popped and a result was reported.
    623      */
    624     WGPUPopErrorScopeStatus_Success = 0x00000001,
    625     WGPUPopErrorScopeStatus_InstanceDropped = 0x00000002,
    626     /**
    627      * `0x00000003`.
    628      * The error scope stack could not be popped, because it was empty.
    629      */
    630     WGPUPopErrorScopeStatus_EmptyStack = 0x00000003,
    631     WGPUPopErrorScopeStatus_Force32 = 0x7FFFFFFF
    632 } WGPUPopErrorScopeStatus WGPU_ENUM_ATTRIBUTE;
    633 
    634 typedef enum WGPUPowerPreference {
    635     /**
    636      * `0x00000000`.
    637      * No preference. (See also @ref SentinelValues.)
    638      */
    639     WGPUPowerPreference_Undefined = 0x00000000,
    640     WGPUPowerPreference_LowPower = 0x00000001,
    641     WGPUPowerPreference_HighPerformance = 0x00000002,
    642     WGPUPowerPreference_Force32 = 0x7FFFFFFF
    643 } WGPUPowerPreference WGPU_ENUM_ATTRIBUTE;
    644 
    645 /**
    646  * Describes when and in which order frames are presented on the screen when `::wgpuSurfacePresent` is called.
    647  */
    648 typedef enum WGPUPresentMode {
    649     /**
    650      * `0x00000000`.
    651      * Present mode is not specified. Use the default.
    652      */
    653     WGPUPresentMode_Undefined = 0x00000000,
    654     /**
    655      * `0x00000001`.
    656      * The presentation of the image to the user waits for the next vertical blanking period to update in a first-in, first-out manner.
    657      * Tearing cannot be observed and frame-loop will be limited to the display's refresh rate.
    658      * This is the only mode that's always available.
    659      */
    660     WGPUPresentMode_Fifo = 0x00000001,
    661     /**
    662      * `0x00000002`.
    663      * The presentation of the image to the user tries to wait for the next vertical blanking period but may decide to not wait if a frame is presented late.
    664      * Tearing can sometimes be observed but late-frame don't produce a full-frame stutter in the presentation.
    665      * This is still a first-in, first-out mechanism so a frame-loop will be limited to the display's refresh rate.
    666      */
    667     WGPUPresentMode_FifoRelaxed = 0x00000002,
    668     /**
    669      * `0x00000003`.
    670      * The presentation of the image to the user is updated immediately without waiting for a vertical blank.
    671      * Tearing can be observed but latency is minimized.
    672      */
    673     WGPUPresentMode_Immediate = 0x00000003,
    674     /**
    675      * `0x00000004`.
    676      * The presentation of the image to the user waits for the next vertical blanking period to update to the latest provided image.
    677      * Tearing cannot be observed and a frame-loop is not limited to the display's refresh rate.
    678      */
    679     WGPUPresentMode_Mailbox = 0x00000004,
    680     WGPUPresentMode_Force32 = 0x7FFFFFFF
    681 } WGPUPresentMode WGPU_ENUM_ATTRIBUTE;
    682 
    683 typedef enum WGPUPrimitiveTopology {
    684     /**
    685      * `0x00000000`.
    686      * Indicates no value is passed for this argument. See @ref SentinelValues.
    687      */
    688     WGPUPrimitiveTopology_Undefined = 0x00000000,
    689     WGPUPrimitiveTopology_PointList = 0x00000001,
    690     WGPUPrimitiveTopology_LineList = 0x00000002,
    691     WGPUPrimitiveTopology_LineStrip = 0x00000003,
    692     WGPUPrimitiveTopology_TriangleList = 0x00000004,
    693     WGPUPrimitiveTopology_TriangleStrip = 0x00000005,
    694     WGPUPrimitiveTopology_Force32 = 0x7FFFFFFF
    695 } WGPUPrimitiveTopology WGPU_ENUM_ATTRIBUTE;
    696 
    697 typedef enum WGPUQueryType {
    698     WGPUQueryType_Occlusion = 0x00000001,
    699     WGPUQueryType_Timestamp = 0x00000002,
    700     WGPUQueryType_Force32 = 0x7FFFFFFF
    701 } WGPUQueryType WGPU_ENUM_ATTRIBUTE;
    702 
    703 typedef enum WGPUQueueWorkDoneStatus {
    704     WGPUQueueWorkDoneStatus_Success = 0x00000001,
    705     WGPUQueueWorkDoneStatus_InstanceDropped = 0x00000002,
    706     WGPUQueueWorkDoneStatus_Error = 0x00000003,
    707     WGPUQueueWorkDoneStatus_Unknown = 0x00000004,
    708     WGPUQueueWorkDoneStatus_Force32 = 0x7FFFFFFF
    709 } WGPUQueueWorkDoneStatus WGPU_ENUM_ATTRIBUTE;
    710 
    711 typedef enum WGPURequestAdapterStatus {
    712     WGPURequestAdapterStatus_Success = 0x00000001,
    713     WGPURequestAdapterStatus_InstanceDropped = 0x00000002,
    714     WGPURequestAdapterStatus_Unavailable = 0x00000003,
    715     WGPURequestAdapterStatus_Error = 0x00000004,
    716     WGPURequestAdapterStatus_Unknown = 0x00000005,
    717     WGPURequestAdapterStatus_Force32 = 0x7FFFFFFF
    718 } WGPURequestAdapterStatus WGPU_ENUM_ATTRIBUTE;
    719 
    720 typedef enum WGPURequestDeviceStatus {
    721     WGPURequestDeviceStatus_Success = 0x00000001,
    722     WGPURequestDeviceStatus_InstanceDropped = 0x00000002,
    723     WGPURequestDeviceStatus_Error = 0x00000003,
    724     WGPURequestDeviceStatus_Unknown = 0x00000004,
    725     WGPURequestDeviceStatus_Force32 = 0x7FFFFFFF
    726 } WGPURequestDeviceStatus WGPU_ENUM_ATTRIBUTE;
    727 
    728 typedef enum WGPUSType {
    729     WGPUSType_ShaderSourceSPIRV = 0x00000001,
    730     WGPUSType_ShaderSourceWGSL = 0x00000002,
    731     WGPUSType_RenderPassMaxDrawCount = 0x00000003,
    732     WGPUSType_SurfaceSourceMetalLayer = 0x00000004,
    733     WGPUSType_SurfaceSourceWindowsHWND = 0x00000005,
    734     WGPUSType_SurfaceSourceXlibWindow = 0x00000006,
    735     WGPUSType_SurfaceSourceWaylandSurface = 0x00000007,
    736     WGPUSType_SurfaceSourceAndroidNativeWindow = 0x00000008,
    737     WGPUSType_SurfaceSourceXCBWindow = 0x00000009,
    738     WGPUSType_Force32 = 0x7FFFFFFF
    739 } WGPUSType WGPU_ENUM_ATTRIBUTE;
    740 
    741 typedef enum WGPUSamplerBindingType {
    742     /**
    743      * `0x00000000`.
    744      * Indicates that this @ref WGPUSamplerBindingLayout member of
    745      * its parent @ref WGPUBindGroupLayoutEntry is not used.
    746      * (See also @ref SentinelValues.)
    747      */
    748     WGPUSamplerBindingType_BindingNotUsed = 0x00000000,
    749     /**
    750      * `0x00000001`.
    751      * Indicates no value is passed for this argument. See @ref SentinelValues.
    752      */
    753     WGPUSamplerBindingType_Undefined = 0x00000001,
    754     WGPUSamplerBindingType_Filtering = 0x00000002,
    755     WGPUSamplerBindingType_NonFiltering = 0x00000003,
    756     WGPUSamplerBindingType_Comparison = 0x00000004,
    757     WGPUSamplerBindingType_Force32 = 0x7FFFFFFF
    758 } WGPUSamplerBindingType WGPU_ENUM_ATTRIBUTE;
    759 
    760 /**
    761  * Status code returned (synchronously) from many operations. Generally
    762  * indicates an invalid input like an unknown enum value or @ref OutStructChainError.
    763  * Read the function's documentation for specific error conditions.
    764  */
    765 typedef enum WGPUStatus {
    766     WGPUStatus_Success = 0x00000001,
    767     WGPUStatus_Error = 0x00000002,
    768     WGPUStatus_Force32 = 0x7FFFFFFF
    769 } WGPUStatus WGPU_ENUM_ATTRIBUTE;
    770 
    771 typedef enum WGPUStencilOperation {
    772     /**
    773      * `0x00000000`.
    774      * Indicates no value is passed for this argument. See @ref SentinelValues.
    775      */
    776     WGPUStencilOperation_Undefined = 0x00000000,
    777     WGPUStencilOperation_Keep = 0x00000001,
    778     WGPUStencilOperation_Zero = 0x00000002,
    779     WGPUStencilOperation_Replace = 0x00000003,
    780     WGPUStencilOperation_Invert = 0x00000004,
    781     WGPUStencilOperation_IncrementClamp = 0x00000005,
    782     WGPUStencilOperation_DecrementClamp = 0x00000006,
    783     WGPUStencilOperation_IncrementWrap = 0x00000007,
    784     WGPUStencilOperation_DecrementWrap = 0x00000008,
    785     WGPUStencilOperation_Force32 = 0x7FFFFFFF
    786 } WGPUStencilOperation WGPU_ENUM_ATTRIBUTE;
    787 
    788 typedef enum WGPUStorageTextureAccess {
    789     /**
    790      * `0x00000000`.
    791      * Indicates that this @ref WGPUStorageTextureBindingLayout member of
    792      * its parent @ref WGPUBindGroupLayoutEntry is not used.
    793      * (See also @ref SentinelValues.)
    794      */
    795     WGPUStorageTextureAccess_BindingNotUsed = 0x00000000,
    796     /**
    797      * `0x00000001`.
    798      * Indicates no value is passed for this argument. See @ref SentinelValues.
    799      */
    800     WGPUStorageTextureAccess_Undefined = 0x00000001,
    801     WGPUStorageTextureAccess_WriteOnly = 0x00000002,
    802     WGPUStorageTextureAccess_ReadOnly = 0x00000003,
    803     WGPUStorageTextureAccess_ReadWrite = 0x00000004,
    804     WGPUStorageTextureAccess_Force32 = 0x7FFFFFFF
    805 } WGPUStorageTextureAccess WGPU_ENUM_ATTRIBUTE;
    806 
    807 typedef enum WGPUStoreOp {
    808     /**
    809      * `0x00000000`.
    810      * Indicates no value is passed for this argument. See @ref SentinelValues.
    811      */
    812     WGPUStoreOp_Undefined = 0x00000000,
    813     WGPUStoreOp_Store = 0x00000001,
    814     WGPUStoreOp_Discard = 0x00000002,
    815     WGPUStoreOp_Force32 = 0x7FFFFFFF
    816 } WGPUStoreOp WGPU_ENUM_ATTRIBUTE;
    817 
    818 /**
    819  * The status enum for `::wgpuSurfaceGetCurrentTexture`.
    820  */
    821 typedef enum WGPUSurfaceGetCurrentTextureStatus {
    822     /**
    823      * `0x00000001`.
    824      * Yay! Everything is good and we can render this frame.
    825      */
    826     WGPUSurfaceGetCurrentTextureStatus_SuccessOptimal = 0x00000001,
    827     /**
    828      * `0x00000002`.
    829      * Still OK - the surface can present the frame, but in a suboptimal way. The surface may need reconfiguration.
    830      */
    831     WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal = 0x00000002,
    832     /**
    833      * `0x00000003`.
    834      * Some operation timed out while trying to acquire the frame.
    835      */
    836     WGPUSurfaceGetCurrentTextureStatus_Timeout = 0x00000003,
    837     /**
    838      * `0x00000004`.
    839      * The surface is too different to be used, compared to when it was originally created.
    840      */
    841     WGPUSurfaceGetCurrentTextureStatus_Outdated = 0x00000004,
    842     /**
    843      * `0x00000005`.
    844      * The connection to whatever owns the surface was lost.
    845      */
    846     WGPUSurfaceGetCurrentTextureStatus_Lost = 0x00000005,
    847     /**
    848      * `0x00000006`.
    849      * The system ran out of memory.
    850      */
    851     WGPUSurfaceGetCurrentTextureStatus_OutOfMemory = 0x00000006,
    852     /**
    853      * `0x00000007`.
    854      * The @ref WGPUDevice configured on the @ref WGPUSurface was lost.
    855      */
    856     WGPUSurfaceGetCurrentTextureStatus_DeviceLost = 0x00000007,
    857     /**
    858      * `0x00000008`.
    859      * The surface is not configured, or there was an @ref OutStructChainError.
    860      */
    861     WGPUSurfaceGetCurrentTextureStatus_Error = 0x00000008,
    862     WGPUSurfaceGetCurrentTextureStatus_Force32 = 0x7FFFFFFF
    863 } WGPUSurfaceGetCurrentTextureStatus WGPU_ENUM_ATTRIBUTE;
    864 
    865 typedef enum WGPUTextureAspect {
    866     /**
    867      * `0x00000000`.
    868      * Indicates no value is passed for this argument. See @ref SentinelValues.
    869      */
    870     WGPUTextureAspect_Undefined = 0x00000000,
    871     WGPUTextureAspect_All = 0x00000001,
    872     WGPUTextureAspect_StencilOnly = 0x00000002,
    873     WGPUTextureAspect_DepthOnly = 0x00000003,
    874     WGPUTextureAspect_Force32 = 0x7FFFFFFF
    875 } WGPUTextureAspect WGPU_ENUM_ATTRIBUTE;
    876 
    877 typedef enum WGPUTextureDimension {
    878     /**
    879      * `0x00000000`.
    880      * Indicates no value is passed for this argument. See @ref SentinelValues.
    881      */
    882     WGPUTextureDimension_Undefined = 0x00000000,
    883     WGPUTextureDimension_1D = 0x00000001,
    884     WGPUTextureDimension_2D = 0x00000002,
    885     WGPUTextureDimension_3D = 0x00000003,
    886     WGPUTextureDimension_Force32 = 0x7FFFFFFF
    887 } WGPUTextureDimension WGPU_ENUM_ATTRIBUTE;
    888 
    889 typedef enum WGPUTextureFormat {
    890     /**
    891      * `0x00000000`.
    892      * Indicates no value is passed for this argument. See @ref SentinelValues.
    893      */
    894     WGPUTextureFormat_Undefined = 0x00000000,
    895     WGPUTextureFormat_R8Unorm = 0x00000001,
    896     WGPUTextureFormat_R8Snorm = 0x00000002,
    897     WGPUTextureFormat_R8Uint = 0x00000003,
    898     WGPUTextureFormat_R8Sint = 0x00000004,
    899     WGPUTextureFormat_R16Uint = 0x00000005,
    900     WGPUTextureFormat_R16Sint = 0x00000006,
    901     WGPUTextureFormat_R16Float = 0x00000007,
    902     WGPUTextureFormat_RG8Unorm = 0x00000008,
    903     WGPUTextureFormat_RG8Snorm = 0x00000009,
    904     WGPUTextureFormat_RG8Uint = 0x0000000A,
    905     WGPUTextureFormat_RG8Sint = 0x0000000B,
    906     WGPUTextureFormat_R32Float = 0x0000000C,
    907     WGPUTextureFormat_R32Uint = 0x0000000D,
    908     WGPUTextureFormat_R32Sint = 0x0000000E,
    909     WGPUTextureFormat_RG16Uint = 0x0000000F,
    910     WGPUTextureFormat_RG16Sint = 0x00000010,
    911     WGPUTextureFormat_RG16Float = 0x00000011,
    912     WGPUTextureFormat_RGBA8Unorm = 0x00000012,
    913     WGPUTextureFormat_RGBA8UnormSrgb = 0x00000013,
    914     WGPUTextureFormat_RGBA8Snorm = 0x00000014,
    915     WGPUTextureFormat_RGBA8Uint = 0x00000015,
    916     WGPUTextureFormat_RGBA8Sint = 0x00000016,
    917     WGPUTextureFormat_BGRA8Unorm = 0x00000017,
    918     WGPUTextureFormat_BGRA8UnormSrgb = 0x00000018,
    919     WGPUTextureFormat_RGB10A2Uint = 0x00000019,
    920     WGPUTextureFormat_RGB10A2Unorm = 0x0000001A,
    921     WGPUTextureFormat_RG11B10Ufloat = 0x0000001B,
    922     WGPUTextureFormat_RGB9E5Ufloat = 0x0000001C,
    923     WGPUTextureFormat_RG32Float = 0x0000001D,
    924     WGPUTextureFormat_RG32Uint = 0x0000001E,
    925     WGPUTextureFormat_RG32Sint = 0x0000001F,
    926     WGPUTextureFormat_RGBA16Uint = 0x00000020,
    927     WGPUTextureFormat_RGBA16Sint = 0x00000021,
    928     WGPUTextureFormat_RGBA16Float = 0x00000022,
    929     WGPUTextureFormat_RGBA32Float = 0x00000023,
    930     WGPUTextureFormat_RGBA32Uint = 0x00000024,
    931     WGPUTextureFormat_RGBA32Sint = 0x00000025,
    932     WGPUTextureFormat_Stencil8 = 0x00000026,
    933     WGPUTextureFormat_Depth16Unorm = 0x00000027,
    934     WGPUTextureFormat_Depth24Plus = 0x00000028,
    935     WGPUTextureFormat_Depth24PlusStencil8 = 0x00000029,
    936     WGPUTextureFormat_Depth32Float = 0x0000002A,
    937     WGPUTextureFormat_Depth32FloatStencil8 = 0x0000002B,
    938     WGPUTextureFormat_BC1RGBAUnorm = 0x0000002C,
    939     WGPUTextureFormat_BC1RGBAUnormSrgb = 0x0000002D,
    940     WGPUTextureFormat_BC2RGBAUnorm = 0x0000002E,
    941     WGPUTextureFormat_BC2RGBAUnormSrgb = 0x0000002F,
    942     WGPUTextureFormat_BC3RGBAUnorm = 0x00000030,
    943     WGPUTextureFormat_BC3RGBAUnormSrgb = 0x00000031,
    944     WGPUTextureFormat_BC4RUnorm = 0x00000032,
    945     WGPUTextureFormat_BC4RSnorm = 0x00000033,
    946     WGPUTextureFormat_BC5RGUnorm = 0x00000034,
    947     WGPUTextureFormat_BC5RGSnorm = 0x00000035,
    948     WGPUTextureFormat_BC6HRGBUfloat = 0x00000036,
    949     WGPUTextureFormat_BC6HRGBFloat = 0x00000037,
    950     WGPUTextureFormat_BC7RGBAUnorm = 0x00000038,
    951     WGPUTextureFormat_BC7RGBAUnormSrgb = 0x00000039,
    952     WGPUTextureFormat_ETC2RGB8Unorm = 0x0000003A,
    953     WGPUTextureFormat_ETC2RGB8UnormSrgb = 0x0000003B,
    954     WGPUTextureFormat_ETC2RGB8A1Unorm = 0x0000003C,
    955     WGPUTextureFormat_ETC2RGB8A1UnormSrgb = 0x0000003D,
    956     WGPUTextureFormat_ETC2RGBA8Unorm = 0x0000003E,
    957     WGPUTextureFormat_ETC2RGBA8UnormSrgb = 0x0000003F,
    958     WGPUTextureFormat_EACR11Unorm = 0x00000040,
    959     WGPUTextureFormat_EACR11Snorm = 0x00000041,
    960     WGPUTextureFormat_EACRG11Unorm = 0x00000042,
    961     WGPUTextureFormat_EACRG11Snorm = 0x00000043,
    962     WGPUTextureFormat_ASTC4x4Unorm = 0x00000044,
    963     WGPUTextureFormat_ASTC4x4UnormSrgb = 0x00000045,
    964     WGPUTextureFormat_ASTC5x4Unorm = 0x00000046,
    965     WGPUTextureFormat_ASTC5x4UnormSrgb = 0x00000047,
    966     WGPUTextureFormat_ASTC5x5Unorm = 0x00000048,
    967     WGPUTextureFormat_ASTC5x5UnormSrgb = 0x00000049,
    968     WGPUTextureFormat_ASTC6x5Unorm = 0x0000004A,
    969     WGPUTextureFormat_ASTC6x5UnormSrgb = 0x0000004B,
    970     WGPUTextureFormat_ASTC6x6Unorm = 0x0000004C,
    971     WGPUTextureFormat_ASTC6x6UnormSrgb = 0x0000004D,
    972     WGPUTextureFormat_ASTC8x5Unorm = 0x0000004E,
    973     WGPUTextureFormat_ASTC8x5UnormSrgb = 0x0000004F,
    974     WGPUTextureFormat_ASTC8x6Unorm = 0x00000050,
    975     WGPUTextureFormat_ASTC8x6UnormSrgb = 0x00000051,
    976     WGPUTextureFormat_ASTC8x8Unorm = 0x00000052,
    977     WGPUTextureFormat_ASTC8x8UnormSrgb = 0x00000053,
    978     WGPUTextureFormat_ASTC10x5Unorm = 0x00000054,
    979     WGPUTextureFormat_ASTC10x5UnormSrgb = 0x00000055,
    980     WGPUTextureFormat_ASTC10x6Unorm = 0x00000056,
    981     WGPUTextureFormat_ASTC10x6UnormSrgb = 0x00000057,
    982     WGPUTextureFormat_ASTC10x8Unorm = 0x00000058,
    983     WGPUTextureFormat_ASTC10x8UnormSrgb = 0x00000059,
    984     WGPUTextureFormat_ASTC10x10Unorm = 0x0000005A,
    985     WGPUTextureFormat_ASTC10x10UnormSrgb = 0x0000005B,
    986     WGPUTextureFormat_ASTC12x10Unorm = 0x0000005C,
    987     WGPUTextureFormat_ASTC12x10UnormSrgb = 0x0000005D,
    988     WGPUTextureFormat_ASTC12x12Unorm = 0x0000005E,
    989     WGPUTextureFormat_ASTC12x12UnormSrgb = 0x0000005F,
    990     WGPUTextureFormat_Force32 = 0x7FFFFFFF
    991 } WGPUTextureFormat WGPU_ENUM_ATTRIBUTE;
    992 
    993 typedef enum WGPUTextureSampleType {
    994     /**
    995      * `0x00000000`.
    996      * Indicates that this @ref WGPUTextureBindingLayout member of
    997      * its parent @ref WGPUBindGroupLayoutEntry is not used.
    998      * (See also @ref SentinelValues.)
    999      */
   1000     WGPUTextureSampleType_BindingNotUsed = 0x00000000,
   1001     /**
   1002      * `0x00000001`.
   1003      * Indicates no value is passed for this argument. See @ref SentinelValues.
   1004      */
   1005     WGPUTextureSampleType_Undefined = 0x00000001,
   1006     WGPUTextureSampleType_Float = 0x00000002,
   1007     WGPUTextureSampleType_UnfilterableFloat = 0x00000003,
   1008     WGPUTextureSampleType_Depth = 0x00000004,
   1009     WGPUTextureSampleType_Sint = 0x00000005,
   1010     WGPUTextureSampleType_Uint = 0x00000006,
   1011     WGPUTextureSampleType_Force32 = 0x7FFFFFFF
   1012 } WGPUTextureSampleType WGPU_ENUM_ATTRIBUTE;
   1013 
   1014 typedef enum WGPUTextureViewDimension {
   1015     /**
   1016      * `0x00000000`.
   1017      * Indicates no value is passed for this argument. See @ref SentinelValues.
   1018      */
   1019     WGPUTextureViewDimension_Undefined = 0x00000000,
   1020     WGPUTextureViewDimension_1D = 0x00000001,
   1021     WGPUTextureViewDimension_2D = 0x00000002,
   1022     WGPUTextureViewDimension_2DArray = 0x00000003,
   1023     WGPUTextureViewDimension_Cube = 0x00000004,
   1024     WGPUTextureViewDimension_CubeArray = 0x00000005,
   1025     WGPUTextureViewDimension_3D = 0x00000006,
   1026     WGPUTextureViewDimension_Force32 = 0x7FFFFFFF
   1027 } WGPUTextureViewDimension WGPU_ENUM_ATTRIBUTE;
   1028 
   1029 typedef enum WGPUVertexFormat {
   1030     WGPUVertexFormat_Uint8 = 0x00000001,
   1031     WGPUVertexFormat_Uint8x2 = 0x00000002,
   1032     WGPUVertexFormat_Uint8x4 = 0x00000003,
   1033     WGPUVertexFormat_Sint8 = 0x00000004,
   1034     WGPUVertexFormat_Sint8x2 = 0x00000005,
   1035     WGPUVertexFormat_Sint8x4 = 0x00000006,
   1036     WGPUVertexFormat_Unorm8 = 0x00000007,
   1037     WGPUVertexFormat_Unorm8x2 = 0x00000008,
   1038     WGPUVertexFormat_Unorm8x4 = 0x00000009,
   1039     WGPUVertexFormat_Snorm8 = 0x0000000A,
   1040     WGPUVertexFormat_Snorm8x2 = 0x0000000B,
   1041     WGPUVertexFormat_Snorm8x4 = 0x0000000C,
   1042     WGPUVertexFormat_Uint16 = 0x0000000D,
   1043     WGPUVertexFormat_Uint16x2 = 0x0000000E,
   1044     WGPUVertexFormat_Uint16x4 = 0x0000000F,
   1045     WGPUVertexFormat_Sint16 = 0x00000010,
   1046     WGPUVertexFormat_Sint16x2 = 0x00000011,
   1047     WGPUVertexFormat_Sint16x4 = 0x00000012,
   1048     WGPUVertexFormat_Unorm16 = 0x00000013,
   1049     WGPUVertexFormat_Unorm16x2 = 0x00000014,
   1050     WGPUVertexFormat_Unorm16x4 = 0x00000015,
   1051     WGPUVertexFormat_Snorm16 = 0x00000016,
   1052     WGPUVertexFormat_Snorm16x2 = 0x00000017,
   1053     WGPUVertexFormat_Snorm16x4 = 0x00000018,
   1054     WGPUVertexFormat_Float16 = 0x00000019,
   1055     WGPUVertexFormat_Float16x2 = 0x0000001A,
   1056     WGPUVertexFormat_Float16x4 = 0x0000001B,
   1057     WGPUVertexFormat_Float32 = 0x0000001C,
   1058     WGPUVertexFormat_Float32x2 = 0x0000001D,
   1059     WGPUVertexFormat_Float32x3 = 0x0000001E,
   1060     WGPUVertexFormat_Float32x4 = 0x0000001F,
   1061     WGPUVertexFormat_Uint32 = 0x00000020,
   1062     WGPUVertexFormat_Uint32x2 = 0x00000021,
   1063     WGPUVertexFormat_Uint32x3 = 0x00000022,
   1064     WGPUVertexFormat_Uint32x4 = 0x00000023,
   1065     WGPUVertexFormat_Sint32 = 0x00000024,
   1066     WGPUVertexFormat_Sint32x2 = 0x00000025,
   1067     WGPUVertexFormat_Sint32x3 = 0x00000026,
   1068     WGPUVertexFormat_Sint32x4 = 0x00000027,
   1069     WGPUVertexFormat_Unorm10_10_10_2 = 0x00000028,
   1070     WGPUVertexFormat_Unorm8x4BGRA = 0x00000029,
   1071     WGPUVertexFormat_Force32 = 0x7FFFFFFF
   1072 } WGPUVertexFormat WGPU_ENUM_ATTRIBUTE;
   1073 
   1074 typedef enum WGPUVertexStepMode {
   1075     /**
   1076      * `0x00000000`.
   1077      * This @ref WGPUVertexBufferLayout is a "hole" in the @ref WGPUVertexState `buffers` array.
   1078      * (See also @ref SentinelValues.)
   1079      */
   1080     WGPUVertexStepMode_VertexBufferNotUsed = 0x00000000,
   1081     /**
   1082      * `0x00000001`.
   1083      * Indicates no value is passed for this argument. See @ref SentinelValues.
   1084      */
   1085     WGPUVertexStepMode_Undefined = 0x00000001,
   1086     WGPUVertexStepMode_Vertex = 0x00000002,
   1087     WGPUVertexStepMode_Instance = 0x00000003,
   1088     WGPUVertexStepMode_Force32 = 0x7FFFFFFF
   1089 } WGPUVertexStepMode WGPU_ENUM_ATTRIBUTE;
   1090 
   1091 typedef enum WGPUWGSLLanguageFeatureName {
   1092     WGPUWGSLLanguageFeatureName_ReadonlyAndReadwriteStorageTextures = 0x00000001,
   1093     WGPUWGSLLanguageFeatureName_Packed4x8IntegerDotProduct = 0x00000002,
   1094     WGPUWGSLLanguageFeatureName_UnrestrictedPointerParameters = 0x00000003,
   1095     WGPUWGSLLanguageFeatureName_PointerCompositeAccess = 0x00000004,
   1096     WGPUWGSLLanguageFeatureName_Force32 = 0x7FFFFFFF
   1097 } WGPUWGSLLanguageFeatureName WGPU_ENUM_ATTRIBUTE;
   1098 
   1099 /**
   1100  * Status returned from a call to ::wgpuInstanceWaitAny.
   1101  */
   1102 typedef enum WGPUWaitStatus {
   1103     /**
   1104      * `0x00000001`.
   1105      * At least one WGPUFuture completed successfully.
   1106      */
   1107     WGPUWaitStatus_Success = 0x00000001,
   1108     /**
   1109      * `0x00000002`.
   1110      * No WGPUFutures completed within the timeout.
   1111      */
   1112     WGPUWaitStatus_TimedOut = 0x00000002,
   1113     /**
   1114      * `0x00000003`.
   1115      * A @ref Timed-Wait was performed when WGPUInstanceFeatures::timedWaitAnyEnable is false.
   1116      */
   1117     WGPUWaitStatus_UnsupportedTimeout = 0x00000003,
   1118     /**
   1119      * `0x00000004`.
   1120      * The number of futures waited on in a @ref Timed-Wait is greater than the supported WGPUInstanceFeatures::timedWaitAnyMaxCount.
   1121      */
   1122     WGPUWaitStatus_UnsupportedCount = 0x00000004,
   1123     /**
   1124      * `0x00000005`.
   1125      * An invalid wait was performed with @ref Mixed-Sources.
   1126      */
   1127     WGPUWaitStatus_UnsupportedMixedSources = 0x00000005,
   1128     WGPUWaitStatus_Force32 = 0x7FFFFFFF
   1129 } WGPUWaitStatus WGPU_ENUM_ATTRIBUTE;
   1130 
   1131 
   1132 /** @} */
   1133 
   1134 /**
   1135  * \defgroup Bitflags
   1136  * \brief Type and constant definitions for bitflag types.
   1137  *
   1138  * @{
   1139  */
   1140 typedef WGPUFlags WGPUBufferUsage;
   1141 static const WGPUBufferUsage WGPUBufferUsage_None = 0x0000000000000000;
   1142 static const WGPUBufferUsage WGPUBufferUsage_MapRead = 0x0000000000000001;
   1143 static const WGPUBufferUsage WGPUBufferUsage_MapWrite = 0x0000000000000002;
   1144 static const WGPUBufferUsage WGPUBufferUsage_CopySrc = 0x0000000000000004;
   1145 static const WGPUBufferUsage WGPUBufferUsage_CopyDst = 0x0000000000000008;
   1146 static const WGPUBufferUsage WGPUBufferUsage_Index = 0x0000000000000010;
   1147 static const WGPUBufferUsage WGPUBufferUsage_Vertex = 0x0000000000000020;
   1148 static const WGPUBufferUsage WGPUBufferUsage_Uniform = 0x0000000000000040;
   1149 static const WGPUBufferUsage WGPUBufferUsage_Storage = 0x0000000000000080;
   1150 static const WGPUBufferUsage WGPUBufferUsage_Indirect = 0x0000000000000100;
   1151 static const WGPUBufferUsage WGPUBufferUsage_QueryResolve = 0x0000000000000200;
   1152 
   1153 typedef WGPUFlags WGPUColorWriteMask;
   1154 static const WGPUColorWriteMask WGPUColorWriteMask_None = 0x0000000000000000;
   1155 static const WGPUColorWriteMask WGPUColorWriteMask_Red = 0x0000000000000001;
   1156 static const WGPUColorWriteMask WGPUColorWriteMask_Green = 0x0000000000000002;
   1157 static const WGPUColorWriteMask WGPUColorWriteMask_Blue = 0x0000000000000004;
   1158 static const WGPUColorWriteMask WGPUColorWriteMask_Alpha = 0x0000000000000008;
   1159 static const WGPUColorWriteMask WGPUColorWriteMask_All = 0x000000000000000F /* Red | Green | Blue | Alpha */;
   1160 
   1161 typedef WGPUFlags WGPUMapMode;
   1162 static const WGPUMapMode WGPUMapMode_None = 0x0000000000000000;
   1163 static const WGPUMapMode WGPUMapMode_Read = 0x0000000000000001;
   1164 static const WGPUMapMode WGPUMapMode_Write = 0x0000000000000002;
   1165 
   1166 typedef WGPUFlags WGPUShaderStage;
   1167 static const WGPUShaderStage WGPUShaderStage_None = 0x0000000000000000;
   1168 static const WGPUShaderStage WGPUShaderStage_Vertex = 0x0000000000000001;
   1169 static const WGPUShaderStage WGPUShaderStage_Fragment = 0x0000000000000002;
   1170 static const WGPUShaderStage WGPUShaderStage_Compute = 0x0000000000000004;
   1171 
   1172 typedef WGPUFlags WGPUTextureUsage;
   1173 static const WGPUTextureUsage WGPUTextureUsage_None = 0x0000000000000000;
   1174 static const WGPUTextureUsage WGPUTextureUsage_CopySrc = 0x0000000000000001;
   1175 static const WGPUTextureUsage WGPUTextureUsage_CopyDst = 0x0000000000000002;
   1176 static const WGPUTextureUsage WGPUTextureUsage_TextureBinding = 0x0000000000000004;
   1177 static const WGPUTextureUsage WGPUTextureUsage_StorageBinding = 0x0000000000000008;
   1178 static const WGPUTextureUsage WGPUTextureUsage_RenderAttachment = 0x0000000000000010;
   1179 
   1180 
   1181 /** @} */
   1182 typedef void (*WGPUProc)(void) WGPU_FUNCTION_ATTRIBUTE;
   1183 
   1184 
   1185 /**
   1186  * \defgroup Callbacks
   1187  * \brief Callbacks through which asynchronous functions return.
   1188  *
   1189  * @{
   1190  */
   1191 /**
   1192  * @param message
   1193  * This parameter is @ref PassedWithoutOwnership.
   1194  */
   1195 typedef void (*WGPUBufferMapCallback)(WGPUMapAsyncStatus status, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1196 /**
   1197  * @param compilationInfo
   1198  * This parameter is @ref PassedWithoutOwnership.
   1199  */
   1200 typedef void (*WGPUCompilationInfoCallback)(WGPUCompilationInfoRequestStatus status, struct WGPUCompilationInfo const * compilationInfo, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1201 /**
   1202  * @param pipeline
   1203  * This parameter is @ref PassedWithOwnership.
   1204  */
   1205 typedef void (*WGPUCreateComputePipelineAsyncCallback)(WGPUCreatePipelineAsyncStatus status, WGPUComputePipeline pipeline, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1206 /**
   1207  * @param pipeline
   1208  * This parameter is @ref PassedWithOwnership.
   1209  */
   1210 typedef void (*WGPUCreateRenderPipelineAsyncCallback)(WGPUCreatePipelineAsyncStatus status, WGPURenderPipeline pipeline, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1211 /**
   1212  * @param device
   1213  * Reference to the device which was lost. If, and only if, the `reason` is @ref WGPUDeviceLostReason_FailedCreation, this is a non-null pointer to a null @ref WGPUDevice.
   1214  * This parameter is @ref PassedWithoutOwnership.
   1215  *
   1216  * @param message
   1217  * This parameter is @ref PassedWithoutOwnership.
   1218  */
   1219 typedef void (*WGPUDeviceLostCallback)(WGPUDevice const * device, WGPUDeviceLostReason reason, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1220 /**
   1221  * @param status
   1222  * See @ref WGPUPopErrorScopeStatus.
   1223  *
   1224  * @param type
   1225  * The type of the error caught by the scope, or @ref WGPUErrorType_NoError if there was none.
   1226  * If the `status` is not @ref WGPUPopErrorScopeStatus_Success, this is @ref WGPUErrorType_NoError.
   1227  *
   1228  * @param message
   1229  * If the `type` is not @ref WGPUErrorType_NoError, this is a non-empty @ref LocalizableHumanReadableMessageString;
   1230  * otherwise, this is an empty string.
   1231  * This parameter is @ref PassedWithoutOwnership.
   1232  */
   1233 typedef void (*WGPUPopErrorScopeCallback)(WGPUPopErrorScopeStatus status, WGPUErrorType type, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1234 typedef void (*WGPUQueueWorkDoneCallback)(WGPUQueueWorkDoneStatus status, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1235 /**
   1236  * @param adapter
   1237  * This parameter is @ref PassedWithOwnership.
   1238  *
   1239  * @param message
   1240  * This parameter is @ref PassedWithoutOwnership.
   1241  */
   1242 typedef void (*WGPURequestAdapterCallback)(WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1243 /**
   1244  * @param device
   1245  * This parameter is @ref PassedWithOwnership.
   1246  *
   1247  * @param message
   1248  * This parameter is @ref PassedWithoutOwnership.
   1249  */
   1250 typedef void (*WGPURequestDeviceCallback)(WGPURequestDeviceStatus status, WGPUDevice device, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1251 /**
   1252  * @param device
   1253  * This parameter is @ref PassedWithoutOwnership.
   1254  *
   1255  * @param message
   1256  * This parameter is @ref PassedWithoutOwnership.
   1257  */
   1258 typedef void (*WGPUUncapturedErrorCallback)(WGPUDevice const * device, WGPUErrorType type, WGPUStringView message, WGPU_NULLABLE void* userdata1, WGPU_NULLABLE void* userdata2) WGPU_FUNCTION_ATTRIBUTE;
   1259 
   1260 /** @} */
   1261 /**
   1262  * \defgroup ChainedStructures Chained Structures
   1263  * \brief Structures used to extend descriptors.
   1264  *
   1265  * @{
   1266  */
   1267 
   1268 typedef struct WGPUChainedStruct {
   1269     struct WGPUChainedStruct const * next;
   1270     WGPUSType sType;
   1271 } WGPUChainedStruct WGPU_STRUCTURE_ATTRIBUTE;
   1272 
   1273 typedef struct WGPUChainedStructOut {
   1274     struct WGPUChainedStructOut * next;
   1275     WGPUSType sType;
   1276 } WGPUChainedStructOut WGPU_STRUCTURE_ATTRIBUTE;
   1277 
   1278 /** @} */
   1279 
   1280 
   1281 /**
   1282  * \defgroup Structures
   1283  * \brief Descriptors and other transparent structures.
   1284  *
   1285  * @{
   1286  */
   1287 
   1288  /**
   1289  * \defgroup WGPUCallbackInfo
   1290  * \brief Callback info structures that are used in asynchronous functions.
   1291  *
   1292  * @{
   1293  */
   1294 typedef struct WGPUBufferMapCallbackInfo {
   1295     WGPUChainedStruct const * nextInChain;
   1296     WGPUCallbackMode mode;
   1297     WGPUBufferMapCallback callback;
   1298     WGPU_NULLABLE void* userdata1;
   1299     WGPU_NULLABLE void* userdata2;
   1300 } WGPUBufferMapCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1301 
   1302 typedef struct WGPUCompilationInfoCallbackInfo {
   1303     WGPUChainedStruct const * nextInChain;
   1304     WGPUCallbackMode mode;
   1305     WGPUCompilationInfoCallback callback;
   1306     WGPU_NULLABLE void* userdata1;
   1307     WGPU_NULLABLE void* userdata2;
   1308 } WGPUCompilationInfoCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1309 
   1310 typedef struct WGPUCreateComputePipelineAsyncCallbackInfo {
   1311     WGPUChainedStruct const * nextInChain;
   1312     WGPUCallbackMode mode;
   1313     WGPUCreateComputePipelineAsyncCallback callback;
   1314     WGPU_NULLABLE void* userdata1;
   1315     WGPU_NULLABLE void* userdata2;
   1316 } WGPUCreateComputePipelineAsyncCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1317 
   1318 typedef struct WGPUCreateRenderPipelineAsyncCallbackInfo {
   1319     WGPUChainedStruct const * nextInChain;
   1320     WGPUCallbackMode mode;
   1321     WGPUCreateRenderPipelineAsyncCallback callback;
   1322     WGPU_NULLABLE void* userdata1;
   1323     WGPU_NULLABLE void* userdata2;
   1324 } WGPUCreateRenderPipelineAsyncCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1325 
   1326 typedef struct WGPUDeviceLostCallbackInfo {
   1327     WGPUChainedStruct const * nextInChain;
   1328     WGPUCallbackMode mode;
   1329     WGPUDeviceLostCallback callback;
   1330     WGPU_NULLABLE void* userdata1;
   1331     WGPU_NULLABLE void* userdata2;
   1332 } WGPUDeviceLostCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1333 
   1334 typedef struct WGPUPopErrorScopeCallbackInfo {
   1335     WGPUChainedStruct const * nextInChain;
   1336     WGPUCallbackMode mode;
   1337     WGPUPopErrorScopeCallback callback;
   1338     WGPU_NULLABLE void* userdata1;
   1339     WGPU_NULLABLE void* userdata2;
   1340 } WGPUPopErrorScopeCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1341 
   1342 typedef struct WGPUQueueWorkDoneCallbackInfo {
   1343     WGPUChainedStruct const * nextInChain;
   1344     WGPUCallbackMode mode;
   1345     WGPUQueueWorkDoneCallback callback;
   1346     WGPU_NULLABLE void* userdata1;
   1347     WGPU_NULLABLE void* userdata2;
   1348 } WGPUQueueWorkDoneCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1349 
   1350 typedef struct WGPURequestAdapterCallbackInfo {
   1351     WGPUChainedStruct const * nextInChain;
   1352     WGPUCallbackMode mode;
   1353     WGPURequestAdapterCallback callback;
   1354     WGPU_NULLABLE void* userdata1;
   1355     WGPU_NULLABLE void* userdata2;
   1356 } WGPURequestAdapterCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1357 
   1358 typedef struct WGPURequestDeviceCallbackInfo {
   1359     WGPUChainedStruct const * nextInChain;
   1360     WGPUCallbackMode mode;
   1361     WGPURequestDeviceCallback callback;
   1362     WGPU_NULLABLE void* userdata1;
   1363     WGPU_NULLABLE void* userdata2;
   1364 } WGPURequestDeviceCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1365 
   1366 typedef struct WGPUUncapturedErrorCallbackInfo {
   1367     WGPUChainedStruct const * nextInChain;
   1368     WGPUUncapturedErrorCallback callback;
   1369     WGPU_NULLABLE void* userdata1;
   1370     WGPU_NULLABLE void* userdata2;
   1371 } WGPUUncapturedErrorCallbackInfo WGPU_STRUCTURE_ATTRIBUTE;
   1372 
   1373 /** @} */
   1374 
   1375 typedef struct WGPUAdapterInfo {
   1376     WGPUChainedStructOut * nextInChain;
   1377     /**
   1378      * This is an \ref OutputString.
   1379      */
   1380     WGPUStringView vendor;
   1381     /**
   1382      * This is an \ref OutputString.
   1383      */
   1384     WGPUStringView architecture;
   1385     /**
   1386      * This is an \ref OutputString.
   1387      */
   1388     WGPUStringView device;
   1389     /**
   1390      * This is an \ref OutputString.
   1391      */
   1392     WGPUStringView description;
   1393     WGPUBackendType backendType;
   1394     WGPUAdapterType adapterType;
   1395     uint32_t vendorID;
   1396     uint32_t deviceID;
   1397 } WGPUAdapterInfo WGPU_STRUCTURE_ATTRIBUTE;
   1398 
   1399 typedef struct WGPUBindGroupEntry {
   1400     WGPUChainedStruct const * nextInChain;
   1401     uint32_t binding;
   1402     WGPU_NULLABLE WGPUBuffer buffer;
   1403     uint64_t offset;
   1404     uint64_t size;
   1405     WGPU_NULLABLE WGPUSampler sampler;
   1406     WGPU_NULLABLE WGPUTextureView textureView;
   1407 } WGPUBindGroupEntry WGPU_STRUCTURE_ATTRIBUTE;
   1408 
   1409 typedef struct WGPUBlendComponent {
   1410     WGPUBlendOperation operation;
   1411     WGPUBlendFactor srcFactor;
   1412     WGPUBlendFactor dstFactor;
   1413 } WGPUBlendComponent WGPU_STRUCTURE_ATTRIBUTE;
   1414 
   1415 typedef struct WGPUBufferBindingLayout {
   1416     WGPUChainedStruct const * nextInChain;
   1417     WGPUBufferBindingType type;
   1418     WGPUBool hasDynamicOffset;
   1419     uint64_t minBindingSize;
   1420 } WGPUBufferBindingLayout WGPU_STRUCTURE_ATTRIBUTE;
   1421 
   1422 typedef struct WGPUBufferDescriptor {
   1423     WGPUChainedStruct const * nextInChain;
   1424     /**
   1425      * This is a \ref NonNullInputString.
   1426      */
   1427     WGPUStringView label;
   1428     WGPUBufferUsage usage;
   1429     uint64_t size;
   1430     WGPUBool mappedAtCreation;
   1431 } WGPUBufferDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1432 
   1433 typedef struct WGPUColor {
   1434     double r;
   1435     double g;
   1436     double b;
   1437     double a;
   1438 } WGPUColor WGPU_STRUCTURE_ATTRIBUTE;
   1439 
   1440 typedef struct WGPUCommandBufferDescriptor {
   1441     WGPUChainedStruct const * nextInChain;
   1442     /**
   1443      * This is a \ref NonNullInputString.
   1444      */
   1445     WGPUStringView label;
   1446 } WGPUCommandBufferDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1447 
   1448 typedef struct WGPUCommandEncoderDescriptor {
   1449     WGPUChainedStruct const * nextInChain;
   1450     /**
   1451      * This is a \ref NonNullInputString.
   1452      */
   1453     WGPUStringView label;
   1454 } WGPUCommandEncoderDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1455 
   1456 typedef struct WGPUCompilationMessage {
   1457     WGPUChainedStruct const * nextInChain;
   1458     /**
   1459      * A @ref LocalizableHumanReadableMessageString.
   1460      *
   1461      * This is an \ref OutputString.
   1462      */
   1463     WGPUStringView message;
   1464     /**
   1465      * Severity level of the message.
   1466      */
   1467     WGPUCompilationMessageType type;
   1468     /**
   1469      * Line number where the message is attached, starting at 1.
   1470      */
   1471     uint64_t lineNum;
   1472     /**
   1473      * Offset in UTF-8 code units (bytes) from the beginning of the line, starting at 1.
   1474      */
   1475     uint64_t linePos;
   1476     /**
   1477      * Offset in UTF-8 code units (bytes) from the beginning of the shader code, starting at 0.
   1478      */
   1479     uint64_t offset;
   1480     /**
   1481      * Length in UTF-8 code units (bytes) of the span the message corresponds to.
   1482      */
   1483     uint64_t length;
   1484 } WGPUCompilationMessage WGPU_STRUCTURE_ATTRIBUTE;
   1485 
   1486 typedef struct WGPUComputePassTimestampWrites {
   1487     WGPUQuerySet querySet;
   1488     uint32_t beginningOfPassWriteIndex;
   1489     uint32_t endOfPassWriteIndex;
   1490 } WGPUComputePassTimestampWrites WGPU_STRUCTURE_ATTRIBUTE;
   1491 
   1492 typedef struct WGPUConstantEntry {
   1493     WGPUChainedStruct const * nextInChain;
   1494     /**
   1495      * This is a \ref NonNullInputString.
   1496      */
   1497     WGPUStringView key;
   1498     double value;
   1499 } WGPUConstantEntry WGPU_STRUCTURE_ATTRIBUTE;
   1500 
   1501 typedef struct WGPUExtent3D {
   1502     uint32_t width;
   1503     uint32_t height;
   1504     uint32_t depthOrArrayLayers;
   1505 } WGPUExtent3D WGPU_STRUCTURE_ATTRIBUTE;
   1506 
   1507 /**
   1508  * Opaque handle to an asynchronous operation. See @ref Asynchronous-Operations for more information.
   1509  */
   1510 typedef struct WGPUFuture {
   1511     /**
   1512      * Opaque id of the @ref WGPUFuture
   1513      */
   1514     uint64_t id;
   1515 } WGPUFuture WGPU_STRUCTURE_ATTRIBUTE;
   1516 
   1517 /**
   1518  * Features enabled on the WGPUInstance
   1519  */
   1520 typedef struct WGPUInstanceCapabilities {
   1521     /** This struct chain is used as mutable in some places and immutable in others. */
   1522     WGPUChainedStructOut * nextInChain;
   1523     /**
   1524      * Enable use of ::wgpuInstanceWaitAny with `timeoutNS > 0`.
   1525      */
   1526     WGPUBool timedWaitAnyEnable;
   1527     /**
   1528      * The maximum number @ref WGPUFutureWaitInfo supported in a call to ::wgpuInstanceWaitAny with `timeoutNS > 0`.
   1529      */
   1530     size_t timedWaitAnyMaxCount;
   1531 } WGPUInstanceCapabilities WGPU_STRUCTURE_ATTRIBUTE;
   1532 
   1533 typedef struct WGPULimits {
   1534     /** This struct chain is used as mutable in some places and immutable in others. */
   1535     WGPUChainedStructOut * nextInChain;
   1536     uint32_t maxTextureDimension1D;
   1537     uint32_t maxTextureDimension2D;
   1538     uint32_t maxTextureDimension3D;
   1539     uint32_t maxTextureArrayLayers;
   1540     uint32_t maxBindGroups;
   1541     uint32_t maxBindGroupsPlusVertexBuffers;
   1542     uint32_t maxBindingsPerBindGroup;
   1543     uint32_t maxDynamicUniformBuffersPerPipelineLayout;
   1544     uint32_t maxDynamicStorageBuffersPerPipelineLayout;
   1545     uint32_t maxSampledTexturesPerShaderStage;
   1546     uint32_t maxSamplersPerShaderStage;
   1547     uint32_t maxStorageBuffersPerShaderStage;
   1548     uint32_t maxStorageTexturesPerShaderStage;
   1549     uint32_t maxUniformBuffersPerShaderStage;
   1550     uint64_t maxUniformBufferBindingSize;
   1551     uint64_t maxStorageBufferBindingSize;
   1552     uint32_t minUniformBufferOffsetAlignment;
   1553     uint32_t minStorageBufferOffsetAlignment;
   1554     uint32_t maxVertexBuffers;
   1555     uint64_t maxBufferSize;
   1556     uint32_t maxVertexAttributes;
   1557     uint32_t maxVertexBufferArrayStride;
   1558     uint32_t maxInterStageShaderVariables;
   1559     uint32_t maxColorAttachments;
   1560     uint32_t maxColorAttachmentBytesPerSample;
   1561     uint32_t maxComputeWorkgroupStorageSize;
   1562     uint32_t maxComputeInvocationsPerWorkgroup;
   1563     uint32_t maxComputeWorkgroupSizeX;
   1564     uint32_t maxComputeWorkgroupSizeY;
   1565     uint32_t maxComputeWorkgroupSizeZ;
   1566     uint32_t maxComputeWorkgroupsPerDimension;
   1567 } WGPULimits WGPU_STRUCTURE_ATTRIBUTE;
   1568 
   1569 typedef struct WGPUMultisampleState {
   1570     WGPUChainedStruct const * nextInChain;
   1571     uint32_t count;
   1572     uint32_t mask;
   1573     WGPUBool alphaToCoverageEnabled;
   1574 } WGPUMultisampleState WGPU_STRUCTURE_ATTRIBUTE;
   1575 
   1576 typedef struct WGPUOrigin3D {
   1577     uint32_t x;
   1578     uint32_t y;
   1579     uint32_t z;
   1580 } WGPUOrigin3D WGPU_STRUCTURE_ATTRIBUTE;
   1581 
   1582 typedef struct WGPUPipelineLayoutDescriptor {
   1583     WGPUChainedStruct const * nextInChain;
   1584     /**
   1585      * This is a \ref NonNullInputString.
   1586      */
   1587     WGPUStringView label;
   1588     size_t bindGroupLayoutCount;
   1589     WGPUBindGroupLayout const * bindGroupLayouts;
   1590 } WGPUPipelineLayoutDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1591 
   1592 typedef struct WGPUPrimitiveState {
   1593     WGPUChainedStruct const * nextInChain;
   1594     WGPUPrimitiveTopology topology;
   1595     WGPUIndexFormat stripIndexFormat;
   1596     WGPUFrontFace frontFace;
   1597     WGPUCullMode cullMode;
   1598     WGPUBool unclippedDepth;
   1599 } WGPUPrimitiveState WGPU_STRUCTURE_ATTRIBUTE;
   1600 
   1601 typedef struct WGPUQuerySetDescriptor {
   1602     WGPUChainedStruct const * nextInChain;
   1603     /**
   1604      * This is a \ref NonNullInputString.
   1605      */
   1606     WGPUStringView label;
   1607     WGPUQueryType type;
   1608     uint32_t count;
   1609 } WGPUQuerySetDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1610 
   1611 typedef struct WGPUQueueDescriptor {
   1612     WGPUChainedStruct const * nextInChain;
   1613     /**
   1614      * This is a \ref NonNullInputString.
   1615      */
   1616     WGPUStringView label;
   1617 } WGPUQueueDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1618 
   1619 typedef struct WGPURenderBundleDescriptor {
   1620     WGPUChainedStruct const * nextInChain;
   1621     /**
   1622      * This is a \ref NonNullInputString.
   1623      */
   1624     WGPUStringView label;
   1625 } WGPURenderBundleDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1626 
   1627 typedef struct WGPURenderBundleEncoderDescriptor {
   1628     WGPUChainedStruct const * nextInChain;
   1629     /**
   1630      * This is a \ref NonNullInputString.
   1631      */
   1632     WGPUStringView label;
   1633     size_t colorFormatCount;
   1634     WGPUTextureFormat const * colorFormats;
   1635     WGPUTextureFormat depthStencilFormat;
   1636     uint32_t sampleCount;
   1637     WGPUBool depthReadOnly;
   1638     WGPUBool stencilReadOnly;
   1639 } WGPURenderBundleEncoderDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1640 
   1641 typedef struct WGPURenderPassDepthStencilAttachment {
   1642     WGPUTextureView view;
   1643     WGPULoadOp depthLoadOp;
   1644     WGPUStoreOp depthStoreOp;
   1645     float depthClearValue;
   1646     WGPUBool depthReadOnly;
   1647     WGPULoadOp stencilLoadOp;
   1648     WGPUStoreOp stencilStoreOp;
   1649     uint32_t stencilClearValue;
   1650     WGPUBool stencilReadOnly;
   1651 } WGPURenderPassDepthStencilAttachment WGPU_STRUCTURE_ATTRIBUTE;
   1652 
   1653 typedef struct WGPURenderPassMaxDrawCount {
   1654     WGPUChainedStruct chain;
   1655     uint64_t maxDrawCount;
   1656 } WGPURenderPassMaxDrawCount WGPU_STRUCTURE_ATTRIBUTE;
   1657 
   1658 typedef struct WGPURenderPassTimestampWrites {
   1659     WGPUQuerySet querySet;
   1660     uint32_t beginningOfPassWriteIndex;
   1661     uint32_t endOfPassWriteIndex;
   1662 } WGPURenderPassTimestampWrites WGPU_STRUCTURE_ATTRIBUTE;
   1663 
   1664 typedef struct WGPURequestAdapterOptions {
   1665     WGPUChainedStruct const * nextInChain;
   1666     /**
   1667      * "Feature level" for the adapter request. If an adapter is returned, it must support the features and limits in the requested feature level.
   1668      *
   1669      * Implementations may ignore @ref WGPUFeatureLevel_Compatibility and provide @ref WGPUFeatureLevel_Core instead. @ref WGPUFeatureLevel_Core is the default in the JS API, but in C, this field is **required** (must not be undefined).
   1670      */
   1671     WGPUFeatureLevel featureLevel;
   1672     WGPUPowerPreference powerPreference;
   1673     /**
   1674      * If true, requires the adapter to be a "fallback" adapter as defined by the JS spec.
   1675      * If this is not possible, the request returns null.
   1676      */
   1677     WGPUBool forceFallbackAdapter;
   1678     /**
   1679      * If set, requires the adapter to have a particular backend type.
   1680      * If this is not possible, the request returns null.
   1681      */
   1682     WGPUBackendType backendType;
   1683     /**
   1684      * If set, requires the adapter to be able to output to a particular surface.
   1685      * If this is not possible, the request returns null.
   1686      */
   1687     WGPU_NULLABLE WGPUSurface compatibleSurface;
   1688 } WGPURequestAdapterOptions WGPU_STRUCTURE_ATTRIBUTE;
   1689 
   1690 typedef struct WGPUSamplerBindingLayout {
   1691     WGPUChainedStruct const * nextInChain;
   1692     WGPUSamplerBindingType type;
   1693 } WGPUSamplerBindingLayout WGPU_STRUCTURE_ATTRIBUTE;
   1694 
   1695 typedef struct WGPUSamplerDescriptor {
   1696     WGPUChainedStruct const * nextInChain;
   1697     /**
   1698      * This is a \ref NonNullInputString.
   1699      */
   1700     WGPUStringView label;
   1701     WGPUAddressMode addressModeU;
   1702     WGPUAddressMode addressModeV;
   1703     WGPUAddressMode addressModeW;
   1704     WGPUFilterMode magFilter;
   1705     WGPUFilterMode minFilter;
   1706     WGPUMipmapFilterMode mipmapFilter;
   1707     float lodMinClamp;
   1708     float lodMaxClamp;
   1709     WGPUCompareFunction compare;
   1710     uint16_t maxAnisotropy;
   1711 } WGPUSamplerDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1712 
   1713 typedef struct WGPUShaderModuleDescriptor {
   1714     WGPUChainedStruct const * nextInChain;
   1715     /**
   1716      * This is a \ref NonNullInputString.
   1717      */
   1718     WGPUStringView label;
   1719 } WGPUShaderModuleDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1720 
   1721 typedef struct WGPUShaderSourceSPIRV {
   1722     WGPUChainedStruct chain;
   1723     uint32_t codeSize;
   1724     uint32_t const * code;
   1725 } WGPUShaderSourceSPIRV WGPU_STRUCTURE_ATTRIBUTE;
   1726 
   1727 typedef struct WGPUShaderSourceWGSL {
   1728     WGPUChainedStruct chain;
   1729     /**
   1730      * This is a \ref NonNullInputString.
   1731      */
   1732     WGPUStringView code;
   1733 } WGPUShaderSourceWGSL WGPU_STRUCTURE_ATTRIBUTE;
   1734 
   1735 typedef struct WGPUStencilFaceState {
   1736     WGPUCompareFunction compare;
   1737     WGPUStencilOperation failOp;
   1738     WGPUStencilOperation depthFailOp;
   1739     WGPUStencilOperation passOp;
   1740 } WGPUStencilFaceState WGPU_STRUCTURE_ATTRIBUTE;
   1741 
   1742 typedef struct WGPUStorageTextureBindingLayout {
   1743     WGPUChainedStruct const * nextInChain;
   1744     WGPUStorageTextureAccess access;
   1745     WGPUTextureFormat format;
   1746     WGPUTextureViewDimension viewDimension;
   1747 } WGPUStorageTextureBindingLayout WGPU_STRUCTURE_ATTRIBUTE;
   1748 
   1749 typedef struct WGPUSupportedFeatures {
   1750     size_t featureCount;
   1751     WGPUFeatureName const * features;
   1752 } WGPUSupportedFeatures WGPU_STRUCTURE_ATTRIBUTE;
   1753 
   1754 typedef struct WGPUSupportedWGSLLanguageFeatures {
   1755     size_t featureCount;
   1756     WGPUWGSLLanguageFeatureName const * features;
   1757 } WGPUSupportedWGSLLanguageFeatures WGPU_STRUCTURE_ATTRIBUTE;
   1758 
   1759 /**
   1760  * Filled by `::wgpuSurfaceGetCapabilities` with what's supported for `::wgpuSurfaceConfigure` for a pair of @ref WGPUSurface and @ref WGPUAdapter.
   1761  */
   1762 typedef struct WGPUSurfaceCapabilities {
   1763     WGPUChainedStructOut * nextInChain;
   1764     /**
   1765      * The bit set of supported @ref WGPUTextureUsage bits.
   1766      * Guaranteed to contain @ref WGPUTextureUsage_RenderAttachment.
   1767      */
   1768     WGPUTextureUsage usages;
   1769     /**
   1770      * A list of supported @ref WGPUTextureFormat values, in order of preference.
   1771      */
   1772     size_t formatCount;
   1773     WGPUTextureFormat const * formats;
   1774     /**
   1775      * A list of supported @ref WGPUPresentMode values.
   1776      * Guaranteed to contain @ref WGPUPresentMode_Fifo.
   1777      */
   1778     size_t presentModeCount;
   1779     WGPUPresentMode const * presentModes;
   1780     /**
   1781      * A list of supported @ref WGPUCompositeAlphaMode values.
   1782      * @ref WGPUCompositeAlphaMode_Auto will be an alias for the first element and will never be present in this array.
   1783      */
   1784     size_t alphaModeCount;
   1785     WGPUCompositeAlphaMode const * alphaModes;
   1786 } WGPUSurfaceCapabilities WGPU_STRUCTURE_ATTRIBUTE;
   1787 
   1788 /**
   1789  * Options to `::wgpuSurfaceConfigure` for defining how a @ref WGPUSurface will be rendered to and presented to the user.
   1790  * See @ref Surface-Configuration for more details.
   1791  */
   1792 typedef struct WGPUSurfaceConfiguration {
   1793     WGPUChainedStruct const * nextInChain;
   1794     /**
   1795      * The @ref WGPUDevice to use to render to surface's textures.
   1796      */
   1797     WGPUDevice device;
   1798     /**
   1799      * The @ref WGPUTextureFormat of the surface's textures.
   1800      */
   1801     WGPUTextureFormat format;
   1802     /**
   1803      * The @ref WGPUTextureUsage of the surface's textures.
   1804      */
   1805     WGPUTextureUsage usage;
   1806     /**
   1807      * The width of the surface's textures.
   1808      */
   1809     uint32_t width;
   1810     /**
   1811      * The height of the surface's textures.
   1812      */
   1813     uint32_t height;
   1814     /**
   1815      * The additional @ref WGPUTextureFormat for @ref WGPUTextureView format reinterpretation of the surface's textures.
   1816      */
   1817     size_t viewFormatCount;
   1818     WGPUTextureFormat const * viewFormats;
   1819     /**
   1820      * How the surface's frames will be composited on the screen.
   1821      */
   1822     WGPUCompositeAlphaMode alphaMode;
   1823     /**
   1824      * When and in which order the surface's frames will be shown on the screen. Defaults to @ref WGPUPresentMode_Fifo.
   1825      */
   1826     WGPUPresentMode presentMode;
   1827 } WGPUSurfaceConfiguration WGPU_STRUCTURE_ATTRIBUTE;
   1828 
   1829 /**
   1830  * The root descriptor for the creation of an @ref WGPUSurface with `::wgpuInstanceCreateSurface`.
   1831  * It isn't sufficient by itself and must have one of the `WGPUSurfaceSource*` in its chain.
   1832  * See @ref Surface-Creation for more details.
   1833  */
   1834 typedef struct WGPUSurfaceDescriptor {
   1835     WGPUChainedStruct const * nextInChain;
   1836     /**
   1837      * Label used to refer to the object.
   1838      *
   1839      * This is a \ref NonNullInputString.
   1840      */
   1841     WGPUStringView label;
   1842 } WGPUSurfaceDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1843 
   1844 /**
   1845  * Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an Android [`ANativeWindow`](https://developer.android.com/ndk/reference/group/a-native-window).
   1846  */
   1847 typedef struct WGPUSurfaceSourceAndroidNativeWindow {
   1848     WGPUChainedStruct chain;
   1849     /**
   1850      * The pointer to the [`ANativeWindow`](https://developer.android.com/ndk/reference/group/a-native-window) that will be wrapped by the @ref WGPUSurface.
   1851      */
   1852     void * window;
   1853 } WGPUSurfaceSourceAndroidNativeWindow WGPU_STRUCTURE_ATTRIBUTE;
   1854 
   1855 /**
   1856  * Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping a [`CAMetalLayer`](https://developer.apple.com/documentation/quartzcore/cametallayer?language=objc).
   1857  */
   1858 typedef struct WGPUSurfaceSourceMetalLayer {
   1859     WGPUChainedStruct chain;
   1860     /**
   1861      * The pointer to the [`CAMetalLayer`](https://developer.apple.com/documentation/quartzcore/cametallayer?language=objc) that will be wrapped by the @ref WGPUSurface.
   1862      */
   1863     void * layer;
   1864 } WGPUSurfaceSourceMetalLayer WGPU_STRUCTURE_ATTRIBUTE;
   1865 
   1866 /**
   1867  * Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping a [Wayland](https://wayland.freedesktop.org/) [`wl_surface`](https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_surface).
   1868  */
   1869 typedef struct WGPUSurfaceSourceWaylandSurface {
   1870     WGPUChainedStruct chain;
   1871     /**
   1872      * A [`wl_display`](https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_display) for this Wayland instance.
   1873      */
   1874     void * display;
   1875     /**
   1876      * A [`wl_surface`](https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_surface) that will be wrapped by the @ref WGPUSurface
   1877      */
   1878     void * surface;
   1879 } WGPUSurfaceSourceWaylandSurface WGPU_STRUCTURE_ATTRIBUTE;
   1880 
   1881 /**
   1882  * Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping a Windows [`HWND`](https://learn.microsoft.com/en-us/windows/apps/develop/ui-input/retrieve-hwnd).
   1883  */
   1884 typedef struct WGPUSurfaceSourceWindowsHWND {
   1885     WGPUChainedStruct chain;
   1886     /**
   1887      * The [`HINSTANCE`](https://learn.microsoft.com/en-us/windows/win32/learnwin32/winmain--the-application-entry-point) for this application.
   1888      * Most commonly `GetModuleHandle(nullptr)`.
   1889      */
   1890     void * hinstance;
   1891     /**
   1892      * The [`HWND`](https://learn.microsoft.com/en-us/windows/apps/develop/ui-input/retrieve-hwnd) that will be wrapped by the @ref WGPUSurface.
   1893      */
   1894     void * hwnd;
   1895 } WGPUSurfaceSourceWindowsHWND WGPU_STRUCTURE_ATTRIBUTE;
   1896 
   1897 /**
   1898  * Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an [XCB](https://xcb.freedesktop.org/) `xcb_window_t`.
   1899  */
   1900 typedef struct WGPUSurfaceSourceXCBWindow {
   1901     WGPUChainedStruct chain;
   1902     /**
   1903      * The `xcb_connection_t` for the connection to the X server.
   1904      */
   1905     void * connection;
   1906     /**
   1907      * The `xcb_window_t` for the window that will be wrapped by the @ref WGPUSurface.
   1908      */
   1909     uint32_t window;
   1910 } WGPUSurfaceSourceXCBWindow WGPU_STRUCTURE_ATTRIBUTE;
   1911 
   1912 /**
   1913  * Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an [Xlib](https://www.x.org/releases/current/doc/libX11/libX11/libX11.html) `Window`.
   1914  */
   1915 typedef struct WGPUSurfaceSourceXlibWindow {
   1916     WGPUChainedStruct chain;
   1917     /**
   1918      * A pointer to the [`Display`](https://www.x.org/releases/current/doc/libX11/libX11/libX11.html#Opening_the_Display) connected to the X server.
   1919      */
   1920     void * display;
   1921     /**
   1922      * The [`Window`](https://www.x.org/releases/current/doc/libX11/libX11/libX11.html#Creating_Windows) that will be wrapped by the @ref WGPUSurface.
   1923      */
   1924     uint64_t window;
   1925 } WGPUSurfaceSourceXlibWindow WGPU_STRUCTURE_ATTRIBUTE;
   1926 
   1927 /**
   1928  * Queried each frame from a @ref WGPUSurface to get a @ref WGPUTexture to render to along with some metadata.
   1929  * See @ref Surface-Presenting for more details.
   1930  */
   1931 typedef struct WGPUSurfaceTexture {
   1932     WGPUChainedStructOut * nextInChain;
   1933     /**
   1934      * The @ref WGPUTexture representing the frame that will be shown on the surface.
   1935      * It is @ref ReturnedWithOwnership from @ref wgpuSurfaceGetCurrentTexture.
   1936      */
   1937     WGPUTexture texture;
   1938     /**
   1939      * Whether the call to `::wgpuSurfaceGetCurrentTexture` succeeded and a hint as to why it might not have.
   1940      */
   1941     WGPUSurfaceGetCurrentTextureStatus status;
   1942 } WGPUSurfaceTexture WGPU_STRUCTURE_ATTRIBUTE;
   1943 
   1944 typedef struct WGPUTexelCopyBufferLayout {
   1945     uint64_t offset;
   1946     uint32_t bytesPerRow;
   1947     uint32_t rowsPerImage;
   1948 } WGPUTexelCopyBufferLayout WGPU_STRUCTURE_ATTRIBUTE;
   1949 
   1950 typedef struct WGPUTextureBindingLayout {
   1951     WGPUChainedStruct const * nextInChain;
   1952     WGPUTextureSampleType sampleType;
   1953     WGPUTextureViewDimension viewDimension;
   1954     WGPUBool multisampled;
   1955 } WGPUTextureBindingLayout WGPU_STRUCTURE_ATTRIBUTE;
   1956 
   1957 typedef struct WGPUTextureViewDescriptor {
   1958     WGPUChainedStruct const * nextInChain;
   1959     /**
   1960      * This is a \ref NonNullInputString.
   1961      */
   1962     WGPUStringView label;
   1963     WGPUTextureFormat format;
   1964     WGPUTextureViewDimension dimension;
   1965     uint32_t baseMipLevel;
   1966     uint32_t mipLevelCount;
   1967     uint32_t baseArrayLayer;
   1968     uint32_t arrayLayerCount;
   1969     WGPUTextureAspect aspect;
   1970     WGPUTextureUsage usage;
   1971 } WGPUTextureViewDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1972 
   1973 typedef struct WGPUVertexAttribute {
   1974     WGPUVertexFormat format;
   1975     uint64_t offset;
   1976     uint32_t shaderLocation;
   1977 } WGPUVertexAttribute WGPU_STRUCTURE_ATTRIBUTE;
   1978 
   1979 typedef struct WGPUBindGroupDescriptor {
   1980     WGPUChainedStruct const * nextInChain;
   1981     /**
   1982      * This is a \ref NonNullInputString.
   1983      */
   1984     WGPUStringView label;
   1985     WGPUBindGroupLayout layout;
   1986     size_t entryCount;
   1987     WGPUBindGroupEntry const * entries;
   1988 } WGPUBindGroupDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   1989 
   1990 typedef struct WGPUBindGroupLayoutEntry {
   1991     WGPUChainedStruct const * nextInChain;
   1992     uint32_t binding;
   1993     WGPUShaderStage visibility;
   1994     WGPUBufferBindingLayout buffer;
   1995     WGPUSamplerBindingLayout sampler;
   1996     WGPUTextureBindingLayout texture;
   1997     WGPUStorageTextureBindingLayout storageTexture;
   1998 } WGPUBindGroupLayoutEntry WGPU_STRUCTURE_ATTRIBUTE;
   1999 
   2000 typedef struct WGPUBlendState {
   2001     WGPUBlendComponent color;
   2002     WGPUBlendComponent alpha;
   2003 } WGPUBlendState WGPU_STRUCTURE_ATTRIBUTE;
   2004 
   2005 typedef struct WGPUCompilationInfo {
   2006     WGPUChainedStruct const * nextInChain;
   2007     size_t messageCount;
   2008     WGPUCompilationMessage const * messages;
   2009 } WGPUCompilationInfo WGPU_STRUCTURE_ATTRIBUTE;
   2010 
   2011 typedef struct WGPUComputePassDescriptor {
   2012     WGPUChainedStruct const * nextInChain;
   2013     /**
   2014      * This is a \ref NonNullInputString.
   2015      */
   2016     WGPUStringView label;
   2017     WGPU_NULLABLE WGPUComputePassTimestampWrites const * timestampWrites;
   2018 } WGPUComputePassDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2019 
   2020 typedef struct WGPUDepthStencilState {
   2021     WGPUChainedStruct const * nextInChain;
   2022     WGPUTextureFormat format;
   2023     WGPUOptionalBool depthWriteEnabled;
   2024     WGPUCompareFunction depthCompare;
   2025     WGPUStencilFaceState stencilFront;
   2026     WGPUStencilFaceState stencilBack;
   2027     uint32_t stencilReadMask;
   2028     uint32_t stencilWriteMask;
   2029     int32_t depthBias;
   2030     float depthBiasSlopeScale;
   2031     float depthBiasClamp;
   2032 } WGPUDepthStencilState WGPU_STRUCTURE_ATTRIBUTE;
   2033 
   2034 typedef struct WGPUDeviceDescriptor {
   2035     WGPUChainedStruct const * nextInChain;
   2036     /**
   2037      * This is a \ref NonNullInputString.
   2038      */
   2039     WGPUStringView label;
   2040     size_t requiredFeatureCount;
   2041     WGPUFeatureName const * requiredFeatures;
   2042     WGPU_NULLABLE WGPULimits const * requiredLimits;
   2043     WGPUQueueDescriptor defaultQueue;
   2044     WGPUDeviceLostCallbackInfo deviceLostCallbackInfo;
   2045     WGPUUncapturedErrorCallbackInfo uncapturedErrorCallbackInfo;
   2046 } WGPUDeviceDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2047 
   2048 /**
   2049  * Struct holding a future to wait on, and a `completed` boolean flag.
   2050  */
   2051 typedef struct WGPUFutureWaitInfo {
   2052     /**
   2053      * The future to wait on.
   2054      */
   2055     WGPUFuture future;
   2056     /**
   2057      * Whether or not the future completed.
   2058      */
   2059     WGPUBool completed;
   2060 } WGPUFutureWaitInfo WGPU_STRUCTURE_ATTRIBUTE;
   2061 
   2062 typedef struct WGPUInstanceDescriptor {
   2063     WGPUChainedStruct const * nextInChain;
   2064     /**
   2065      * Instance features to enable
   2066      */
   2067     WGPUInstanceCapabilities features;
   2068 } WGPUInstanceDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2069 
   2070 typedef struct WGPUProgrammableStageDescriptor {
   2071     WGPUChainedStruct const * nextInChain;
   2072     WGPUShaderModule module;
   2073     /**
   2074      * This is a \ref NullableInputString.
   2075      */
   2076     WGPUStringView entryPoint;
   2077     size_t constantCount;
   2078     WGPUConstantEntry const * constants;
   2079 } WGPUProgrammableStageDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2080 
   2081 typedef struct WGPURenderPassColorAttachment {
   2082     WGPUChainedStruct const * nextInChain;
   2083     WGPU_NULLABLE WGPUTextureView view;
   2084     uint32_t depthSlice;
   2085     WGPU_NULLABLE WGPUTextureView resolveTarget;
   2086     WGPULoadOp loadOp;
   2087     WGPUStoreOp storeOp;
   2088     WGPUColor clearValue;
   2089 } WGPURenderPassColorAttachment WGPU_STRUCTURE_ATTRIBUTE;
   2090 
   2091 typedef struct WGPUTexelCopyBufferInfo {
   2092     WGPUTexelCopyBufferLayout layout;
   2093     WGPUBuffer buffer;
   2094 } WGPUTexelCopyBufferInfo WGPU_STRUCTURE_ATTRIBUTE;
   2095 
   2096 typedef struct WGPUTexelCopyTextureInfo {
   2097     WGPUTexture texture;
   2098     uint32_t mipLevel;
   2099     WGPUOrigin3D origin;
   2100     WGPUTextureAspect aspect;
   2101 } WGPUTexelCopyTextureInfo WGPU_STRUCTURE_ATTRIBUTE;
   2102 
   2103 typedef struct WGPUTextureDescriptor {
   2104     WGPUChainedStruct const * nextInChain;
   2105     /**
   2106      * This is a \ref NonNullInputString.
   2107      */
   2108     WGPUStringView label;
   2109     WGPUTextureUsage usage;
   2110     WGPUTextureDimension dimension;
   2111     WGPUExtent3D size;
   2112     WGPUTextureFormat format;
   2113     uint32_t mipLevelCount;
   2114     uint32_t sampleCount;
   2115     size_t viewFormatCount;
   2116     WGPUTextureFormat const * viewFormats;
   2117 } WGPUTextureDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2118 
   2119 typedef struct WGPUVertexBufferLayout {
   2120     /**
   2121      * The step mode for the vertex buffer. If @ref WGPUVertexStepMode_VertexBufferNotUsed,
   2122      * indicates a "hole" in the parent @ref WGPUVertexState `buffers` array:
   2123      * the pipeline does not use a vertex buffer at this `location`.
   2124      */
   2125     WGPUVertexStepMode stepMode;
   2126     uint64_t arrayStride;
   2127     size_t attributeCount;
   2128     WGPUVertexAttribute const * attributes;
   2129 } WGPUVertexBufferLayout WGPU_STRUCTURE_ATTRIBUTE;
   2130 
   2131 typedef struct WGPUBindGroupLayoutDescriptor {
   2132     WGPUChainedStruct const * nextInChain;
   2133     /**
   2134      * This is a \ref NonNullInputString.
   2135      */
   2136     WGPUStringView label;
   2137     size_t entryCount;
   2138     WGPUBindGroupLayoutEntry const * entries;
   2139 } WGPUBindGroupLayoutDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2140 
   2141 typedef struct WGPUColorTargetState {
   2142     WGPUChainedStruct const * nextInChain;
   2143     /**
   2144      * The texture format of the target. If @ref WGPUTextureFormat_Undefined,
   2145      * indicates a "hole" in the parent @ref WGPUFragmentState `targets` array:
   2146      * the pipeline does not output a value at this `location`.
   2147      */
   2148     WGPUTextureFormat format;
   2149     WGPU_NULLABLE WGPUBlendState const * blend;
   2150     WGPUColorWriteMask writeMask;
   2151 } WGPUColorTargetState WGPU_STRUCTURE_ATTRIBUTE;
   2152 
   2153 typedef struct WGPUComputePipelineDescriptor {
   2154     WGPUChainedStruct const * nextInChain;
   2155     /**
   2156      * This is a \ref NonNullInputString.
   2157      */
   2158     WGPUStringView label;
   2159     WGPU_NULLABLE WGPUPipelineLayout layout;
   2160     WGPUProgrammableStageDescriptor compute;
   2161 } WGPUComputePipelineDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2162 
   2163 typedef struct WGPURenderPassDescriptor {
   2164     WGPUChainedStruct const * nextInChain;
   2165     /**
   2166      * This is a \ref NonNullInputString.
   2167      */
   2168     WGPUStringView label;
   2169     size_t colorAttachmentCount;
   2170     WGPURenderPassColorAttachment const * colorAttachments;
   2171     WGPU_NULLABLE WGPURenderPassDepthStencilAttachment const * depthStencilAttachment;
   2172     WGPU_NULLABLE WGPUQuerySet occlusionQuerySet;
   2173     WGPU_NULLABLE WGPURenderPassTimestampWrites const * timestampWrites;
   2174 } WGPURenderPassDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2175 
   2176 typedef struct WGPUVertexState {
   2177     WGPUChainedStruct const * nextInChain;
   2178     WGPUShaderModule module;
   2179     /**
   2180      * This is a \ref NullableInputString.
   2181      */
   2182     WGPUStringView entryPoint;
   2183     size_t constantCount;
   2184     WGPUConstantEntry const * constants;
   2185     size_t bufferCount;
   2186     WGPUVertexBufferLayout const * buffers;
   2187 } WGPUVertexState WGPU_STRUCTURE_ATTRIBUTE;
   2188 
   2189 typedef struct WGPUFragmentState {
   2190     WGPUChainedStruct const * nextInChain;
   2191     WGPUShaderModule module;
   2192     /**
   2193      * This is a \ref NullableInputString.
   2194      */
   2195     WGPUStringView entryPoint;
   2196     size_t constantCount;
   2197     WGPUConstantEntry const * constants;
   2198     size_t targetCount;
   2199     WGPUColorTargetState const * targets;
   2200 } WGPUFragmentState WGPU_STRUCTURE_ATTRIBUTE;
   2201 
   2202 typedef struct WGPURenderPipelineDescriptor {
   2203     WGPUChainedStruct const * nextInChain;
   2204     /**
   2205      * This is a \ref NonNullInputString.
   2206      */
   2207     WGPUStringView label;
   2208     WGPU_NULLABLE WGPUPipelineLayout layout;
   2209     WGPUVertexState vertex;
   2210     WGPUPrimitiveState primitive;
   2211     WGPU_NULLABLE WGPUDepthStencilState const * depthStencil;
   2212     WGPUMultisampleState multisample;
   2213     WGPU_NULLABLE WGPUFragmentState const * fragment;
   2214 } WGPURenderPipelineDescriptor WGPU_STRUCTURE_ATTRIBUTE;
   2215 
   2216 /** @} */
   2217 
   2218 #ifdef __cplusplus
   2219 extern "C" {
   2220 #endif
   2221 
   2222 #if !defined(WGPU_SKIP_PROCS)
   2223 
   2224 /**
   2225  * Proc pointer type for @ref wgpuCreateInstance:
   2226  * > @copydoc wgpuCreateInstance
   2227  */
   2228 typedef WGPUInstance (*WGPUProcCreateInstance)(WGPU_NULLABLE WGPUInstanceDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2229 /**
   2230  * Proc pointer type for @ref wgpuGetInstanceCapabilities:
   2231  * > @copydoc wgpuGetInstanceCapabilities
   2232  */
   2233 typedef WGPUStatus (*WGPUProcGetInstanceCapabilities)(WGPUInstanceCapabilities * capabilities) WGPU_FUNCTION_ATTRIBUTE;
   2234 /**
   2235  * Proc pointer type for @ref wgpuGetProcAddress:
   2236  * > @copydoc wgpuGetProcAddress
   2237  */
   2238 typedef WGPUProc (*WGPUProcGetProcAddress)(WGPUStringView procName) WGPU_FUNCTION_ATTRIBUTE;
   2239 
   2240 // Procs of Adapter
   2241 /**
   2242  * Proc pointer type for @ref wgpuAdapterGetFeatures:
   2243  * > @copydoc wgpuAdapterGetFeatures
   2244  */
   2245 typedef void (*WGPUProcAdapterGetFeatures)(WGPUAdapter adapter, WGPUSupportedFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
   2246 /**
   2247  * Proc pointer type for @ref wgpuAdapterGetInfo:
   2248  * > @copydoc wgpuAdapterGetInfo
   2249  */
   2250 typedef WGPUStatus (*WGPUProcAdapterGetInfo)(WGPUAdapter adapter, WGPUAdapterInfo * info) WGPU_FUNCTION_ATTRIBUTE;
   2251 /**
   2252  * Proc pointer type for @ref wgpuAdapterGetLimits:
   2253  * > @copydoc wgpuAdapterGetLimits
   2254  */
   2255 typedef WGPUStatus (*WGPUProcAdapterGetLimits)(WGPUAdapter adapter, WGPULimits * limits) WGPU_FUNCTION_ATTRIBUTE;
   2256 /**
   2257  * Proc pointer type for @ref wgpuAdapterHasFeature:
   2258  * > @copydoc wgpuAdapterHasFeature
   2259  */
   2260 typedef WGPUBool (*WGPUProcAdapterHasFeature)(WGPUAdapter adapter, WGPUFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
   2261 /**
   2262  * Proc pointer type for @ref wgpuAdapterRequestDevice:
   2263  * > @copydoc wgpuAdapterRequestDevice
   2264  */
   2265 typedef WGPUFuture (*WGPUProcAdapterRequestDevice)(WGPUAdapter adapter, WGPU_NULLABLE WGPUDeviceDescriptor const * descriptor, WGPURequestDeviceCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   2266 /**
   2267  * Proc pointer type for @ref wgpuAdapterAddRef.
   2268  * > @copydoc wgpuAdapterAddRef
   2269  */
   2270 typedef void (*WGPUProcAdapterAddRef)(WGPUAdapter adapter) WGPU_FUNCTION_ATTRIBUTE;
   2271 /**
   2272  * Proc pointer type for @ref wgpuAdapterRelease.
   2273  * > @copydoc wgpuAdapterRelease
   2274  */
   2275 typedef void (*WGPUProcAdapterRelease)(WGPUAdapter adapter) WGPU_FUNCTION_ATTRIBUTE;
   2276 
   2277 // Procs of AdapterInfo
   2278 /**
   2279  * Proc pointer type for @ref wgpuAdapterInfoFreeMembers:
   2280  * > @copydoc wgpuAdapterInfoFreeMembers
   2281  */
   2282 typedef void (*WGPUProcAdapterInfoFreeMembers)(WGPUAdapterInfo adapterInfo) WGPU_FUNCTION_ATTRIBUTE;
   2283 
   2284 // Procs of BindGroup
   2285 /**
   2286  * Proc pointer type for @ref wgpuBindGroupSetLabel:
   2287  * > @copydoc wgpuBindGroupSetLabel
   2288  */
   2289 typedef void (*WGPUProcBindGroupSetLabel)(WGPUBindGroup bindGroup, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2290 /**
   2291  * Proc pointer type for @ref wgpuBindGroupAddRef.
   2292  * > @copydoc wgpuBindGroupAddRef
   2293  */
   2294 typedef void (*WGPUProcBindGroupAddRef)(WGPUBindGroup bindGroup) WGPU_FUNCTION_ATTRIBUTE;
   2295 /**
   2296  * Proc pointer type for @ref wgpuBindGroupRelease.
   2297  * > @copydoc wgpuBindGroupRelease
   2298  */
   2299 typedef void (*WGPUProcBindGroupRelease)(WGPUBindGroup bindGroup) WGPU_FUNCTION_ATTRIBUTE;
   2300 
   2301 // Procs of BindGroupLayout
   2302 /**
   2303  * Proc pointer type for @ref wgpuBindGroupLayoutSetLabel:
   2304  * > @copydoc wgpuBindGroupLayoutSetLabel
   2305  */
   2306 typedef void (*WGPUProcBindGroupLayoutSetLabel)(WGPUBindGroupLayout bindGroupLayout, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2307 /**
   2308  * Proc pointer type for @ref wgpuBindGroupLayoutAddRef.
   2309  * > @copydoc wgpuBindGroupLayoutAddRef
   2310  */
   2311 typedef void (*WGPUProcBindGroupLayoutAddRef)(WGPUBindGroupLayout bindGroupLayout) WGPU_FUNCTION_ATTRIBUTE;
   2312 /**
   2313  * Proc pointer type for @ref wgpuBindGroupLayoutRelease.
   2314  * > @copydoc wgpuBindGroupLayoutRelease
   2315  */
   2316 typedef void (*WGPUProcBindGroupLayoutRelease)(WGPUBindGroupLayout bindGroupLayout) WGPU_FUNCTION_ATTRIBUTE;
   2317 
   2318 // Procs of Buffer
   2319 /**
   2320  * Proc pointer type for @ref wgpuBufferDestroy:
   2321  * > @copydoc wgpuBufferDestroy
   2322  */
   2323 typedef void (*WGPUProcBufferDestroy)(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   2324 /**
   2325  * Proc pointer type for @ref wgpuBufferGetConstMappedRange:
   2326  * > @copydoc wgpuBufferGetConstMappedRange
   2327  */
   2328 typedef void const * (*WGPUProcBufferGetConstMappedRange)(WGPUBuffer buffer, size_t offset, size_t size) WGPU_FUNCTION_ATTRIBUTE;
   2329 /**
   2330  * Proc pointer type for @ref wgpuBufferGetMapState:
   2331  * > @copydoc wgpuBufferGetMapState
   2332  */
   2333 typedef WGPUBufferMapState (*WGPUProcBufferGetMapState)(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   2334 /**
   2335  * Proc pointer type for @ref wgpuBufferGetMappedRange:
   2336  * > @copydoc wgpuBufferGetMappedRange
   2337  */
   2338 typedef void * (*WGPUProcBufferGetMappedRange)(WGPUBuffer buffer, size_t offset, size_t size) WGPU_FUNCTION_ATTRIBUTE;
   2339 /**
   2340  * Proc pointer type for @ref wgpuBufferGetSize:
   2341  * > @copydoc wgpuBufferGetSize
   2342  */
   2343 typedef uint64_t (*WGPUProcBufferGetSize)(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   2344 /**
   2345  * Proc pointer type for @ref wgpuBufferGetUsage:
   2346  * > @copydoc wgpuBufferGetUsage
   2347  */
   2348 typedef WGPUBufferUsage (*WGPUProcBufferGetUsage)(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   2349 /**
   2350  * Proc pointer type for @ref wgpuBufferMapAsync:
   2351  * > @copydoc wgpuBufferMapAsync
   2352  */
   2353 typedef WGPUFuture (*WGPUProcBufferMapAsync)(WGPUBuffer buffer, WGPUMapMode mode, size_t offset, size_t size, WGPUBufferMapCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   2354 /**
   2355  * Proc pointer type for @ref wgpuBufferSetLabel:
   2356  * > @copydoc wgpuBufferSetLabel
   2357  */
   2358 typedef void (*WGPUProcBufferSetLabel)(WGPUBuffer buffer, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2359 /**
   2360  * Proc pointer type for @ref wgpuBufferUnmap:
   2361  * > @copydoc wgpuBufferUnmap
   2362  */
   2363 typedef void (*WGPUProcBufferUnmap)(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   2364 /**
   2365  * Proc pointer type for @ref wgpuBufferAddRef.
   2366  * > @copydoc wgpuBufferAddRef
   2367  */
   2368 typedef void (*WGPUProcBufferAddRef)(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   2369 /**
   2370  * Proc pointer type for @ref wgpuBufferRelease.
   2371  * > @copydoc wgpuBufferRelease
   2372  */
   2373 typedef void (*WGPUProcBufferRelease)(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   2374 
   2375 // Procs of CommandBuffer
   2376 /**
   2377  * Proc pointer type for @ref wgpuCommandBufferSetLabel:
   2378  * > @copydoc wgpuCommandBufferSetLabel
   2379  */
   2380 typedef void (*WGPUProcCommandBufferSetLabel)(WGPUCommandBuffer commandBuffer, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2381 /**
   2382  * Proc pointer type for @ref wgpuCommandBufferAddRef.
   2383  * > @copydoc wgpuCommandBufferAddRef
   2384  */
   2385 typedef void (*WGPUProcCommandBufferAddRef)(WGPUCommandBuffer commandBuffer) WGPU_FUNCTION_ATTRIBUTE;
   2386 /**
   2387  * Proc pointer type for @ref wgpuCommandBufferRelease.
   2388  * > @copydoc wgpuCommandBufferRelease
   2389  */
   2390 typedef void (*WGPUProcCommandBufferRelease)(WGPUCommandBuffer commandBuffer) WGPU_FUNCTION_ATTRIBUTE;
   2391 
   2392 // Procs of CommandEncoder
   2393 /**
   2394  * Proc pointer type for @ref wgpuCommandEncoderBeginComputePass:
   2395  * > @copydoc wgpuCommandEncoderBeginComputePass
   2396  */
   2397 typedef WGPUComputePassEncoder (*WGPUProcCommandEncoderBeginComputePass)(WGPUCommandEncoder commandEncoder, WGPU_NULLABLE WGPUComputePassDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2398 /**
   2399  * Proc pointer type for @ref wgpuCommandEncoderBeginRenderPass:
   2400  * > @copydoc wgpuCommandEncoderBeginRenderPass
   2401  */
   2402 typedef WGPURenderPassEncoder (*WGPUProcCommandEncoderBeginRenderPass)(WGPUCommandEncoder commandEncoder, WGPURenderPassDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2403 /**
   2404  * Proc pointer type for @ref wgpuCommandEncoderClearBuffer:
   2405  * > @copydoc wgpuCommandEncoderClearBuffer
   2406  */
   2407 typedef void (*WGPUProcCommandEncoderClearBuffer)(WGPUCommandEncoder commandEncoder, WGPUBuffer buffer, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   2408 /**
   2409  * Proc pointer type for @ref wgpuCommandEncoderCopyBufferToBuffer:
   2410  * > @copydoc wgpuCommandEncoderCopyBufferToBuffer
   2411  */
   2412 typedef void (*WGPUProcCommandEncoderCopyBufferToBuffer)(WGPUCommandEncoder commandEncoder, WGPUBuffer source, uint64_t sourceOffset, WGPUBuffer destination, uint64_t destinationOffset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   2413 /**
   2414  * Proc pointer type for @ref wgpuCommandEncoderCopyBufferToTexture:
   2415  * > @copydoc wgpuCommandEncoderCopyBufferToTexture
   2416  */
   2417 typedef void (*WGPUProcCommandEncoderCopyBufferToTexture)(WGPUCommandEncoder commandEncoder, WGPUTexelCopyBufferInfo const * source, WGPUTexelCopyTextureInfo const * destination, WGPUExtent3D const * copySize) WGPU_FUNCTION_ATTRIBUTE;
   2418 /**
   2419  * Proc pointer type for @ref wgpuCommandEncoderCopyTextureToBuffer:
   2420  * > @copydoc wgpuCommandEncoderCopyTextureToBuffer
   2421  */
   2422 typedef void (*WGPUProcCommandEncoderCopyTextureToBuffer)(WGPUCommandEncoder commandEncoder, WGPUTexelCopyTextureInfo const * source, WGPUTexelCopyBufferInfo const * destination, WGPUExtent3D const * copySize) WGPU_FUNCTION_ATTRIBUTE;
   2423 /**
   2424  * Proc pointer type for @ref wgpuCommandEncoderCopyTextureToTexture:
   2425  * > @copydoc wgpuCommandEncoderCopyTextureToTexture
   2426  */
   2427 typedef void (*WGPUProcCommandEncoderCopyTextureToTexture)(WGPUCommandEncoder commandEncoder, WGPUTexelCopyTextureInfo const * source, WGPUTexelCopyTextureInfo const * destination, WGPUExtent3D const * copySize) WGPU_FUNCTION_ATTRIBUTE;
   2428 /**
   2429  * Proc pointer type for @ref wgpuCommandEncoderFinish:
   2430  * > @copydoc wgpuCommandEncoderFinish
   2431  */
   2432 typedef WGPUCommandBuffer (*WGPUProcCommandEncoderFinish)(WGPUCommandEncoder commandEncoder, WGPU_NULLABLE WGPUCommandBufferDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2433 /**
   2434  * Proc pointer type for @ref wgpuCommandEncoderInsertDebugMarker:
   2435  * > @copydoc wgpuCommandEncoderInsertDebugMarker
   2436  */
   2437 typedef void (*WGPUProcCommandEncoderInsertDebugMarker)(WGPUCommandEncoder commandEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   2438 /**
   2439  * Proc pointer type for @ref wgpuCommandEncoderPopDebugGroup:
   2440  * > @copydoc wgpuCommandEncoderPopDebugGroup
   2441  */
   2442 typedef void (*WGPUProcCommandEncoderPopDebugGroup)(WGPUCommandEncoder commandEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2443 /**
   2444  * Proc pointer type for @ref wgpuCommandEncoderPushDebugGroup:
   2445  * > @copydoc wgpuCommandEncoderPushDebugGroup
   2446  */
   2447 typedef void (*WGPUProcCommandEncoderPushDebugGroup)(WGPUCommandEncoder commandEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   2448 /**
   2449  * Proc pointer type for @ref wgpuCommandEncoderResolveQuerySet:
   2450  * > @copydoc wgpuCommandEncoderResolveQuerySet
   2451  */
   2452 typedef void (*WGPUProcCommandEncoderResolveQuerySet)(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t firstQuery, uint32_t queryCount, WGPUBuffer destination, uint64_t destinationOffset) WGPU_FUNCTION_ATTRIBUTE;
   2453 /**
   2454  * Proc pointer type for @ref wgpuCommandEncoderSetLabel:
   2455  * > @copydoc wgpuCommandEncoderSetLabel
   2456  */
   2457 typedef void (*WGPUProcCommandEncoderSetLabel)(WGPUCommandEncoder commandEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2458 /**
   2459  * Proc pointer type for @ref wgpuCommandEncoderWriteTimestamp:
   2460  * > @copydoc wgpuCommandEncoderWriteTimestamp
   2461  */
   2462 typedef void (*WGPUProcCommandEncoderWriteTimestamp)(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t queryIndex) WGPU_FUNCTION_ATTRIBUTE;
   2463 /**
   2464  * Proc pointer type for @ref wgpuCommandEncoderAddRef.
   2465  * > @copydoc wgpuCommandEncoderAddRef
   2466  */
   2467 typedef void (*WGPUProcCommandEncoderAddRef)(WGPUCommandEncoder commandEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2468 /**
   2469  * Proc pointer type for @ref wgpuCommandEncoderRelease.
   2470  * > @copydoc wgpuCommandEncoderRelease
   2471  */
   2472 typedef void (*WGPUProcCommandEncoderRelease)(WGPUCommandEncoder commandEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2473 
   2474 // Procs of ComputePassEncoder
   2475 /**
   2476  * Proc pointer type for @ref wgpuComputePassEncoderDispatchWorkgroups:
   2477  * > @copydoc wgpuComputePassEncoderDispatchWorkgroups
   2478  */
   2479 typedef void (*WGPUProcComputePassEncoderDispatchWorkgroups)(WGPUComputePassEncoder computePassEncoder, uint32_t workgroupCountX, uint32_t workgroupCountY, uint32_t workgroupCountZ) WGPU_FUNCTION_ATTRIBUTE;
   2480 /**
   2481  * Proc pointer type for @ref wgpuComputePassEncoderDispatchWorkgroupsIndirect:
   2482  * > @copydoc wgpuComputePassEncoderDispatchWorkgroupsIndirect
   2483  */
   2484 typedef void (*WGPUProcComputePassEncoderDispatchWorkgroupsIndirect)(WGPUComputePassEncoder computePassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   2485 /**
   2486  * Proc pointer type for @ref wgpuComputePassEncoderEnd:
   2487  * > @copydoc wgpuComputePassEncoderEnd
   2488  */
   2489 typedef void (*WGPUProcComputePassEncoderEnd)(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2490 /**
   2491  * Proc pointer type for @ref wgpuComputePassEncoderInsertDebugMarker:
   2492  * > @copydoc wgpuComputePassEncoderInsertDebugMarker
   2493  */
   2494 typedef void (*WGPUProcComputePassEncoderInsertDebugMarker)(WGPUComputePassEncoder computePassEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   2495 /**
   2496  * Proc pointer type for @ref wgpuComputePassEncoderPopDebugGroup:
   2497  * > @copydoc wgpuComputePassEncoderPopDebugGroup
   2498  */
   2499 typedef void (*WGPUProcComputePassEncoderPopDebugGroup)(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2500 /**
   2501  * Proc pointer type for @ref wgpuComputePassEncoderPushDebugGroup:
   2502  * > @copydoc wgpuComputePassEncoderPushDebugGroup
   2503  */
   2504 typedef void (*WGPUProcComputePassEncoderPushDebugGroup)(WGPUComputePassEncoder computePassEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   2505 /**
   2506  * Proc pointer type for @ref wgpuComputePassEncoderSetBindGroup:
   2507  * > @copydoc wgpuComputePassEncoderSetBindGroup
   2508  */
   2509 typedef void (*WGPUProcComputePassEncoderSetBindGroup)(WGPUComputePassEncoder computePassEncoder, uint32_t groupIndex, WGPU_NULLABLE WGPUBindGroup group, size_t dynamicOffsetCount, uint32_t const * dynamicOffsets) WGPU_FUNCTION_ATTRIBUTE;
   2510 /**
   2511  * Proc pointer type for @ref wgpuComputePassEncoderSetLabel:
   2512  * > @copydoc wgpuComputePassEncoderSetLabel
   2513  */
   2514 typedef void (*WGPUProcComputePassEncoderSetLabel)(WGPUComputePassEncoder computePassEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2515 /**
   2516  * Proc pointer type for @ref wgpuComputePassEncoderSetPipeline:
   2517  * > @copydoc wgpuComputePassEncoderSetPipeline
   2518  */
   2519 typedef void (*WGPUProcComputePassEncoderSetPipeline)(WGPUComputePassEncoder computePassEncoder, WGPUComputePipeline pipeline) WGPU_FUNCTION_ATTRIBUTE;
   2520 /**
   2521  * Proc pointer type for @ref wgpuComputePassEncoderAddRef.
   2522  * > @copydoc wgpuComputePassEncoderAddRef
   2523  */
   2524 typedef void (*WGPUProcComputePassEncoderAddRef)(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2525 /**
   2526  * Proc pointer type for @ref wgpuComputePassEncoderRelease.
   2527  * > @copydoc wgpuComputePassEncoderRelease
   2528  */
   2529 typedef void (*WGPUProcComputePassEncoderRelease)(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2530 
   2531 // Procs of ComputePipeline
   2532 /**
   2533  * Proc pointer type for @ref wgpuComputePipelineGetBindGroupLayout:
   2534  * > @copydoc wgpuComputePipelineGetBindGroupLayout
   2535  */
   2536 typedef WGPUBindGroupLayout (*WGPUProcComputePipelineGetBindGroupLayout)(WGPUComputePipeline computePipeline, uint32_t groupIndex) WGPU_FUNCTION_ATTRIBUTE;
   2537 /**
   2538  * Proc pointer type for @ref wgpuComputePipelineSetLabel:
   2539  * > @copydoc wgpuComputePipelineSetLabel
   2540  */
   2541 typedef void (*WGPUProcComputePipelineSetLabel)(WGPUComputePipeline computePipeline, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2542 /**
   2543  * Proc pointer type for @ref wgpuComputePipelineAddRef.
   2544  * > @copydoc wgpuComputePipelineAddRef
   2545  */
   2546 typedef void (*WGPUProcComputePipelineAddRef)(WGPUComputePipeline computePipeline) WGPU_FUNCTION_ATTRIBUTE;
   2547 /**
   2548  * Proc pointer type for @ref wgpuComputePipelineRelease.
   2549  * > @copydoc wgpuComputePipelineRelease
   2550  */
   2551 typedef void (*WGPUProcComputePipelineRelease)(WGPUComputePipeline computePipeline) WGPU_FUNCTION_ATTRIBUTE;
   2552 
   2553 // Procs of Device
   2554 /**
   2555  * Proc pointer type for @ref wgpuDeviceCreateBindGroup:
   2556  * > @copydoc wgpuDeviceCreateBindGroup
   2557  */
   2558 typedef WGPUBindGroup (*WGPUProcDeviceCreateBindGroup)(WGPUDevice device, WGPUBindGroupDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2559 /**
   2560  * Proc pointer type for @ref wgpuDeviceCreateBindGroupLayout:
   2561  * > @copydoc wgpuDeviceCreateBindGroupLayout
   2562  */
   2563 typedef WGPUBindGroupLayout (*WGPUProcDeviceCreateBindGroupLayout)(WGPUDevice device, WGPUBindGroupLayoutDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2564 /**
   2565  * Proc pointer type for @ref wgpuDeviceCreateBuffer:
   2566  * > @copydoc wgpuDeviceCreateBuffer
   2567  */
   2568 typedef WGPUBuffer (*WGPUProcDeviceCreateBuffer)(WGPUDevice device, WGPUBufferDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2569 /**
   2570  * Proc pointer type for @ref wgpuDeviceCreateCommandEncoder:
   2571  * > @copydoc wgpuDeviceCreateCommandEncoder
   2572  */
   2573 typedef WGPUCommandEncoder (*WGPUProcDeviceCreateCommandEncoder)(WGPUDevice device, WGPU_NULLABLE WGPUCommandEncoderDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2574 /**
   2575  * Proc pointer type for @ref wgpuDeviceCreateComputePipeline:
   2576  * > @copydoc wgpuDeviceCreateComputePipeline
   2577  */
   2578 typedef WGPUComputePipeline (*WGPUProcDeviceCreateComputePipeline)(WGPUDevice device, WGPUComputePipelineDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2579 /**
   2580  * Proc pointer type for @ref wgpuDeviceCreateComputePipelineAsync:
   2581  * > @copydoc wgpuDeviceCreateComputePipelineAsync
   2582  */
   2583 typedef WGPUFuture (*WGPUProcDeviceCreateComputePipelineAsync)(WGPUDevice device, WGPUComputePipelineDescriptor const * descriptor, WGPUCreateComputePipelineAsyncCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   2584 /**
   2585  * Proc pointer type for @ref wgpuDeviceCreatePipelineLayout:
   2586  * > @copydoc wgpuDeviceCreatePipelineLayout
   2587  */
   2588 typedef WGPUPipelineLayout (*WGPUProcDeviceCreatePipelineLayout)(WGPUDevice device, WGPUPipelineLayoutDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2589 /**
   2590  * Proc pointer type for @ref wgpuDeviceCreateQuerySet:
   2591  * > @copydoc wgpuDeviceCreateQuerySet
   2592  */
   2593 typedef WGPUQuerySet (*WGPUProcDeviceCreateQuerySet)(WGPUDevice device, WGPUQuerySetDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2594 /**
   2595  * Proc pointer type for @ref wgpuDeviceCreateRenderBundleEncoder:
   2596  * > @copydoc wgpuDeviceCreateRenderBundleEncoder
   2597  */
   2598 typedef WGPURenderBundleEncoder (*WGPUProcDeviceCreateRenderBundleEncoder)(WGPUDevice device, WGPURenderBundleEncoderDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2599 /**
   2600  * Proc pointer type for @ref wgpuDeviceCreateRenderPipeline:
   2601  * > @copydoc wgpuDeviceCreateRenderPipeline
   2602  */
   2603 typedef WGPURenderPipeline (*WGPUProcDeviceCreateRenderPipeline)(WGPUDevice device, WGPURenderPipelineDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2604 /**
   2605  * Proc pointer type for @ref wgpuDeviceCreateRenderPipelineAsync:
   2606  * > @copydoc wgpuDeviceCreateRenderPipelineAsync
   2607  */
   2608 typedef WGPUFuture (*WGPUProcDeviceCreateRenderPipelineAsync)(WGPUDevice device, WGPURenderPipelineDescriptor const * descriptor, WGPUCreateRenderPipelineAsyncCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   2609 /**
   2610  * Proc pointer type for @ref wgpuDeviceCreateSampler:
   2611  * > @copydoc wgpuDeviceCreateSampler
   2612  */
   2613 typedef WGPUSampler (*WGPUProcDeviceCreateSampler)(WGPUDevice device, WGPU_NULLABLE WGPUSamplerDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2614 /**
   2615  * Proc pointer type for @ref wgpuDeviceCreateShaderModule:
   2616  * > @copydoc wgpuDeviceCreateShaderModule
   2617  */
   2618 typedef WGPUShaderModule (*WGPUProcDeviceCreateShaderModule)(WGPUDevice device, WGPUShaderModuleDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2619 /**
   2620  * Proc pointer type for @ref wgpuDeviceCreateTexture:
   2621  * > @copydoc wgpuDeviceCreateTexture
   2622  */
   2623 typedef WGPUTexture (*WGPUProcDeviceCreateTexture)(WGPUDevice device, WGPUTextureDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2624 /**
   2625  * Proc pointer type for @ref wgpuDeviceDestroy:
   2626  * > @copydoc wgpuDeviceDestroy
   2627  */
   2628 typedef void (*WGPUProcDeviceDestroy)(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   2629 /**
   2630  * Proc pointer type for @ref wgpuDeviceGetAdapterInfo:
   2631  * > @copydoc wgpuDeviceGetAdapterInfo
   2632  */
   2633 typedef WGPUAdapterInfo (*WGPUProcDeviceGetAdapterInfo)(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   2634 /**
   2635  * Proc pointer type for @ref wgpuDeviceGetFeatures:
   2636  * > @copydoc wgpuDeviceGetFeatures
   2637  */
   2638 typedef void (*WGPUProcDeviceGetFeatures)(WGPUDevice device, WGPUSupportedFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
   2639 /**
   2640  * Proc pointer type for @ref wgpuDeviceGetLimits:
   2641  * > @copydoc wgpuDeviceGetLimits
   2642  */
   2643 typedef WGPUStatus (*WGPUProcDeviceGetLimits)(WGPUDevice device, WGPULimits * limits) WGPU_FUNCTION_ATTRIBUTE;
   2644 /**
   2645  * Proc pointer type for @ref wgpuDeviceGetLostFuture:
   2646  * > @copydoc wgpuDeviceGetLostFuture
   2647  */
   2648 typedef WGPUFuture (*WGPUProcDeviceGetLostFuture)(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   2649 /**
   2650  * Proc pointer type for @ref wgpuDeviceGetQueue:
   2651  * > @copydoc wgpuDeviceGetQueue
   2652  */
   2653 typedef WGPUQueue (*WGPUProcDeviceGetQueue)(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   2654 /**
   2655  * Proc pointer type for @ref wgpuDeviceHasFeature:
   2656  * > @copydoc wgpuDeviceHasFeature
   2657  */
   2658 typedef WGPUBool (*WGPUProcDeviceHasFeature)(WGPUDevice device, WGPUFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
   2659 /**
   2660  * Proc pointer type for @ref wgpuDevicePopErrorScope:
   2661  * > @copydoc wgpuDevicePopErrorScope
   2662  */
   2663 typedef WGPUFuture (*WGPUProcDevicePopErrorScope)(WGPUDevice device, WGPUPopErrorScopeCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   2664 /**
   2665  * Proc pointer type for @ref wgpuDevicePushErrorScope:
   2666  * > @copydoc wgpuDevicePushErrorScope
   2667  */
   2668 typedef void (*WGPUProcDevicePushErrorScope)(WGPUDevice device, WGPUErrorFilter filter) WGPU_FUNCTION_ATTRIBUTE;
   2669 /**
   2670  * Proc pointer type for @ref wgpuDeviceSetLabel:
   2671  * > @copydoc wgpuDeviceSetLabel
   2672  */
   2673 typedef void (*WGPUProcDeviceSetLabel)(WGPUDevice device, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2674 /**
   2675  * Proc pointer type for @ref wgpuDeviceAddRef.
   2676  * > @copydoc wgpuDeviceAddRef
   2677  */
   2678 typedef void (*WGPUProcDeviceAddRef)(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   2679 /**
   2680  * Proc pointer type for @ref wgpuDeviceRelease.
   2681  * > @copydoc wgpuDeviceRelease
   2682  */
   2683 typedef void (*WGPUProcDeviceRelease)(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   2684 
   2685 // Procs of Instance
   2686 /**
   2687  * Proc pointer type for @ref wgpuInstanceCreateSurface:
   2688  * > @copydoc wgpuInstanceCreateSurface
   2689  */
   2690 typedef WGPUSurface (*WGPUProcInstanceCreateSurface)(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2691 /**
   2692  * Proc pointer type for @ref wgpuInstanceGetWGSLLanguageFeatures:
   2693  * > @copydoc wgpuInstanceGetWGSLLanguageFeatures
   2694  */
   2695 typedef WGPUStatus (*WGPUProcInstanceGetWGSLLanguageFeatures)(WGPUInstance instance, WGPUSupportedWGSLLanguageFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
   2696 /**
   2697  * Proc pointer type for @ref wgpuInstanceHasWGSLLanguageFeature:
   2698  * > @copydoc wgpuInstanceHasWGSLLanguageFeature
   2699  */
   2700 typedef WGPUBool (*WGPUProcInstanceHasWGSLLanguageFeature)(WGPUInstance instance, WGPUWGSLLanguageFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
   2701 /**
   2702  * Proc pointer type for @ref wgpuInstanceProcessEvents:
   2703  * > @copydoc wgpuInstanceProcessEvents
   2704  */
   2705 typedef void (*WGPUProcInstanceProcessEvents)(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
   2706 /**
   2707  * Proc pointer type for @ref wgpuInstanceRequestAdapter:
   2708  * > @copydoc wgpuInstanceRequestAdapter
   2709  */
   2710 typedef WGPUFuture (*WGPUProcInstanceRequestAdapter)(WGPUInstance instance, WGPU_NULLABLE WGPURequestAdapterOptions const * options, WGPURequestAdapterCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   2711 /**
   2712  * Proc pointer type for @ref wgpuInstanceWaitAny:
   2713  * > @copydoc wgpuInstanceWaitAny
   2714  */
   2715 typedef WGPUWaitStatus (*WGPUProcInstanceWaitAny)(WGPUInstance instance, size_t futureCount, WGPU_NULLABLE WGPUFutureWaitInfo * futures, uint64_t timeoutNS) WGPU_FUNCTION_ATTRIBUTE;
   2716 /**
   2717  * Proc pointer type for @ref wgpuInstanceAddRef.
   2718  * > @copydoc wgpuInstanceAddRef
   2719  */
   2720 typedef void (*WGPUProcInstanceAddRef)(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
   2721 /**
   2722  * Proc pointer type for @ref wgpuInstanceRelease.
   2723  * > @copydoc wgpuInstanceRelease
   2724  */
   2725 typedef void (*WGPUProcInstanceRelease)(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
   2726 
   2727 // Procs of PipelineLayout
   2728 /**
   2729  * Proc pointer type for @ref wgpuPipelineLayoutSetLabel:
   2730  * > @copydoc wgpuPipelineLayoutSetLabel
   2731  */
   2732 typedef void (*WGPUProcPipelineLayoutSetLabel)(WGPUPipelineLayout pipelineLayout, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2733 /**
   2734  * Proc pointer type for @ref wgpuPipelineLayoutAddRef.
   2735  * > @copydoc wgpuPipelineLayoutAddRef
   2736  */
   2737 typedef void (*WGPUProcPipelineLayoutAddRef)(WGPUPipelineLayout pipelineLayout) WGPU_FUNCTION_ATTRIBUTE;
   2738 /**
   2739  * Proc pointer type for @ref wgpuPipelineLayoutRelease.
   2740  * > @copydoc wgpuPipelineLayoutRelease
   2741  */
   2742 typedef void (*WGPUProcPipelineLayoutRelease)(WGPUPipelineLayout pipelineLayout) WGPU_FUNCTION_ATTRIBUTE;
   2743 
   2744 // Procs of QuerySet
   2745 /**
   2746  * Proc pointer type for @ref wgpuQuerySetDestroy:
   2747  * > @copydoc wgpuQuerySetDestroy
   2748  */
   2749 typedef void (*WGPUProcQuerySetDestroy)(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   2750 /**
   2751  * Proc pointer type for @ref wgpuQuerySetGetCount:
   2752  * > @copydoc wgpuQuerySetGetCount
   2753  */
   2754 typedef uint32_t (*WGPUProcQuerySetGetCount)(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   2755 /**
   2756  * Proc pointer type for @ref wgpuQuerySetGetType:
   2757  * > @copydoc wgpuQuerySetGetType
   2758  */
   2759 typedef WGPUQueryType (*WGPUProcQuerySetGetType)(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   2760 /**
   2761  * Proc pointer type for @ref wgpuQuerySetSetLabel:
   2762  * > @copydoc wgpuQuerySetSetLabel
   2763  */
   2764 typedef void (*WGPUProcQuerySetSetLabel)(WGPUQuerySet querySet, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2765 /**
   2766  * Proc pointer type for @ref wgpuQuerySetAddRef.
   2767  * > @copydoc wgpuQuerySetAddRef
   2768  */
   2769 typedef void (*WGPUProcQuerySetAddRef)(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   2770 /**
   2771  * Proc pointer type for @ref wgpuQuerySetRelease.
   2772  * > @copydoc wgpuQuerySetRelease
   2773  */
   2774 typedef void (*WGPUProcQuerySetRelease)(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   2775 
   2776 // Procs of Queue
   2777 /**
   2778  * Proc pointer type for @ref wgpuQueueOnSubmittedWorkDone:
   2779  * > @copydoc wgpuQueueOnSubmittedWorkDone
   2780  */
   2781 typedef WGPUFuture (*WGPUProcQueueOnSubmittedWorkDone)(WGPUQueue queue, WGPUQueueWorkDoneCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   2782 /**
   2783  * Proc pointer type for @ref wgpuQueueSetLabel:
   2784  * > @copydoc wgpuQueueSetLabel
   2785  */
   2786 typedef void (*WGPUProcQueueSetLabel)(WGPUQueue queue, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2787 /**
   2788  * Proc pointer type for @ref wgpuQueueSubmit:
   2789  * > @copydoc wgpuQueueSubmit
   2790  */
   2791 typedef void (*WGPUProcQueueSubmit)(WGPUQueue queue, size_t commandCount, WGPUCommandBuffer const * commands) WGPU_FUNCTION_ATTRIBUTE;
   2792 /**
   2793  * Proc pointer type for @ref wgpuQueueWriteBuffer:
   2794  * > @copydoc wgpuQueueWriteBuffer
   2795  */
   2796 typedef void (*WGPUProcQueueWriteBuffer)(WGPUQueue queue, WGPUBuffer buffer, uint64_t bufferOffset, void const * data, size_t size) WGPU_FUNCTION_ATTRIBUTE;
   2797 /**
   2798  * Proc pointer type for @ref wgpuQueueWriteTexture:
   2799  * > @copydoc wgpuQueueWriteTexture
   2800  */
   2801 typedef void (*WGPUProcQueueWriteTexture)(WGPUQueue queue, WGPUTexelCopyTextureInfo const * destination, void const * data, size_t dataSize, WGPUTexelCopyBufferLayout const * dataLayout, WGPUExtent3D const * writeSize) WGPU_FUNCTION_ATTRIBUTE;
   2802 /**
   2803  * Proc pointer type for @ref wgpuQueueAddRef.
   2804  * > @copydoc wgpuQueueAddRef
   2805  */
   2806 typedef void (*WGPUProcQueueAddRef)(WGPUQueue queue) WGPU_FUNCTION_ATTRIBUTE;
   2807 /**
   2808  * Proc pointer type for @ref wgpuQueueRelease.
   2809  * > @copydoc wgpuQueueRelease
   2810  */
   2811 typedef void (*WGPUProcQueueRelease)(WGPUQueue queue) WGPU_FUNCTION_ATTRIBUTE;
   2812 
   2813 // Procs of RenderBundle
   2814 /**
   2815  * Proc pointer type for @ref wgpuRenderBundleSetLabel:
   2816  * > @copydoc wgpuRenderBundleSetLabel
   2817  */
   2818 typedef void (*WGPUProcRenderBundleSetLabel)(WGPURenderBundle renderBundle, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2819 /**
   2820  * Proc pointer type for @ref wgpuRenderBundleAddRef.
   2821  * > @copydoc wgpuRenderBundleAddRef
   2822  */
   2823 typedef void (*WGPUProcRenderBundleAddRef)(WGPURenderBundle renderBundle) WGPU_FUNCTION_ATTRIBUTE;
   2824 /**
   2825  * Proc pointer type for @ref wgpuRenderBundleRelease.
   2826  * > @copydoc wgpuRenderBundleRelease
   2827  */
   2828 typedef void (*WGPUProcRenderBundleRelease)(WGPURenderBundle renderBundle) WGPU_FUNCTION_ATTRIBUTE;
   2829 
   2830 // Procs of RenderBundleEncoder
   2831 /**
   2832  * Proc pointer type for @ref wgpuRenderBundleEncoderDraw:
   2833  * > @copydoc wgpuRenderBundleEncoderDraw
   2834  */
   2835 typedef void (*WGPUProcRenderBundleEncoderDraw)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   2836 /**
   2837  * Proc pointer type for @ref wgpuRenderBundleEncoderDrawIndexed:
   2838  * > @copydoc wgpuRenderBundleEncoderDrawIndexed
   2839  */
   2840 typedef void (*WGPUProcRenderBundleEncoderDrawIndexed)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   2841 /**
   2842  * Proc pointer type for @ref wgpuRenderBundleEncoderDrawIndexedIndirect:
   2843  * > @copydoc wgpuRenderBundleEncoderDrawIndexedIndirect
   2844  */
   2845 typedef void (*WGPUProcRenderBundleEncoderDrawIndexedIndirect)(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   2846 /**
   2847  * Proc pointer type for @ref wgpuRenderBundleEncoderDrawIndirect:
   2848  * > @copydoc wgpuRenderBundleEncoderDrawIndirect
   2849  */
   2850 typedef void (*WGPUProcRenderBundleEncoderDrawIndirect)(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   2851 /**
   2852  * Proc pointer type for @ref wgpuRenderBundleEncoderFinish:
   2853  * > @copydoc wgpuRenderBundleEncoderFinish
   2854  */
   2855 typedef WGPURenderBundle (*WGPUProcRenderBundleEncoderFinish)(WGPURenderBundleEncoder renderBundleEncoder, WGPU_NULLABLE WGPURenderBundleDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   2856 /**
   2857  * Proc pointer type for @ref wgpuRenderBundleEncoderInsertDebugMarker:
   2858  * > @copydoc wgpuRenderBundleEncoderInsertDebugMarker
   2859  */
   2860 typedef void (*WGPUProcRenderBundleEncoderInsertDebugMarker)(WGPURenderBundleEncoder renderBundleEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   2861 /**
   2862  * Proc pointer type for @ref wgpuRenderBundleEncoderPopDebugGroup:
   2863  * > @copydoc wgpuRenderBundleEncoderPopDebugGroup
   2864  */
   2865 typedef void (*WGPUProcRenderBundleEncoderPopDebugGroup)(WGPURenderBundleEncoder renderBundleEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2866 /**
   2867  * Proc pointer type for @ref wgpuRenderBundleEncoderPushDebugGroup:
   2868  * > @copydoc wgpuRenderBundleEncoderPushDebugGroup
   2869  */
   2870 typedef void (*WGPUProcRenderBundleEncoderPushDebugGroup)(WGPURenderBundleEncoder renderBundleEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   2871 /**
   2872  * Proc pointer type for @ref wgpuRenderBundleEncoderSetBindGroup:
   2873  * > @copydoc wgpuRenderBundleEncoderSetBindGroup
   2874  */
   2875 typedef void (*WGPUProcRenderBundleEncoderSetBindGroup)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t groupIndex, WGPU_NULLABLE WGPUBindGroup group, size_t dynamicOffsetCount, uint32_t const * dynamicOffsets) WGPU_FUNCTION_ATTRIBUTE;
   2876 /**
   2877  * Proc pointer type for @ref wgpuRenderBundleEncoderSetIndexBuffer:
   2878  * > @copydoc wgpuRenderBundleEncoderSetIndexBuffer
   2879  */
   2880 typedef void (*WGPUProcRenderBundleEncoderSetIndexBuffer)(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer buffer, WGPUIndexFormat format, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   2881 /**
   2882  * Proc pointer type for @ref wgpuRenderBundleEncoderSetLabel:
   2883  * > @copydoc wgpuRenderBundleEncoderSetLabel
   2884  */
   2885 typedef void (*WGPUProcRenderBundleEncoderSetLabel)(WGPURenderBundleEncoder renderBundleEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2886 /**
   2887  * Proc pointer type for @ref wgpuRenderBundleEncoderSetPipeline:
   2888  * > @copydoc wgpuRenderBundleEncoderSetPipeline
   2889  */
   2890 typedef void (*WGPUProcRenderBundleEncoderSetPipeline)(WGPURenderBundleEncoder renderBundleEncoder, WGPURenderPipeline pipeline) WGPU_FUNCTION_ATTRIBUTE;
   2891 /**
   2892  * Proc pointer type for @ref wgpuRenderBundleEncoderSetVertexBuffer:
   2893  * > @copydoc wgpuRenderBundleEncoderSetVertexBuffer
   2894  */
   2895 typedef void (*WGPUProcRenderBundleEncoderSetVertexBuffer)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t slot, WGPU_NULLABLE WGPUBuffer buffer, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   2896 /**
   2897  * Proc pointer type for @ref wgpuRenderBundleEncoderAddRef.
   2898  * > @copydoc wgpuRenderBundleEncoderAddRef
   2899  */
   2900 typedef void (*WGPUProcRenderBundleEncoderAddRef)(WGPURenderBundleEncoder renderBundleEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2901 /**
   2902  * Proc pointer type for @ref wgpuRenderBundleEncoderRelease.
   2903  * > @copydoc wgpuRenderBundleEncoderRelease
   2904  */
   2905 typedef void (*WGPUProcRenderBundleEncoderRelease)(WGPURenderBundleEncoder renderBundleEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2906 
   2907 // Procs of RenderPassEncoder
   2908 /**
   2909  * Proc pointer type for @ref wgpuRenderPassEncoderBeginOcclusionQuery:
   2910  * > @copydoc wgpuRenderPassEncoderBeginOcclusionQuery
   2911  */
   2912 typedef void (*WGPUProcRenderPassEncoderBeginOcclusionQuery)(WGPURenderPassEncoder renderPassEncoder, uint32_t queryIndex) WGPU_FUNCTION_ATTRIBUTE;
   2913 /**
   2914  * Proc pointer type for @ref wgpuRenderPassEncoderDraw:
   2915  * > @copydoc wgpuRenderPassEncoderDraw
   2916  */
   2917 typedef void (*WGPUProcRenderPassEncoderDraw)(WGPURenderPassEncoder renderPassEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   2918 /**
   2919  * Proc pointer type for @ref wgpuRenderPassEncoderDrawIndexed:
   2920  * > @copydoc wgpuRenderPassEncoderDrawIndexed
   2921  */
   2922 typedef void (*WGPUProcRenderPassEncoderDrawIndexed)(WGPURenderPassEncoder renderPassEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   2923 /**
   2924  * Proc pointer type for @ref wgpuRenderPassEncoderDrawIndexedIndirect:
   2925  * > @copydoc wgpuRenderPassEncoderDrawIndexedIndirect
   2926  */
   2927 typedef void (*WGPUProcRenderPassEncoderDrawIndexedIndirect)(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   2928 /**
   2929  * Proc pointer type for @ref wgpuRenderPassEncoderDrawIndirect:
   2930  * > @copydoc wgpuRenderPassEncoderDrawIndirect
   2931  */
   2932 typedef void (*WGPUProcRenderPassEncoderDrawIndirect)(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   2933 /**
   2934  * Proc pointer type for @ref wgpuRenderPassEncoderEnd:
   2935  * > @copydoc wgpuRenderPassEncoderEnd
   2936  */
   2937 typedef void (*WGPUProcRenderPassEncoderEnd)(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2938 /**
   2939  * Proc pointer type for @ref wgpuRenderPassEncoderEndOcclusionQuery:
   2940  * > @copydoc wgpuRenderPassEncoderEndOcclusionQuery
   2941  */
   2942 typedef void (*WGPUProcRenderPassEncoderEndOcclusionQuery)(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2943 /**
   2944  * Proc pointer type for @ref wgpuRenderPassEncoderExecuteBundles:
   2945  * > @copydoc wgpuRenderPassEncoderExecuteBundles
   2946  */
   2947 typedef void (*WGPUProcRenderPassEncoderExecuteBundles)(WGPURenderPassEncoder renderPassEncoder, size_t bundleCount, WGPURenderBundle const * bundles) WGPU_FUNCTION_ATTRIBUTE;
   2948 /**
   2949  * Proc pointer type for @ref wgpuRenderPassEncoderInsertDebugMarker:
   2950  * > @copydoc wgpuRenderPassEncoderInsertDebugMarker
   2951  */
   2952 typedef void (*WGPUProcRenderPassEncoderInsertDebugMarker)(WGPURenderPassEncoder renderPassEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   2953 /**
   2954  * Proc pointer type for @ref wgpuRenderPassEncoderPopDebugGroup:
   2955  * > @copydoc wgpuRenderPassEncoderPopDebugGroup
   2956  */
   2957 typedef void (*WGPUProcRenderPassEncoderPopDebugGroup)(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   2958 /**
   2959  * Proc pointer type for @ref wgpuRenderPassEncoderPushDebugGroup:
   2960  * > @copydoc wgpuRenderPassEncoderPushDebugGroup
   2961  */
   2962 typedef void (*WGPUProcRenderPassEncoderPushDebugGroup)(WGPURenderPassEncoder renderPassEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   2963 /**
   2964  * Proc pointer type for @ref wgpuRenderPassEncoderSetBindGroup:
   2965  * > @copydoc wgpuRenderPassEncoderSetBindGroup
   2966  */
   2967 typedef void (*WGPUProcRenderPassEncoderSetBindGroup)(WGPURenderPassEncoder renderPassEncoder, uint32_t groupIndex, WGPU_NULLABLE WGPUBindGroup group, size_t dynamicOffsetCount, uint32_t const * dynamicOffsets) WGPU_FUNCTION_ATTRIBUTE;
   2968 /**
   2969  * Proc pointer type for @ref wgpuRenderPassEncoderSetBlendConstant:
   2970  * > @copydoc wgpuRenderPassEncoderSetBlendConstant
   2971  */
   2972 typedef void (*WGPUProcRenderPassEncoderSetBlendConstant)(WGPURenderPassEncoder renderPassEncoder, WGPUColor const * color) WGPU_FUNCTION_ATTRIBUTE;
   2973 /**
   2974  * Proc pointer type for @ref wgpuRenderPassEncoderSetIndexBuffer:
   2975  * > @copydoc wgpuRenderPassEncoderSetIndexBuffer
   2976  */
   2977 typedef void (*WGPUProcRenderPassEncoderSetIndexBuffer)(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer buffer, WGPUIndexFormat format, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   2978 /**
   2979  * Proc pointer type for @ref wgpuRenderPassEncoderSetLabel:
   2980  * > @copydoc wgpuRenderPassEncoderSetLabel
   2981  */
   2982 typedef void (*WGPUProcRenderPassEncoderSetLabel)(WGPURenderPassEncoder renderPassEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   2983 /**
   2984  * Proc pointer type for @ref wgpuRenderPassEncoderSetPipeline:
   2985  * > @copydoc wgpuRenderPassEncoderSetPipeline
   2986  */
   2987 typedef void (*WGPUProcRenderPassEncoderSetPipeline)(WGPURenderPassEncoder renderPassEncoder, WGPURenderPipeline pipeline) WGPU_FUNCTION_ATTRIBUTE;
   2988 /**
   2989  * Proc pointer type for @ref wgpuRenderPassEncoderSetScissorRect:
   2990  * > @copydoc wgpuRenderPassEncoderSetScissorRect
   2991  */
   2992 typedef void (*WGPUProcRenderPassEncoderSetScissorRect)(WGPURenderPassEncoder renderPassEncoder, uint32_t x, uint32_t y, uint32_t width, uint32_t height) WGPU_FUNCTION_ATTRIBUTE;
   2993 /**
   2994  * Proc pointer type for @ref wgpuRenderPassEncoderSetStencilReference:
   2995  * > @copydoc wgpuRenderPassEncoderSetStencilReference
   2996  */
   2997 typedef void (*WGPUProcRenderPassEncoderSetStencilReference)(WGPURenderPassEncoder renderPassEncoder, uint32_t reference) WGPU_FUNCTION_ATTRIBUTE;
   2998 /**
   2999  * Proc pointer type for @ref wgpuRenderPassEncoderSetVertexBuffer:
   3000  * > @copydoc wgpuRenderPassEncoderSetVertexBuffer
   3001  */
   3002 typedef void (*WGPUProcRenderPassEncoderSetVertexBuffer)(WGPURenderPassEncoder renderPassEncoder, uint32_t slot, WGPU_NULLABLE WGPUBuffer buffer, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   3003 /**
   3004  * Proc pointer type for @ref wgpuRenderPassEncoderSetViewport:
   3005  * > @copydoc wgpuRenderPassEncoderSetViewport
   3006  */
   3007 typedef void (*WGPUProcRenderPassEncoderSetViewport)(WGPURenderPassEncoder renderPassEncoder, float x, float y, float width, float height, float minDepth, float maxDepth) WGPU_FUNCTION_ATTRIBUTE;
   3008 /**
   3009  * Proc pointer type for @ref wgpuRenderPassEncoderAddRef.
   3010  * > @copydoc wgpuRenderPassEncoderAddRef
   3011  */
   3012 typedef void (*WGPUProcRenderPassEncoderAddRef)(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3013 /**
   3014  * Proc pointer type for @ref wgpuRenderPassEncoderRelease.
   3015  * > @copydoc wgpuRenderPassEncoderRelease
   3016  */
   3017 typedef void (*WGPUProcRenderPassEncoderRelease)(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3018 
   3019 // Procs of RenderPipeline
   3020 /**
   3021  * Proc pointer type for @ref wgpuRenderPipelineGetBindGroupLayout:
   3022  * > @copydoc wgpuRenderPipelineGetBindGroupLayout
   3023  */
   3024 typedef WGPUBindGroupLayout (*WGPUProcRenderPipelineGetBindGroupLayout)(WGPURenderPipeline renderPipeline, uint32_t groupIndex) WGPU_FUNCTION_ATTRIBUTE;
   3025 /**
   3026  * Proc pointer type for @ref wgpuRenderPipelineSetLabel:
   3027  * > @copydoc wgpuRenderPipelineSetLabel
   3028  */
   3029 typedef void (*WGPUProcRenderPipelineSetLabel)(WGPURenderPipeline renderPipeline, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3030 /**
   3031  * Proc pointer type for @ref wgpuRenderPipelineAddRef.
   3032  * > @copydoc wgpuRenderPipelineAddRef
   3033  */
   3034 typedef void (*WGPUProcRenderPipelineAddRef)(WGPURenderPipeline renderPipeline) WGPU_FUNCTION_ATTRIBUTE;
   3035 /**
   3036  * Proc pointer type for @ref wgpuRenderPipelineRelease.
   3037  * > @copydoc wgpuRenderPipelineRelease
   3038  */
   3039 typedef void (*WGPUProcRenderPipelineRelease)(WGPURenderPipeline renderPipeline) WGPU_FUNCTION_ATTRIBUTE;
   3040 
   3041 // Procs of Sampler
   3042 /**
   3043  * Proc pointer type for @ref wgpuSamplerSetLabel:
   3044  * > @copydoc wgpuSamplerSetLabel
   3045  */
   3046 typedef void (*WGPUProcSamplerSetLabel)(WGPUSampler sampler, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3047 /**
   3048  * Proc pointer type for @ref wgpuSamplerAddRef.
   3049  * > @copydoc wgpuSamplerAddRef
   3050  */
   3051 typedef void (*WGPUProcSamplerAddRef)(WGPUSampler sampler) WGPU_FUNCTION_ATTRIBUTE;
   3052 /**
   3053  * Proc pointer type for @ref wgpuSamplerRelease.
   3054  * > @copydoc wgpuSamplerRelease
   3055  */
   3056 typedef void (*WGPUProcSamplerRelease)(WGPUSampler sampler) WGPU_FUNCTION_ATTRIBUTE;
   3057 
   3058 // Procs of ShaderModule
   3059 /**
   3060  * Proc pointer type for @ref wgpuShaderModuleGetCompilationInfo:
   3061  * > @copydoc wgpuShaderModuleGetCompilationInfo
   3062  */
   3063 typedef WGPUFuture (*WGPUProcShaderModuleGetCompilationInfo)(WGPUShaderModule shaderModule, WGPUCompilationInfoCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3064 /**
   3065  * Proc pointer type for @ref wgpuShaderModuleSetLabel:
   3066  * > @copydoc wgpuShaderModuleSetLabel
   3067  */
   3068 typedef void (*WGPUProcShaderModuleSetLabel)(WGPUShaderModule shaderModule, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3069 /**
   3070  * Proc pointer type for @ref wgpuShaderModuleAddRef.
   3071  * > @copydoc wgpuShaderModuleAddRef
   3072  */
   3073 typedef void (*WGPUProcShaderModuleAddRef)(WGPUShaderModule shaderModule) WGPU_FUNCTION_ATTRIBUTE;
   3074 /**
   3075  * Proc pointer type for @ref wgpuShaderModuleRelease.
   3076  * > @copydoc wgpuShaderModuleRelease
   3077  */
   3078 typedef void (*WGPUProcShaderModuleRelease)(WGPUShaderModule shaderModule) WGPU_FUNCTION_ATTRIBUTE;
   3079 
   3080 // Procs of SupportedFeatures
   3081 /**
   3082  * Proc pointer type for @ref wgpuSupportedFeaturesFreeMembers:
   3083  * > @copydoc wgpuSupportedFeaturesFreeMembers
   3084  */
   3085 typedef void (*WGPUProcSupportedFeaturesFreeMembers)(WGPUSupportedFeatures supportedFeatures) WGPU_FUNCTION_ATTRIBUTE;
   3086 
   3087 // Procs of SupportedWGSLLanguageFeatures
   3088 /**
   3089  * Proc pointer type for @ref wgpuSupportedWGSLLanguageFeaturesFreeMembers:
   3090  * > @copydoc wgpuSupportedWGSLLanguageFeaturesFreeMembers
   3091  */
   3092 typedef void (*WGPUProcSupportedWGSLLanguageFeaturesFreeMembers)(WGPUSupportedWGSLLanguageFeatures supportedWGSLLanguageFeatures) WGPU_FUNCTION_ATTRIBUTE;
   3093 
   3094 // Procs of Surface
   3095 /**
   3096  * Proc pointer type for @ref wgpuSurfaceConfigure:
   3097  * > @copydoc wgpuSurfaceConfigure
   3098  */
   3099 typedef void (*WGPUProcSurfaceConfigure)(WGPUSurface surface, WGPUSurfaceConfiguration const * config) WGPU_FUNCTION_ATTRIBUTE;
   3100 /**
   3101  * Proc pointer type for @ref wgpuSurfaceGetCapabilities:
   3102  * > @copydoc wgpuSurfaceGetCapabilities
   3103  */
   3104 typedef WGPUStatus (*WGPUProcSurfaceGetCapabilities)(WGPUSurface surface, WGPUAdapter adapter, WGPUSurfaceCapabilities * capabilities) WGPU_FUNCTION_ATTRIBUTE;
   3105 /**
   3106  * Proc pointer type for @ref wgpuSurfaceGetCurrentTexture:
   3107  * > @copydoc wgpuSurfaceGetCurrentTexture
   3108  */
   3109 typedef void (*WGPUProcSurfaceGetCurrentTexture)(WGPUSurface surface, WGPUSurfaceTexture * surfaceTexture) WGPU_FUNCTION_ATTRIBUTE;
   3110 /**
   3111  * Proc pointer type for @ref wgpuSurfacePresent:
   3112  * > @copydoc wgpuSurfacePresent
   3113  */
   3114 typedef WGPUStatus (*WGPUProcSurfacePresent)(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3115 /**
   3116  * Proc pointer type for @ref wgpuSurfaceSetLabel:
   3117  * > @copydoc wgpuSurfaceSetLabel
   3118  */
   3119 typedef void (*WGPUProcSurfaceSetLabel)(WGPUSurface surface, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3120 /**
   3121  * Proc pointer type for @ref wgpuSurfaceUnconfigure:
   3122  * > @copydoc wgpuSurfaceUnconfigure
   3123  */
   3124 typedef void (*WGPUProcSurfaceUnconfigure)(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3125 /**
   3126  * Proc pointer type for @ref wgpuSurfaceAddRef.
   3127  * > @copydoc wgpuSurfaceAddRef
   3128  */
   3129 typedef void (*WGPUProcSurfaceAddRef)(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3130 /**
   3131  * Proc pointer type for @ref wgpuSurfaceRelease.
   3132  * > @copydoc wgpuSurfaceRelease
   3133  */
   3134 typedef void (*WGPUProcSurfaceRelease)(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3135 
   3136 // Procs of SurfaceCapabilities
   3137 /**
   3138  * Proc pointer type for @ref wgpuSurfaceCapabilitiesFreeMembers:
   3139  * > @copydoc wgpuSurfaceCapabilitiesFreeMembers
   3140  */
   3141 typedef void (*WGPUProcSurfaceCapabilitiesFreeMembers)(WGPUSurfaceCapabilities surfaceCapabilities) WGPU_FUNCTION_ATTRIBUTE;
   3142 
   3143 // Procs of Texture
   3144 /**
   3145  * Proc pointer type for @ref wgpuTextureCreateView:
   3146  * > @copydoc wgpuTextureCreateView
   3147  */
   3148 typedef WGPUTextureView (*WGPUProcTextureCreateView)(WGPUTexture texture, WGPU_NULLABLE WGPUTextureViewDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3149 /**
   3150  * Proc pointer type for @ref wgpuTextureDestroy:
   3151  * > @copydoc wgpuTextureDestroy
   3152  */
   3153 typedef void (*WGPUProcTextureDestroy)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3154 /**
   3155  * Proc pointer type for @ref wgpuTextureGetDepthOrArrayLayers:
   3156  * > @copydoc wgpuTextureGetDepthOrArrayLayers
   3157  */
   3158 typedef uint32_t (*WGPUProcTextureGetDepthOrArrayLayers)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3159 /**
   3160  * Proc pointer type for @ref wgpuTextureGetDimension:
   3161  * > @copydoc wgpuTextureGetDimension
   3162  */
   3163 typedef WGPUTextureDimension (*WGPUProcTextureGetDimension)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3164 /**
   3165  * Proc pointer type for @ref wgpuTextureGetFormat:
   3166  * > @copydoc wgpuTextureGetFormat
   3167  */
   3168 typedef WGPUTextureFormat (*WGPUProcTextureGetFormat)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3169 /**
   3170  * Proc pointer type for @ref wgpuTextureGetHeight:
   3171  * > @copydoc wgpuTextureGetHeight
   3172  */
   3173 typedef uint32_t (*WGPUProcTextureGetHeight)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3174 /**
   3175  * Proc pointer type for @ref wgpuTextureGetMipLevelCount:
   3176  * > @copydoc wgpuTextureGetMipLevelCount
   3177  */
   3178 typedef uint32_t (*WGPUProcTextureGetMipLevelCount)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3179 /**
   3180  * Proc pointer type for @ref wgpuTextureGetSampleCount:
   3181  * > @copydoc wgpuTextureGetSampleCount
   3182  */
   3183 typedef uint32_t (*WGPUProcTextureGetSampleCount)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3184 /**
   3185  * Proc pointer type for @ref wgpuTextureGetUsage:
   3186  * > @copydoc wgpuTextureGetUsage
   3187  */
   3188 typedef WGPUTextureUsage (*WGPUProcTextureGetUsage)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3189 /**
   3190  * Proc pointer type for @ref wgpuTextureGetWidth:
   3191  * > @copydoc wgpuTextureGetWidth
   3192  */
   3193 typedef uint32_t (*WGPUProcTextureGetWidth)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3194 /**
   3195  * Proc pointer type for @ref wgpuTextureSetLabel:
   3196  * > @copydoc wgpuTextureSetLabel
   3197  */
   3198 typedef void (*WGPUProcTextureSetLabel)(WGPUTexture texture, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3199 /**
   3200  * Proc pointer type for @ref wgpuTextureAddRef.
   3201  * > @copydoc wgpuTextureAddRef
   3202  */
   3203 typedef void (*WGPUProcTextureAddRef)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3204 /**
   3205  * Proc pointer type for @ref wgpuTextureRelease.
   3206  * > @copydoc wgpuTextureRelease
   3207  */
   3208 typedef void (*WGPUProcTextureRelease)(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3209 
   3210 // Procs of TextureView
   3211 /**
   3212  * Proc pointer type for @ref wgpuTextureViewSetLabel:
   3213  * > @copydoc wgpuTextureViewSetLabel
   3214  */
   3215 typedef void (*WGPUProcTextureViewSetLabel)(WGPUTextureView textureView, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3216 /**
   3217  * Proc pointer type for @ref wgpuTextureViewAddRef.
   3218  * > @copydoc wgpuTextureViewAddRef
   3219  */
   3220 typedef void (*WGPUProcTextureViewAddRef)(WGPUTextureView textureView) WGPU_FUNCTION_ATTRIBUTE;
   3221 /**
   3222  * Proc pointer type for @ref wgpuTextureViewRelease.
   3223  * > @copydoc wgpuTextureViewRelease
   3224  */
   3225 typedef void (*WGPUProcTextureViewRelease)(WGPUTextureView textureView) WGPU_FUNCTION_ATTRIBUTE;
   3226 
   3227 #endif  // !defined(WGPU_SKIP_PROCS)
   3228 
   3229 #if !defined(WGPU_SKIP_DECLARATIONS)
   3230 /**
   3231  * \defgroup GlobalFunctions Global Functions
   3232  * \brief Functions that are not specific to an object.
   3233  *
   3234  * @{
   3235  */
   3236 /**
   3237  * Create a WGPUInstance
   3238  */
   3239 WGPU_EXPORT WGPUInstance wgpuCreateInstance(WGPU_NULLABLE WGPUInstanceDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3240 /**
   3241  * Query the supported instance capabilities.
   3242  *
   3243  * @param capabilities
   3244  * The supported instance capabilities
   3245  *
   3246  * @returns
   3247  * Indicates if there was an @ref OutStructChainError.
   3248  */
   3249 WGPU_EXPORT WGPUStatus wgpuGetInstanceCapabilities(WGPUInstanceCapabilities * capabilities) WGPU_FUNCTION_ATTRIBUTE;
   3250 /**
   3251  * Returns the "procedure address" (function pointer) of the named function.
   3252  * The result must be cast to the appropriate proc pointer type.
   3253  */
   3254 WGPU_EXPORT WGPUProc wgpuGetProcAddress(WGPUStringView procName) WGPU_FUNCTION_ATTRIBUTE;
   3255 
   3256 
   3257 /** @} */
   3258 
   3259 /**
   3260  * \defgroup Methods
   3261  * \brief Functions that are relative to a specific object.
   3262  *
   3263  * @{
   3264  */
   3265 
   3266 /**
   3267  * \defgroup WGPUAdapterMethods WGPUAdapter methods
   3268  * \brief Functions whose first argument has type WGPUAdapter.
   3269  *
   3270  * @{
   3271  */
   3272 /**
   3273  * Get the list of @ref WGPUFeatureName values supported by the adapter.
   3274  *
   3275  * @param features
   3276  * This parameter is @ref ReturnedWithOwnership.
   3277  */
   3278 WGPU_EXPORT void wgpuAdapterGetFeatures(WGPUAdapter adapter, WGPUSupportedFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
   3279 /**
   3280  * @param info
   3281  * This parameter is @ref ReturnedWithOwnership.
   3282  *
   3283  * @returns
   3284  * Indicates if there was an @ref OutStructChainError.
   3285  */
   3286 WGPU_EXPORT WGPUStatus wgpuAdapterGetInfo(WGPUAdapter adapter, WGPUAdapterInfo * info) WGPU_FUNCTION_ATTRIBUTE;
   3287 /**
   3288  * @returns
   3289  * Indicates if there was an @ref OutStructChainError.
   3290  */
   3291 WGPU_EXPORT WGPUStatus wgpuAdapterGetLimits(WGPUAdapter adapter, WGPULimits * limits) WGPU_FUNCTION_ATTRIBUTE;
   3292 WGPU_EXPORT WGPUBool wgpuAdapterHasFeature(WGPUAdapter adapter, WGPUFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
   3293 WGPU_EXPORT WGPUFuture wgpuAdapterRequestDevice(WGPUAdapter adapter, WGPU_NULLABLE WGPUDeviceDescriptor const * descriptor, WGPURequestDeviceCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3294 WGPU_EXPORT void wgpuAdapterAddRef(WGPUAdapter adapter) WGPU_FUNCTION_ATTRIBUTE;
   3295 WGPU_EXPORT void wgpuAdapterRelease(WGPUAdapter adapter) WGPU_FUNCTION_ATTRIBUTE;
   3296 /** @} */
   3297 
   3298 
   3299 
   3300 /**
   3301  * \defgroup WGPUAdapterInfoMethods WGPUAdapterInfo methods
   3302  * \brief Functions whose first argument has type WGPUAdapterInfo.
   3303  *
   3304  * @{
   3305  */
   3306 /**
   3307  * Frees array members of WGPUAdapterInfo which were allocated by the API.
   3308  */
   3309 WGPU_EXPORT void wgpuAdapterInfoFreeMembers(WGPUAdapterInfo adapterInfo) WGPU_FUNCTION_ATTRIBUTE;
   3310 /** @} */
   3311 
   3312 
   3313 
   3314 /**
   3315  * \defgroup WGPUBindGroupMethods WGPUBindGroup methods
   3316  * \brief Functions whose first argument has type WGPUBindGroup.
   3317  *
   3318  * @{
   3319  */
   3320 WGPU_EXPORT void wgpuBindGroupSetLabel(WGPUBindGroup bindGroup, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3321 WGPU_EXPORT void wgpuBindGroupAddRef(WGPUBindGroup bindGroup) WGPU_FUNCTION_ATTRIBUTE;
   3322 WGPU_EXPORT void wgpuBindGroupRelease(WGPUBindGroup bindGroup) WGPU_FUNCTION_ATTRIBUTE;
   3323 /** @} */
   3324 
   3325 
   3326 
   3327 /**
   3328  * \defgroup WGPUBindGroupLayoutMethods WGPUBindGroupLayout methods
   3329  * \brief Functions whose first argument has type WGPUBindGroupLayout.
   3330  *
   3331  * @{
   3332  */
   3333 WGPU_EXPORT void wgpuBindGroupLayoutSetLabel(WGPUBindGroupLayout bindGroupLayout, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3334 WGPU_EXPORT void wgpuBindGroupLayoutAddRef(WGPUBindGroupLayout bindGroupLayout) WGPU_FUNCTION_ATTRIBUTE;
   3335 WGPU_EXPORT void wgpuBindGroupLayoutRelease(WGPUBindGroupLayout bindGroupLayout) WGPU_FUNCTION_ATTRIBUTE;
   3336 /** @} */
   3337 
   3338 
   3339 
   3340 /**
   3341  * \defgroup WGPUBufferMethods WGPUBuffer methods
   3342  * \brief Functions whose first argument has type WGPUBuffer.
   3343  *
   3344  * @{
   3345  */
   3346 WGPU_EXPORT void wgpuBufferDestroy(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   3347 /**
   3348  * @param offset
   3349  * Byte offset relative to the beginning of the buffer.
   3350  *
   3351  * @param size
   3352  * Byte size of the range to get. The returned pointer is valid for exactly this many bytes.
   3353  *
   3354  * @returns
   3355  * Returns a const pointer to beginning of the mapped range.
   3356  * It must not be written; writing to this range causes undefined behavior.
   3357  * Returns `NULL` with @ref ImplementationDefinedLogging if:
   3358  *
   3359  * - There is any content-timeline error as defined in the WebGPU specification for `getMappedRange()` (alignments, overlaps, etc.)
   3360  *   **except** for overlaps with other *const* ranges, which are allowed in C.
   3361  *   (JS does not allow this because const ranges do not exist.)
   3362  */
   3363 WGPU_EXPORT void const * wgpuBufferGetConstMappedRange(WGPUBuffer buffer, size_t offset, size_t size) WGPU_FUNCTION_ATTRIBUTE;
   3364 WGPU_EXPORT WGPUBufferMapState wgpuBufferGetMapState(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   3365 /**
   3366  * @param offset
   3367  * Byte offset relative to the beginning of the buffer.
   3368  *
   3369  * @param size
   3370  * Byte size of the range to get. The returned pointer is valid for exactly this many bytes.
   3371  *
   3372  * @returns
   3373  * Returns a mutable pointer to beginning of the mapped range.
   3374  * Returns `NULL` with @ref ImplementationDefinedLogging if:
   3375  *
   3376  * - There is any content-timeline error as defined in the WebGPU specification for `getMappedRange()` (alignments, overlaps, etc.)
   3377  * - The buffer is not mapped with @ref WGPUMapMode_Write.
   3378  */
   3379 WGPU_EXPORT void * wgpuBufferGetMappedRange(WGPUBuffer buffer, size_t offset, size_t size) WGPU_FUNCTION_ATTRIBUTE;
   3380 WGPU_EXPORT uint64_t wgpuBufferGetSize(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   3381 WGPU_EXPORT WGPUBufferUsage wgpuBufferGetUsage(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   3382 WGPU_EXPORT WGPUFuture wgpuBufferMapAsync(WGPUBuffer buffer, WGPUMapMode mode, size_t offset, size_t size, WGPUBufferMapCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3383 WGPU_EXPORT void wgpuBufferSetLabel(WGPUBuffer buffer, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3384 WGPU_EXPORT void wgpuBufferUnmap(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   3385 WGPU_EXPORT void wgpuBufferAddRef(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   3386 WGPU_EXPORT void wgpuBufferRelease(WGPUBuffer buffer) WGPU_FUNCTION_ATTRIBUTE;
   3387 /** @} */
   3388 
   3389 
   3390 
   3391 /**
   3392  * \defgroup WGPUCommandBufferMethods WGPUCommandBuffer methods
   3393  * \brief Functions whose first argument has type WGPUCommandBuffer.
   3394  *
   3395  * @{
   3396  */
   3397 WGPU_EXPORT void wgpuCommandBufferSetLabel(WGPUCommandBuffer commandBuffer, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3398 WGPU_EXPORT void wgpuCommandBufferAddRef(WGPUCommandBuffer commandBuffer) WGPU_FUNCTION_ATTRIBUTE;
   3399 WGPU_EXPORT void wgpuCommandBufferRelease(WGPUCommandBuffer commandBuffer) WGPU_FUNCTION_ATTRIBUTE;
   3400 /** @} */
   3401 
   3402 
   3403 
   3404 /**
   3405  * \defgroup WGPUCommandEncoderMethods WGPUCommandEncoder methods
   3406  * \brief Functions whose first argument has type WGPUCommandEncoder.
   3407  *
   3408  * @{
   3409  */
   3410 WGPU_EXPORT WGPUComputePassEncoder wgpuCommandEncoderBeginComputePass(WGPUCommandEncoder commandEncoder, WGPU_NULLABLE WGPUComputePassDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3411 WGPU_EXPORT WGPURenderPassEncoder wgpuCommandEncoderBeginRenderPass(WGPUCommandEncoder commandEncoder, WGPURenderPassDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3412 WGPU_EXPORT void wgpuCommandEncoderClearBuffer(WGPUCommandEncoder commandEncoder, WGPUBuffer buffer, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   3413 WGPU_EXPORT void wgpuCommandEncoderCopyBufferToBuffer(WGPUCommandEncoder commandEncoder, WGPUBuffer source, uint64_t sourceOffset, WGPUBuffer destination, uint64_t destinationOffset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   3414 WGPU_EXPORT void wgpuCommandEncoderCopyBufferToTexture(WGPUCommandEncoder commandEncoder, WGPUTexelCopyBufferInfo const * source, WGPUTexelCopyTextureInfo const * destination, WGPUExtent3D const * copySize) WGPU_FUNCTION_ATTRIBUTE;
   3415 WGPU_EXPORT void wgpuCommandEncoderCopyTextureToBuffer(WGPUCommandEncoder commandEncoder, WGPUTexelCopyTextureInfo const * source, WGPUTexelCopyBufferInfo const * destination, WGPUExtent3D const * copySize) WGPU_FUNCTION_ATTRIBUTE;
   3416 WGPU_EXPORT void wgpuCommandEncoderCopyTextureToTexture(WGPUCommandEncoder commandEncoder, WGPUTexelCopyTextureInfo const * source, WGPUTexelCopyTextureInfo const * destination, WGPUExtent3D const * copySize) WGPU_FUNCTION_ATTRIBUTE;
   3417 WGPU_EXPORT WGPUCommandBuffer wgpuCommandEncoderFinish(WGPUCommandEncoder commandEncoder, WGPU_NULLABLE WGPUCommandBufferDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3418 WGPU_EXPORT void wgpuCommandEncoderInsertDebugMarker(WGPUCommandEncoder commandEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   3419 WGPU_EXPORT void wgpuCommandEncoderPopDebugGroup(WGPUCommandEncoder commandEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3420 WGPU_EXPORT void wgpuCommandEncoderPushDebugGroup(WGPUCommandEncoder commandEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   3421 WGPU_EXPORT void wgpuCommandEncoderResolveQuerySet(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t firstQuery, uint32_t queryCount, WGPUBuffer destination, uint64_t destinationOffset) WGPU_FUNCTION_ATTRIBUTE;
   3422 WGPU_EXPORT void wgpuCommandEncoderSetLabel(WGPUCommandEncoder commandEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3423 WGPU_EXPORT void wgpuCommandEncoderWriteTimestamp(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t queryIndex) WGPU_FUNCTION_ATTRIBUTE;
   3424 WGPU_EXPORT void wgpuCommandEncoderAddRef(WGPUCommandEncoder commandEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3425 WGPU_EXPORT void wgpuCommandEncoderRelease(WGPUCommandEncoder commandEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3426 /** @} */
   3427 
   3428 
   3429 
   3430 /**
   3431  * \defgroup WGPUComputePassEncoderMethods WGPUComputePassEncoder methods
   3432  * \brief Functions whose first argument has type WGPUComputePassEncoder.
   3433  *
   3434  * @{
   3435  */
   3436 WGPU_EXPORT void wgpuComputePassEncoderDispatchWorkgroups(WGPUComputePassEncoder computePassEncoder, uint32_t workgroupCountX, uint32_t workgroupCountY, uint32_t workgroupCountZ) WGPU_FUNCTION_ATTRIBUTE;
   3437 WGPU_EXPORT void wgpuComputePassEncoderDispatchWorkgroupsIndirect(WGPUComputePassEncoder computePassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   3438 WGPU_EXPORT void wgpuComputePassEncoderEnd(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3439 WGPU_EXPORT void wgpuComputePassEncoderInsertDebugMarker(WGPUComputePassEncoder computePassEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   3440 WGPU_EXPORT void wgpuComputePassEncoderPopDebugGroup(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3441 WGPU_EXPORT void wgpuComputePassEncoderPushDebugGroup(WGPUComputePassEncoder computePassEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   3442 WGPU_EXPORT void wgpuComputePassEncoderSetBindGroup(WGPUComputePassEncoder computePassEncoder, uint32_t groupIndex, WGPU_NULLABLE WGPUBindGroup group, size_t dynamicOffsetCount, uint32_t const * dynamicOffsets) WGPU_FUNCTION_ATTRIBUTE;
   3443 WGPU_EXPORT void wgpuComputePassEncoderSetLabel(WGPUComputePassEncoder computePassEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3444 WGPU_EXPORT void wgpuComputePassEncoderSetPipeline(WGPUComputePassEncoder computePassEncoder, WGPUComputePipeline pipeline) WGPU_FUNCTION_ATTRIBUTE;
   3445 WGPU_EXPORT void wgpuComputePassEncoderAddRef(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3446 WGPU_EXPORT void wgpuComputePassEncoderRelease(WGPUComputePassEncoder computePassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3447 /** @} */
   3448 
   3449 
   3450 
   3451 /**
   3452  * \defgroup WGPUComputePipelineMethods WGPUComputePipeline methods
   3453  * \brief Functions whose first argument has type WGPUComputePipeline.
   3454  *
   3455  * @{
   3456  */
   3457 WGPU_EXPORT WGPUBindGroupLayout wgpuComputePipelineGetBindGroupLayout(WGPUComputePipeline computePipeline, uint32_t groupIndex) WGPU_FUNCTION_ATTRIBUTE;
   3458 WGPU_EXPORT void wgpuComputePipelineSetLabel(WGPUComputePipeline computePipeline, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3459 WGPU_EXPORT void wgpuComputePipelineAddRef(WGPUComputePipeline computePipeline) WGPU_FUNCTION_ATTRIBUTE;
   3460 WGPU_EXPORT void wgpuComputePipelineRelease(WGPUComputePipeline computePipeline) WGPU_FUNCTION_ATTRIBUTE;
   3461 /** @} */
   3462 
   3463 
   3464 
   3465 /**
   3466  * \defgroup WGPUDeviceMethods WGPUDevice methods
   3467  * \brief Functions whose first argument has type WGPUDevice.
   3468  *
   3469  * @{
   3470  */
   3471 WGPU_EXPORT WGPUBindGroup wgpuDeviceCreateBindGroup(WGPUDevice device, WGPUBindGroupDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3472 WGPU_EXPORT WGPUBindGroupLayout wgpuDeviceCreateBindGroupLayout(WGPUDevice device, WGPUBindGroupLayoutDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3473 WGPU_EXPORT WGPUBuffer wgpuDeviceCreateBuffer(WGPUDevice device, WGPUBufferDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3474 WGPU_EXPORT WGPUCommandEncoder wgpuDeviceCreateCommandEncoder(WGPUDevice device, WGPU_NULLABLE WGPUCommandEncoderDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3475 WGPU_EXPORT WGPUComputePipeline wgpuDeviceCreateComputePipeline(WGPUDevice device, WGPUComputePipelineDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3476 WGPU_EXPORT WGPUFuture wgpuDeviceCreateComputePipelineAsync(WGPUDevice device, WGPUComputePipelineDescriptor const * descriptor, WGPUCreateComputePipelineAsyncCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3477 WGPU_EXPORT WGPUPipelineLayout wgpuDeviceCreatePipelineLayout(WGPUDevice device, WGPUPipelineLayoutDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3478 WGPU_EXPORT WGPUQuerySet wgpuDeviceCreateQuerySet(WGPUDevice device, WGPUQuerySetDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3479 WGPU_EXPORT WGPURenderBundleEncoder wgpuDeviceCreateRenderBundleEncoder(WGPUDevice device, WGPURenderBundleEncoderDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3480 WGPU_EXPORT WGPURenderPipeline wgpuDeviceCreateRenderPipeline(WGPUDevice device, WGPURenderPipelineDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3481 WGPU_EXPORT WGPUFuture wgpuDeviceCreateRenderPipelineAsync(WGPUDevice device, WGPURenderPipelineDescriptor const * descriptor, WGPUCreateRenderPipelineAsyncCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3482 WGPU_EXPORT WGPUSampler wgpuDeviceCreateSampler(WGPUDevice device, WGPU_NULLABLE WGPUSamplerDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3483 WGPU_EXPORT WGPUShaderModule wgpuDeviceCreateShaderModule(WGPUDevice device, WGPUShaderModuleDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3484 WGPU_EXPORT WGPUTexture wgpuDeviceCreateTexture(WGPUDevice device, WGPUTextureDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3485 WGPU_EXPORT void wgpuDeviceDestroy(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   3486 WGPU_EXPORT WGPUAdapterInfo wgpuDeviceGetAdapterInfo(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   3487 /**
   3488  * Get the list of @ref WGPUFeatureName values supported by the device.
   3489  *
   3490  * @param features
   3491  * This parameter is @ref ReturnedWithOwnership.
   3492  */
   3493 WGPU_EXPORT void wgpuDeviceGetFeatures(WGPUDevice device, WGPUSupportedFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
   3494 /**
   3495  * @returns
   3496  * Indicates if there was an @ref OutStructChainError.
   3497  */
   3498 WGPU_EXPORT WGPUStatus wgpuDeviceGetLimits(WGPUDevice device, WGPULimits * limits) WGPU_FUNCTION_ATTRIBUTE;
   3499 /**
   3500  * @returns
   3501  * The @ref WGPUFuture for the device-lost event of the device.
   3502  */
   3503 WGPU_EXPORT WGPUFuture wgpuDeviceGetLostFuture(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   3504 WGPU_EXPORT WGPUQueue wgpuDeviceGetQueue(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   3505 WGPU_EXPORT WGPUBool wgpuDeviceHasFeature(WGPUDevice device, WGPUFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
   3506 WGPU_EXPORT WGPUFuture wgpuDevicePopErrorScope(WGPUDevice device, WGPUPopErrorScopeCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3507 WGPU_EXPORT void wgpuDevicePushErrorScope(WGPUDevice device, WGPUErrorFilter filter) WGPU_FUNCTION_ATTRIBUTE;
   3508 WGPU_EXPORT void wgpuDeviceSetLabel(WGPUDevice device, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3509 WGPU_EXPORT void wgpuDeviceAddRef(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   3510 WGPU_EXPORT void wgpuDeviceRelease(WGPUDevice device) WGPU_FUNCTION_ATTRIBUTE;
   3511 /** @} */
   3512 
   3513 
   3514 
   3515 /**
   3516  * \defgroup WGPUInstanceMethods WGPUInstance methods
   3517  * \brief Functions whose first argument has type WGPUInstance.
   3518  *
   3519  * @{
   3520  */
   3521 /**
   3522  * Creates a @ref WGPUSurface, see @ref Surface-Creation for more details.
   3523  *
   3524  * @param descriptor
   3525  * The description of the @ref WGPUSurface to create.
   3526  *
   3527  * @returns
   3528  * A new @ref WGPUSurface for this descriptor (or an error @ref WGPUSurface).
   3529  */
   3530 WGPU_EXPORT WGPUSurface wgpuInstanceCreateSurface(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3531 /**
   3532  * Get the list of @ref WGPUWGSLLanguageFeatureName values supported by the instance.
   3533  */
   3534 WGPU_EXPORT WGPUStatus wgpuInstanceGetWGSLLanguageFeatures(WGPUInstance instance, WGPUSupportedWGSLLanguageFeatures * features) WGPU_FUNCTION_ATTRIBUTE;
   3535 WGPU_EXPORT WGPUBool wgpuInstanceHasWGSLLanguageFeature(WGPUInstance instance, WGPUWGSLLanguageFeatureName feature) WGPU_FUNCTION_ATTRIBUTE;
   3536 /**
   3537  * Processes asynchronous events on this `WGPUInstance`, calling any callbacks for asynchronous operations created with `::WGPUCallbackMode_AllowProcessEvents`.
   3538  *
   3539  * See @ref Process-Events for more information.
   3540  */
   3541 WGPU_EXPORT void wgpuInstanceProcessEvents(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
   3542 WGPU_EXPORT WGPUFuture wgpuInstanceRequestAdapter(WGPUInstance instance, WGPU_NULLABLE WGPURequestAdapterOptions const * options, WGPURequestAdapterCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3543 /**
   3544  * Wait for at least one WGPUFuture in `futures` to complete, and call callbacks of the respective completed asynchronous operations.
   3545  *
   3546  * See @ref Wait-Any for more information.
   3547  */
   3548 WGPU_EXPORT WGPUWaitStatus wgpuInstanceWaitAny(WGPUInstance instance, size_t futureCount, WGPU_NULLABLE WGPUFutureWaitInfo * futures, uint64_t timeoutNS) WGPU_FUNCTION_ATTRIBUTE;
   3549 WGPU_EXPORT void wgpuInstanceAddRef(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
   3550 WGPU_EXPORT void wgpuInstanceRelease(WGPUInstance instance) WGPU_FUNCTION_ATTRIBUTE;
   3551 /** @} */
   3552 
   3553 
   3554 
   3555 /**
   3556  * \defgroup WGPUPipelineLayoutMethods WGPUPipelineLayout methods
   3557  * \brief Functions whose first argument has type WGPUPipelineLayout.
   3558  *
   3559  * @{
   3560  */
   3561 WGPU_EXPORT void wgpuPipelineLayoutSetLabel(WGPUPipelineLayout pipelineLayout, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3562 WGPU_EXPORT void wgpuPipelineLayoutAddRef(WGPUPipelineLayout pipelineLayout) WGPU_FUNCTION_ATTRIBUTE;
   3563 WGPU_EXPORT void wgpuPipelineLayoutRelease(WGPUPipelineLayout pipelineLayout) WGPU_FUNCTION_ATTRIBUTE;
   3564 /** @} */
   3565 
   3566 
   3567 
   3568 /**
   3569  * \defgroup WGPUQuerySetMethods WGPUQuerySet methods
   3570  * \brief Functions whose first argument has type WGPUQuerySet.
   3571  *
   3572  * @{
   3573  */
   3574 WGPU_EXPORT void wgpuQuerySetDestroy(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   3575 WGPU_EXPORT uint32_t wgpuQuerySetGetCount(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   3576 WGPU_EXPORT WGPUQueryType wgpuQuerySetGetType(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   3577 WGPU_EXPORT void wgpuQuerySetSetLabel(WGPUQuerySet querySet, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3578 WGPU_EXPORT void wgpuQuerySetAddRef(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   3579 WGPU_EXPORT void wgpuQuerySetRelease(WGPUQuerySet querySet) WGPU_FUNCTION_ATTRIBUTE;
   3580 /** @} */
   3581 
   3582 
   3583 
   3584 /**
   3585  * \defgroup WGPUQueueMethods WGPUQueue methods
   3586  * \brief Functions whose first argument has type WGPUQueue.
   3587  *
   3588  * @{
   3589  */
   3590 WGPU_EXPORT WGPUFuture wgpuQueueOnSubmittedWorkDone(WGPUQueue queue, WGPUQueueWorkDoneCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3591 WGPU_EXPORT void wgpuQueueSetLabel(WGPUQueue queue, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3592 WGPU_EXPORT void wgpuQueueSubmit(WGPUQueue queue, size_t commandCount, WGPUCommandBuffer const * commands) WGPU_FUNCTION_ATTRIBUTE;
   3593 /**
   3594  * Produces a @ref DeviceError both content-timeline (`size` alignment) and device-timeline
   3595  * errors defined by the WebGPU specification.
   3596  */
   3597 WGPU_EXPORT void wgpuQueueWriteBuffer(WGPUQueue queue, WGPUBuffer buffer, uint64_t bufferOffset, void const * data, size_t size) WGPU_FUNCTION_ATTRIBUTE;
   3598 WGPU_EXPORT void wgpuQueueWriteTexture(WGPUQueue queue, WGPUTexelCopyTextureInfo const * destination, void const * data, size_t dataSize, WGPUTexelCopyBufferLayout const * dataLayout, WGPUExtent3D const * writeSize) WGPU_FUNCTION_ATTRIBUTE;
   3599 WGPU_EXPORT void wgpuQueueAddRef(WGPUQueue queue) WGPU_FUNCTION_ATTRIBUTE;
   3600 WGPU_EXPORT void wgpuQueueRelease(WGPUQueue queue) WGPU_FUNCTION_ATTRIBUTE;
   3601 /** @} */
   3602 
   3603 
   3604 
   3605 /**
   3606  * \defgroup WGPURenderBundleMethods WGPURenderBundle methods
   3607  * \brief Functions whose first argument has type WGPURenderBundle.
   3608  *
   3609  * @{
   3610  */
   3611 WGPU_EXPORT void wgpuRenderBundleSetLabel(WGPURenderBundle renderBundle, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3612 WGPU_EXPORT void wgpuRenderBundleAddRef(WGPURenderBundle renderBundle) WGPU_FUNCTION_ATTRIBUTE;
   3613 WGPU_EXPORT void wgpuRenderBundleRelease(WGPURenderBundle renderBundle) WGPU_FUNCTION_ATTRIBUTE;
   3614 /** @} */
   3615 
   3616 
   3617 
   3618 /**
   3619  * \defgroup WGPURenderBundleEncoderMethods WGPURenderBundleEncoder methods
   3620  * \brief Functions whose first argument has type WGPURenderBundleEncoder.
   3621  *
   3622  * @{
   3623  */
   3624 WGPU_EXPORT void wgpuRenderBundleEncoderDraw(WGPURenderBundleEncoder renderBundleEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   3625 WGPU_EXPORT void wgpuRenderBundleEncoderDrawIndexed(WGPURenderBundleEncoder renderBundleEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   3626 WGPU_EXPORT void wgpuRenderBundleEncoderDrawIndexedIndirect(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   3627 WGPU_EXPORT void wgpuRenderBundleEncoderDrawIndirect(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   3628 WGPU_EXPORT WGPURenderBundle wgpuRenderBundleEncoderFinish(WGPURenderBundleEncoder renderBundleEncoder, WGPU_NULLABLE WGPURenderBundleDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3629 WGPU_EXPORT void wgpuRenderBundleEncoderInsertDebugMarker(WGPURenderBundleEncoder renderBundleEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   3630 WGPU_EXPORT void wgpuRenderBundleEncoderPopDebugGroup(WGPURenderBundleEncoder renderBundleEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3631 WGPU_EXPORT void wgpuRenderBundleEncoderPushDebugGroup(WGPURenderBundleEncoder renderBundleEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   3632 WGPU_EXPORT void wgpuRenderBundleEncoderSetBindGroup(WGPURenderBundleEncoder renderBundleEncoder, uint32_t groupIndex, WGPU_NULLABLE WGPUBindGroup group, size_t dynamicOffsetCount, uint32_t const * dynamicOffsets) WGPU_FUNCTION_ATTRIBUTE;
   3633 WGPU_EXPORT void wgpuRenderBundleEncoderSetIndexBuffer(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer buffer, WGPUIndexFormat format, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   3634 WGPU_EXPORT void wgpuRenderBundleEncoderSetLabel(WGPURenderBundleEncoder renderBundleEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3635 WGPU_EXPORT void wgpuRenderBundleEncoderSetPipeline(WGPURenderBundleEncoder renderBundleEncoder, WGPURenderPipeline pipeline) WGPU_FUNCTION_ATTRIBUTE;
   3636 WGPU_EXPORT void wgpuRenderBundleEncoderSetVertexBuffer(WGPURenderBundleEncoder renderBundleEncoder, uint32_t slot, WGPU_NULLABLE WGPUBuffer buffer, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   3637 WGPU_EXPORT void wgpuRenderBundleEncoderAddRef(WGPURenderBundleEncoder renderBundleEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3638 WGPU_EXPORT void wgpuRenderBundleEncoderRelease(WGPURenderBundleEncoder renderBundleEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3639 /** @} */
   3640 
   3641 
   3642 
   3643 /**
   3644  * \defgroup WGPURenderPassEncoderMethods WGPURenderPassEncoder methods
   3645  * \brief Functions whose first argument has type WGPURenderPassEncoder.
   3646  *
   3647  * @{
   3648  */
   3649 WGPU_EXPORT void wgpuRenderPassEncoderBeginOcclusionQuery(WGPURenderPassEncoder renderPassEncoder, uint32_t queryIndex) WGPU_FUNCTION_ATTRIBUTE;
   3650 WGPU_EXPORT void wgpuRenderPassEncoderDraw(WGPURenderPassEncoder renderPassEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   3651 WGPU_EXPORT void wgpuRenderPassEncoderDrawIndexed(WGPURenderPassEncoder renderPassEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance) WGPU_FUNCTION_ATTRIBUTE;
   3652 WGPU_EXPORT void wgpuRenderPassEncoderDrawIndexedIndirect(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   3653 WGPU_EXPORT void wgpuRenderPassEncoderDrawIndirect(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset) WGPU_FUNCTION_ATTRIBUTE;
   3654 WGPU_EXPORT void wgpuRenderPassEncoderEnd(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3655 WGPU_EXPORT void wgpuRenderPassEncoderEndOcclusionQuery(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3656 WGPU_EXPORT void wgpuRenderPassEncoderExecuteBundles(WGPURenderPassEncoder renderPassEncoder, size_t bundleCount, WGPURenderBundle const * bundles) WGPU_FUNCTION_ATTRIBUTE;
   3657 WGPU_EXPORT void wgpuRenderPassEncoderInsertDebugMarker(WGPURenderPassEncoder renderPassEncoder, WGPUStringView markerLabel) WGPU_FUNCTION_ATTRIBUTE;
   3658 WGPU_EXPORT void wgpuRenderPassEncoderPopDebugGroup(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3659 WGPU_EXPORT void wgpuRenderPassEncoderPushDebugGroup(WGPURenderPassEncoder renderPassEncoder, WGPUStringView groupLabel) WGPU_FUNCTION_ATTRIBUTE;
   3660 WGPU_EXPORT void wgpuRenderPassEncoderSetBindGroup(WGPURenderPassEncoder renderPassEncoder, uint32_t groupIndex, WGPU_NULLABLE WGPUBindGroup group, size_t dynamicOffsetCount, uint32_t const * dynamicOffsets) WGPU_FUNCTION_ATTRIBUTE;
   3661 WGPU_EXPORT void wgpuRenderPassEncoderSetBlendConstant(WGPURenderPassEncoder renderPassEncoder, WGPUColor const * color) WGPU_FUNCTION_ATTRIBUTE;
   3662 WGPU_EXPORT void wgpuRenderPassEncoderSetIndexBuffer(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer buffer, WGPUIndexFormat format, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   3663 WGPU_EXPORT void wgpuRenderPassEncoderSetLabel(WGPURenderPassEncoder renderPassEncoder, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3664 WGPU_EXPORT void wgpuRenderPassEncoderSetPipeline(WGPURenderPassEncoder renderPassEncoder, WGPURenderPipeline pipeline) WGPU_FUNCTION_ATTRIBUTE;
   3665 WGPU_EXPORT void wgpuRenderPassEncoderSetScissorRect(WGPURenderPassEncoder renderPassEncoder, uint32_t x, uint32_t y, uint32_t width, uint32_t height) WGPU_FUNCTION_ATTRIBUTE;
   3666 WGPU_EXPORT void wgpuRenderPassEncoderSetStencilReference(WGPURenderPassEncoder renderPassEncoder, uint32_t reference) WGPU_FUNCTION_ATTRIBUTE;
   3667 WGPU_EXPORT void wgpuRenderPassEncoderSetVertexBuffer(WGPURenderPassEncoder renderPassEncoder, uint32_t slot, WGPU_NULLABLE WGPUBuffer buffer, uint64_t offset, uint64_t size) WGPU_FUNCTION_ATTRIBUTE;
   3668 WGPU_EXPORT void wgpuRenderPassEncoderSetViewport(WGPURenderPassEncoder renderPassEncoder, float x, float y, float width, float height, float minDepth, float maxDepth) WGPU_FUNCTION_ATTRIBUTE;
   3669 WGPU_EXPORT void wgpuRenderPassEncoderAddRef(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3670 WGPU_EXPORT void wgpuRenderPassEncoderRelease(WGPURenderPassEncoder renderPassEncoder) WGPU_FUNCTION_ATTRIBUTE;
   3671 /** @} */
   3672 
   3673 
   3674 
   3675 /**
   3676  * \defgroup WGPURenderPipelineMethods WGPURenderPipeline methods
   3677  * \brief Functions whose first argument has type WGPURenderPipeline.
   3678  *
   3679  * @{
   3680  */
   3681 WGPU_EXPORT WGPUBindGroupLayout wgpuRenderPipelineGetBindGroupLayout(WGPURenderPipeline renderPipeline, uint32_t groupIndex) WGPU_FUNCTION_ATTRIBUTE;
   3682 WGPU_EXPORT void wgpuRenderPipelineSetLabel(WGPURenderPipeline renderPipeline, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3683 WGPU_EXPORT void wgpuRenderPipelineAddRef(WGPURenderPipeline renderPipeline) WGPU_FUNCTION_ATTRIBUTE;
   3684 WGPU_EXPORT void wgpuRenderPipelineRelease(WGPURenderPipeline renderPipeline) WGPU_FUNCTION_ATTRIBUTE;
   3685 /** @} */
   3686 
   3687 
   3688 
   3689 /**
   3690  * \defgroup WGPUSamplerMethods WGPUSampler methods
   3691  * \brief Functions whose first argument has type WGPUSampler.
   3692  *
   3693  * @{
   3694  */
   3695 WGPU_EXPORT void wgpuSamplerSetLabel(WGPUSampler sampler, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3696 WGPU_EXPORT void wgpuSamplerAddRef(WGPUSampler sampler) WGPU_FUNCTION_ATTRIBUTE;
   3697 WGPU_EXPORT void wgpuSamplerRelease(WGPUSampler sampler) WGPU_FUNCTION_ATTRIBUTE;
   3698 /** @} */
   3699 
   3700 
   3701 
   3702 /**
   3703  * \defgroup WGPUShaderModuleMethods WGPUShaderModule methods
   3704  * \brief Functions whose first argument has type WGPUShaderModule.
   3705  *
   3706  * @{
   3707  */
   3708 WGPU_EXPORT WGPUFuture wgpuShaderModuleGetCompilationInfo(WGPUShaderModule shaderModule, WGPUCompilationInfoCallbackInfo callbackInfo) WGPU_FUNCTION_ATTRIBUTE;
   3709 WGPU_EXPORT void wgpuShaderModuleSetLabel(WGPUShaderModule shaderModule, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3710 WGPU_EXPORT void wgpuShaderModuleAddRef(WGPUShaderModule shaderModule) WGPU_FUNCTION_ATTRIBUTE;
   3711 WGPU_EXPORT void wgpuShaderModuleRelease(WGPUShaderModule shaderModule) WGPU_FUNCTION_ATTRIBUTE;
   3712 /** @} */
   3713 
   3714 
   3715 
   3716 /**
   3717  * \defgroup WGPUSupportedFeaturesMethods WGPUSupportedFeatures methods
   3718  * \brief Functions whose first argument has type WGPUSupportedFeatures.
   3719  *
   3720  * @{
   3721  */
   3722 /**
   3723  * Frees array members of WGPUSupportedFeatures which were allocated by the API.
   3724  */
   3725 WGPU_EXPORT void wgpuSupportedFeaturesFreeMembers(WGPUSupportedFeatures supportedFeatures) WGPU_FUNCTION_ATTRIBUTE;
   3726 /** @} */
   3727 
   3728 
   3729 
   3730 /**
   3731  * \defgroup WGPUSupportedWGSLLanguageFeaturesMethods WGPUSupportedWGSLLanguageFeatures methods
   3732  * \brief Functions whose first argument has type WGPUSupportedWGSLLanguageFeatures.
   3733  *
   3734  * @{
   3735  */
   3736 /**
   3737  * Frees array members of WGPUSupportedWGSLLanguageFeatures which were allocated by the API.
   3738  */
   3739 WGPU_EXPORT void wgpuSupportedWGSLLanguageFeaturesFreeMembers(WGPUSupportedWGSLLanguageFeatures supportedWGSLLanguageFeatures) WGPU_FUNCTION_ATTRIBUTE;
   3740 /** @} */
   3741 
   3742 
   3743 
   3744 /**
   3745  * \defgroup WGPUSurfaceMethods WGPUSurface methods
   3746  * \brief Functions whose first argument has type WGPUSurface.
   3747  *
   3748  * @{
   3749  */
   3750 /**
   3751  * Configures parameters for rendering to `surface`.
   3752  * Produces a @ref DeviceError for all content-timeline errors defined by the WebGPU specification.
   3753  *
   3754  * See @ref Surface-Configuration for more details.
   3755  *
   3756  * @param config
   3757  * The new configuration to use.
   3758  */
   3759 WGPU_EXPORT void wgpuSurfaceConfigure(WGPUSurface surface, WGPUSurfaceConfiguration const * config) WGPU_FUNCTION_ATTRIBUTE;
   3760 /**
   3761  * Provides information on how `adapter` is able to use `surface`.
   3762  * See @ref Surface-Capabilities for more details.
   3763  *
   3764  * @param adapter
   3765  * The @ref WGPUAdapter to get capabilities for presenting to this @ref WGPUSurface.
   3766  *
   3767  * @param capabilities
   3768  * The structure to fill capabilities in.
   3769  * It may contain memory allocations so `::wgpuSurfaceCapabilitiesFreeMembers` must be called to avoid memory leaks.
   3770  * This parameter is @ref ReturnedWithOwnership.
   3771  *
   3772  * @returns
   3773  * Indicates if there was an @ref OutStructChainError.
   3774  */
   3775 WGPU_EXPORT WGPUStatus wgpuSurfaceGetCapabilities(WGPUSurface surface, WGPUAdapter adapter, WGPUSurfaceCapabilities * capabilities) WGPU_FUNCTION_ATTRIBUTE;
   3776 /**
   3777  * Returns the @ref WGPUTexture to render to `surface` this frame along with metadata on the frame.
   3778  * Returns `NULL` and @ref WGPUSurfaceGetCurrentTextureStatus_Error if the surface is not configured.
   3779  *
   3780  * See @ref Surface-Presenting for more details.
   3781  *
   3782  * @param surfaceTexture
   3783  * The structure to fill the @ref WGPUTexture and metadata in.
   3784  */
   3785 WGPU_EXPORT void wgpuSurfaceGetCurrentTexture(WGPUSurface surface, WGPUSurfaceTexture * surfaceTexture) WGPU_FUNCTION_ATTRIBUTE;
   3786 /**
   3787  * Shows `surface`'s current texture to the user.
   3788  * See @ref Surface-Presenting for more details.
   3789  *
   3790  * @returns
   3791  * Returns @ref WGPUStatus_Error if the surface doesn't have a current texture.
   3792  */
   3793 WGPU_EXPORT WGPUStatus wgpuSurfacePresent(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3794 /**
   3795  * Modifies the label used to refer to `surface`.
   3796  *
   3797  * @param label
   3798  * The new label.
   3799  */
   3800 WGPU_EXPORT void wgpuSurfaceSetLabel(WGPUSurface surface, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3801 /**
   3802  * Removes the configuration for `surface`.
   3803  * See @ref Surface-Configuration for more details.
   3804  */
   3805 WGPU_EXPORT void wgpuSurfaceUnconfigure(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3806 WGPU_EXPORT void wgpuSurfaceAddRef(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3807 WGPU_EXPORT void wgpuSurfaceRelease(WGPUSurface surface) WGPU_FUNCTION_ATTRIBUTE;
   3808 /** @} */
   3809 
   3810 
   3811 
   3812 /**
   3813  * \defgroup WGPUSurfaceCapabilitiesMethods WGPUSurfaceCapabilities methods
   3814  * \brief Functions whose first argument has type WGPUSurfaceCapabilities.
   3815  *
   3816  * @{
   3817  */
   3818 /**
   3819  * Frees array members of WGPUSurfaceCapabilities which were allocated by the API.
   3820  */
   3821 WGPU_EXPORT void wgpuSurfaceCapabilitiesFreeMembers(WGPUSurfaceCapabilities surfaceCapabilities) WGPU_FUNCTION_ATTRIBUTE;
   3822 /** @} */
   3823 
   3824 
   3825 
   3826 /**
   3827  * \defgroup WGPUTextureMethods WGPUTexture methods
   3828  * \brief Functions whose first argument has type WGPUTexture.
   3829  *
   3830  * @{
   3831  */
   3832 WGPU_EXPORT WGPUTextureView wgpuTextureCreateView(WGPUTexture texture, WGPU_NULLABLE WGPUTextureViewDescriptor const * descriptor) WGPU_FUNCTION_ATTRIBUTE;
   3833 WGPU_EXPORT void wgpuTextureDestroy(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3834 WGPU_EXPORT uint32_t wgpuTextureGetDepthOrArrayLayers(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3835 WGPU_EXPORT WGPUTextureDimension wgpuTextureGetDimension(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3836 WGPU_EXPORT WGPUTextureFormat wgpuTextureGetFormat(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3837 WGPU_EXPORT uint32_t wgpuTextureGetHeight(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3838 WGPU_EXPORT uint32_t wgpuTextureGetMipLevelCount(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3839 WGPU_EXPORT uint32_t wgpuTextureGetSampleCount(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3840 WGPU_EXPORT WGPUTextureUsage wgpuTextureGetUsage(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3841 WGPU_EXPORT uint32_t wgpuTextureGetWidth(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3842 WGPU_EXPORT void wgpuTextureSetLabel(WGPUTexture texture, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3843 WGPU_EXPORT void wgpuTextureAddRef(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3844 WGPU_EXPORT void wgpuTextureRelease(WGPUTexture texture) WGPU_FUNCTION_ATTRIBUTE;
   3845 /** @} */
   3846 
   3847 
   3848 
   3849 /**
   3850  * \defgroup WGPUTextureViewMethods WGPUTextureView methods
   3851  * \brief Functions whose first argument has type WGPUTextureView.
   3852  *
   3853  * @{
   3854  */
   3855 WGPU_EXPORT void wgpuTextureViewSetLabel(WGPUTextureView textureView, WGPUStringView label) WGPU_FUNCTION_ATTRIBUTE;
   3856 WGPU_EXPORT void wgpuTextureViewAddRef(WGPUTextureView textureView) WGPU_FUNCTION_ATTRIBUTE;
   3857 WGPU_EXPORT void wgpuTextureViewRelease(WGPUTextureView textureView) WGPU_FUNCTION_ATTRIBUTE;
   3858 /** @} */
   3859 
   3860 
   3861 /** @} */
   3862 
   3863 #endif  // !defined(WGPU_SKIP_DECLARATIONS)
   3864 
   3865 #ifdef __cplusplus
   3866 } // extern "C"
   3867 #endif
   3868 
   3869 #endif // WEBGPU_H_