yaml-z

git clone git://git.electrosoup.com/yaml-z
Log | Files | Refs | Submodules

webgpu.yml (117385B)


      1 copyright: |
      2   Copyright 2019-2023 WebGPU-Native developers
      3 
      4   SPDX-License-Identifier: BSD-3-Clause
      5 name: webgpu
      6 enum_prefix: '0x0000'
      7 constants:
      8   - name: array_layer_count_undefined
      9     value: uint32_max
     10     doc: |
     11       TODO
     12   - name: copy_stride_undefined
     13     value: uint32_max
     14     doc: |
     15       TODO
     16   - name: depth_slice_undefined
     17     value: uint32_max
     18     doc: |
     19       TODO
     20   - name: limit_u32_undefined
     21     value: uint32_max
     22     doc: |
     23       TODO
     24   - name: limit_u64_undefined
     25     value: uint64_max
     26     doc: |
     27       TODO
     28   - name: mip_level_count_undefined
     29     value: uint32_max
     30     doc: |
     31       TODO
     32   - name: query_set_index_undefined
     33     value: uint32_max
     34     doc: |
     35       TODO
     36   - name: whole_map_size
     37     value: usize_max
     38     doc: |
     39       TODO
     40   - name: whole_size
     41     value: uint64_max
     42     doc: |
     43       TODO
     44 typedefs: []
     45 enums:
     46   - name: adapter_type
     47     doc: |
     48       TODO
     49     entries:
     50       - null
     51       - name: discrete_GPU
     52         doc: |
     53           TODO
     54       - name: integrated_GPU
     55         doc: |
     56           TODO
     57       - name: CPU
     58         doc: |
     59           TODO
     60       - name: unknown
     61         doc: |
     62           TODO
     63   - name: address_mode
     64     doc: |
     65       TODO
     66     entries:
     67       - name: undefined
     68         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
     69       - name: clamp_to_edge
     70         doc: |
     71           TODO
     72       - name: repeat
     73         doc: |
     74           TODO
     75       - name: mirror_repeat
     76         doc: |
     77           TODO
     78   - name: backend_type
     79     doc: |
     80       TODO
     81     entries:
     82       - name: undefined
     83         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
     84       - name: "null"
     85         doc: |
     86           TODO
     87       - name: WebGPU
     88         doc: |
     89           TODO
     90       - name: D3D11
     91         doc: |
     92           TODO
     93       - name: D3D12
     94         doc: |
     95           TODO
     96       - name: metal
     97         doc: |
     98           TODO
     99       - name: vulkan
    100         doc: |
    101           TODO
    102       - name: openGL
    103         doc: |
    104           TODO
    105       - name: openGLES
    106         doc: |
    107           TODO
    108   - name: blend_factor
    109     doc: |
    110       TODO
    111     entries:
    112       - name: undefined
    113         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    114       - name: zero
    115         doc: |
    116           TODO
    117       - name: one
    118         doc: |
    119           TODO
    120       - name: src
    121         doc: |
    122           TODO
    123       - name: one_minus_src
    124         doc: |
    125           TODO
    126       - name: src_alpha
    127         doc: |
    128           TODO
    129       - name: one_minus_src_alpha
    130         doc: |
    131           TODO
    132       - name: dst
    133         doc: |
    134           TODO
    135       - name: one_minus_dst
    136         doc: |
    137           TODO
    138       - name: dst_alpha
    139         doc: |
    140           TODO
    141       - name: one_minus_dst_alpha
    142         doc: |
    143           TODO
    144       - name: src_alpha_saturated
    145         doc: |
    146           TODO
    147       - name: constant
    148         doc: |
    149           TODO
    150       - name: one_minus_constant
    151         doc: |
    152           TODO
    153       - name: src1
    154         doc: |
    155           TODO
    156       - name: one_minus_src1
    157         doc: |
    158           TODO
    159       - name: src1_alpha
    160         doc: |
    161           TODO
    162       - name: one_minus_src1_alpha
    163         doc: |
    164           TODO
    165   - name: blend_operation
    166     doc: |
    167       TODO
    168     entries:
    169       - name: undefined
    170         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    171       - name: add
    172         doc: |
    173           TODO
    174       - name: subtract
    175         doc: |
    176           TODO
    177       - name: reverse_subtract
    178         doc: |
    179           TODO
    180       - name: min
    181         doc: |
    182           TODO
    183       - name: max
    184         doc: |
    185           TODO
    186   - name: buffer_binding_type
    187     doc: |
    188       TODO
    189     entries:
    190       - name: binding_not_used
    191         doc: |
    192           Indicates that this @ref WGPUBufferBindingLayout member of
    193           its parent @ref WGPUBindGroupLayoutEntry is not used.
    194           (See also @ref SentinelValues.)
    195       - name: undefined
    196         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    197       - name: uniform
    198         doc: |
    199           TODO
    200       - name: storage
    201         doc: |
    202           TODO
    203       - name: read_only_storage
    204         doc: |
    205           TODO
    206   - name: buffer_map_state
    207     doc: |
    208       TODO
    209     entries:
    210       - null
    211       - name: unmapped
    212         doc: |
    213           TODO
    214       - name: pending
    215         doc: |
    216           TODO
    217       - name: mapped
    218         doc: |
    219           TODO
    220   - name: callback_mode
    221     doc: The callback mode controls how a callback for an asynchronous operation may be fired. See @ref Asynchronous-Operations for how these are used.
    222     entries:
    223       - null
    224       - name: wait_any_only
    225         doc: |
    226           Callbacks created with `WGPUCallbackMode_WaitAnyOnly`:
    227           - fire when the asynchronous operation's future is passed to a call to `::wgpuInstanceWaitAny`
    228             AND the operation has already completed or it completes inside the call to `::wgpuInstanceWaitAny`.
    229       - name: allow_process_events
    230         doc: |
    231           Callbacks created with `WGPUCallbackMode_AllowProcessEvents`:
    232           - fire for the same reasons as callbacks created with `WGPUCallbackMode_WaitAnyOnly`
    233           - fire inside a call to `::wgpuInstanceProcessEvents` if the asynchronous operation is complete.
    234       - name: allow_spontaneous
    235         doc: |
    236           Callbacks created with `WGPUCallbackMode_AllowSpontaneous`:
    237           - fire for the same reasons as callbacks created with `WGPUCallbackMode_AllowProcessEvents`
    238           - **may** fire spontaneously on an arbitrary or application thread, when the WebGPU implementations discovers that the asynchronous operation is complete.
    239 
    240             Implementations _should_ fire spontaneous callbacks as soon as possible.
    241 
    242           @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`.
    243   - name: compare_function
    244     doc: |
    245       TODO
    246     entries:
    247       - name: undefined
    248         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    249       - name: never
    250         doc: |
    251           TODO
    252       - name: less
    253         doc: |
    254           TODO
    255       - name: equal
    256         doc: |
    257           TODO
    258       - name: less_equal
    259         doc: |
    260           TODO
    261       - name: greater
    262         doc: |
    263           TODO
    264       - name: not_equal
    265         doc: |
    266           TODO
    267       - name: greater_equal
    268         doc: |
    269           TODO
    270       - name: always
    271         doc: |
    272           TODO
    273   - name: compilation_info_request_status
    274     doc: |
    275       TODO
    276     entries:
    277       - null
    278       - name: success
    279         doc: |
    280           TODO
    281       - name: instance_dropped
    282         doc: |
    283           TODO
    284       - name: error
    285         doc: |
    286           TODO
    287       - name: unknown
    288         doc: |
    289           TODO
    290   - name: compilation_message_type
    291     doc: |
    292       TODO
    293     entries:
    294       - null
    295       - name: error
    296         doc: |
    297           TODO
    298       - name: warning
    299         doc: |
    300           TODO
    301       - name: info
    302         doc: |
    303           TODO
    304   - name: composite_alpha_mode
    305     doc: Describes how frames are composited with other contents on the screen when `::wgpuSurfacePresent` is called.
    306     entries:
    307       - name: auto
    308         doc: Lets the WebGPU implementation choose the best mode (supported, and with the best performance) between @ref WGPUCompositeAlphaMode_Opaque or @ref WGPUCompositeAlphaMode_Inherit.
    309       - name: opaque
    310         doc: The alpha component of the image is ignored and teated as if it is always 1.0.
    311       - name: premultiplied
    312         doc: 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.
    313       - name: unpremultiplied
    314         doc: 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.
    315       - name: inherit
    316         doc: 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).
    317   - name: create_pipeline_async_status
    318     doc: |
    319       TODO
    320     entries:
    321       - null
    322       - name: success
    323         doc: |
    324           TODO
    325       - name: instance_dropped
    326         doc: |
    327           TODO
    328       - name: validation_error
    329         doc: |
    330           TODO
    331       - name: internal_error
    332         doc: |
    333           TODO
    334       - name: unknown
    335         doc: |
    336           TODO
    337   - name: cull_mode
    338     doc: |
    339       TODO
    340     entries:
    341       - name: undefined
    342         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    343       - name: none
    344         doc: |
    345           TODO
    346       - name: front
    347         doc: |
    348           TODO
    349       - name: back
    350         doc: |
    351           TODO
    352   - name: device_lost_reason
    353     doc: |
    354       TODO
    355     entries:
    356       - null
    357       - name: unknown
    358         doc: |
    359           TODO
    360       - name: destroyed
    361         doc: |
    362           TODO
    363       - name: instance_dropped
    364         doc: |
    365           TODO
    366       - name: failed_creation
    367         doc: |
    368           TODO
    369   - name: error_filter
    370     doc: |
    371       TODO
    372     entries:
    373       - null
    374       - name: validation
    375         doc: |
    376           TODO
    377       - name: out_of_memory
    378         doc: |
    379           TODO
    380       - name: internal
    381         doc: |
    382           TODO
    383   - name: error_type
    384     doc: |
    385       TODO
    386     entries:
    387       - null
    388       - name: no_error
    389         doc: |
    390           TODO
    391       - name: validation
    392         doc: |
    393           TODO
    394       - name: out_of_memory
    395         doc: |
    396           TODO
    397       - name: internal
    398         doc: |
    399           TODO
    400       - name: unknown
    401         doc: |
    402           TODO
    403   - name: feature_level
    404     doc: |
    405       See @ref WGPURequestAdapterOptions::featureLevel.
    406     entries:
    407       - null
    408       - name: compatibility
    409         doc: |
    410           "Compatibility" profile which can be supported on OpenGL ES 3.1.
    411       - name: core
    412         doc: |
    413           "Core" profile which can be supported on Vulkan/Metal/D3D12.
    414   - name: feature_name
    415     doc: |
    416       TODO
    417     entries:
    418       - name: undefined
    419         doc: |
    420           TODO
    421       - name: depth_clip_control
    422         doc: |
    423           TODO
    424       - name: depth32_float_stencil8
    425         doc: |
    426           TODO
    427       - name: timestamp_query
    428         doc: |
    429           TODO
    430       - name: texture_compression_BC
    431         doc: |
    432           TODO
    433       - name: texture_compression_BC_sliced_3D
    434         doc: |
    435           TODO
    436       - name: texture_compression_ETC2
    437         doc: |
    438           TODO
    439       - name: texture_compression_ASTC
    440         doc: |
    441           TODO
    442       - name: texture_compression_ASTC_sliced_3D
    443         doc: |
    444           TODO
    445       - name: indirect_first_instance
    446         doc: |
    447           TODO
    448       - name: shader_f16
    449         doc: |
    450           TODO
    451       - name: RG11B10_ufloat_renderable
    452         doc: |
    453           TODO
    454       - name: BGRA8_unorm_storage
    455         doc: |
    456           TODO
    457       - name: float32_filterable
    458         doc: |
    459           TODO
    460       - name: float32_blendable
    461         doc: |
    462           TODO
    463       - name: clip_distances
    464         doc: |
    465           TODO
    466       - name: dual_source_blending
    467         doc: |
    468           TODO
    469   - name: filter_mode
    470     doc: |
    471       TODO
    472     entries:
    473       - name: undefined
    474         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    475       - name: nearest
    476         doc: |
    477           TODO
    478       - name: linear
    479         doc: |
    480           TODO
    481   - name: front_face
    482     doc: |
    483       TODO
    484     entries:
    485       - name: undefined
    486         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    487       - name: CCW
    488         doc: |
    489           TODO
    490       - name: CW
    491         doc: |
    492           TODO
    493   - name: index_format
    494     doc: |
    495       TODO
    496     entries:
    497       - name: undefined
    498         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    499       - name: uint16
    500         doc: |
    501           TODO
    502       - name: uint32
    503         doc: |
    504           TODO
    505   - name: load_op
    506     doc: |
    507       TODO
    508     entries:
    509       - name: undefined
    510         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    511       - name: load
    512         doc: |
    513           TODO
    514       - name: clear
    515         doc: |
    516           TODO
    517   - name: map_async_status
    518     doc: |
    519       TODO
    520     entries:
    521       - null
    522       - name: success
    523         doc: |
    524           TODO
    525       - name: instance_dropped
    526         doc: |
    527           TODO
    528       - name: error
    529         doc: |
    530           TODO
    531       - name: aborted
    532         doc: |
    533           TODO
    534       - name: unknown
    535         doc: |
    536           TODO
    537   - name: mipmap_filter_mode
    538     doc: |
    539       TODO
    540     entries:
    541       - name: undefined
    542         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    543       - name: nearest
    544         doc: |
    545           TODO
    546       - name: linear
    547         doc: |
    548           TODO
    549   - name: optional_bool
    550     doc: |
    551       TODO
    552     entries:
    553       - name: "false"
    554         doc: |
    555           TODO
    556       - name: "true"
    557         doc: |
    558           TODO
    559       - name: undefined
    560         doc: |
    561           TODO
    562   - name: pop_error_scope_status
    563     doc: |
    564       TODO
    565     entries:
    566       - null
    567       - name: success
    568         doc: |
    569           The error scope stack was successfully popped and a result was reported.
    570       - name: instance_dropped
    571         doc: |
    572           TODO
    573       - name: empty_stack
    574         doc: |
    575           The error scope stack could not be popped, because it was empty.
    576   - name: power_preference
    577     doc: |
    578       TODO
    579     entries:
    580       - name: undefined
    581         doc: No preference. (See also @ref SentinelValues.)
    582       - name: low_power
    583         doc: |
    584           TODO
    585       - name: high_performance
    586         doc: |
    587           TODO
    588   - name: present_mode
    589     doc: Describes when and in which order frames are presented on the screen when `::wgpuSurfacePresent` is called.
    590     entries:
    591       - name: undefined
    592         doc: |
    593           Present mode is not specified. Use the default.
    594       - name: fifo
    595         doc: |
    596           The presentation of the image to the user waits for the next vertical blanking period to update in a first-in, first-out manner.
    597           Tearing cannot be observed and frame-loop will be limited to the display's refresh rate.
    598           This is the only mode that's always available.
    599       - name: fifo_relaxed
    600         doc: |
    601           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.
    602           Tearing can sometimes be observed but late-frame don't produce a full-frame stutter in the presentation.
    603           This is still a first-in, first-out mechanism so a frame-loop will be limited to the display's refresh rate.
    604       - name: immediate
    605         doc: |
    606           The presentation of the image to the user is updated immediately without waiting for a vertical blank.
    607           Tearing can be observed but latency is minimized.
    608       - name: mailbox
    609         doc: |
    610           The presentation of the image to the user waits for the next vertical blanking period to update to the latest provided image.
    611           Tearing cannot be observed and a frame-loop is not limited to the display's refresh rate.
    612   - name: primitive_topology
    613     doc: |
    614       TODO
    615     entries:
    616       - name: undefined
    617         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    618       - name: point_list
    619         doc: |
    620           TODO
    621       - name: line_list
    622         doc: |
    623           TODO
    624       - name: line_strip
    625         doc: |
    626           TODO
    627       - name: triangle_list
    628         doc: |
    629           TODO
    630       - name: triangle_strip
    631         doc: |
    632           TODO
    633   - name: query_type
    634     doc: |
    635       TODO
    636     entries:
    637       - null
    638       - name: occlusion
    639         doc: |
    640           TODO
    641       - name: timestamp
    642         doc: |
    643           TODO
    644   - name: queue_work_done_status
    645     doc: |
    646       TODO
    647     entries:
    648       - null
    649       - name: success
    650         doc: |
    651           TODO
    652       - name: instance_dropped
    653         doc: |
    654           TODO
    655       - name: error
    656         doc: |
    657           TODO
    658       - name: unknown
    659         doc: |
    660           TODO
    661   - name: request_adapter_status
    662     doc: |
    663       TODO
    664     entries:
    665       - null
    666       - name: success
    667         doc: |
    668           TODO
    669       - name: instance_dropped
    670         doc: |
    671           TODO
    672       - name: unavailable
    673         doc: |
    674           TODO
    675       - name: error
    676         doc: |
    677           TODO
    678       - name: unknown
    679         doc: |
    680           TODO
    681   - name: request_device_status
    682     doc: |
    683       TODO
    684     entries:
    685       - null
    686       - name: success
    687         doc: |
    688           TODO
    689       - name: instance_dropped
    690         doc: |
    691           TODO
    692       - name: error
    693         doc: |
    694           TODO
    695       - name: unknown
    696         doc: |
    697           TODO
    698   - name: s_type
    699     doc: |
    700       TODO
    701     entries:
    702       - null
    703       - name: shader_source_SPIRV
    704         doc: |
    705           TODO
    706       - name: shader_source_WGSL
    707         doc: |
    708           TODO
    709       - name: render_pass_max_draw_count
    710         doc: |
    711           TODO
    712       # TODO(#214): Move all of the surface sources into block 0x0001
    713       - name: surface_source_metal_layer
    714         doc: |
    715           TODO
    716       - name: surface_source_windows_HWND
    717         doc: |
    718           TODO
    719       - name: surface_source_xlib_window
    720         doc: |
    721           TODO
    722       - name: surface_source_wayland_surface
    723         doc: |
    724           TODO
    725       - name: surface_source_android_native_window
    726         doc: |
    727           TODO
    728       - name: surface_source_XCB_window
    729         doc: |
    730           TODO
    731   - name: sampler_binding_type
    732     doc: |
    733       TODO
    734     entries:
    735       - name: binding_not_used
    736         doc: |
    737           Indicates that this @ref WGPUSamplerBindingLayout member of
    738           its parent @ref WGPUBindGroupLayoutEntry is not used.
    739           (See also @ref SentinelValues.)
    740       - name: undefined
    741         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    742       - name: filtering
    743         doc: |
    744           TODO
    745       - name: non_filtering
    746         doc: |
    747           TODO
    748       - name: comparison
    749         doc: |
    750           TODO
    751   - name: status
    752     doc: |
    753       Status code returned (synchronously) from many operations. Generally
    754       indicates an invalid input like an unknown enum value or @ref OutStructChainError.
    755       Read the function's documentation for specific error conditions.
    756     entries:
    757       - null
    758       - name: success
    759         doc: ""
    760       - name: error
    761         doc: ""
    762   - name: stencil_operation
    763     doc: |
    764       TODO
    765     entries:
    766       - name: undefined
    767         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    768       - name: keep
    769         doc: |
    770           TODO
    771       - name: zero
    772         doc: |
    773           TODO
    774       - name: replace
    775         doc: |
    776           TODO
    777       - name: invert
    778         doc: |
    779           TODO
    780       - name: increment_clamp
    781         doc: |
    782           TODO
    783       - name: decrement_clamp
    784         doc: |
    785           TODO
    786       - name: increment_wrap
    787         doc: |
    788           TODO
    789       - name: decrement_wrap
    790         doc: |
    791           TODO
    792   - name: storage_texture_access
    793     doc: |
    794       TODO
    795     entries:
    796       - name: binding_not_used
    797         doc: |
    798           Indicates that this @ref WGPUStorageTextureBindingLayout member of
    799           its parent @ref WGPUBindGroupLayoutEntry is not used.
    800           (See also @ref SentinelValues.)
    801       - name: undefined
    802         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    803       - name: write_only
    804         doc: |
    805           TODO
    806       - name: read_only
    807         doc: |
    808           TODO
    809       - name: read_write
    810         doc: |
    811           TODO
    812   - name: store_op
    813     doc: |
    814       TODO
    815     entries:
    816       - name: undefined
    817         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    818       - name: store
    819         doc: |
    820           TODO
    821       - name: discard
    822         doc: |
    823           TODO
    824   - name: surface_get_current_texture_status
    825     doc: The status enum for `::wgpuSurfaceGetCurrentTexture`.
    826     entries:
    827       - null
    828       - name: success_optimal
    829         doc: Yay! Everything is good and we can render this frame.
    830       - name: success_suboptimal
    831         doc: Still OK - the surface can present the frame, but in a suboptimal way. The surface may need reconfiguration.
    832       - name: timeout
    833         doc: Some operation timed out while trying to acquire the frame.
    834       - name: outdated
    835         doc: The surface is too different to be used, compared to when it was originally created.
    836       - name: lost
    837         doc: The connection to whatever owns the surface was lost.
    838       - name: out_of_memory
    839         doc: The system ran out of memory.
    840       - name: device_lost
    841         doc: The @ref WGPUDevice configured on the @ref WGPUSurface was lost.
    842       - name: error
    843         doc: The surface is not configured, or there was an @ref OutStructChainError.
    844   - name: texture_aspect
    845     doc: |
    846       TODO
    847     entries:
    848       - name: undefined
    849         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    850       - name: all
    851         doc: |
    852           TODO
    853       - name: stencil_only
    854         doc: |
    855           TODO
    856       - name: depth_only
    857         doc: |
    858           TODO
    859   - name: texture_dimension
    860     doc: |
    861       TODO
    862     entries:
    863       - name: undefined
    864         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    865       - name: 1D
    866         doc: |
    867           TODO
    868       - name: 2D
    869         doc: |
    870           TODO
    871       - name: 3D
    872         doc: |
    873           TODO
    874   - name: texture_format
    875     doc: |
    876       TODO
    877     entries:
    878       - name: undefined
    879         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
    880       - name: R8_unorm
    881         doc: |
    882           TODO
    883       - name: R8_snorm
    884         doc: |
    885           TODO
    886       - name: R8_uint
    887         doc: |
    888           TODO
    889       - name: R8_sint
    890         doc: |
    891           TODO
    892       - name: R16_uint
    893         doc: |
    894           TODO
    895       - name: R16_sint
    896         doc: |
    897           TODO
    898       - name: R16_float
    899         doc: |
    900           TODO
    901       - name: RG8_unorm
    902         doc: |
    903           TODO
    904       - name: RG8_snorm
    905         doc: |
    906           TODO
    907       - name: RG8_uint
    908         doc: |
    909           TODO
    910       - name: RG8_sint
    911         doc: |
    912           TODO
    913       - name: R32_float
    914         doc: |
    915           TODO
    916       - name: R32_uint
    917         doc: |
    918           TODO
    919       - name: R32_sint
    920         doc: |
    921           TODO
    922       - name: RG16_uint
    923         doc: |
    924           TODO
    925       - name: RG16_sint
    926         doc: |
    927           TODO
    928       - name: RG16_float
    929         doc: |
    930           TODO
    931       - name: RGBA8_unorm
    932         doc: |
    933           TODO
    934       - name: RGBA8_unorm_srgb
    935         doc: |
    936           TODO
    937       - name: RGBA8_snorm
    938         doc: |
    939           TODO
    940       - name: RGBA8_uint
    941         doc: |
    942           TODO
    943       - name: RGBA8_sint
    944         doc: |
    945           TODO
    946       - name: BGRA8_unorm
    947         doc: |
    948           TODO
    949       - name: BGRA8_unorm_srgb
    950         doc: |
    951           TODO
    952       - name: RGB10_A2_uint
    953         doc: |
    954           TODO
    955       - name: RGB10_A2_unorm
    956         doc: |
    957           TODO
    958       - name: RG11_B10_ufloat
    959         doc: |
    960           TODO
    961       - name: RGB9_E5_ufloat
    962         doc: |
    963           TODO
    964       - name: RG32_float
    965         doc: |
    966           TODO
    967       - name: RG32_uint
    968         doc: |
    969           TODO
    970       - name: RG32_sint
    971         doc: |
    972           TODO
    973       - name: RGBA16_uint
    974         doc: |
    975           TODO
    976       - name: RGBA16_sint
    977         doc: |
    978           TODO
    979       - name: RGBA16_float
    980         doc: |
    981           TODO
    982       - name: RGBA32_float
    983         doc: |
    984           TODO
    985       - name: RGBA32_uint
    986         doc: |
    987           TODO
    988       - name: RGBA32_sint
    989         doc: |
    990           TODO
    991       - name: stencil8
    992         doc: |
    993           TODO
    994       - name: depth16_unorm
    995         doc: |
    996           TODO
    997       - name: depth24_plus
    998         doc: |
    999           TODO
   1000       - name: depth24_plus_stencil8
   1001         doc: |
   1002           TODO
   1003       - name: depth32_float
   1004         doc: |
   1005           TODO
   1006       - name: depth32_float_stencil8
   1007         doc: |
   1008           TODO
   1009       - name: BC1_RGBA_unorm
   1010         doc: |
   1011           TODO
   1012       - name: BC1_RGBA_unorm_srgb
   1013         doc: |
   1014           TODO
   1015       - name: BC2_RGBA_unorm
   1016         doc: |
   1017           TODO
   1018       - name: BC2_RGBA_unorm_srgb
   1019         doc: |
   1020           TODO
   1021       - name: BC3_RGBA_unorm
   1022         doc: |
   1023           TODO
   1024       - name: BC3_RGBA_unorm_srgb
   1025         doc: |
   1026           TODO
   1027       - name: BC4_R_unorm
   1028         doc: |
   1029           TODO
   1030       - name: BC4_R_snorm
   1031         doc: |
   1032           TODO
   1033       - name: BC5_RG_unorm
   1034         doc: |
   1035           TODO
   1036       - name: BC5_RG_snorm
   1037         doc: |
   1038           TODO
   1039       - name: BC6H_RGB_ufloat
   1040         doc: |
   1041           TODO
   1042       - name: BC6H_RGB_float
   1043         doc: |
   1044           TODO
   1045       - name: BC7_RGBA_unorm
   1046         doc: |
   1047           TODO
   1048       - name: BC7_RGBA_unorm_srgb
   1049         doc: |
   1050           TODO
   1051       - name: ETC2_RGB8_unorm
   1052         doc: |
   1053           TODO
   1054       - name: ETC2_RGB8_unorm_srgb
   1055         doc: |
   1056           TODO
   1057       - name: ETC2_RGB8A1_unorm
   1058         doc: |
   1059           TODO
   1060       - name: ETC2_RGB8A1_unorm_srgb
   1061         doc: |
   1062           TODO
   1063       - name: ETC2_RGBA8_unorm
   1064         doc: |
   1065           TODO
   1066       - name: ETC2_RGBA8_unorm_srgb
   1067         doc: |
   1068           TODO
   1069       - name: EAC_R11_unorm
   1070         doc: |
   1071           TODO
   1072       - name: EAC_R11_snorm
   1073         doc: |
   1074           TODO
   1075       - name: EAC_RG11_unorm
   1076         doc: |
   1077           TODO
   1078       - name: EAC_RG11_snorm
   1079         doc: |
   1080           TODO
   1081       - name: ASTC_4x4_unorm
   1082         doc: |
   1083           TODO
   1084       - name: ASTC_4x4_unorm_srgb
   1085         doc: |
   1086           TODO
   1087       - name: ASTC_5x4_unorm
   1088         doc: |
   1089           TODO
   1090       - name: ASTC_5x4_unorm_srgb
   1091         doc: |
   1092           TODO
   1093       - name: ASTC_5x5_unorm
   1094         doc: |
   1095           TODO
   1096       - name: ASTC_5x5_unorm_srgb
   1097         doc: |
   1098           TODO
   1099       - name: ASTC_6x5_unorm
   1100         doc: |
   1101           TODO
   1102       - name: ASTC_6x5_unorm_srgb
   1103         doc: |
   1104           TODO
   1105       - name: ASTC_6x6_unorm
   1106         doc: |
   1107           TODO
   1108       - name: ASTC_6x6_unorm_srgb
   1109         doc: |
   1110           TODO
   1111       - name: ASTC_8x5_unorm
   1112         doc: |
   1113           TODO
   1114       - name: ASTC_8x5_unorm_srgb
   1115         doc: |
   1116           TODO
   1117       - name: ASTC_8x6_unorm
   1118         doc: |
   1119           TODO
   1120       - name: ASTC_8x6_unorm_srgb
   1121         doc: |
   1122           TODO
   1123       - name: ASTC_8x8_unorm
   1124         doc: |
   1125           TODO
   1126       - name: ASTC_8x8_unorm_srgb
   1127         doc: |
   1128           TODO
   1129       - name: ASTC_10x5_unorm
   1130         doc: |
   1131           TODO
   1132       - name: ASTC_10x5_unorm_srgb
   1133         doc: |
   1134           TODO
   1135       - name: ASTC_10x6_unorm
   1136         doc: |
   1137           TODO
   1138       - name: ASTC_10x6_unorm_srgb
   1139         doc: |
   1140           TODO
   1141       - name: ASTC_10x8_unorm
   1142         doc: |
   1143           TODO
   1144       - name: ASTC_10x8_unorm_srgb
   1145         doc: |
   1146           TODO
   1147       - name: ASTC_10x10_unorm
   1148         doc: |
   1149           TODO
   1150       - name: ASTC_10x10_unorm_srgb
   1151         doc: |
   1152           TODO
   1153       - name: ASTC_12x10_unorm
   1154         doc: |
   1155           TODO
   1156       - name: ASTC_12x10_unorm_srgb
   1157         doc: |
   1158           TODO
   1159       - name: ASTC_12x12_unorm
   1160         doc: |
   1161           TODO
   1162       - name: ASTC_12x12_unorm_srgb
   1163         doc: |
   1164           TODO
   1165   - name: texture_sample_type
   1166     doc: |
   1167       TODO
   1168     entries:
   1169       - name: binding_not_used
   1170         doc: |
   1171           Indicates that this @ref WGPUTextureBindingLayout member of
   1172           its parent @ref WGPUBindGroupLayoutEntry is not used.
   1173           (See also @ref SentinelValues.)
   1174       - name: undefined
   1175         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
   1176       - name: float
   1177         doc: |
   1178           TODO
   1179       - name: unfilterable_float
   1180         doc: |
   1181           TODO
   1182       - name: depth
   1183         doc: |
   1184           TODO
   1185       - name: sint
   1186         doc: |
   1187           TODO
   1188       - name: uint
   1189         doc: |
   1190           TODO
   1191   - name: texture_view_dimension
   1192     doc: |
   1193       TODO
   1194     entries:
   1195       - name: undefined
   1196         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
   1197       - name: 1D
   1198         doc: |
   1199           TODO
   1200       - name: 2D
   1201         doc: |
   1202           TODO
   1203       - name: 2D_array
   1204         doc: |
   1205           TODO
   1206       - name: cube
   1207         doc: |
   1208           TODO
   1209       - name: cube_array
   1210         doc: |
   1211           TODO
   1212       - name: 3D
   1213         doc: |
   1214           TODO
   1215   - name: vertex_format
   1216     doc: |
   1217       TODO
   1218     entries:
   1219       - null
   1220       - name: uint8
   1221         doc: |
   1222           TODO
   1223       - name: uint8x2
   1224         doc: |
   1225           TODO
   1226       - name: uint8x4
   1227         doc: |
   1228           TODO
   1229       - name: sint8
   1230         doc: |
   1231           TODO
   1232       - name: sint8x2
   1233         doc: |
   1234           TODO
   1235       - name: sint8x4
   1236         doc: |
   1237           TODO
   1238       - name: unorm8
   1239         doc: |
   1240           TODO
   1241       - name: unorm8x2
   1242         doc: |
   1243           TODO
   1244       - name: unorm8x4
   1245         doc: |
   1246           TODO
   1247       - name: snorm8
   1248         doc: |
   1249           TODO
   1250       - name: snorm8x2
   1251         doc: |
   1252           TODO
   1253       - name: snorm8x4
   1254         doc: |
   1255           TODO
   1256       - name: uint16
   1257         doc: |
   1258           TODO
   1259       - name: uint16x2
   1260         doc: |
   1261           TODO
   1262       - name: uint16x4
   1263         doc: |
   1264           TODO
   1265       - name: sint16
   1266         doc: |
   1267           TODO
   1268       - name: sint16x2
   1269         doc: |
   1270           TODO
   1271       - name: sint16x4
   1272         doc: |
   1273           TODO
   1274       - name: unorm16
   1275         doc: |
   1276           TODO
   1277       - name: unorm16x2
   1278         doc: |
   1279           TODO
   1280       - name: unorm16x4
   1281         doc: |
   1282           TODO
   1283       - name: snorm16
   1284         doc: |
   1285           TODO
   1286       - name: snorm16x2
   1287         doc: |
   1288           TODO
   1289       - name: snorm16x4
   1290         doc: |
   1291           TODO
   1292       - name: float16
   1293         doc: |
   1294           TODO
   1295       - name: float16x2
   1296         doc: |
   1297           TODO
   1298       - name: float16x4
   1299         doc: |
   1300           TODO
   1301       - name: float32
   1302         doc: |
   1303           TODO
   1304       - name: float32x2
   1305         doc: |
   1306           TODO
   1307       - name: float32x3
   1308         doc: |
   1309           TODO
   1310       - name: float32x4
   1311         doc: |
   1312           TODO
   1313       - name: uint32
   1314         doc: |
   1315           TODO
   1316       - name: uint32x2
   1317         doc: |
   1318           TODO
   1319       - name: uint32x3
   1320         doc: |
   1321           TODO
   1322       - name: uint32x4
   1323         doc: |
   1324           TODO
   1325       - name: sint32
   1326         doc: |
   1327           TODO
   1328       - name: sint32x2
   1329         doc: |
   1330           TODO
   1331       - name: sint32x3
   1332         doc: |
   1333           TODO
   1334       - name: sint32x4
   1335         doc: |
   1336           TODO
   1337       - name: unorm10__10__10__2
   1338         doc: |
   1339           TODO
   1340       - name: unorm8x4_B_G_R_A
   1341         doc: |
   1342           TODO
   1343   - name: vertex_step_mode
   1344     doc: |
   1345       TODO
   1346     entries:
   1347       - name: vertex_buffer_not_used
   1348         doc: |
   1349           This @ref WGPUVertexBufferLayout is a "hole" in the @ref WGPUVertexState `buffers` array.
   1350           (See also @ref SentinelValues.)
   1351       - name: undefined
   1352         doc: Indicates no value is passed for this argument. See @ref SentinelValues.
   1353       - name: vertex
   1354         doc: |
   1355           TODO
   1356       - name: instance
   1357         doc: |
   1358           TODO
   1359   - name: wait_status
   1360     doc: Status returned from a call to ::wgpuInstanceWaitAny.
   1361     entries:
   1362       - null
   1363       - name: success
   1364         doc: At least one WGPUFuture completed successfully.
   1365       - name: timed_out
   1366         doc: No WGPUFutures completed within the timeout.
   1367       - name: unsupported_timeout
   1368         doc: A @ref Timed-Wait was performed when WGPUInstanceFeatures::timedWaitAnyEnable is false.
   1369       - name: unsupported_count
   1370         doc: The number of futures waited on in a @ref Timed-Wait is greater than the supported WGPUInstanceFeatures::timedWaitAnyMaxCount.
   1371       - name: unsupported_mixed_sources
   1372         doc: An invalid wait was performed with @ref Mixed-Sources.
   1373   - name: WGSL_language_feature_name
   1374     doc: |
   1375       TODO
   1376     entries:
   1377       - null
   1378       - name: readonly_and_readwrite_storage_textures
   1379         doc: |
   1380           TODO
   1381       - name: packed4x8_integer_dot_product
   1382         doc: |
   1383           TODO
   1384       - name: unrestricted_pointer_parameters
   1385         doc: |
   1386           TODO
   1387       - name: pointer_composite_access
   1388         doc: |
   1389           TODO
   1390 bitflags:
   1391   - name: buffer_usage
   1392     doc: |
   1393       TODO
   1394     entries:
   1395       - name: none
   1396         doc: |
   1397           TODO
   1398       - name: map_read
   1399         doc: |
   1400           TODO
   1401       - name: map_write
   1402         doc: |
   1403           TODO
   1404       - name: copy_src
   1405         doc: |
   1406           TODO
   1407       - name: copy_dst
   1408         doc: |
   1409           TODO
   1410       - name: index
   1411         doc: |
   1412           TODO
   1413       - name: vertex
   1414         doc: |
   1415           TODO
   1416       - name: uniform
   1417         doc: |
   1418           TODO
   1419       - name: storage
   1420         doc: |
   1421           TODO
   1422       - name: indirect
   1423         doc: |
   1424           TODO
   1425       - name: query_resolve
   1426         doc: |
   1427           TODO
   1428   - name: color_write_mask
   1429     doc: |
   1430       TODO
   1431     entries:
   1432       - name: none
   1433         doc: |
   1434           TODO
   1435       - name: red
   1436         doc: |
   1437           TODO
   1438       - name: green
   1439         doc: |
   1440           TODO
   1441       - name: blue
   1442         doc: |
   1443           TODO
   1444       - name: alpha
   1445         doc: |
   1446           TODO
   1447       - name: all
   1448         value_combination:
   1449           - red
   1450           - green
   1451           - blue
   1452           - alpha
   1453         doc: |
   1454           TODO
   1455   - name: map_mode
   1456     doc: |
   1457       TODO
   1458     entries:
   1459       - name: none
   1460         doc: |
   1461           TODO
   1462       - name: read
   1463         doc: |
   1464           TODO
   1465       - name: write
   1466         doc: |
   1467           TODO
   1468   - name: shader_stage
   1469     doc: |
   1470       TODO
   1471     entries:
   1472       - name: none
   1473         doc: |
   1474           TODO
   1475       - name: vertex
   1476         doc: |
   1477           TODO
   1478       - name: fragment
   1479         doc: |
   1480           TODO
   1481       - name: compute
   1482         doc: |
   1483           TODO
   1484   - name: texture_usage
   1485     doc: |
   1486       TODO
   1487     entries:
   1488       - name: none
   1489         doc: |
   1490           TODO
   1491       - name: copy_src
   1492         doc: |
   1493           TODO
   1494       - name: copy_dst
   1495         doc: |
   1496           TODO
   1497       - name: texture_binding
   1498         doc: |
   1499           TODO
   1500       - name: storage_binding
   1501         doc: |
   1502           TODO
   1503       - name: render_attachment
   1504         doc: |
   1505           TODO
   1506 structs:
   1507   - name: adapter_info
   1508     doc: |
   1509       TODO
   1510     type: base_out
   1511     free_members: true
   1512     members:
   1513       - name: vendor
   1514         doc: |
   1515           TODO
   1516         type: out_string
   1517       - name: architecture
   1518         doc: |
   1519           TODO
   1520         type: out_string
   1521       - name: device
   1522         doc: |
   1523           TODO
   1524         type: out_string
   1525       - name: description
   1526         doc: |
   1527           TODO
   1528         type: out_string
   1529       - name: backend_type
   1530         doc: |
   1531           TODO
   1532         type: enum.backend_type
   1533       - name: adapter_type
   1534         doc: |
   1535           TODO
   1536         type: enum.adapter_type
   1537       - name: vendor_ID
   1538         doc: |
   1539           TODO
   1540         type: uint32
   1541       - name: device_ID
   1542         doc: |
   1543           TODO
   1544         type: uint32
   1545   - name: bind_group_descriptor
   1546     doc: |
   1547       TODO
   1548     type: base_in
   1549     members:
   1550       - name: label
   1551         doc: |
   1552           TODO
   1553         type: string_with_default_empty
   1554       - name: layout
   1555         doc: |
   1556           TODO
   1557         type: object.bind_group_layout
   1558       - name: entries
   1559         doc: |
   1560           TODO
   1561         type: array<struct.bind_group_entry>
   1562         pointer: immutable
   1563   - name: bind_group_entry
   1564     doc: |
   1565       TODO
   1566     type: base_in
   1567     members:
   1568       - name: binding
   1569         doc: |
   1570           TODO
   1571         type: uint32
   1572       - name: buffer
   1573         doc: |
   1574           TODO
   1575         type: object.buffer
   1576         optional: true
   1577       - name: offset
   1578         doc: |
   1579           TODO
   1580         type: uint64
   1581       - name: size
   1582         doc: |
   1583           TODO
   1584         type: uint64
   1585       - name: sampler
   1586         doc: |
   1587           TODO
   1588         type: object.sampler
   1589         optional: true
   1590       - name: texture_view
   1591         doc: |
   1592           TODO
   1593         type: object.texture_view
   1594         optional: true
   1595   - name: bind_group_layout_descriptor
   1596     doc: |
   1597       TODO
   1598     type: base_in
   1599     members:
   1600       - name: label
   1601         doc: |
   1602           TODO
   1603         type: string_with_default_empty
   1604       - name: entries
   1605         doc: |
   1606           TODO
   1607         type: array<struct.bind_group_layout_entry>
   1608         pointer: immutable
   1609   - name: bind_group_layout_entry
   1610     doc: |
   1611       TODO
   1612     type: base_in
   1613     members:
   1614       - name: binding
   1615         doc: |
   1616           TODO
   1617         type: uint32
   1618       - name: visibility
   1619         doc: |
   1620           TODO
   1621         type: bitflag.shader_stage
   1622       - name: buffer
   1623         doc: |
   1624           TODO
   1625         type: struct.buffer_binding_layout
   1626       - name: sampler
   1627         doc: |
   1628           TODO
   1629         type: struct.sampler_binding_layout
   1630       - name: texture
   1631         doc: |
   1632           TODO
   1633         type: struct.texture_binding_layout
   1634       - name: storage_texture
   1635         doc: |
   1636           TODO
   1637         type: struct.storage_texture_binding_layout
   1638   - name: blend_component
   1639     doc: |
   1640       TODO
   1641     type: standalone
   1642     members:
   1643       - name: operation
   1644         doc: |
   1645           TODO
   1646         type: enum.blend_operation
   1647       - name: src_factor
   1648         doc: |
   1649           TODO
   1650         type: enum.blend_factor
   1651       - name: dst_factor
   1652         doc: |
   1653           TODO
   1654         type: enum.blend_factor
   1655   - name: blend_state
   1656     doc: |
   1657       TODO
   1658     type: standalone
   1659     members:
   1660       - name: color
   1661         doc: |
   1662           TODO
   1663         type: struct.blend_component
   1664       - name: alpha
   1665         doc: |
   1666           TODO
   1667         type: struct.blend_component
   1668   - name: buffer_binding_layout
   1669     doc: |
   1670       TODO
   1671     type: base_in
   1672     members:
   1673       - name: type
   1674         doc: |
   1675           TODO
   1676         type: enum.buffer_binding_type
   1677       - name: has_dynamic_offset
   1678         doc: |
   1679           TODO
   1680         type: bool
   1681       - name: min_binding_size
   1682         doc: |
   1683           TODO
   1684         type: uint64
   1685   - name: buffer_descriptor
   1686     doc: |
   1687       TODO
   1688     type: base_in
   1689     members:
   1690       - name: label
   1691         doc: |
   1692           TODO
   1693         type: string_with_default_empty
   1694       - name: usage
   1695         doc: |
   1696           TODO
   1697         type: bitflag.buffer_usage
   1698       - name: size
   1699         doc: |
   1700           TODO
   1701         type: uint64
   1702       - name: mapped_at_creation
   1703         doc: |
   1704           TODO
   1705         type: bool
   1706   - name: color
   1707     doc: |
   1708       TODO
   1709     type: standalone
   1710     members:
   1711       - name: r
   1712         doc: |
   1713           TODO
   1714         type: float64
   1715       - name: g
   1716         doc: |
   1717           TODO
   1718         type: float64
   1719       - name: b
   1720         doc: |
   1721           TODO
   1722         type: float64
   1723       - name: a
   1724         doc: |
   1725           TODO
   1726         type: float64
   1727   - name: color_target_state
   1728     doc: |
   1729       TODO
   1730     type: base_in
   1731     members:
   1732       - name: format
   1733         doc: |
   1734           The texture format of the target. If @ref WGPUTextureFormat_Undefined,
   1735           indicates a "hole" in the parent @ref WGPUFragmentState `targets` array:
   1736           the pipeline does not output a value at this `location`.
   1737         type: enum.texture_format
   1738       - name: blend
   1739         doc: |
   1740           TODO
   1741         type: struct.blend_state
   1742         pointer: immutable
   1743         optional: true
   1744       - name: write_mask
   1745         doc: |
   1746           TODO
   1747         type: bitflag.color_write_mask
   1748   - name: command_buffer_descriptor
   1749     doc: |
   1750       TODO
   1751     type: base_in
   1752     members:
   1753       - name: label
   1754         doc: |
   1755           TODO
   1756         type: string_with_default_empty
   1757   - name: command_encoder_descriptor
   1758     doc: |
   1759       TODO
   1760     type: base_in
   1761     members:
   1762       - name: label
   1763         doc: |
   1764           TODO
   1765         type: string_with_default_empty
   1766   - name: compilation_info
   1767     doc: |
   1768       TODO
   1769     type: base_in
   1770     members:
   1771       - name: messages
   1772         doc: |
   1773           TODO
   1774         type: array<struct.compilation_message>
   1775         pointer: immutable
   1776   - name: compilation_message
   1777     doc: |
   1778       TODO
   1779     type: base_in
   1780     members:
   1781       - name: message
   1782         doc: |
   1783           A @ref LocalizableHumanReadableMessageString.
   1784         type: out_string
   1785       - name: type
   1786         doc: |
   1787           Severity level of the message.
   1788         type: enum.compilation_message_type
   1789       - name: line_num
   1790         doc: |
   1791           Line number where the message is attached, starting at 1.
   1792         type: uint64
   1793       - name: line_pos
   1794         doc: |
   1795           Offset in UTF-8 code units (bytes) from the beginning of the line, starting at 1.
   1796         type: uint64
   1797       - name: offset
   1798         doc: |
   1799           Offset in UTF-8 code units (bytes) from the beginning of the shader code, starting at 0.
   1800         type: uint64
   1801       - name: length
   1802         doc: |
   1803           Length in UTF-8 code units (bytes) of the span the message corresponds to.
   1804         type: uint64
   1805   - name: compute_pass_descriptor
   1806     doc: |
   1807       TODO
   1808     type: base_in
   1809     members:
   1810       - name: label
   1811         doc: |
   1812           TODO
   1813         type: string_with_default_empty
   1814       - name: timestamp_writes
   1815         doc: |
   1816           TODO
   1817         type: struct.compute_pass_timestamp_writes
   1818         pointer: immutable
   1819         optional: true
   1820   - name: compute_pass_timestamp_writes
   1821     doc: |
   1822       TODO
   1823     type: standalone
   1824     members:
   1825       - name: query_set
   1826         doc: |
   1827           TODO
   1828         type: object.query_set
   1829       - name: beginning_of_pass_write_index
   1830         doc: |
   1831           TODO
   1832         type: uint32
   1833       - name: end_of_pass_write_index
   1834         doc: |
   1835           TODO
   1836         type: uint32
   1837   - name: compute_pipeline_descriptor
   1838     doc: |
   1839       TODO
   1840     type: base_in
   1841     members:
   1842       - name: label
   1843         doc: |
   1844           TODO
   1845         type: string_with_default_empty
   1846       - name: layout
   1847         doc: |
   1848           TODO
   1849         type: object.pipeline_layout
   1850         optional: true
   1851       - name: compute
   1852         doc: |
   1853           TODO
   1854         type: struct.programmable_stage_descriptor
   1855   - name: constant_entry
   1856     doc: |
   1857       TODO
   1858     type: base_in
   1859     members:
   1860       - name: key
   1861         doc: |
   1862           TODO
   1863         type: string_with_default_empty
   1864       - name: value
   1865         doc: |
   1866           TODO
   1867         type: float64
   1868   - name: depth_stencil_state
   1869     doc: |
   1870       TODO
   1871     type: base_in
   1872     members:
   1873       - name: format
   1874         doc: |
   1875           TODO
   1876         type: enum.texture_format
   1877       - name: depth_write_enabled
   1878         doc: |
   1879           TODO
   1880         type: enum.optional_bool
   1881       - name: depth_compare
   1882         doc: |
   1883           TODO
   1884         type: enum.compare_function
   1885       - name: stencil_front
   1886         doc: |
   1887           TODO
   1888         type: struct.stencil_face_state
   1889       - name: stencil_back
   1890         doc: |
   1891           TODO
   1892         type: struct.stencil_face_state
   1893       - name: stencil_read_mask
   1894         doc: |
   1895           TODO
   1896         type: uint32
   1897       - name: stencil_write_mask
   1898         doc: |
   1899           TODO
   1900         type: uint32
   1901       - name: depth_bias
   1902         doc: |
   1903           TODO
   1904         type: int32
   1905       - name: depth_bias_slope_scale
   1906         doc: |
   1907           TODO
   1908         type: float32
   1909       - name: depth_bias_clamp
   1910         doc: |
   1911           TODO
   1912         type: float32
   1913   - name: device_descriptor
   1914     doc: |
   1915       TODO
   1916     type: base_in
   1917     members:
   1918       - name: label
   1919         doc: |
   1920           TODO
   1921         type: string_with_default_empty
   1922       - name: required_features
   1923         doc: |
   1924           TODO
   1925         type: array<enum.feature_name>
   1926         pointer: immutable
   1927       - name: required_limits
   1928         doc: |
   1929           TODO
   1930         type: struct.limits
   1931         pointer: immutable
   1932         optional: true
   1933       - name: default_queue
   1934         doc: |
   1935           TODO
   1936         type: struct.queue_descriptor
   1937       - name: device_lost_callback_info
   1938         doc: |
   1939           TODO
   1940         type: callback.device_lost
   1941       - name: uncaptured_error_callback_info
   1942         doc: |
   1943           TODO
   1944         type: callback.uncaptured_error
   1945   - name: extent_3D
   1946     doc: |
   1947       TODO
   1948     type: standalone
   1949     members:
   1950       - name: width
   1951         doc: |
   1952           TODO
   1953         type: uint32
   1954       - name: height
   1955         doc: |
   1956           TODO
   1957         type: uint32
   1958       - name: depth_or_array_layers
   1959         doc: |
   1960           TODO
   1961         type: uint32
   1962   - name: fragment_state
   1963     doc: |
   1964       TODO
   1965     type: base_in
   1966     members:
   1967       - name: module
   1968         doc: |
   1969           TODO
   1970         type: object.shader_module
   1971       - name: entry_point
   1972         doc: |
   1973           TODO
   1974         type: nullable_string
   1975       - name: constants
   1976         doc: |
   1977           TODO
   1978         type: array<struct.constant_entry>
   1979         pointer: immutable
   1980       - name: targets
   1981         doc: |
   1982           TODO
   1983         type: array<struct.color_target_state>
   1984         pointer: immutable
   1985   - name: future
   1986     doc: Opaque handle to an asynchronous operation. See @ref Asynchronous-Operations for more information.
   1987     type: standalone
   1988     members:
   1989       - name: id
   1990         doc: Opaque id of the @ref WGPUFuture
   1991         type: uint64
   1992   - name: future_wait_info
   1993     doc: Struct holding a future to wait on, and a `completed` boolean flag.
   1994     type: standalone
   1995     members:
   1996       - name: future
   1997         doc: The future to wait on.
   1998         type: struct.future
   1999       - name: completed
   2000         doc: Whether or not the future completed.
   2001         type: bool
   2002   - name: instance_capabilities
   2003     doc: |
   2004       Features enabled on the WGPUInstance
   2005     type: base_in_or_out
   2006     members:
   2007       - name: timed_wait_any_enable
   2008         doc: Enable use of ::wgpuInstanceWaitAny with `timeoutNS > 0`.
   2009         type: bool
   2010       - name: timed_wait_any_max_count
   2011         doc: The maximum number @ref WGPUFutureWaitInfo supported in a call to ::wgpuInstanceWaitAny with `timeoutNS > 0`.
   2012         type: usize
   2013   - name: instance_descriptor
   2014     doc: |
   2015       TODO
   2016     type: base_in
   2017     members:
   2018       - name: features
   2019         doc: Instance features to enable
   2020         type: struct.instance_capabilities
   2021   - name: limits
   2022     doc: |
   2023       TODO
   2024     type: base_in_or_out
   2025     members:
   2026       - name: max_texture_dimension_1D
   2027         doc: |
   2028           TODO
   2029         type: uint32
   2030       - name: max_texture_dimension_2D
   2031         doc: |
   2032           TODO
   2033         type: uint32
   2034       - name: max_texture_dimension_3D
   2035         doc: |
   2036           TODO
   2037         type: uint32
   2038       - name: max_texture_array_layers
   2039         doc: |
   2040           TODO
   2041         type: uint32
   2042       - name: max_bind_groups
   2043         doc: |
   2044           TODO
   2045         type: uint32
   2046       - name: max_bind_groups_plus_vertex_buffers
   2047         doc: |
   2048           TODO
   2049         type: uint32
   2050       - name: max_bindings_per_bind_group
   2051         doc: |
   2052           TODO
   2053         type: uint32
   2054       - name: max_dynamic_uniform_buffers_per_pipeline_layout
   2055         doc: |
   2056           TODO
   2057         type: uint32
   2058       - name: max_dynamic_storage_buffers_per_pipeline_layout
   2059         doc: |
   2060           TODO
   2061         type: uint32
   2062       - name: max_sampled_textures_per_shader_stage
   2063         doc: |
   2064           TODO
   2065         type: uint32
   2066       - name: max_samplers_per_shader_stage
   2067         doc: |
   2068           TODO
   2069         type: uint32
   2070       - name: max_storage_buffers_per_shader_stage
   2071         doc: |
   2072           TODO
   2073         type: uint32
   2074       - name: max_storage_textures_per_shader_stage
   2075         doc: |
   2076           TODO
   2077         type: uint32
   2078       - name: max_uniform_buffers_per_shader_stage
   2079         doc: |
   2080           TODO
   2081         type: uint32
   2082       - name: max_uniform_buffer_binding_size
   2083         doc: |
   2084           TODO
   2085         type: uint64
   2086       - name: max_storage_buffer_binding_size
   2087         doc: |
   2088           TODO
   2089         type: uint64
   2090       - name: min_uniform_buffer_offset_alignment
   2091         doc: |
   2092           TODO
   2093         type: uint32
   2094       - name: min_storage_buffer_offset_alignment
   2095         doc: |
   2096           TODO
   2097         type: uint32
   2098       - name: max_vertex_buffers
   2099         doc: |
   2100           TODO
   2101         type: uint32
   2102       - name: max_buffer_size
   2103         doc: |
   2104           TODO
   2105         type: uint64
   2106       - name: max_vertex_attributes
   2107         doc: |
   2108           TODO
   2109         type: uint32
   2110       - name: max_vertex_buffer_array_stride
   2111         doc: |
   2112           TODO
   2113         type: uint32
   2114       - name: max_inter_stage_shader_variables
   2115         doc: |
   2116           TODO
   2117         type: uint32
   2118       - name: max_color_attachments
   2119         doc: |
   2120           TODO
   2121         type: uint32
   2122       - name: max_color_attachment_bytes_per_sample
   2123         doc: |
   2124           TODO
   2125         type: uint32
   2126       - name: max_compute_workgroup_storage_size
   2127         doc: |
   2128           TODO
   2129         type: uint32
   2130       - name: max_compute_invocations_per_workgroup
   2131         doc: |
   2132           TODO
   2133         type: uint32
   2134       - name: max_compute_workgroup_size_x
   2135         doc: |
   2136           TODO
   2137         type: uint32
   2138       - name: max_compute_workgroup_size_y
   2139         doc: |
   2140           TODO
   2141         type: uint32
   2142       - name: max_compute_workgroup_size_z
   2143         doc: |
   2144           TODO
   2145         type: uint32
   2146       - name: max_compute_workgroups_per_dimension
   2147         doc: |
   2148           TODO
   2149         type: uint32
   2150   - name: multisample_state
   2151     doc: |
   2152       TODO
   2153     type: base_in
   2154     members:
   2155       - name: count
   2156         doc: |
   2157           TODO
   2158         type: uint32
   2159       - name: mask
   2160         doc: |
   2161           TODO
   2162         type: uint32
   2163       - name: alpha_to_coverage_enabled
   2164         doc: |
   2165           TODO
   2166         type: bool
   2167   - name: origin_3D
   2168     doc: |
   2169       TODO
   2170     type: standalone
   2171     members:
   2172       - name: x
   2173         doc: |
   2174           TODO
   2175         type: uint32
   2176       - name: y
   2177         doc: |
   2178           TODO
   2179         type: uint32
   2180       - name: z
   2181         doc: |
   2182           TODO
   2183         type: uint32
   2184   - name: pipeline_layout_descriptor
   2185     doc: |
   2186       TODO
   2187     type: base_in
   2188     members:
   2189       - name: label
   2190         doc: |
   2191           TODO
   2192         type: string_with_default_empty
   2193       - name: bind_group_layouts
   2194         doc: |
   2195           TODO
   2196         type: array<object.bind_group_layout>
   2197         pointer: immutable
   2198   - name: primitive_state
   2199     doc: |
   2200       TODO
   2201     type: base_in
   2202     members:
   2203       - name: topology
   2204         doc: |
   2205           TODO
   2206         type: enum.primitive_topology
   2207       - name: strip_index_format
   2208         doc: |
   2209           TODO
   2210         type: enum.index_format
   2211       - name: front_face
   2212         doc: |
   2213           TODO
   2214         type: enum.front_face
   2215       - name: cull_mode
   2216         doc: |
   2217           TODO
   2218         type: enum.cull_mode
   2219       - name: unclipped_depth
   2220         doc: |
   2221           TODO
   2222         type: bool
   2223   - name: programmable_stage_descriptor
   2224     doc: |
   2225       TODO
   2226     type: base_in
   2227     members:
   2228       - name: module
   2229         doc: |
   2230           TODO
   2231         type: object.shader_module
   2232       - name: entry_point
   2233         doc: |
   2234           TODO
   2235         type: nullable_string
   2236       - name: constants
   2237         doc: |
   2238           TODO
   2239         type: array<struct.constant_entry>
   2240         pointer: immutable
   2241   - name: query_set_descriptor
   2242     doc: |
   2243       TODO
   2244     type: base_in
   2245     members:
   2246       - name: label
   2247         doc: |
   2248           TODO
   2249         type: string_with_default_empty
   2250       - name: type
   2251         doc: |
   2252           TODO
   2253         type: enum.query_type
   2254       - name: count
   2255         doc: |
   2256           TODO
   2257         type: uint32
   2258   - name: queue_descriptor
   2259     doc: |
   2260       TODO
   2261     type: base_in
   2262     members:
   2263       - name: label
   2264         doc: |
   2265           TODO
   2266         type: string_with_default_empty
   2267   - name: render_bundle_descriptor
   2268     doc: |
   2269       TODO
   2270     type: base_in
   2271     members:
   2272       - name: label
   2273         doc: |
   2274           TODO
   2275         type: string_with_default_empty
   2276   - name: render_bundle_encoder_descriptor
   2277     doc: |
   2278       TODO
   2279     type: base_in
   2280     members:
   2281       - name: label
   2282         doc: |
   2283           TODO
   2284         type: string_with_default_empty
   2285       - name: color_formats
   2286         doc: |
   2287           TODO
   2288         type: array<enum.texture_format>
   2289         pointer: immutable
   2290       - name: depth_stencil_format
   2291         doc: |
   2292           TODO
   2293         type: enum.texture_format
   2294       - name: sample_count
   2295         doc: |
   2296           TODO
   2297         type: uint32
   2298       - name: depth_read_only
   2299         doc: |
   2300           TODO
   2301         type: bool
   2302       - name: stencil_read_only
   2303         doc: |
   2304           TODO
   2305         type: bool
   2306   - name: render_pass_color_attachment
   2307     doc: |
   2308       TODO
   2309     type: base_in
   2310     members:
   2311       - name: view
   2312         doc: |
   2313           TODO
   2314         type: object.texture_view
   2315         optional: true
   2316       - name: depth_slice
   2317         doc: |
   2318           TODO
   2319         type: uint32
   2320       - name: resolve_target
   2321         doc: |
   2322           TODO
   2323         type: object.texture_view
   2324         optional: true
   2325       - name: load_op
   2326         doc: |
   2327           TODO
   2328         type: enum.load_op
   2329       - name: store_op
   2330         doc: |
   2331           TODO
   2332         type: enum.store_op
   2333       - name: clear_value
   2334         doc: |
   2335           TODO
   2336         type: struct.color
   2337   - name: render_pass_depth_stencil_attachment
   2338     doc: |
   2339       TODO
   2340     type: standalone
   2341     members:
   2342       - name: view
   2343         doc: |
   2344           TODO
   2345         type: object.texture_view
   2346       - name: depth_load_op
   2347         doc: |
   2348           TODO
   2349         type: enum.load_op
   2350       - name: depth_store_op
   2351         doc: |
   2352           TODO
   2353         type: enum.store_op
   2354       - name: depth_clear_value
   2355         doc: |
   2356           TODO
   2357         type: float32
   2358       - name: depth_read_only
   2359         doc: |
   2360           TODO
   2361         type: bool
   2362       - name: stencil_load_op
   2363         doc: |
   2364           TODO
   2365         type: enum.load_op
   2366       - name: stencil_store_op
   2367         doc: |
   2368           TODO
   2369         type: enum.store_op
   2370       - name: stencil_clear_value
   2371         doc: |
   2372           TODO
   2373         type: uint32
   2374       - name: stencil_read_only
   2375         doc: |
   2376           TODO
   2377         type: bool
   2378   - name: render_pass_descriptor
   2379     doc: |
   2380       TODO
   2381     type: base_in
   2382     members:
   2383       - name: label
   2384         doc: |
   2385           TODO
   2386         type: string_with_default_empty
   2387       - name: color_attachments
   2388         doc: |
   2389           TODO
   2390         type: array<struct.render_pass_color_attachment>
   2391         pointer: immutable
   2392       - name: depth_stencil_attachment
   2393         doc: |
   2394           TODO
   2395         type: struct.render_pass_depth_stencil_attachment
   2396         pointer: immutable
   2397         optional: true
   2398       - name: occlusion_query_set
   2399         doc: |
   2400           TODO
   2401         type: object.query_set
   2402         optional: true
   2403       - name: timestamp_writes
   2404         doc: |
   2405           TODO
   2406         type: struct.render_pass_timestamp_writes
   2407         pointer: immutable
   2408         optional: true
   2409   - name: render_pass_max_draw_count
   2410     doc: |
   2411       TODO
   2412     type: extension_in
   2413     extends:
   2414       - render_pass_descriptor
   2415     members:
   2416       - name: max_draw_count
   2417         doc: |
   2418           TODO
   2419         type: uint64
   2420   - name: render_pass_timestamp_writes
   2421     doc: |
   2422       TODO
   2423     type: standalone
   2424     members:
   2425       - name: query_set
   2426         doc: |
   2427           TODO
   2428         type: object.query_set
   2429       - name: beginning_of_pass_write_index
   2430         doc: |
   2431           TODO
   2432         type: uint32
   2433       - name: end_of_pass_write_index
   2434         doc: |
   2435           TODO
   2436         type: uint32
   2437   - name: render_pipeline_descriptor
   2438     doc: |
   2439       TODO
   2440     type: base_in
   2441     members:
   2442       - name: label
   2443         doc: |
   2444           TODO
   2445         type: string_with_default_empty
   2446       - name: layout
   2447         doc: |
   2448           TODO
   2449         type: object.pipeline_layout
   2450         optional: true
   2451       - name: vertex
   2452         doc: |
   2453           TODO
   2454         type: struct.vertex_state
   2455       - name: primitive
   2456         doc: |
   2457           TODO
   2458         type: struct.primitive_state
   2459       - name: depth_stencil
   2460         doc: |
   2461           TODO
   2462         type: struct.depth_stencil_state
   2463         pointer: immutable
   2464         optional: true
   2465       - name: multisample
   2466         doc: |
   2467           TODO
   2468         type: struct.multisample_state
   2469       - name: fragment
   2470         doc: |
   2471           TODO
   2472         type: struct.fragment_state
   2473         pointer: immutable
   2474         optional: true
   2475   - name: request_adapter_options
   2476     doc: |
   2477       TODO
   2478     type: base_in
   2479     members:
   2480       - name: feature_level
   2481         doc: |
   2482           "Feature level" for the adapter request. If an adapter is returned, it must support the features and limits in the requested feature level.
   2483 
   2484           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).
   2485         type: enum.feature_level
   2486       - name: power_preference
   2487         doc: |
   2488           TODO
   2489         type: enum.power_preference
   2490       - name: force_fallback_adapter
   2491         doc: |
   2492           If true, requires the adapter to be a "fallback" adapter as defined by the JS spec.
   2493           If this is not possible, the request returns null.
   2494         type: bool
   2495       - name: backend_type
   2496         doc: |
   2497           If set, requires the adapter to have a particular backend type.
   2498           If this is not possible, the request returns null.
   2499         type: enum.backend_type
   2500       - name: compatible_surface
   2501         doc: |
   2502           If set, requires the adapter to be able to output to a particular surface.
   2503           If this is not possible, the request returns null.
   2504         type: object.surface
   2505         optional: true
   2506   - name: sampler_binding_layout
   2507     doc: |
   2508       TODO
   2509     type: base_in
   2510     members:
   2511       - name: type
   2512         doc: |
   2513           TODO
   2514         type: enum.sampler_binding_type
   2515   - name: sampler_descriptor
   2516     doc: |
   2517       TODO
   2518     type: base_in
   2519     members:
   2520       - name: label
   2521         doc: |
   2522           TODO
   2523         type: string_with_default_empty
   2524       - name: address_mode_u
   2525         doc: |
   2526           TODO
   2527         type: enum.address_mode
   2528       - name: address_mode_v
   2529         doc: |
   2530           TODO
   2531         type: enum.address_mode
   2532       - name: address_mode_w
   2533         doc: |
   2534           TODO
   2535         type: enum.address_mode
   2536       - name: mag_filter
   2537         doc: |
   2538           TODO
   2539         type: enum.filter_mode
   2540       - name: min_filter
   2541         doc: |
   2542           TODO
   2543         type: enum.filter_mode
   2544       - name: mipmap_filter
   2545         doc: |
   2546           TODO
   2547         type: enum.mipmap_filter_mode
   2548       - name: lod_min_clamp
   2549         doc: |
   2550           TODO
   2551         type: float32
   2552       - name: lod_max_clamp
   2553         doc: |
   2554           TODO
   2555         type: float32
   2556       - name: compare
   2557         doc: |
   2558           TODO
   2559         type: enum.compare_function
   2560       - name: max_anisotropy
   2561         doc: |
   2562           TODO
   2563         type: uint16
   2564   - name: shader_module_descriptor
   2565     doc: |
   2566       TODO
   2567     type: base_in
   2568     members:
   2569       - name: label
   2570         doc: |
   2571           TODO
   2572         type: string_with_default_empty
   2573   - name: shader_source_SPIRV
   2574     doc: |
   2575       TODO
   2576     type: extension_in
   2577     extends:
   2578       - shader_module_descriptor
   2579     members:
   2580       - name: code_size
   2581         doc: |
   2582           TODO
   2583         type: uint32
   2584       - name: code
   2585         doc: |
   2586           TODO
   2587         type: uint32
   2588         pointer: immutable
   2589   - name: shader_source_WGSL
   2590     doc: |
   2591       TODO
   2592     type: extension_in
   2593     extends:
   2594       - shader_module_descriptor
   2595     members:
   2596       - name: code
   2597         doc: |
   2598           TODO
   2599         type: string_with_default_empty
   2600   - name: stencil_face_state
   2601     doc: |
   2602       TODO
   2603     type: standalone
   2604     members:
   2605       - name: compare
   2606         doc: |
   2607           TODO
   2608         type: enum.compare_function
   2609       - name: fail_op
   2610         doc: |
   2611           TODO
   2612         type: enum.stencil_operation
   2613       - name: depth_fail_op
   2614         doc: |
   2615           TODO
   2616         type: enum.stencil_operation
   2617       - name: pass_op
   2618         doc: |
   2619           TODO
   2620         type: enum.stencil_operation
   2621   - name: storage_texture_binding_layout
   2622     doc: |
   2623       TODO
   2624     type: base_in
   2625     members:
   2626       - name: access
   2627         doc: |
   2628           TODO
   2629         type: enum.storage_texture_access
   2630       - name: format
   2631         doc: |
   2632           TODO
   2633         type: enum.texture_format
   2634       - name: view_dimension
   2635         doc: |
   2636           TODO
   2637         type: enum.texture_view_dimension
   2638   - name: supported_features
   2639     doc: |
   2640       TODO
   2641     type: standalone
   2642     free_members: true
   2643     members:
   2644       - name: features
   2645         doc: |
   2646           TODO
   2647         type: array<enum.feature_name>
   2648         pointer: immutable
   2649   - name: supported_WGSL_language_features
   2650     doc: |
   2651       TODO
   2652     type: standalone
   2653     free_members: true
   2654     members:
   2655       - name: features
   2656         doc: |
   2657           TODO
   2658         type: array<enum.WGSL_language_feature_name>
   2659         pointer: immutable
   2660   - name: surface_capabilities
   2661     doc: Filled by `::wgpuSurfaceGetCapabilities` with what's supported for `::wgpuSurfaceConfigure` for a pair of @ref WGPUSurface and @ref WGPUAdapter.
   2662     type: base_out
   2663     free_members: true
   2664     members:
   2665       - name: usages
   2666         doc: |
   2667           The bit set of supported @ref WGPUTextureUsage bits.
   2668           Guaranteed to contain @ref WGPUTextureUsage_RenderAttachment.
   2669         type: bitflag.texture_usage
   2670       - name: formats
   2671         doc: A list of supported @ref WGPUTextureFormat values, in order of preference.
   2672         type: array<enum.texture_format>
   2673         pointer: immutable
   2674       - name: present_modes
   2675         doc: |
   2676           A list of supported @ref WGPUPresentMode values.
   2677           Guaranteed to contain @ref WGPUPresentMode_Fifo.
   2678         type: array<enum.present_mode>
   2679         pointer: immutable
   2680       - name: alpha_modes
   2681         doc: |
   2682           A list of supported @ref WGPUCompositeAlphaMode values.
   2683           @ref WGPUCompositeAlphaMode_Auto will be an alias for the first element and will never be present in this array.
   2684         type: array<enum.composite_alpha_mode>
   2685         pointer: immutable
   2686   - name: surface_configuration
   2687     doc: |
   2688       Options to `::wgpuSurfaceConfigure` for defining how a @ref WGPUSurface will be rendered to and presented to the user.
   2689       See @ref Surface-Configuration for more details.
   2690     type: base_in
   2691     members:
   2692       - name: device
   2693         doc: The @ref WGPUDevice to use to render to surface's textures.
   2694         type: object.device
   2695       - name: format
   2696         doc: The @ref WGPUTextureFormat of the surface's textures.
   2697         type: enum.texture_format
   2698       - name: usage
   2699         doc: The @ref WGPUTextureUsage of the surface's textures.
   2700         type: bitflag.texture_usage
   2701       - name: width
   2702         doc: The width of the surface's textures.
   2703         type: uint32
   2704       - name: height
   2705         doc: The height of the surface's textures.
   2706         type: uint32
   2707       - name: view_formats
   2708         doc: The additional @ref WGPUTextureFormat for @ref WGPUTextureView format reinterpretation of the surface's textures.
   2709         type: array<enum.texture_format>
   2710         pointer: immutable
   2711       - name: alpha_mode
   2712         doc: How the surface's frames will be composited on the screen.
   2713         type: enum.composite_alpha_mode
   2714       - name: present_mode
   2715         doc: When and in which order the surface's frames will be shown on the screen. Defaults to @ref WGPUPresentMode_Fifo.
   2716         type: enum.present_mode
   2717   - name: surface_descriptor
   2718     doc: |
   2719       The root descriptor for the creation of an @ref WGPUSurface with `::wgpuInstanceCreateSurface`.
   2720       It isn't sufficient by itself and must have one of the `WGPUSurfaceSource*` in its chain.
   2721       See @ref Surface-Creation for more details.
   2722     type: base_in
   2723     members:
   2724       - name: label
   2725         doc: Label used to refer to the object.
   2726         type: string_with_default_empty
   2727   - name: surface_source_android_native_window
   2728     doc: Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an Android [`ANativeWindow`](https://developer.android.com/ndk/reference/group/a-native-window).
   2729     type: extension_in
   2730     extends:
   2731       - surface_descriptor
   2732     members:
   2733       - name: window
   2734         doc: The pointer to the [`ANativeWindow`](https://developer.android.com/ndk/reference/group/a-native-window) that will be wrapped by the @ref WGPUSurface.
   2735         type: c_void
   2736         pointer: mutable
   2737   - name: surface_source_metal_layer
   2738     doc: Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping a [`CAMetalLayer`](https://developer.apple.com/documentation/quartzcore/cametallayer?language=objc).
   2739     type: extension_in
   2740     extends:
   2741       - surface_descriptor
   2742     members:
   2743       - name: layer
   2744         doc: The pointer to the [`CAMetalLayer`](https://developer.apple.com/documentation/quartzcore/cametallayer?language=objc) that will be wrapped by the @ref WGPUSurface.
   2745         type: c_void
   2746         pointer: mutable
   2747   - name: surface_source_wayland_surface
   2748     doc: 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).
   2749     type: extension_in
   2750     extends:
   2751       - surface_descriptor
   2752     members:
   2753       - name: display
   2754         doc: A [`wl_display`](https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_display) for this Wayland instance.
   2755         type: c_void
   2756         pointer: mutable
   2757       - name: surface
   2758         doc: A [`wl_surface`](https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_surface) that will be wrapped by the @ref WGPUSurface
   2759         type: c_void
   2760         pointer: mutable
   2761   - name: surface_source_windows_HWND
   2762     doc: 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).
   2763     type: extension_in
   2764     extends:
   2765       - surface_descriptor
   2766     members:
   2767       - name: hinstance
   2768         doc: |
   2769           The [`HINSTANCE`](https://learn.microsoft.com/en-us/windows/win32/learnwin32/winmain--the-application-entry-point) for this application.
   2770           Most commonly `GetModuleHandle(nullptr)`.
   2771         type: c_void
   2772         pointer: mutable
   2773       - name: hwnd
   2774         doc: The [`HWND`](https://learn.microsoft.com/en-us/windows/apps/develop/ui-input/retrieve-hwnd) that will be wrapped by the @ref WGPUSurface.
   2775         type: c_void
   2776         pointer: mutable
   2777   - name: surface_source_XCB_window
   2778     doc: Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an [XCB](https://xcb.freedesktop.org/) `xcb_window_t`.
   2779     type: extension_in
   2780     extends:
   2781       - surface_descriptor
   2782     members:
   2783       - name: connection
   2784         doc: The `xcb_connection_t` for the connection to the X server.
   2785         type: c_void
   2786         pointer: mutable
   2787       - name: window
   2788         doc: The `xcb_window_t` for the window that will be wrapped by the @ref WGPUSurface.
   2789         type: uint32
   2790   - name: surface_source_xlib_window
   2791     doc: Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an [Xlib](https://www.x.org/releases/current/doc/libX11/libX11/libX11.html) `Window`.
   2792     type: extension_in
   2793     extends:
   2794       - surface_descriptor
   2795     members:
   2796       - name: display
   2797         doc: A pointer to the [`Display`](https://www.x.org/releases/current/doc/libX11/libX11/libX11.html#Opening_the_Display) connected to the X server.
   2798         type: c_void
   2799         pointer: mutable
   2800       - name: window
   2801         doc: The [`Window`](https://www.x.org/releases/current/doc/libX11/libX11/libX11.html#Creating_Windows) that will be wrapped by the @ref WGPUSurface.
   2802         type: uint64
   2803   - name: surface_texture
   2804     doc: |
   2805       Queried each frame from a @ref WGPUSurface to get a @ref WGPUTexture to render to along with some metadata.
   2806       See @ref Surface-Presenting for more details.
   2807     type: base_out
   2808     members:
   2809       - name: texture
   2810         doc: |
   2811           The @ref WGPUTexture representing the frame that will be shown on the surface.
   2812           It is @ref ReturnedWithOwnership from @ref wgpuSurfaceGetCurrentTexture.
   2813         type: object.texture
   2814       - name: status
   2815         doc: Whether the call to `::wgpuSurfaceGetCurrentTexture` succeeded and a hint as to why it might not have.
   2816         type: enum.surface_get_current_texture_status
   2817   - name: texel_copy_buffer_info
   2818     doc: |
   2819       TODO
   2820     type: standalone
   2821     members:
   2822       - name: layout
   2823         doc: |
   2824           TODO
   2825         type: struct.texel_copy_buffer_layout
   2826       - name: buffer
   2827         doc: |
   2828           TODO
   2829         type: object.buffer
   2830   - name: texel_copy_buffer_layout
   2831     doc: |
   2832       TODO
   2833     type: standalone
   2834     members:
   2835       - name: offset
   2836         doc: |
   2837           TODO
   2838         type: uint64
   2839       - name: bytes_per_row
   2840         doc: |
   2841           TODO
   2842         type: uint32
   2843       - name: rows_per_image
   2844         doc: |
   2845           TODO
   2846         type: uint32
   2847   - name: texel_copy_texture_info
   2848     doc: |
   2849       TODO
   2850     type: standalone
   2851     members:
   2852       - name: texture
   2853         doc: |
   2854           TODO
   2855         type: object.texture
   2856       - name: mip_level
   2857         doc: |
   2858           TODO
   2859         type: uint32
   2860       - name: origin
   2861         doc: |
   2862           TODO
   2863         type: struct.origin_3D
   2864       - name: aspect
   2865         doc: |
   2866           TODO
   2867         type: enum.texture_aspect
   2868   - name: texture_binding_layout
   2869     doc: |
   2870       TODO
   2871     type: base_in
   2872     members:
   2873       - name: sample_type
   2874         doc: |
   2875           TODO
   2876         type: enum.texture_sample_type
   2877       - name: view_dimension
   2878         doc: |
   2879           TODO
   2880         type: enum.texture_view_dimension
   2881       - name: multisampled
   2882         doc: |
   2883           TODO
   2884         type: bool
   2885   - name: texture_descriptor
   2886     doc: |
   2887       TODO
   2888     type: base_in
   2889     members:
   2890       - name: label
   2891         doc: |
   2892           TODO
   2893         type: string_with_default_empty
   2894       - name: usage
   2895         doc: |
   2896           TODO
   2897         type: bitflag.texture_usage
   2898       - name: dimension
   2899         doc: |
   2900           TODO
   2901         type: enum.texture_dimension
   2902       - name: size
   2903         doc: |
   2904           TODO
   2905         type: struct.extent_3D
   2906       - name: format
   2907         doc: |
   2908           TODO
   2909         type: enum.texture_format
   2910       - name: mip_level_count
   2911         doc: |
   2912           TODO
   2913         type: uint32
   2914       - name: sample_count
   2915         doc: |
   2916           TODO
   2917         type: uint32
   2918       - name: view_formats
   2919         doc: |
   2920           TODO
   2921         type: array<enum.texture_format>
   2922         pointer: immutable
   2923   - name: texture_view_descriptor
   2924     doc: |
   2925       TODO
   2926     type: base_in
   2927     members:
   2928       - name: label
   2929         doc: |
   2930           TODO
   2931         type: string_with_default_empty
   2932       - name: format
   2933         doc: |
   2934           TODO
   2935         type: enum.texture_format
   2936       - name: dimension
   2937         doc: |
   2938           TODO
   2939         type: enum.texture_view_dimension
   2940       - name: base_mip_level
   2941         doc: |
   2942           TODO
   2943         type: uint32
   2944       - name: mip_level_count
   2945         doc: |
   2946           TODO
   2947         type: uint32
   2948       - name: base_array_layer
   2949         doc: |
   2950           TODO
   2951         type: uint32
   2952       - name: array_layer_count
   2953         doc: |
   2954           TODO
   2955         type: uint32
   2956       - name: aspect
   2957         doc: |
   2958           TODO
   2959         type: enum.texture_aspect
   2960       - name: usage
   2961         doc: |
   2962           TODO
   2963         type: bitflag.texture_usage
   2964   - name: vertex_attribute
   2965     doc: |
   2966       TODO
   2967     type: standalone
   2968     members:
   2969       - name: format
   2970         doc: |
   2971           TODO
   2972         type: enum.vertex_format
   2973       - name: offset
   2974         doc: |
   2975           TODO
   2976         type: uint64
   2977       - name: shader_location
   2978         doc: |
   2979           TODO
   2980         type: uint32
   2981   - name: vertex_buffer_layout
   2982     doc: |
   2983       TODO
   2984     type: standalone
   2985     members:
   2986       - name: step_mode
   2987         doc: |
   2988           The step mode for the vertex buffer. If @ref WGPUVertexStepMode_VertexBufferNotUsed,
   2989           indicates a "hole" in the parent @ref WGPUVertexState `buffers` array:
   2990           the pipeline does not use a vertex buffer at this `location`.
   2991         type: enum.vertex_step_mode
   2992       - name: array_stride
   2993         doc: |
   2994           TODO
   2995         type: uint64
   2996       - name: attributes
   2997         doc: |
   2998           TODO
   2999         type: array<struct.vertex_attribute>
   3000         pointer: immutable
   3001   - name: vertex_state
   3002     doc: |
   3003       TODO
   3004     type: base_in
   3005     members:
   3006       - name: module
   3007         doc: |
   3008           TODO
   3009         type: object.shader_module
   3010       - name: entry_point
   3011         doc: |
   3012           TODO
   3013         type: nullable_string
   3014       - name: constants
   3015         doc: |
   3016           TODO
   3017         type: array<struct.constant_entry>
   3018         pointer: immutable
   3019       - name: buffers
   3020         doc: |
   3021           TODO
   3022         type: array<struct.vertex_buffer_layout>
   3023         pointer: immutable
   3024 callbacks:
   3025   - name: buffer_map
   3026     doc: |
   3027       TODO
   3028     style: callback_mode
   3029     args:
   3030       - name: status
   3031         doc: |
   3032           TODO
   3033         type: enum.map_async_status
   3034       - name: message
   3035         doc: |
   3036           TODO
   3037         type: out_string
   3038         passed_with_ownership: false
   3039   - name: compilation_info
   3040     doc: |
   3041       TODO
   3042     style: callback_mode
   3043     args:
   3044       - name: status
   3045         doc: |
   3046           TODO
   3047         type: enum.compilation_info_request_status
   3048       - name: compilation_info
   3049         doc: |
   3050           TODO
   3051         type: struct.compilation_info
   3052         pointer: immutable
   3053         passed_with_ownership: false
   3054   - name: create_compute_pipeline_async
   3055     doc: |
   3056       TODO
   3057     style: callback_mode
   3058     args:
   3059       - name: status
   3060         doc: |
   3061           TODO
   3062         type: enum.create_pipeline_async_status
   3063       - name: pipeline
   3064         doc: |
   3065           TODO
   3066         type: object.compute_pipeline
   3067         passed_with_ownership: true
   3068       - name: message
   3069         doc: |
   3070           TODO
   3071         type: out_string
   3072   - name: create_render_pipeline_async
   3073     doc: |
   3074       TODO
   3075     style: callback_mode
   3076     args:
   3077       - name: status
   3078         doc: |
   3079           TODO
   3080         type: enum.create_pipeline_async_status
   3081       - name: pipeline
   3082         doc: |
   3083           TODO
   3084         type: object.render_pipeline
   3085         passed_with_ownership: true
   3086       - name: message
   3087         doc: |
   3088           TODO
   3089         type: out_string
   3090   - name: device_lost
   3091     doc: TODO
   3092     style: callback_mode
   3093     args:
   3094       - name: device
   3095         doc: |
   3096           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.
   3097         type: object.device
   3098         pointer: immutable
   3099         passed_with_ownership: false
   3100       - name: reason
   3101         doc: |
   3102           TODO
   3103         type: enum.device_lost_reason
   3104       - name: message
   3105         doc: |
   3106           TODO
   3107         type: out_string
   3108         passed_with_ownership: false
   3109   - name: pop_error_scope
   3110     doc: |
   3111       TODO
   3112     style: callback_mode
   3113     args:
   3114       - name: status
   3115         doc: |
   3116           See @ref WGPUPopErrorScopeStatus.
   3117         type: enum.pop_error_scope_status
   3118       - name: type
   3119         doc: |
   3120           The type of the error caught by the scope, or @ref WGPUErrorType_NoError if there was none.
   3121           If the `status` is not @ref WGPUPopErrorScopeStatus_Success, this is @ref WGPUErrorType_NoError.
   3122         type: enum.error_type
   3123       - name: message
   3124         doc: |
   3125           If the `type` is not @ref WGPUErrorType_NoError, this is a non-empty @ref LocalizableHumanReadableMessageString;
   3126           otherwise, this is an empty string.
   3127         type: out_string
   3128         passed_with_ownership: false
   3129   - name: queue_work_done
   3130     doc: |
   3131       TODO
   3132     style: callback_mode
   3133     args:
   3134       - name: status
   3135         doc: |
   3136           TODO
   3137         type: enum.queue_work_done_status
   3138   - name: request_adapter
   3139     doc: |
   3140       TODO
   3141     style: callback_mode
   3142     args:
   3143       - name: status
   3144         doc: |
   3145           TODO
   3146         type: enum.request_adapter_status
   3147       - name: adapter
   3148         doc: |
   3149           TODO
   3150         type: object.adapter
   3151         passed_with_ownership: true
   3152       - name: message
   3153         doc: |
   3154           TODO
   3155         type: out_string
   3156         passed_with_ownership: false
   3157   - name: request_device
   3158     doc: |
   3159       TODO
   3160     style: callback_mode
   3161     args:
   3162       - name: status
   3163         doc: |
   3164           TODO
   3165         type: enum.request_device_status
   3166       - name: device
   3167         doc: |
   3168           TODO
   3169         type: object.device
   3170         passed_with_ownership: true
   3171       - name: message
   3172         doc: |
   3173           TODO
   3174         type: out_string
   3175         passed_with_ownership: false
   3176   - name: uncaptured_error
   3177     doc: |
   3178       TODO
   3179     style: immediate
   3180     args:
   3181       - name: device
   3182         doc: |
   3183           TODO
   3184         type: object.device
   3185         pointer: immutable
   3186         passed_with_ownership: false
   3187       - name: type
   3188         doc: |
   3189           TODO
   3190         type: enum.error_type
   3191       - name: message
   3192         doc: |
   3193           TODO
   3194         type: out_string
   3195         passed_with_ownership: false
   3196 functions:
   3197   - name: create_instance
   3198     doc: Create a WGPUInstance
   3199     returns:
   3200       doc: |
   3201         TODO
   3202       type: object.instance
   3203       passed_with_ownership: true
   3204     args:
   3205       - name: descriptor
   3206         doc: |
   3207           TODO
   3208         type: struct.instance_descriptor
   3209         pointer: immutable
   3210         optional: true
   3211   - name: get_instance_capabilities
   3212     doc: Query the supported instance capabilities.
   3213     returns:
   3214       doc: Indicates if there was an @ref OutStructChainError.
   3215       type: enum.status
   3216     args:
   3217       - name: capabilities
   3218         doc: The supported instance capabilities
   3219         type: struct.instance_capabilities
   3220         pointer: mutable
   3221 objects:
   3222   - name: adapter
   3223     doc: |
   3224       TODO
   3225     methods:
   3226       - name: get_limits
   3227         doc: |
   3228           TODO
   3229         returns:
   3230           doc: Indicates if there was an @ref OutStructChainError.
   3231           type: enum.status
   3232         args:
   3233           - name: limits
   3234             doc: |
   3235               TODO
   3236             type: struct.limits
   3237             pointer: mutable
   3238       - name: has_feature
   3239         doc: |
   3240           TODO
   3241         returns:
   3242           doc: |
   3243             TODO
   3244           type: bool
   3245         args:
   3246           - name: feature
   3247             doc: |
   3248               TODO
   3249             type: enum.feature_name
   3250       - name: get_features
   3251         doc: |
   3252           Get the list of @ref WGPUFeatureName values supported by the adapter.
   3253         args:
   3254           - name: features
   3255             doc: |
   3256               TODO
   3257             type: struct.supported_features
   3258             pointer: mutable
   3259             passed_with_ownership: true
   3260       - name: get_info
   3261         doc: |
   3262           TODO
   3263         returns:
   3264           doc: Indicates if there was an @ref OutStructChainError.
   3265           type: enum.status
   3266         args:
   3267           - name: info
   3268             doc: |
   3269               TODO
   3270             type: struct.adapter_info
   3271             pointer: mutable
   3272             passed_with_ownership: true
   3273       - name: request_device
   3274         doc: |
   3275           TODO
   3276         callback: callback.request_device
   3277         args:
   3278           - name: descriptor
   3279             doc: |
   3280               TODO
   3281             type: struct.device_descriptor
   3282             pointer: immutable
   3283             optional: true
   3284   - name: bind_group
   3285     doc: |
   3286       TODO
   3287     methods:
   3288       - name: set_label
   3289         doc: |
   3290           TODO
   3291         args:
   3292           - name: label
   3293             doc: |
   3294               TODO
   3295             type: string_with_default_empty
   3296   - name: bind_group_layout
   3297     doc: |
   3298       TODO
   3299     methods:
   3300       - name: set_label
   3301         doc: |
   3302           TODO
   3303         args:
   3304           - name: label
   3305             doc: |
   3306               TODO
   3307             type: string_with_default_empty
   3308   - name: buffer
   3309     doc: |
   3310       TODO
   3311     methods:
   3312       - name: map_async
   3313         doc: |
   3314           TODO
   3315         callback: callback.buffer_map
   3316         args:
   3317           - name: mode
   3318             doc: |
   3319               TODO
   3320             type: bitflag.map_mode
   3321           - name: offset
   3322             doc: |
   3323               TODO
   3324             type: usize
   3325           - name: size
   3326             doc: |
   3327               TODO
   3328             type: usize
   3329       - name: get_mapped_range
   3330         doc: |
   3331           TODO
   3332         returns:
   3333           doc: |
   3334             Returns a mutable pointer to beginning of the mapped range.
   3335             Returns `NULL` with @ref ImplementationDefinedLogging if:
   3336 
   3337             - There is any content-timeline error as defined in the WebGPU specification for `getMappedRange()` (alignments, overlaps, etc.)
   3338             - The buffer is not mapped with @ref WGPUMapMode_Write.
   3339           type: c_void
   3340           pointer: mutable
   3341         args:
   3342           - name: offset
   3343             doc: |
   3344               Byte offset relative to the beginning of the buffer.
   3345             type: usize
   3346           - name: size
   3347             doc: |
   3348               Byte size of the range to get. The returned pointer is valid for exactly this many bytes.
   3349             type: usize
   3350       - name: get_const_mapped_range
   3351         doc: |
   3352           TODO
   3353         returns:
   3354           doc: |
   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           type: c_void
   3363           pointer: immutable
   3364         args:
   3365           - name: offset
   3366             doc: |
   3367               Byte offset relative to the beginning of the buffer.
   3368             type: usize
   3369           - name: size
   3370             doc: |
   3371               Byte size of the range to get. The returned pointer is valid for exactly this many bytes.
   3372             type: usize
   3373       - name: set_label
   3374         doc: |
   3375           TODO
   3376         args:
   3377           - name: label
   3378             doc: |
   3379               TODO
   3380             type: string_with_default_empty
   3381       - name: get_usage
   3382         doc: |
   3383           TODO
   3384         returns:
   3385           doc: |
   3386             TODO
   3387           type: bitflag.buffer_usage
   3388       - name: get_size
   3389         doc: |
   3390           TODO
   3391         returns:
   3392           doc: |
   3393             TODO
   3394           type: uint64
   3395       - name: get_map_state
   3396         doc: |
   3397           TODO
   3398         returns:
   3399           doc: |
   3400             TODO
   3401           type: enum.buffer_map_state
   3402       - name: unmap
   3403         doc: |
   3404           TODO
   3405       - name: destroy
   3406         doc: |
   3407           TODO
   3408   - name: command_buffer
   3409     doc: |
   3410       TODO
   3411     methods:
   3412       - name: set_label
   3413         doc: |
   3414           TODO
   3415         args:
   3416           - name: label
   3417             doc: |
   3418               TODO
   3419             type: string_with_default_empty
   3420   - name: command_encoder
   3421     doc: |
   3422       TODO
   3423     methods:
   3424       - name: finish
   3425         doc: |
   3426           TODO
   3427         returns:
   3428           doc: |
   3429             TODO
   3430           type: object.command_buffer
   3431           passed_with_ownership: true
   3432         args:
   3433           - name: descriptor
   3434             doc: |
   3435               TODO
   3436             type: struct.command_buffer_descriptor
   3437             pointer: immutable
   3438             optional: true
   3439       - name: begin_compute_pass
   3440         doc: |
   3441           TODO
   3442         returns:
   3443           doc: |
   3444             TODO
   3445           type: object.compute_pass_encoder
   3446           passed_with_ownership: true
   3447         args:
   3448           - name: descriptor
   3449             doc: |
   3450               TODO
   3451             type: struct.compute_pass_descriptor
   3452             pointer: immutable
   3453             optional: true
   3454       - name: begin_render_pass
   3455         doc: |
   3456           TODO
   3457         returns:
   3458           doc: |
   3459             TODO
   3460           type: object.render_pass_encoder
   3461           passed_with_ownership: true
   3462         args:
   3463           - name: descriptor
   3464             doc: |
   3465               TODO
   3466             type: struct.render_pass_descriptor
   3467             pointer: immutable
   3468       - name: copy_buffer_to_buffer
   3469         doc: |
   3470           TODO
   3471         args:
   3472           - name: source
   3473             doc: |
   3474               TODO
   3475             type: object.buffer
   3476           - name: source_offset
   3477             doc: |
   3478               TODO
   3479             type: uint64
   3480           - name: destination
   3481             doc: |
   3482               TODO
   3483             type: object.buffer
   3484           - name: destination_offset
   3485             doc: |
   3486               TODO
   3487             type: uint64
   3488           - name: size
   3489             doc: |
   3490               TODO
   3491             type: uint64
   3492       - name: copy_buffer_to_texture
   3493         doc: |
   3494           TODO
   3495         args:
   3496           - name: source
   3497             doc: |
   3498               TODO
   3499             type: struct.texel_copy_buffer_info
   3500             pointer: immutable
   3501           - name: destination
   3502             doc: |
   3503               TODO
   3504             type: struct.texel_copy_texture_info
   3505             pointer: immutable
   3506           - name: copy_size
   3507             doc: |
   3508               TODO
   3509             type: struct.extent_3D
   3510             pointer: immutable
   3511       - name: copy_texture_to_buffer
   3512         doc: |
   3513           TODO
   3514         args:
   3515           - name: source
   3516             doc: |
   3517               TODO
   3518             type: struct.texel_copy_texture_info
   3519             pointer: immutable
   3520           - name: destination
   3521             doc: |
   3522               TODO
   3523             type: struct.texel_copy_buffer_info
   3524             pointer: immutable
   3525           - name: copy_size
   3526             doc: |
   3527               TODO
   3528             type: struct.extent_3D
   3529             pointer: immutable
   3530       - name: copy_texture_to_texture
   3531         doc: |
   3532           TODO
   3533         args:
   3534           - name: source
   3535             doc: |
   3536               TODO
   3537             type: struct.texel_copy_texture_info
   3538             pointer: immutable
   3539           - name: destination
   3540             doc: |
   3541               TODO
   3542             type: struct.texel_copy_texture_info
   3543             pointer: immutable
   3544           - name: copy_size
   3545             doc: |
   3546               TODO
   3547             type: struct.extent_3D
   3548             pointer: immutable
   3549       - name: clear_buffer
   3550         doc: |
   3551           TODO
   3552         args:
   3553           - name: buffer
   3554             doc: |
   3555               TODO
   3556             type: object.buffer
   3557           - name: offset
   3558             doc: |
   3559               TODO
   3560             type: uint64
   3561           - name: size
   3562             doc: |
   3563               TODO
   3564             type: uint64
   3565       - name: insert_debug_marker
   3566         doc: |
   3567           TODO
   3568         args:
   3569           - name: marker_label
   3570             doc: |
   3571               TODO
   3572             type: string_with_default_empty
   3573       - name: pop_debug_group
   3574         doc: |
   3575           TODO
   3576       - name: push_debug_group
   3577         doc: |
   3578           TODO
   3579         args:
   3580           - name: group_label
   3581             doc: |
   3582               TODO
   3583             type: string_with_default_empty
   3584       - name: resolve_query_set
   3585         doc: |
   3586           TODO
   3587         args:
   3588           - name: query_set
   3589             doc: |
   3590               TODO
   3591             type: object.query_set
   3592           - name: first_query
   3593             doc: |
   3594               TODO
   3595             type: uint32
   3596           - name: query_count
   3597             doc: |
   3598               TODO
   3599             type: uint32
   3600           - name: destination
   3601             doc: |
   3602               TODO
   3603             type: object.buffer
   3604           - name: destination_offset
   3605             doc: |
   3606               TODO
   3607             type: uint64
   3608       - name: write_timestamp
   3609         doc: |
   3610           TODO
   3611         args:
   3612           - name: query_set
   3613             doc: |
   3614               TODO
   3615             type: object.query_set
   3616           - name: query_index
   3617             doc: |
   3618               TODO
   3619             type: uint32
   3620       - name: set_label
   3621         doc: |
   3622           TODO
   3623         args:
   3624           - name: label
   3625             doc: |
   3626               TODO
   3627             type: string_with_default_empty
   3628   - name: compute_pass_encoder
   3629     doc: |
   3630       TODO
   3631     methods:
   3632       - name: insert_debug_marker
   3633         doc: |
   3634           TODO
   3635         args:
   3636           - name: marker_label
   3637             doc: |
   3638               TODO
   3639             type: string_with_default_empty
   3640       - name: pop_debug_group
   3641         doc: |
   3642           TODO
   3643       - name: push_debug_group
   3644         doc: |
   3645           TODO
   3646         args:
   3647           - name: group_label
   3648             doc: |
   3649               TODO
   3650             type: string_with_default_empty
   3651       - name: set_pipeline
   3652         doc: |
   3653           TODO
   3654         args:
   3655           - name: pipeline
   3656             doc: |
   3657               TODO
   3658             type: object.compute_pipeline
   3659       - name: set_bind_group
   3660         doc: |
   3661           TODO
   3662         args:
   3663           - name: group_index
   3664             doc: |
   3665               TODO
   3666             type: uint32
   3667           - name: group
   3668             doc: |
   3669               TODO
   3670             type: object.bind_group
   3671             optional: true
   3672           - name: dynamic_offsets
   3673             doc: |
   3674               TODO
   3675             type: array<uint32>
   3676             pointer: immutable
   3677       - name: dispatch_workgroups
   3678         doc: |
   3679           TODO
   3680         args:
   3681           - name: workgroupCountX
   3682             doc: |
   3683               TODO
   3684             type: uint32
   3685           - name: workgroupCountY
   3686             doc: |
   3687               TODO
   3688             type: uint32
   3689           - name: workgroupCountZ
   3690             doc: |
   3691               TODO
   3692             type: uint32
   3693       - name: dispatch_workgroups_indirect
   3694         doc: |
   3695           TODO
   3696         args:
   3697           - name: indirect_buffer
   3698             doc: |
   3699               TODO
   3700             type: object.buffer
   3701           - name: indirect_offset
   3702             doc: |
   3703               TODO
   3704             type: uint64
   3705       - name: end
   3706         doc: |
   3707           TODO
   3708       - name: set_label
   3709         doc: |
   3710           TODO
   3711         args:
   3712           - name: label
   3713             doc: |
   3714               TODO
   3715             type: string_with_default_empty
   3716   - name: compute_pipeline
   3717     doc: |
   3718       TODO
   3719     methods:
   3720       - name: get_bind_group_layout
   3721         doc: |
   3722           TODO
   3723         returns:
   3724           doc: |
   3725             TODO
   3726           type: object.bind_group_layout
   3727           passed_with_ownership: true
   3728         args:
   3729           - name: group_index
   3730             doc: |
   3731               TODO
   3732             type: uint32
   3733       - name: set_label
   3734         doc: |
   3735           TODO
   3736         args:
   3737           - name: label
   3738             doc: |
   3739               TODO
   3740             type: string_with_default_empty
   3741   - name: device
   3742     doc: |
   3743       TODO
   3744     methods:
   3745       - name: create_bind_group
   3746         doc: |
   3747           TODO
   3748         returns:
   3749           doc: |
   3750             TODO
   3751           type: object.bind_group
   3752           passed_with_ownership: true
   3753         args:
   3754           - name: descriptor
   3755             doc: |
   3756               TODO
   3757             type: struct.bind_group_descriptor
   3758             pointer: immutable
   3759       - name: create_bind_group_layout
   3760         doc: |
   3761           TODO
   3762         returns:
   3763           doc: |
   3764             TODO
   3765           type: object.bind_group_layout
   3766           passed_with_ownership: true
   3767         args:
   3768           - name: descriptor
   3769             doc: |
   3770               TODO
   3771             type: struct.bind_group_layout_descriptor
   3772             pointer: immutable
   3773       - name: create_buffer
   3774         doc: |
   3775           TODO
   3776         returns:
   3777           doc: |
   3778             TODO
   3779           type: object.buffer
   3780           passed_with_ownership: true
   3781         args:
   3782           - name: descriptor
   3783             doc: |
   3784               TODO
   3785             type: struct.buffer_descriptor
   3786             pointer: immutable
   3787       - name: create_command_encoder
   3788         doc: |
   3789           TODO
   3790         returns:
   3791           doc: |
   3792             TODO
   3793           type: object.command_encoder
   3794           passed_with_ownership: true
   3795         args:
   3796           - name: descriptor
   3797             doc: |
   3798               TODO
   3799             type: struct.command_encoder_descriptor
   3800             pointer: immutable
   3801             optional: true
   3802       - name: create_compute_pipeline
   3803         doc: |
   3804           TODO
   3805         returns:
   3806           doc: |
   3807             TODO
   3808           type: object.compute_pipeline
   3809           passed_with_ownership: true
   3810         args:
   3811           - name: descriptor
   3812             doc: |
   3813               TODO
   3814             type: struct.compute_pipeline_descriptor
   3815             pointer: immutable
   3816       - name: create_compute_pipeline_async
   3817         doc: |
   3818           TODO
   3819         callback: callback.create_compute_pipeline_async
   3820         args:
   3821           - name: descriptor
   3822             doc: |
   3823               TODO
   3824             type: struct.compute_pipeline_descriptor
   3825             pointer: immutable
   3826       - name: create_pipeline_layout
   3827         doc: |
   3828           TODO
   3829         returns:
   3830           doc: |
   3831             TODO
   3832           type: object.pipeline_layout
   3833           passed_with_ownership: true
   3834         args:
   3835           - name: descriptor
   3836             doc: |
   3837               TODO
   3838             type: struct.pipeline_layout_descriptor
   3839             pointer: immutable
   3840       - name: create_query_set
   3841         doc: |
   3842           TODO
   3843         returns:
   3844           doc: |
   3845             TODO
   3846           type: object.query_set
   3847           passed_with_ownership: true
   3848         args:
   3849           - name: descriptor
   3850             doc: |
   3851               TODO
   3852             type: struct.query_set_descriptor
   3853             pointer: immutable
   3854       - name: create_render_pipeline_async
   3855         doc: |
   3856           TODO
   3857         callback: callback.create_render_pipeline_async
   3858         args:
   3859           - name: descriptor
   3860             doc: |
   3861               TODO
   3862             type: struct.render_pipeline_descriptor
   3863             pointer: immutable
   3864       - name: create_render_bundle_encoder
   3865         doc: |
   3866           TODO
   3867         returns:
   3868           doc: |
   3869             TODO
   3870           type: object.render_bundle_encoder
   3871           passed_with_ownership: true
   3872         args:
   3873           - name: descriptor
   3874             doc: |
   3875               TODO
   3876             type: struct.render_bundle_encoder_descriptor
   3877             pointer: immutable
   3878       - name: create_render_pipeline
   3879         doc: |
   3880           TODO
   3881         returns:
   3882           doc: |
   3883             TODO
   3884           type: object.render_pipeline
   3885           passed_with_ownership: true
   3886         args:
   3887           - name: descriptor
   3888             doc: |
   3889               TODO
   3890             type: struct.render_pipeline_descriptor
   3891             pointer: immutable
   3892       - name: create_sampler
   3893         doc: |
   3894           TODO
   3895         returns:
   3896           doc: |
   3897             TODO
   3898           type: object.sampler
   3899           passed_with_ownership: true
   3900         args:
   3901           - name: descriptor
   3902             doc: |
   3903               TODO
   3904             type: struct.sampler_descriptor
   3905             pointer: immutable
   3906             optional: true
   3907       - name: create_shader_module
   3908         doc: |
   3909           TODO
   3910         returns:
   3911           doc: |
   3912             TODO
   3913           type: object.shader_module
   3914           passed_with_ownership: true
   3915         args:
   3916           - name: descriptor
   3917             doc: |
   3918               TODO
   3919             type: struct.shader_module_descriptor
   3920             pointer: immutable
   3921       - name: create_texture
   3922         doc: |
   3923           TODO
   3924         returns:
   3925           doc: |
   3926             TODO
   3927           type: object.texture
   3928           passed_with_ownership: true
   3929         args:
   3930           - name: descriptor
   3931             doc: |
   3932               TODO
   3933             type: struct.texture_descriptor
   3934             pointer: immutable
   3935       - name: destroy
   3936         doc: |
   3937           TODO
   3938       - name: get_lost_future
   3939         doc: ""
   3940         returns:
   3941           doc: |
   3942             The @ref WGPUFuture for the device-lost event of the device.
   3943           type: struct.future
   3944       - name: get_limits
   3945         doc: |
   3946           TODO
   3947         returns:
   3948           doc: Indicates if there was an @ref OutStructChainError.
   3949           type: enum.status
   3950         args:
   3951           - name: limits
   3952             doc: |
   3953               TODO
   3954             type: struct.limits
   3955             pointer: mutable
   3956       - name: has_feature
   3957         doc: |
   3958           TODO
   3959         returns:
   3960           doc: |
   3961             TODO
   3962           type: bool
   3963         args:
   3964           - name: feature
   3965             doc: |
   3966               TODO
   3967             type: enum.feature_name
   3968       - name: get_features
   3969         doc: |
   3970           Get the list of @ref WGPUFeatureName values supported by the device.
   3971         args:
   3972           - name: features
   3973             doc: |
   3974               TODO
   3975             type: struct.supported_features
   3976             pointer: mutable
   3977             passed_with_ownership: true
   3978       - name: get_adapter_info
   3979         doc: |
   3980           TODO
   3981         returns:
   3982           doc: |
   3983             TODO
   3984           type: struct.adapter_info
   3985           passed_with_ownership: true
   3986       - name: get_queue
   3987         doc: |
   3988           TODO
   3989         returns:
   3990           doc: |
   3991             TODO
   3992           type: object.queue
   3993           passed_with_ownership: true
   3994       - name: push_error_scope
   3995         doc: |
   3996           TODO
   3997         args:
   3998           - name: filter
   3999             doc: |
   4000               TODO
   4001             type: enum.error_filter
   4002       - name: pop_error_scope
   4003         doc: |
   4004           TODO
   4005         callback: callback.pop_error_scope
   4006       - name: set_label
   4007         doc: |
   4008           TODO
   4009         args:
   4010           - name: label
   4011             doc: |
   4012               TODO
   4013             type: string_with_default_empty
   4014   - name: instance
   4015     doc: |
   4016       TODO
   4017     methods:
   4018       - name: create_surface
   4019         doc: Creates a @ref WGPUSurface, see @ref Surface-Creation for more details.
   4020         returns:
   4021           doc: A new @ref WGPUSurface for this descriptor (or an error @ref WGPUSurface).
   4022           type: object.surface
   4023           passed_with_ownership: true
   4024         args:
   4025           - name: descriptor
   4026             doc: The description of the @ref WGPUSurface to create.
   4027             type: struct.surface_descriptor
   4028             pointer: immutable
   4029       - name: get_WGSL_language_features
   4030         doc: |
   4031           Get the list of @ref WGPUWGSLLanguageFeatureName values supported by the instance.
   4032         returns:
   4033           doc: |
   4034             TODO
   4035           type: enum.status
   4036         args:
   4037           - name: features
   4038             doc: |
   4039               TODO
   4040             type: struct.supported_WGSL_language_features
   4041             pointer: mutable
   4042       - name: has_WGSL_language_feature
   4043         doc: |
   4044           TODO
   4045         returns:
   4046           doc: |
   4047             TODO
   4048           type: bool
   4049         args:
   4050           - name: feature
   4051             doc: |
   4052               TODO
   4053             type: enum.WGSL_language_feature_name
   4054       - name: process_events
   4055         doc: |
   4056           Processes asynchronous events on this `WGPUInstance`, calling any callbacks for asynchronous operations created with `::WGPUCallbackMode_AllowProcessEvents`.
   4057 
   4058           See @ref Process-Events for more information.
   4059       - name: request_adapter
   4060         doc: |
   4061           TODO
   4062         callback: callback.request_adapter
   4063         args:
   4064           - name: options
   4065             doc: |
   4066               TODO
   4067             type: struct.request_adapter_options
   4068             pointer: immutable
   4069             optional: true
   4070       - name: wait_any
   4071         doc: |
   4072           Wait for at least one WGPUFuture in `futures` to complete, and call callbacks of the respective completed asynchronous operations.
   4073 
   4074           See @ref Wait-Any for more information.
   4075         returns:
   4076           doc: |
   4077             TODO
   4078           type: enum.wait_status
   4079         args:
   4080           - name: future_count
   4081             doc: |
   4082               TODO
   4083             type: usize
   4084           - name: futures
   4085             doc: |
   4086               TODO
   4087             type: struct.future_wait_info
   4088             pointer: mutable
   4089             optional: true
   4090           - name: timeout_NS
   4091             doc: |
   4092               TODO
   4093             type: uint64
   4094   - name: pipeline_layout
   4095     doc: |
   4096       TODO
   4097     methods:
   4098       - name: set_label
   4099         doc: |
   4100           TODO
   4101         args:
   4102           - name: label
   4103             doc: |
   4104               TODO
   4105             type: string_with_default_empty
   4106   - name: query_set
   4107     doc: |
   4108       TODO
   4109     methods:
   4110       - name: set_label
   4111         doc: |
   4112           TODO
   4113         args:
   4114           - name: label
   4115             doc: |
   4116               TODO
   4117             type: string_with_default_empty
   4118       - name: get_type
   4119         doc: |
   4120           TODO
   4121         returns:
   4122           doc: |
   4123             TODO
   4124           type: enum.query_type
   4125       - name: get_count
   4126         doc: |
   4127           TODO
   4128         returns:
   4129           doc: |
   4130             TODO
   4131           type: uint32
   4132       - name: destroy
   4133         doc: |
   4134           TODO
   4135   - name: queue
   4136     doc: |
   4137       TODO
   4138     methods:
   4139       - name: submit
   4140         doc: |
   4141           TODO
   4142         args:
   4143           - name: commands
   4144             doc: |
   4145               TODO
   4146             type: array<object.command_buffer>
   4147             pointer: immutable
   4148       - name: on_submitted_work_done
   4149         doc: |
   4150           TODO
   4151         callback: callback.queue_work_done
   4152       - name: write_buffer
   4153         doc: |
   4154           Produces a @ref DeviceError both content-timeline (`size` alignment) and device-timeline
   4155           errors defined by the WebGPU specification.
   4156         args:
   4157           - name: buffer
   4158             doc: |
   4159               TODO
   4160             type: object.buffer
   4161           - name: buffer_offset
   4162             doc: |
   4163               TODO
   4164             type: uint64
   4165           - name: data
   4166             doc: |
   4167               TODO
   4168             type: c_void
   4169             pointer: immutable
   4170           - name: size
   4171             doc: |
   4172               TODO
   4173             type: usize
   4174       - name: write_texture
   4175         doc: |
   4176           TODO
   4177         args:
   4178           - name: destination
   4179             doc: |
   4180               TODO
   4181             type: struct.texel_copy_texture_info
   4182             pointer: immutable
   4183           - name: data
   4184             doc: |
   4185               TODO
   4186             type: c_void
   4187             pointer: immutable
   4188           - name: data_size
   4189             doc: |
   4190               TODO
   4191             type: usize
   4192           - name: data_layout
   4193             doc: |
   4194               TODO
   4195             type: struct.texel_copy_buffer_layout
   4196             pointer: immutable
   4197           - name: write_size
   4198             doc: |
   4199               TODO
   4200             type: struct.extent_3D
   4201             pointer: immutable
   4202       - name: set_label
   4203         doc: |
   4204           TODO
   4205         args:
   4206           - name: label
   4207             doc: |
   4208               TODO
   4209             type: string_with_default_empty
   4210   - name: render_bundle
   4211     doc: |
   4212       TODO
   4213     methods:
   4214       - name: set_label
   4215         doc: |
   4216           TODO
   4217         args:
   4218           - name: label
   4219             doc: |
   4220               TODO
   4221             type: string_with_default_empty
   4222   - name: render_bundle_encoder
   4223     doc: |
   4224       TODO
   4225     methods:
   4226       - name: set_pipeline
   4227         doc: |
   4228           TODO
   4229         args:
   4230           - name: pipeline
   4231             doc: |
   4232               TODO
   4233             type: object.render_pipeline
   4234       - name: set_bind_group
   4235         doc: |
   4236           TODO
   4237         args:
   4238           - name: group_index
   4239             doc: |
   4240               TODO
   4241             type: uint32
   4242           - name: group
   4243             doc: |
   4244               TODO
   4245             type: object.bind_group
   4246             optional: true
   4247           - name: dynamic_offsets
   4248             doc: |
   4249               TODO
   4250             type: array<uint32>
   4251             pointer: immutable
   4252       - name: draw
   4253         doc: |
   4254           TODO
   4255         args:
   4256           - name: vertex_count
   4257             doc: |
   4258               TODO
   4259             type: uint32
   4260           - name: instance_count
   4261             doc: |
   4262               TODO
   4263             type: uint32
   4264           - name: first_vertex
   4265             doc: |
   4266               TODO
   4267             type: uint32
   4268           - name: first_instance
   4269             doc: |
   4270               TODO
   4271             type: uint32
   4272       - name: draw_indexed
   4273         doc: |
   4274           TODO
   4275         args:
   4276           - name: index_count
   4277             doc: |
   4278               TODO
   4279             type: uint32
   4280           - name: instance_count
   4281             doc: |
   4282               TODO
   4283             type: uint32
   4284           - name: first_index
   4285             doc: |
   4286               TODO
   4287             type: uint32
   4288           - name: base_vertex
   4289             doc: |
   4290               TODO
   4291             type: int32
   4292           - name: first_instance
   4293             doc: |
   4294               TODO
   4295             type: uint32
   4296       - name: draw_indirect
   4297         doc: |
   4298           TODO
   4299         args:
   4300           - name: indirect_buffer
   4301             doc: |
   4302               TODO
   4303             type: object.buffer
   4304           - name: indirect_offset
   4305             doc: |
   4306               TODO
   4307             type: uint64
   4308       - name: draw_indexed_indirect
   4309         doc: |
   4310           TODO
   4311         args:
   4312           - name: indirect_buffer
   4313             doc: |
   4314               TODO
   4315             type: object.buffer
   4316           - name: indirect_offset
   4317             doc: |
   4318               TODO
   4319             type: uint64
   4320       - name: insert_debug_marker
   4321         doc: |
   4322           TODO
   4323         args:
   4324           - name: marker_label
   4325             doc: |
   4326               TODO
   4327             type: string_with_default_empty
   4328       - name: pop_debug_group
   4329         doc: |
   4330           TODO
   4331       - name: push_debug_group
   4332         doc: |
   4333           TODO
   4334         args:
   4335           - name: group_label
   4336             doc: |
   4337               TODO
   4338             type: string_with_default_empty
   4339       - name: set_vertex_buffer
   4340         doc: |
   4341           TODO
   4342         args:
   4343           - name: slot
   4344             doc: |
   4345               TODO
   4346             type: uint32
   4347           - name: buffer
   4348             doc: |
   4349               TODO
   4350             type: object.buffer
   4351             optional: true
   4352           - name: offset
   4353             doc: |
   4354               TODO
   4355             type: uint64
   4356           - name: size
   4357             doc: |
   4358               TODO
   4359             type: uint64
   4360       - name: set_index_buffer
   4361         doc: |
   4362           TODO
   4363         args:
   4364           - name: buffer
   4365             doc: |
   4366               TODO
   4367             type: object.buffer
   4368           - name: format
   4369             doc: |
   4370               TODO
   4371             type: enum.index_format
   4372           - name: offset
   4373             doc: |
   4374               TODO
   4375             type: uint64
   4376           - name: size
   4377             doc: |
   4378               TODO
   4379             type: uint64
   4380       - name: finish
   4381         doc: |
   4382           TODO
   4383         returns:
   4384           doc: |
   4385             TODO
   4386           type: object.render_bundle
   4387           passed_with_ownership: true
   4388         args:
   4389           - name: descriptor
   4390             doc: |
   4391               TODO
   4392             type: struct.render_bundle_descriptor
   4393             pointer: immutable
   4394             optional: true
   4395       - name: set_label
   4396         doc: |
   4397           TODO
   4398         args:
   4399           - name: label
   4400             doc: |
   4401               TODO
   4402             type: string_with_default_empty
   4403   - name: render_pass_encoder
   4404     doc: |
   4405       TODO
   4406     methods:
   4407       - name: set_pipeline
   4408         doc: |
   4409           TODO
   4410         args:
   4411           - name: pipeline
   4412             doc: |
   4413               TODO
   4414             type: object.render_pipeline
   4415       - name: set_bind_group
   4416         doc: |
   4417           TODO
   4418         args:
   4419           - name: group_index
   4420             doc: |
   4421               TODO
   4422             type: uint32
   4423           - name: group
   4424             doc: |
   4425               TODO
   4426             type: object.bind_group
   4427             optional: true
   4428           - name: dynamic_offsets
   4429             doc: |
   4430               TODO
   4431             type: array<uint32>
   4432             pointer: immutable
   4433       - name: draw
   4434         doc: |
   4435           TODO
   4436         args:
   4437           - name: vertex_count
   4438             doc: |
   4439               TODO
   4440             type: uint32
   4441           - name: instance_count
   4442             doc: |
   4443               TODO
   4444             type: uint32
   4445           - name: first_vertex
   4446             doc: |
   4447               TODO
   4448             type: uint32
   4449           - name: first_instance
   4450             doc: |
   4451               TODO
   4452             type: uint32
   4453       - name: draw_indexed
   4454         doc: |
   4455           TODO
   4456         args:
   4457           - name: index_count
   4458             doc: |
   4459               TODO
   4460             type: uint32
   4461           - name: instance_count
   4462             doc: |
   4463               TODO
   4464             type: uint32
   4465           - name: first_index
   4466             doc: |
   4467               TODO
   4468             type: uint32
   4469           - name: base_vertex
   4470             doc: |
   4471               TODO
   4472             type: int32
   4473           - name: first_instance
   4474             doc: |
   4475               TODO
   4476             type: uint32
   4477       - name: draw_indirect
   4478         doc: |
   4479           TODO
   4480         args:
   4481           - name: indirect_buffer
   4482             doc: |
   4483               TODO
   4484             type: object.buffer
   4485           - name: indirect_offset
   4486             doc: |
   4487               TODO
   4488             type: uint64
   4489       - name: draw_indexed_indirect
   4490         doc: |
   4491           TODO
   4492         args:
   4493           - name: indirect_buffer
   4494             doc: |
   4495               TODO
   4496             type: object.buffer
   4497           - name: indirect_offset
   4498             doc: |
   4499               TODO
   4500             type: uint64
   4501       - name: execute_bundles
   4502         doc: |
   4503           TODO
   4504         args:
   4505           - name: bundles
   4506             doc: |
   4507               TODO
   4508             type: array<object.render_bundle>
   4509             pointer: immutable
   4510       - name: insert_debug_marker
   4511         doc: |
   4512           TODO
   4513         args:
   4514           - name: marker_label
   4515             doc: |
   4516               TODO
   4517             type: string_with_default_empty
   4518       - name: pop_debug_group
   4519         doc: |
   4520           TODO
   4521       - name: push_debug_group
   4522         doc: |
   4523           TODO
   4524         args:
   4525           - name: group_label
   4526             doc: |
   4527               TODO
   4528             type: string_with_default_empty
   4529       - name: set_stencil_reference
   4530         doc: |
   4531           TODO
   4532         args:
   4533           - name: reference
   4534             doc: |
   4535               TODO
   4536             type: uint32
   4537       - name: set_blend_constant
   4538         doc: |
   4539           TODO
   4540         args:
   4541           - name: color
   4542             doc: |
   4543               TODO
   4544             type: struct.color
   4545             pointer: immutable
   4546       - name: set_viewport
   4547         doc: |
   4548           TODO
   4549         args:
   4550           - name: x
   4551             doc: |
   4552               TODO
   4553             type: float32
   4554           - name: y
   4555             doc: |
   4556               TODO
   4557             type: float32
   4558           - name: width
   4559             doc: |
   4560               TODO
   4561             type: float32
   4562           - name: height
   4563             doc: |
   4564               TODO
   4565             type: float32
   4566           - name: min_depth
   4567             doc: |
   4568               TODO
   4569             type: float32
   4570           - name: max_depth
   4571             doc: |
   4572               TODO
   4573             type: float32
   4574       - name: set_scissor_rect
   4575         doc: |
   4576           TODO
   4577         args:
   4578           - name: x
   4579             doc: |
   4580               TODO
   4581             type: uint32
   4582           - name: y
   4583             doc: |
   4584               TODO
   4585             type: uint32
   4586           - name: width
   4587             doc: |
   4588               TODO
   4589             type: uint32
   4590           - name: height
   4591             doc: |
   4592               TODO
   4593             type: uint32
   4594       - name: set_vertex_buffer
   4595         doc: |
   4596           TODO
   4597         args:
   4598           - name: slot
   4599             doc: |
   4600               TODO
   4601             type: uint32
   4602           - name: buffer
   4603             doc: |
   4604               TODO
   4605             type: object.buffer
   4606             optional: true
   4607           - name: offset
   4608             doc: |
   4609               TODO
   4610             type: uint64
   4611           - name: size
   4612             doc: |
   4613               TODO
   4614             type: uint64
   4615       - name: set_index_buffer
   4616         doc: |
   4617           TODO
   4618         args:
   4619           - name: buffer
   4620             doc: |
   4621               TODO
   4622             type: object.buffer
   4623           - name: format
   4624             doc: |
   4625               TODO
   4626             type: enum.index_format
   4627           - name: offset
   4628             doc: |
   4629               TODO
   4630             type: uint64
   4631           - name: size
   4632             doc: |
   4633               TODO
   4634             type: uint64
   4635       - name: begin_occlusion_query
   4636         doc: |
   4637           TODO
   4638         args:
   4639           - name: query_index
   4640             doc: |
   4641               TODO
   4642             type: uint32
   4643       - name: end_occlusion_query
   4644         doc: |
   4645           TODO
   4646       - name: end
   4647         doc: |
   4648           TODO
   4649       - name: set_label
   4650         doc: |
   4651           TODO
   4652         args:
   4653           - name: label
   4654             doc: |
   4655               TODO
   4656             type: string_with_default_empty
   4657   - name: render_pipeline
   4658     doc: |
   4659       TODO
   4660     methods:
   4661       - name: get_bind_group_layout
   4662         doc: |
   4663           TODO
   4664         returns:
   4665           doc: |
   4666             TODO
   4667           type: object.bind_group_layout
   4668           passed_with_ownership: true
   4669         args:
   4670           - name: group_index
   4671             doc: |
   4672               TODO
   4673             type: uint32
   4674       - name: set_label
   4675         doc: |
   4676           TODO
   4677         args:
   4678           - name: label
   4679             doc: |
   4680               TODO
   4681             type: string_with_default_empty
   4682   - name: sampler
   4683     doc: |
   4684       TODO
   4685     methods:
   4686       - name: set_label
   4687         doc: |
   4688           TODO
   4689         args:
   4690           - name: label
   4691             doc: |
   4692               TODO
   4693             type: string_with_default_empty
   4694   - name: shader_module
   4695     doc: |
   4696       TODO
   4697     methods:
   4698       - name: get_compilation_info
   4699         doc: |
   4700           TODO
   4701         callback: callback.compilation_info
   4702       - name: set_label
   4703         doc: |
   4704           TODO
   4705         args:
   4706           - name: label
   4707             doc: |
   4708               TODO
   4709             type: string_with_default_empty
   4710   - name: surface
   4711     doc: An object used to continuously present image data to the user, see @ref Surfaces for more details.
   4712     methods:
   4713       - name: configure
   4714         doc: |
   4715           Configures parameters for rendering to `surface`.
   4716           Produces a @ref DeviceError for all content-timeline errors defined by the WebGPU specification.
   4717 
   4718           See @ref Surface-Configuration for more details.
   4719         args:
   4720           - name: config
   4721             doc: The new configuration to use.
   4722             type: struct.surface_configuration
   4723             pointer: immutable
   4724       - name: get_capabilities
   4725         doc: |
   4726           Provides information on how `adapter` is able to use `surface`.
   4727           See @ref Surface-Capabilities for more details.
   4728         returns:
   4729           doc: Indicates if there was an @ref OutStructChainError.
   4730           type: enum.status
   4731         args:
   4732           - name: adapter
   4733             doc: The @ref WGPUAdapter to get capabilities for presenting to this @ref WGPUSurface.
   4734             type: object.adapter
   4735           - name: capabilities
   4736             doc: |
   4737               The structure to fill capabilities in.
   4738               It may contain memory allocations so `::wgpuSurfaceCapabilitiesFreeMembers` must be called to avoid memory leaks.
   4739             type: struct.surface_capabilities
   4740             pointer: mutable
   4741             passed_with_ownership: true
   4742       - name: get_current_texture
   4743         doc: |
   4744           Returns the @ref WGPUTexture to render to `surface` this frame along with metadata on the frame.
   4745           Returns `NULL` and @ref WGPUSurfaceGetCurrentTextureStatus_Error if the surface is not configured.
   4746 
   4747           See @ref Surface-Presenting for more details.
   4748         args:
   4749           - name: surface_texture
   4750             doc: The structure to fill the @ref WGPUTexture and metadata in.
   4751             type: struct.surface_texture
   4752             pointer: mutable
   4753       - name: present
   4754         doc: |
   4755           Shows `surface`'s current texture to the user.
   4756           See @ref Surface-Presenting for more details.
   4757         returns:
   4758           doc: |
   4759             Returns @ref WGPUStatus_Error if the surface doesn't have a current texture.
   4760           type: enum.status
   4761       - name: unconfigure
   4762         doc: |
   4763           Removes the configuration for `surface`.
   4764           See @ref Surface-Configuration for more details.
   4765       - name: set_label
   4766         doc: Modifies the label used to refer to `surface`.
   4767         args:
   4768           - name: label
   4769             doc: The new label.
   4770             type: string_with_default_empty
   4771   - name: texture
   4772     doc: |
   4773       TODO
   4774     methods:
   4775       - name: create_view
   4776         doc: |
   4777           TODO
   4778         returns:
   4779           doc: |
   4780             TODO
   4781           type: object.texture_view
   4782           passed_with_ownership: true
   4783         args:
   4784           - name: descriptor
   4785             doc: |
   4786               TODO
   4787             type: struct.texture_view_descriptor
   4788             pointer: immutable
   4789             optional: true
   4790       - name: set_label
   4791         doc: |
   4792           TODO
   4793         args:
   4794           - name: label
   4795             doc: |
   4796               TODO
   4797             type: string_with_default_empty
   4798       - name: get_width
   4799         doc: |
   4800           TODO
   4801         returns:
   4802           doc: |
   4803             TODO
   4804           type: uint32
   4805       - name: get_height
   4806         doc: |
   4807           TODO
   4808         returns:
   4809           doc: |
   4810             TODO
   4811           type: uint32
   4812       - name: get_depth_or_array_layers
   4813         doc: |
   4814           TODO
   4815         returns:
   4816           doc: |
   4817             TODO
   4818           type: uint32
   4819       - name: get_mip_level_count
   4820         doc: |
   4821           TODO
   4822         returns:
   4823           doc: |
   4824             TODO
   4825           type: uint32
   4826       - name: get_sample_count
   4827         doc: |
   4828           TODO
   4829         returns:
   4830           doc: |
   4831             TODO
   4832           type: uint32
   4833       - name: get_dimension
   4834         doc: |
   4835           TODO
   4836         returns:
   4837           doc: |
   4838             TODO
   4839           type: enum.texture_dimension
   4840       - name: get_format
   4841         doc: |
   4842           TODO
   4843         returns:
   4844           doc: |
   4845             TODO
   4846           type: enum.texture_format
   4847       - name: get_usage
   4848         doc: |
   4849           TODO
   4850         returns:
   4851           doc: |
   4852             TODO
   4853           type: bitflag.texture_usage
   4854       - name: destroy
   4855         doc: |
   4856           TODO
   4857   - name: texture_view
   4858     doc: |
   4859       TODO
   4860     methods:
   4861       - name: set_label
   4862         doc: |
   4863           TODO
   4864         args:
   4865           - name: label
   4866             doc: |
   4867               TODO
   4868             type: string_with_default_empty