copyright: | Copyright 2019-2023 WebGPU-Native developers SPDX-License-Identifier: BSD-3-Clause name: webgpu enum_prefix: 0x0000 doc: | **Important:** *This documentation is a Work In Progress.* This is the home of WebGPU C API specification. We define here the standard `webgpu.h` header that all implementations should provide. For all details where behavior is not otherwise specified, `webgpu.h` has the same behavior as the WebGPU specification for JavaScript on the Web. The WebIDL-based Web specification is mapped into C as faithfully (and bidirectionally) as practical/possible. The working draft of WebGPU can be found at . The standard include directive for this header is `#include ` (if it is provided in a system-wide or toolchain-wide include directory). constants: - name: array_layer_count_undefined value: uint32_max doc: | Indicates no array layer count is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: copy_stride_undefined value: uint32_max doc: | Indicates no copy stride is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: depth_clear_value_undefined value: nan doc: | Indicates no depth clear value is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: depth_slice_undefined value: uint32_max doc: | Indicates no depth slice is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: limit_u32_undefined value: uint32_max doc: | For `uint32_t` limits, indicates no limit value is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: limit_u64_undefined value: uint64_max doc: | For `uint64_t` limits, indicates no limit value is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: mip_level_count_undefined value: uint32_max doc: | Indicates no mip level count is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: query_set_index_undefined value: uint32_max doc: | Indicates no query set index is specified. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: strlen value: usize_max doc: | Sentinel value used in @ref WGPUStringView to indicate that the pointer is to a null-terminated string, rather than an explicitly-sized string. - name: whole_map_size value: usize_max doc: | Indicates a size extending to the end of the buffer. For more info, see @ref SentinelValues and the places that use this sentinel value. - name: whole_size value: uint64_max doc: | Indicates a size extending to the end of the buffer. For more info, see @ref SentinelValues and the places that use this sentinel value. typedefs: [] enums: - name: adapter_type doc: | TODO entries: - null - name: discrete_GPU doc: | TODO - name: integrated_GPU doc: | TODO - name: CPU doc: | TODO - name: unknown doc: | TODO - name: address_mode doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: clamp_to_edge doc: | TODO - name: repeat doc: | TODO - name: mirror_repeat doc: | TODO - name: backend_type doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: "null" doc: | TODO - name: WebGPU doc: | TODO - name: D3D11 doc: | TODO - name: D3D12 doc: | TODO - name: metal doc: | TODO - name: vulkan doc: | TODO - name: openGL doc: | TODO - name: openGLES doc: | TODO - name: blend_factor doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: zero doc: | TODO - name: one doc: | TODO - name: src doc: | TODO - name: one_minus_src doc: | TODO - name: src_alpha doc: | TODO - name: one_minus_src_alpha doc: | TODO - name: dst doc: | TODO - name: one_minus_dst doc: | TODO - name: dst_alpha doc: | TODO - name: one_minus_dst_alpha doc: | TODO - name: src_alpha_saturated doc: | TODO - name: constant doc: | TODO - name: one_minus_constant doc: | TODO - name: src1 doc: | TODO - name: one_minus_src1 doc: | TODO - name: src1_alpha doc: | TODO - name: one_minus_src1_alpha doc: | TODO - name: blend_operation doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: add doc: | TODO - name: subtract doc: | TODO - name: reverse_subtract doc: | TODO - name: min doc: | TODO - name: max doc: | TODO - name: buffer_binding_type doc: | TODO entries: - name: binding_not_used doc: | Indicates that this @ref WGPUBufferBindingLayout member of its parent @ref WGPUBindGroupLayoutEntry is not used. (See also @ref SentinelValues.) - name: undefined doc: | `1`. Indicates no value is passed for this argument. See @ref SentinelValues. - name: uniform doc: | TODO - name: storage doc: | TODO - name: read_only_storage doc: | TODO - name: buffer_map_state doc: | TODO entries: - null - name: unmapped doc: | TODO - name: pending doc: | TODO - name: mapped doc: | TODO - name: callback_mode doc: The callback mode controls how a callback for an asynchronous operation may be fired. See @ref Asynchronous-Operations for how these are used. entries: - null - name: wait_any_only doc: | Callbacks created with `WGPUCallbackMode_WaitAnyOnly`: - fire when the asynchronous operation's future is passed to a call to @ref wgpuInstanceWaitAny AND the operation has already completed or it completes inside the call to @ref wgpuInstanceWaitAny. - name: allow_process_events doc: | Callbacks created with `WGPUCallbackMode_AllowProcessEvents`: - fire for the same reasons as callbacks created with `WGPUCallbackMode_WaitAnyOnly` - fire inside a call to @ref wgpuInstanceProcessEvents if the asynchronous operation is complete. - name: allow_spontaneous doc: | Callbacks created with `WGPUCallbackMode_AllowSpontaneous`: - fire for the same reasons as callbacks created with `WGPUCallbackMode_AllowProcessEvents` - **may** fire spontaneously on an arbitrary or application thread, when the WebGPU implementations discovers that the asynchronous operation is complete. Implementations _should_ fire spontaneous callbacks as soon as possible. @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`. - name: compare_function doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: never doc: | TODO - name: less doc: | TODO - name: equal doc: | TODO - name: less_equal doc: | TODO - name: greater doc: | TODO - name: not_equal doc: | TODO - name: greater_equal doc: | TODO - name: always doc: | TODO - name: compilation_info_request_status doc: | TODO entries: - null - name: success doc: | TODO - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: compilation_message_type doc: | TODO entries: - null - name: error doc: | TODO - name: warning doc: | TODO - name: info doc: | TODO - name: component_swizzle doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: zero doc: | Force its value to 0. - name: one doc: | Force its value to 1. - name: r doc: | Take its value from the red channel of the texture. - name: g doc: | Take its value from the green channel of the texture. - name: b doc: | Take its value from the blue channel of the texture. - name: a doc: | Take its value from the alpha channel of the texture. - name: composite_alpha_mode doc: Describes how frames are composited with other contents on the screen when @ref wgpuSurfacePresent is called. entries: - name: auto doc: Lets the WebGPU implementation choose the best mode (supported, and with the best performance) between @ref WGPUCompositeAlphaMode_Opaque or @ref WGPUCompositeAlphaMode_Inherit. - name: opaque doc: The alpha component of the image is ignored and teated as if it is always 1.0. - name: premultiplied 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. - name: unpremultiplied 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. - name: inherit 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). - name: create_pipeline_async_status doc: | TODO entries: - null - name: success doc: | TODO - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: validation_error doc: | TODO - name: internal_error doc: | TODO - name: cull_mode doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: none doc: | TODO - name: front doc: | TODO - name: back doc: | TODO - name: device_lost_reason doc: | TODO entries: - null - name: unknown doc: | TODO - name: destroyed doc: | TODO - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: failed_creation doc: | TODO - name: error_filter doc: | TODO entries: - null - name: validation doc: | TODO - name: out_of_memory doc: | TODO - name: internal doc: | TODO - name: error_type doc: | TODO entries: - null - name: no_error doc: | TODO - name: validation doc: | TODO - name: out_of_memory doc: | TODO - name: internal doc: | TODO - name: unknown doc: | TODO - name: feature_level doc: | See @ref WGPURequestAdapterOptions::featureLevel. entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: compatibility doc: | "Compatibility" profile which can be supported on OpenGL ES 3.1 and D3D11. - name: core doc: | "Core" profile which can be supported on Vulkan/Metal/D3D12 (at least). - name: feature_name doc: | TODO entries: - null - name: core_features_and_limits doc: | TODO - name: depth_clip_control doc: | TODO - name: depth32_float_stencil8 doc: | TODO - name: texture_compression_BC doc: | TODO - name: texture_compression_BC_sliced_3D doc: | TODO - name: texture_compression_ETC2 doc: | TODO - name: texture_compression_ASTC doc: | TODO - name: texture_compression_ASTC_sliced_3D doc: | TODO - name: timestamp_query doc: | TODO - name: indirect_first_instance doc: | TODO - name: shader_f16 doc: | TODO - name: RG11B10_ufloat_renderable doc: | TODO - name: BGRA8_unorm_storage doc: | TODO - name: float32_filterable doc: | TODO - name: float32_blendable doc: | TODO - name: clip_distances doc: | TODO - name: dual_source_blending doc: | TODO - name: subgroups doc: | TODO - name: texture_formats_tier_1 doc: | TODO - name: texture_formats_tier_2 doc: | TODO - name: primitive_index doc: | TODO - name: texture_component_swizzle doc: | TODO - name: filter_mode doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: nearest doc: | TODO - name: linear doc: | TODO - name: front_face doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: CCW doc: | TODO - name: CW doc: | TODO - name: index_format doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: uint16 doc: | TODO - name: uint32 doc: | TODO - name: instance_feature_name doc: | TODO entries: - null - name: timed_wait_any doc: | Enable use of ::wgpuInstanceWaitAny with `timeoutNS > 0`. - name: shader_source_SPIRV doc: | Enable passing SPIR-V shaders to @ref wgpuDeviceCreateShaderModule, via @ref WGPUShaderSourceSPIRV. - name: multiple_devices_per_adapter doc: | Normally, a @ref WGPUAdapter can only create a single device. If this is available and enabled, then adapters won't immediately expire when they create a device, so can be reused to make multiple devices. They may still expire for other reasons. - name: load_op doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: load doc: | TODO - name: clear doc: | TODO - name: map_async_status doc: | TODO entries: - null - name: success doc: | TODO - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: error doc: | TODO - name: aborted doc: | TODO - name: mipmap_filter_mode doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: nearest doc: | TODO - name: linear doc: | TODO - name: optional_bool doc: | TODO entries: - name: "false" doc: | TODO - name: "true" doc: | TODO - name: undefined doc: | TODO - name: pop_error_scope_status doc: | TODO entries: - null - name: success doc: | The error scope stack was successfully popped and a result was reported. - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: error doc: | The error scope stack could not be popped, because it was empty. - name: power_preference doc: | TODO entries: - name: undefined doc: No preference. (See also @ref SentinelValues.) - name: low_power doc: | TODO - name: high_performance doc: | TODO - name: predefined_color_space doc: | TODO entries: - null - name: SRGB doc: | TODO - name: display_p3 doc: | TODO - name: present_mode doc: Describes when and in which order frames are presented on the screen when @ref wgpuSurfacePresent is called. entries: - name: undefined doc: | Present mode is not specified. Use the default. - name: fifo doc: | The presentation of the image to the user waits for the next vertical blanking period to update in a first-in, first-out manner. Tearing cannot be observed and frame-loop will be limited to the display's refresh rate. This is the only mode that's always available. - name: fifo_relaxed doc: | 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. Tearing can sometimes be observed but late-frame don't produce a full-frame stutter in the presentation. This is still a first-in, first-out mechanism so a frame-loop will be limited to the display's refresh rate. - name: immediate doc: | The presentation of the image to the user is updated immediately without waiting for a vertical blank. Tearing can be observed but latency is minimized. - name: mailbox doc: | The presentation of the image to the user waits for the next vertical blanking period to update to the latest provided image. Tearing cannot be observed and a frame-loop is not limited to the display's refresh rate. - name: primitive_topology doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: point_list doc: | TODO - name: line_list doc: | TODO - name: line_strip doc: | TODO - name: triangle_list doc: | TODO - name: triangle_strip doc: | TODO - name: query_type doc: | TODO entries: - null - name: occlusion doc: | TODO - name: timestamp doc: | TODO - name: queue_work_done_status doc: | TODO entries: - null - name: success doc: | TODO - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: error doc: | There was some deterministic error. (Note this is currently never used, but it will be relevant when it's possible to create a queue object.) - name: request_adapter_status doc: | TODO entries: - null - name: success doc: | TODO - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: unavailable doc: | TODO - name: error doc: | TODO - name: request_device_status doc: | TODO entries: - null - name: success doc: | TODO - name: callback_cancelled doc: | See @ref CallbackStatuses. - name: error doc: | TODO - name: s_type doc: | TODO entries: - null - name: shader_source_SPIRV doc: | TODO - name: shader_source_WGSL doc: | TODO - name: render_pass_max_draw_count doc: | TODO - name: surface_source_metal_layer doc: | TODO - name: surface_source_windows_HWND doc: | TODO - name: surface_source_xlib_window doc: | TODO - name: surface_source_wayland_surface doc: | TODO - name: surface_source_android_native_window doc: | TODO - name: surface_source_XCB_window doc: | TODO - name: surface_color_management doc: | TODO - name: request_adapter_WebXR_options doc: | TODO - name: texture_component_swizzle_descriptor doc: | TODO - name: external_texture_binding_layout doc: | TODO - name: external_texture_binding_entry doc: | TODO - name: compatibility_mode_limits doc: | TODO - name: texture_binding_view_dimension doc: | TODO - name: sampler_binding_type doc: | TODO entries: - name: binding_not_used doc: | Indicates that this @ref WGPUSamplerBindingLayout member of its parent @ref WGPUBindGroupLayoutEntry is not used. (See also @ref SentinelValues.) - name: undefined doc: | `1`. Indicates no value is passed for this argument. See @ref SentinelValues. - name: filtering doc: | TODO - name: non_filtering doc: | TODO - name: comparison doc: | TODO - name: status doc: | Status code returned (synchronously) from many operations. Generally indicates an invalid input like an unknown enum value or @ref OutStructChainError. Read the function's documentation for specific error conditions. entries: - null - name: success doc: "" - name: error doc: "" - name: stencil_operation doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: keep doc: | TODO - name: zero doc: | TODO - name: replace doc: | TODO - name: invert doc: | TODO - name: increment_clamp doc: | TODO - name: decrement_clamp doc: | TODO - name: increment_wrap doc: | TODO - name: decrement_wrap doc: | TODO - name: storage_texture_access doc: | TODO entries: - name: binding_not_used doc: | Indicates that this @ref WGPUStorageTextureBindingLayout member of its parent @ref WGPUBindGroupLayoutEntry is not used. (See also @ref SentinelValues.) - name: undefined doc: | `1`. Indicates no value is passed for this argument. See @ref SentinelValues. - name: write_only doc: | TODO - name: read_only doc: | TODO - name: read_write doc: | TODO - name: store_op doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: store doc: | TODO - name: discard doc: | TODO - name: surface_get_current_texture_status doc: The status enum for @ref wgpuSurfaceGetCurrentTexture. entries: - null - name: success_optimal doc: Yay! Everything is good and we can render this frame. - name: success_suboptimal doc: Still OK - the surface can present the frame, but in a suboptimal way. The surface may need reconfiguration. - name: timeout doc: Some operation timed out while trying to acquire the frame. - name: outdated doc: The surface is too different to be used, compared to when it was originally created. - name: lost doc: The connection to whatever owns the surface was lost, or generally needs to be fully reinitialized. - name: error doc: There was some deterministic error (for example, the surface is not configured, or there was an @ref OutStructChainError). Should produce @ref ImplementationDefinedLogging containing details. - name: texture_aspect doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: all doc: | TODO - name: stencil_only doc: | TODO - name: depth_only doc: | TODO - name: texture_dimension doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: 1D doc: | TODO - name: 2D doc: | TODO - name: 3D doc: | TODO - name: texture_format doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: R8_unorm doc: | TODO - name: R8_snorm doc: | TODO - name: R8_uint doc: | TODO - name: R8_sint doc: | TODO - name: R16_unorm doc: | TODO - name: R16_snorm doc: | TODO - name: R16_uint doc: | TODO - name: R16_sint doc: | TODO - name: R16_float doc: | TODO - name: RG8_unorm doc: | TODO - name: RG8_snorm doc: | TODO - name: RG8_uint doc: | TODO - name: RG8_sint doc: | TODO - name: R32_float doc: | TODO - name: R32_uint doc: | TODO - name: R32_sint doc: | TODO - name: RG16_unorm doc: | TODO - name: RG16_snorm doc: | TODO - name: RG16_uint doc: | TODO - name: RG16_sint doc: | TODO - name: RG16_float doc: | TODO - name: RGBA8_unorm doc: | TODO - name: RGBA8_unorm_srgb doc: | TODO - name: RGBA8_snorm doc: | TODO - name: RGBA8_uint doc: | TODO - name: RGBA8_sint doc: | TODO - name: BGRA8_unorm doc: | TODO - name: BGRA8_unorm_srgb doc: | TODO - name: RGB10_A2_uint doc: | TODO - name: RGB10_A2_unorm doc: | TODO - name: RG11_B10_ufloat doc: | TODO - name: RGB9_E5_ufloat doc: | TODO - name: RG32_float doc: | TODO - name: RG32_uint doc: | TODO - name: RG32_sint doc: | TODO - name: RGBA16_unorm doc: | TODO - name: RGBA16_snorm doc: | TODO - name: RGBA16_uint doc: | TODO - name: RGBA16_sint doc: | TODO - name: RGBA16_float doc: | TODO - name: RGBA32_float doc: | TODO - name: RGBA32_uint doc: | TODO - name: RGBA32_sint doc: | TODO - name: stencil8 doc: | TODO - name: depth16_unorm doc: | TODO - name: depth24_plus doc: | TODO - name: depth24_plus_stencil8 doc: | TODO - name: depth32_float doc: | TODO - name: depth32_float_stencil8 doc: | TODO - name: BC1_RGBA_unorm doc: | TODO - name: BC1_RGBA_unorm_srgb doc: | TODO - name: BC2_RGBA_unorm doc: | TODO - name: BC2_RGBA_unorm_srgb doc: | TODO - name: BC3_RGBA_unorm doc: | TODO - name: BC3_RGBA_unorm_srgb doc: | TODO - name: BC4_R_unorm doc: | TODO - name: BC4_R_snorm doc: | TODO - name: BC5_RG_unorm doc: | TODO - name: BC5_RG_snorm doc: | TODO - name: BC6H_RGB_ufloat doc: | TODO - name: BC6H_RGB_float doc: | TODO - name: BC7_RGBA_unorm doc: | TODO - name: BC7_RGBA_unorm_srgb doc: | TODO - name: ETC2_RGB8_unorm doc: | TODO - name: ETC2_RGB8_unorm_srgb doc: | TODO - name: ETC2_RGB8A1_unorm doc: | TODO - name: ETC2_RGB8A1_unorm_srgb doc: | TODO - name: ETC2_RGBA8_unorm doc: | TODO - name: ETC2_RGBA8_unorm_srgb doc: | TODO - name: EAC_R11_unorm doc: | TODO - name: EAC_R11_snorm doc: | TODO - name: EAC_RG11_unorm doc: | TODO - name: EAC_RG11_snorm doc: | TODO - name: ASTC_4x4_unorm doc: | TODO - name: ASTC_4x4_unorm_srgb doc: | TODO - name: ASTC_5x4_unorm doc: | TODO - name: ASTC_5x4_unorm_srgb doc: | TODO - name: ASTC_5x5_unorm doc: | TODO - name: ASTC_5x5_unorm_srgb doc: | TODO - name: ASTC_6x5_unorm doc: | TODO - name: ASTC_6x5_unorm_srgb doc: | TODO - name: ASTC_6x6_unorm doc: | TODO - name: ASTC_6x6_unorm_srgb doc: | TODO - name: ASTC_8x5_unorm doc: | TODO - name: ASTC_8x5_unorm_srgb doc: | TODO - name: ASTC_8x6_unorm doc: | TODO - name: ASTC_8x6_unorm_srgb doc: | TODO - name: ASTC_8x8_unorm doc: | TODO - name: ASTC_8x8_unorm_srgb doc: | TODO - name: ASTC_10x5_unorm doc: | TODO - name: ASTC_10x5_unorm_srgb doc: | TODO - name: ASTC_10x6_unorm doc: | TODO - name: ASTC_10x6_unorm_srgb doc: | TODO - name: ASTC_10x8_unorm doc: | TODO - name: ASTC_10x8_unorm_srgb doc: | TODO - name: ASTC_10x10_unorm doc: | TODO - name: ASTC_10x10_unorm_srgb doc: | TODO - name: ASTC_12x10_unorm doc: | TODO - name: ASTC_12x10_unorm_srgb doc: | TODO - name: ASTC_12x12_unorm doc: | TODO - name: ASTC_12x12_unorm_srgb doc: | TODO - name: texture_sample_type doc: | TODO entries: - name: binding_not_used doc: | Indicates that this @ref WGPUTextureBindingLayout member of its parent @ref WGPUBindGroupLayoutEntry is not used. (See also @ref SentinelValues.) - name: undefined doc: | `1`. Indicates no value is passed for this argument. See @ref SentinelValues. - name: float doc: | TODO - name: unfilterable_float doc: | TODO - name: depth doc: | TODO - name: sint doc: | TODO - name: uint doc: | TODO - name: texture_view_dimension doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: 1D doc: | TODO - name: 2D doc: | TODO - name: 2D_array doc: | TODO - name: cube doc: | TODO - name: cube_array doc: | TODO - name: 3D doc: | TODO - name: tone_mapping_mode doc: | TODO entries: - null - name: standard doc: | TODO - name: extended doc: | TODO - name: vertex_format doc: | TODO entries: - null - name: uint8 doc: | TODO - name: uint8x2 doc: | TODO - name: uint8x4 doc: | TODO - name: sint8 doc: | TODO - name: sint8x2 doc: | TODO - name: sint8x4 doc: | TODO - name: unorm8 doc: | TODO - name: unorm8x2 doc: | TODO - name: unorm8x4 doc: | TODO - name: snorm8 doc: | TODO - name: snorm8x2 doc: | TODO - name: snorm8x4 doc: | TODO - name: uint16 doc: | TODO - name: uint16x2 doc: | TODO - name: uint16x4 doc: | TODO - name: sint16 doc: | TODO - name: sint16x2 doc: | TODO - name: sint16x4 doc: | TODO - name: unorm16 doc: | TODO - name: unorm16x2 doc: | TODO - name: unorm16x4 doc: | TODO - name: snorm16 doc: | TODO - name: snorm16x2 doc: | TODO - name: snorm16x4 doc: | TODO - name: float16 doc: | TODO - name: float16x2 doc: | TODO - name: float16x4 doc: | TODO - name: float32 doc: | TODO - name: float32x2 doc: | TODO - name: float32x3 doc: | TODO - name: float32x4 doc: | TODO - name: uint32 doc: | TODO - name: uint32x2 doc: | TODO - name: uint32x3 doc: | TODO - name: uint32x4 doc: | TODO - name: sint32 doc: | TODO - name: sint32x2 doc: | TODO - name: sint32x3 doc: | TODO - name: sint32x4 doc: | TODO - name: unorm10__10__10__2 doc: | TODO - name: unorm8x4_B_G_R_A doc: | TODO - name: vertex_step_mode doc: | TODO entries: - name: undefined doc: Indicates no value is passed for this argument. See @ref SentinelValues. - name: vertex doc: | TODO - name: instance doc: | TODO - name: wait_status doc: Status returned from a call to ::wgpuInstanceWaitAny. entries: - null - name: success doc: At least one WGPUFuture completed successfully. - name: timed_out doc: The wait operation succeeded, but no WGPUFutures completed within the timeout. - name: error doc: | The call was invalid for some reason (see @ref Wait-Any). Should produce @ref ImplementationDefinedLogging containing details. - name: WGSL_language_feature_name doc: | TODO entries: - null - name: readonly_and_readwrite_storage_textures doc: | TODO - name: packed4x8_integer_dot_product doc: | TODO - name: unrestricted_pointer_parameters doc: | TODO - name: pointer_composite_access doc: | TODO - name: uniform_buffer_standard_layout doc: | TODO - name: subgroup_id doc: | TODO - name: texture_and_sampler_let doc: | TODO - name: subgroup_uniformity doc: | TODO - name: texture_formats_tier1 doc: | TODO bitflags: - name: buffer_usage doc: | TODO entries: - name: none doc: | TODO - name: map_read doc: | The buffer can be *mapped* on the CPU side in *read* mode (using @ref WGPUMapMode_Read). - name: map_write doc: | The buffer can be *mapped* on the CPU side in *write* mode (using @ref WGPUMapMode_Write). @note This usage is **not** required to set `mappedAtCreation` to `true` in @ref WGPUBufferDescriptor. - name: copy_src doc: | The buffer can be used as the *source* of a GPU-side copy operation. - name: copy_dst doc: | The buffer can be used as the *destination* of a GPU-side copy operation. - name: index doc: | The buffer can be used as an Index buffer when doing indexed drawing in a render pipeline. - name: vertex doc: | The buffer can be used as a Vertex buffer when using a render pipeline. - name: uniform doc: | The buffer can be bound to a shader as a uniform buffer. - name: storage doc: | The buffer can be bound to a shader as a storage buffer. - name: indirect doc: | The buffer can store arguments for an indirect draw call. - name: query_resolve doc: | The buffer can store the result of a timestamp or occlusion query. - name: color_write_mask doc: | TODO entries: - name: none doc: | TODO - name: red doc: | TODO - name: green doc: | TODO - name: blue doc: | TODO - name: alpha doc: | TODO - name: all value_combination: - red - green - blue - alpha doc: | TODO - name: map_mode doc: | TODO entries: - name: none doc: | TODO - name: read doc: | TODO - name: write doc: | TODO - name: shader_stage doc: | TODO entries: - name: none doc: | TODO - name: vertex doc: | TODO - name: fragment doc: | TODO - name: compute doc: | TODO - name: texture_usage doc: | TODO entries: - name: none doc: | TODO - name: copy_src doc: | TODO - name: copy_dst doc: | TODO - name: texture_binding doc: | TODO - name: storage_binding doc: | TODO - name: render_attachment doc: | TODO - name: transient_attachment doc: | TODO structs: - name: adapter_info doc: | TODO type: extensible free_members: true members: - name: vendor doc: | TODO type: out_string - name: architecture doc: | TODO type: out_string - name: device doc: | TODO type: out_string - name: description doc: | TODO type: out_string - name: backend_type doc: | TODO type: enum.backend_type - name: adapter_type doc: | TODO type: enum.adapter_type - name: vendor_ID doc: | TODO type: uint32 - name: device_ID doc: | TODO type: uint32 - name: subgroup_min_size doc: | TODO type: uint32 - name: subgroup_max_size doc: | TODO type: uint32 - name: bind_group_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: layout doc: | TODO type: object.bind_group_layout - name: entries doc: | TODO type: array pointer: immutable - name: bind_group_entry doc: | TODO type: extensible members: - name: binding doc: | Binding index in the bind group. type: uint32 - name: buffer doc: | Set this if the binding is a buffer object. Otherwise must be null. type: object.buffer optional: true - name: offset doc: | If the binding is a buffer, this is the byte offset of the binding range. Otherwise ignored. type: uint64 - name: size doc: | If the binding is a buffer, this is the byte size of the binding range (@ref WGPU_WHOLE_SIZE means the binding ends at the end of the buffer). Otherwise ignored. type: uint64 default: constant.whole_size - name: sampler doc: | Set this if the binding is a sampler object. Otherwise must be null. type: object.sampler optional: true - name: texture_view doc: | Set this if the binding is a texture view object. Otherwise must be null. type: object.texture_view optional: true - name: bind_group_layout_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: entries doc: | TODO type: array pointer: immutable - name: bind_group_layout_entry doc: | TODO type: extensible members: - name: binding doc: | TODO type: uint32 - name: visibility doc: | TODO type: bitflag.shader_stage default: none - name: binding_array_size doc: | If non-zero, this entry defines a binding array with this size. type: uint32 - name: buffer doc: | TODO type: struct.buffer_binding_layout # Use struct-zero-init here to get .type=BindingNotUsed (0), instead of # Undefined which is the default in WGPU_BUFFER_BINDING_LAYOUT_INIT. # Zero-init is conveniently correct for the rest of the fields, too. default: zero - name: sampler doc: | TODO type: struct.sampler_binding_layout # Use struct-zero-init here to get .type=BindingNotUsed (0), instead of # Undefined which is the default in WGPU_SAMPLER_BINDING_LAYOUT_INIT. # Zero-init is conveniently correct for the rest of the fields, too. default: zero - name: texture doc: | TODO type: struct.texture_binding_layout # Use struct-zero-init here to get .sampleType=BindingNotUsed (0), instead of # Undefined which is the default in WGPU_TEXTURE_BINDING_LAYOUT_INIT. # Zero-init is conveniently correct for the rest of the fields, too. default: zero - name: storage_texture doc: | TODO type: struct.storage_texture_binding_layout # Use struct-zero-init here to get .access=BindingNotUsed (0), instead of # Undefined which is the default in WGPU_STORAGE_TEXTURE_BINDING_LAYOUT_INIT. # Zero-init is conveniently correct for the rest of the fields, too. default: zero - name: blend_component doc: | TODO type: standalone members: - name: operation doc: | If set to @ref WGPUBlendOperation_Undefined, [defaults](@ref SentinelValues) to @ref WGPUBlendOperation_Add. type: enum.blend_operation - name: src_factor doc: | If set to @ref WGPUBlendFactor_Undefined, [defaults](@ref SentinelValues) to @ref WGPUBlendFactor_One. type: enum.blend_factor - name: dst_factor doc: | If set to @ref WGPUBlendFactor_Undefined, [defaults](@ref SentinelValues) to @ref WGPUBlendFactor_Zero. type: enum.blend_factor - name: blend_state doc: | TODO type: standalone members: - name: color doc: | TODO type: struct.blend_component - name: alpha doc: | TODO type: struct.blend_component - name: buffer_binding_layout doc: | TODO type: extensible members: - name: type doc: | If set to @ref WGPUBufferBindingType_Undefined, [defaults](@ref SentinelValues) to @ref WGPUBufferBindingType_Uniform. type: enum.buffer_binding_type - name: has_dynamic_offset doc: | TODO type: bool default: false - name: min_binding_size doc: | TODO type: uint64 default: 0 - name: buffer_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: usage doc: | TODO type: bitflag.buffer_usage default: none - name: size doc: | TODO type: uint64 - name: mapped_at_creation doc: | When true, the buffer is mapped in write mode at creation. It should thus be unmapped once its initial data has been written. @note Mapping at creation does **not** require the usage @ref WGPUBufferUsage_MapWrite. type: bool default: false - name: color doc: | An RGBA color. Represents a `f32`, `i32`, or `u32` color using @ref DoubleAsSupertype. If any channel is non-finite, produces a @ref NonFiniteFloatValueError. type: standalone members: - name: r doc: "" type: float64_supertype - name: g doc: "" type: float64_supertype - name: b doc: "" type: float64_supertype - name: a doc: "" type: float64_supertype - name: color_target_state doc: | TODO type: extensible members: - name: format doc: | The texture format of the target. If @ref WGPUTextureFormat_Undefined, indicates a "hole" in the parent @ref WGPUFragmentState `targets` array: the pipeline does not output a value at this `location`. type: enum.texture_format - name: blend doc: | TODO type: struct.blend_state pointer: immutable optional: true - name: write_mask doc: | TODO type: bitflag.color_write_mask default: all - name: command_buffer_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: command_encoder_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: compatibility_mode_limits doc: | Note: While Compatibility Mode is optional to implement, this extension struct is required to be supported (for both queries and requests) and behave as defined in the WebGPU spec. type: extension extends: - limits members: - name: max_storage_buffers_in_vertex_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_storage_textures_in_vertex_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_storage_buffers_in_fragment_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_storage_textures_in_fragment_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: compilation_info doc: | TODO type: extensible_callback_arg members: - name: messages doc: | TODO type: array pointer: immutable - name: compilation_message doc: | TODO type: extensible_callback_arg members: - name: message doc: | A @ref LocalizableHumanReadableMessageString. type: out_string - name: type doc: | Severity level of the message. type: enum.compilation_message_type - name: line_num doc: | Line number where the message is attached, starting at 1. type: uint64 - name: line_pos doc: | Offset in UTF-8 code units (bytes) from the beginning of the line, starting at 1. type: uint64 - name: offset doc: | Offset in UTF-8 code units (bytes) from the beginning of the shader code, starting at 0. type: uint64 - name: length doc: | Length in UTF-8 code units (bytes) of the span the message corresponds to. type: uint64 - name: compute_pass_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: timestamp_writes doc: | TODO type: struct.pass_timestamp_writes pointer: immutable optional: true - name: compute_pipeline_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: layout doc: | TODO type: object.pipeline_layout optional: true - name: compute doc: | TODO type: struct.compute_state - name: compute_state doc: | TODO type: extensible members: - name: module doc: | TODO type: object.shader_module - name: entry_point doc: | TODO type: nullable_string - name: constants doc: | TODO type: array pointer: immutable - name: constant_entry doc: | TODO type: extensible members: - name: key doc: | TODO type: string_with_default_empty - name: value doc: | Represents a WGSL numeric or boolean value using @ref DoubleAsSupertype. If non-finite, produces a @ref NonFiniteFloatValueError. type: float64_supertype - name: depth_stencil_state doc: | TODO type: extensible members: - name: format doc: | TODO type: enum.texture_format - name: depth_write_enabled doc: | TODO type: enum.optional_bool - name: depth_compare doc: | TODO type: enum.compare_function - name: stencil_front doc: | TODO type: struct.stencil_face_state - name: stencil_back doc: | TODO type: struct.stencil_face_state - name: stencil_read_mask doc: | TODO type: uint32 default: "0xFFFFFFFF" - name: stencil_write_mask doc: | TODO type: uint32 default: "0xFFFFFFFF" - name: depth_bias doc: | TODO type: int32 default: 0 - name: depth_bias_slope_scale doc: | TODO If non-finite, produces a @ref NonFiniteFloatValueError. type: float32 default: 0.0 - name: depth_bias_clamp doc: | TODO If non-finite, produces a @ref NonFiniteFloatValueError. type: float32 default: 0.0 - name: device_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: required_features doc: | TODO type: array pointer: immutable - name: required_limits doc: | TODO type: struct.limits pointer: immutable optional: true - name: default_queue doc: | TODO type: struct.queue_descriptor - name: device_lost_callback_info doc: | TODO type: callback.device_lost - name: uncaptured_error_callback_info doc: | Called when there is an uncaptured error on this device, from any thread. See @ref ErrorScopes. **Important:** This callback does not have a configurable @ref WGPUCallbackMode; it may be called at any time (like @ref WGPUCallbackMode_AllowSpontaneous). As such, calls into the `webgpu.h` API from this callback are unsafe. See @ref CallbackReentrancy. type: callback.uncaptured_error - name: extent_3D doc: | TODO type: standalone members: - name: width doc: | TODO type: uint32 - name: height doc: | TODO type: uint32 default: 1 - name: depth_or_array_layers doc: | TODO type: uint32 default: 1 - name: external_texture_binding_entry doc: Chained in an @ref WGPUBindGroupEntry to set it to an @ref WGPUExternalTexture. This must have a corresponding @ref WGPUExternalTextureBindingLayout in the @ref WGPUBindGroupLayout. type: extension extends: - bind_group_entry members: - name: external_texture type: object.external_texture doc: | TODO - name: external_texture_binding_layout doc: Chained in @ref WGPUBindGroupLayoutEntry to specify that the corresponding entries in an @ref WGPUBindGroup will contain an @ref WGPUExternalTexture. type: extension extends: - bind_group_layout_entry - name: fragment_state doc: | TODO type: extensible members: - name: module doc: | TODO type: object.shader_module - name: entry_point doc: | TODO type: nullable_string - name: constants doc: | TODO type: array pointer: immutable - name: targets doc: | TODO type: array pointer: immutable - name: future doc: Opaque handle to an asynchronous operation. See @ref Asynchronous-Operations for more information. type: standalone members: - name: id doc: Opaque id of the @ref WGPUFuture type: uint64 - name: future_wait_info doc: Struct holding a future to wait on, and a `completed` boolean flag. type: standalone members: - name: future doc: The future to wait on. type: struct.future - name: completed doc: Whether or not the future completed. type: bool - name: instance_descriptor doc: | TODO type: extensible members: - name: required_features doc: | TODO type: array pointer: immutable - name: required_limits doc: | TODO type: struct.instance_limits pointer: immutable optional: true - name: instance_limits doc: | TODO type: extensible members: - name: timed_wait_any_max_count doc: The maximum number @ref WGPUFutureWaitInfo supported in a call to ::wgpuInstanceWaitAny with `timeoutNS > 0`. type: usize - name: limits doc: | TODO type: extensible members: - name: max_texture_dimension_1D doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_texture_dimension_2D doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_texture_dimension_3D doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_texture_array_layers doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_bind_groups doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_bind_groups_plus_vertex_buffers doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_bindings_per_bind_group doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_dynamic_uniform_buffers_per_pipeline_layout doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_dynamic_storage_buffers_per_pipeline_layout doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_sampled_textures_per_shader_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_samplers_per_shader_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_storage_buffers_per_shader_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_storage_textures_per_shader_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_uniform_buffers_per_shader_stage doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_uniform_buffer_binding_size doc: | TODO type: uint64 default: constant.limit_u64_undefined - name: max_storage_buffer_binding_size doc: | TODO type: uint64 default: constant.limit_u64_undefined - name: min_uniform_buffer_offset_alignment doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: min_storage_buffer_offset_alignment doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_vertex_buffers doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_buffer_size doc: | TODO type: uint64 default: constant.limit_u64_undefined - name: max_vertex_attributes doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_vertex_buffer_array_stride doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_inter_stage_shader_variables doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_color_attachments doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_color_attachment_bytes_per_sample doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_compute_workgroup_storage_size doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_compute_invocations_per_workgroup doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_compute_workgroup_size_x doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_compute_workgroup_size_y doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_compute_workgroup_size_z doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_compute_workgroups_per_dimension doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: max_immediate_size doc: | TODO type: uint32 default: constant.limit_u32_undefined - name: multisample_state doc: | TODO type: extensible members: - name: count doc: | TODO type: uint32 default: 1 - name: mask doc: | TODO type: uint32 default: "0xFFFFFFFF" - name: alpha_to_coverage_enabled doc: | TODO type: bool default: false - name: origin_3D doc: | TODO type: standalone members: - name: x doc: | TODO type: uint32 default: 0 - name: y doc: | TODO type: uint32 default: 0 - name: z doc: | TODO type: uint32 default: 0 - name: pass_timestamp_writes doc: | TODO type: extensible members: - name: query_set doc: | Query set to write timestamps to. type: object.query_set - name: beginning_of_pass_write_index doc: | TODO type: uint32 default: constant.query_set_index_undefined - name: end_of_pass_write_index doc: | TODO type: uint32 default: constant.query_set_index_undefined - name: pipeline_layout_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: bind_group_layouts doc: | TODO type: array pointer: immutable - name: immediate_size doc: | TODO type: uint32 default: 0 - name: primitive_state doc: | TODO type: extensible members: - name: topology doc: | If set to @ref WGPUPrimitiveTopology_Undefined, [defaults](@ref SentinelValues) to @ref WGPUPrimitiveTopology_TriangleList. type: enum.primitive_topology - name: strip_index_format doc: | TODO type: enum.index_format - name: front_face doc: | If set to @ref WGPUFrontFace_Undefined, [defaults](@ref SentinelValues) to @ref WGPUFrontFace_CCW. type: enum.front_face - name: cull_mode doc: | If set to @ref WGPUCullMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUCullMode_None. type: enum.cull_mode - name: unclipped_depth doc: | TODO type: bool default: false - name: query_set_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: type doc: | TODO type: enum.query_type - name: count doc: | TODO type: uint32 - name: queue_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: render_bundle_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: render_bundle_encoder_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: color_formats doc: | TODO type: array pointer: immutable - name: depth_stencil_format doc: | TODO type: enum.texture_format - name: sample_count doc: | TODO type: uint32 default: 1 - name: depth_read_only doc: | TODO type: bool default: false - name: stencil_read_only doc: | TODO type: bool default: false - name: render_pass_color_attachment doc: | TODO type: extensible members: - name: view doc: | If `NULL`, indicates a hole in the parent @ref WGPURenderPassDescriptor::colorAttachments array. type: object.texture_view optional: true - name: depth_slice doc: | TODO type: uint32 default: constant.depth_slice_undefined - name: resolve_target doc: | TODO type: object.texture_view optional: true - name: load_op doc: | TODO type: enum.load_op - name: store_op doc: | TODO type: enum.store_op - name: clear_value doc: | TODO type: struct.color - name: render_pass_depth_stencil_attachment doc: | TODO type: extensible members: - name: view doc: | TODO type: object.texture_view - name: depth_load_op doc: | TODO type: enum.load_op - name: depth_store_op doc: | TODO type: enum.store_op - name: depth_clear_value doc: | This is a @ref NullableFloatingPointType. If `NaN`, indicates an `undefined` value (as defined by the JS spec). Use @ref WGPU_DEPTH_CLEAR_VALUE_UNDEFINED to indicate this semantically. If infinite, produces a @ref NonFiniteFloatValueError. type: nullable_float32 default: constant.depth_clear_value_undefined - name: depth_read_only doc: | TODO type: bool default: false - name: stencil_load_op doc: | TODO type: enum.load_op - name: stencil_store_op doc: | TODO type: enum.store_op - name: stencil_clear_value doc: | TODO type: uint32 - name: stencil_read_only doc: | TODO type: bool default: false - name: render_pass_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: color_attachments doc: | TODO type: array pointer: immutable - name: depth_stencil_attachment doc: | TODO type: struct.render_pass_depth_stencil_attachment pointer: immutable optional: true - name: occlusion_query_set doc: | TODO type: object.query_set optional: true - name: timestamp_writes doc: | TODO type: struct.pass_timestamp_writes pointer: immutable optional: true - name: render_pass_max_draw_count doc: | TODO type: extension extends: - render_pass_descriptor members: - name: max_draw_count doc: | TODO type: uint64 default: 50000000 - name: render_pipeline_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: layout doc: | TODO type: object.pipeline_layout optional: true - name: vertex doc: | TODO type: struct.vertex_state - name: primitive doc: | TODO type: struct.primitive_state - name: depth_stencil doc: | TODO type: struct.depth_stencil_state pointer: immutable optional: true - name: multisample doc: | TODO type: struct.multisample_state - name: fragment doc: | TODO type: struct.fragment_state pointer: immutable optional: true - name: request_adapter_options doc: | TODO type: extensible members: - name: feature_level doc: | "Feature level" for the adapter request. If an adapter is returned, it must support the features and limits in the requested feature level. If set to @ref WGPUFeatureLevel_Undefined, [defaults](@ref SentinelValues) to @ref WGPUFeatureLevel_Core. Additionally, implementations may ignore @ref WGPUFeatureLevel_Compatibility and provide @ref WGPUFeatureLevel_Core instead. type: enum.feature_level - name: power_preference doc: | TODO type: enum.power_preference - name: force_fallback_adapter doc: | If true, requires the adapter to be a "fallback" adapter as defined by the JS spec. If this is not possible, the request returns null. type: bool default: false - name: backend_type doc: | If set, requires the adapter to have a particular backend type. If this is not possible, the request returns null. type: enum.backend_type - name: compatible_surface doc: | If set, requires the adapter to be able to output to a particular surface. If this is not possible, the request returns null. type: object.surface optional: true - name: request_adapter_WebXR_options doc: | Extension providing requestAdapter options for implementations with WebXR interop (i.e. Wasm). type: extension extends: - request_adapter_options members: - name: xr_compatible doc: | Sets the `xrCompatible` option in the JS API. type: bool default: false - name: sampler_binding_layout doc: | TODO type: extensible members: - name: type doc: | If set to @ref WGPUSamplerBindingType_Undefined, [defaults](@ref SentinelValues) to @ref WGPUSamplerBindingType_Filtering. type: enum.sampler_binding_type - name: sampler_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: address_mode_u doc: | If set to @ref WGPUAddressMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUAddressMode_ClampToEdge. type: enum.address_mode - name: address_mode_v doc: | If set to @ref WGPUAddressMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUAddressMode_ClampToEdge. type: enum.address_mode - name: address_mode_w doc: | If set to @ref WGPUAddressMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUAddressMode_ClampToEdge. type: enum.address_mode - name: mag_filter doc: | If set to @ref WGPUFilterMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUFilterMode_Nearest. type: enum.filter_mode - name: min_filter doc: | If set to @ref WGPUFilterMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUFilterMode_Nearest. type: enum.filter_mode - name: mipmap_filter doc: | If set to @ref WGPUFilterMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUMipmapFilterMode_Nearest. type: enum.mipmap_filter_mode - name: lod_min_clamp doc: | TODO If non-finite, produces a @ref NonFiniteFloatValueError. type: float32 default: 0.0 - name: lod_max_clamp doc: | TODO If non-finite, produces a @ref NonFiniteFloatValueError. type: float32 default: 32.0 - name: compare doc: | TODO type: enum.compare_function - name: max_anisotropy doc: | TODO type: uint16 default: 1 - name: shader_module_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: shader_source_SPIRV doc: | TODO type: extension extends: - shader_module_descriptor members: - name: code_size doc: | TODO type: uint32 default: 0 - name: code doc: | TODO type: uint32 pointer: immutable - name: shader_source_WGSL doc: | TODO type: extension extends: - shader_module_descriptor members: - name: code doc: | TODO type: string_with_default_empty - name: stencil_face_state doc: | TODO type: standalone members: - name: compare doc: | If set to @ref WGPUCompareFunction_Undefined, [defaults](@ref SentinelValues) to @ref WGPUCompareFunction_Always. type: enum.compare_function - name: fail_op doc: | If set to @ref WGPUStencilOperation_Undefined, [defaults](@ref SentinelValues) to @ref WGPUStencilOperation_Keep. type: enum.stencil_operation - name: depth_fail_op doc: | If set to @ref WGPUStencilOperation_Undefined, [defaults](@ref SentinelValues) to @ref WGPUStencilOperation_Keep. type: enum.stencil_operation - name: pass_op doc: | If set to @ref WGPUStencilOperation_Undefined, [defaults](@ref SentinelValues) to @ref WGPUStencilOperation_Keep. type: enum.stencil_operation - name: storage_texture_binding_layout doc: | TODO type: extensible members: - name: access doc: | If set to @ref WGPUStorageTextureAccess_Undefined, [defaults](@ref SentinelValues) to @ref WGPUStorageTextureAccess_WriteOnly. type: enum.storage_texture_access - name: format doc: | TODO type: enum.texture_format - name: view_dimension doc: | If set to @ref WGPUTextureViewDimension_Undefined, [defaults](@ref SentinelValues) to @ref WGPUTextureViewDimension_2D. type: enum.texture_view_dimension - name: supported_features doc: | TODO type: standalone free_members: true members: - name: features doc: | TODO type: array pointer: immutable - name: supported_instance_features doc: | TODO type: standalone free_members: true members: - name: features doc: | TODO type: array pointer: immutable - name: supported_WGSL_language_features doc: | TODO type: standalone free_members: true members: - name: features doc: | TODO type: array pointer: immutable - name: surface_capabilities doc: Filled by @ref wgpuSurfaceGetCapabilities with what's supported for @ref wgpuSurfaceConfigure for a pair of @ref WGPUSurface and @ref WGPUAdapter. type: extensible free_members: true members: - name: usages doc: | The bit set of supported @ref WGPUTextureUsage bits. Guaranteed to contain @ref WGPUTextureUsage_RenderAttachment. type: bitflag.texture_usage - name: formats doc: A list of supported @ref WGPUTextureFormat values, in order of preference. type: array pointer: immutable - name: present_modes doc: | A list of supported @ref WGPUPresentMode values. Guaranteed to contain @ref WGPUPresentMode_Fifo. type: array pointer: immutable - name: alpha_modes doc: | A list of supported @ref WGPUCompositeAlphaMode values. @ref WGPUCompositeAlphaMode_Auto will be an alias for the first element and will never be present in this array. type: array pointer: immutable - name: surface_color_management doc: | Extension of @ref WGPUSurfaceConfiguration for color spaces and HDR. type: extension members: - name: color_space doc: TODO type: enum.predefined_color_space - name: tone_mapping_mode doc: TODO type: enum.tone_mapping_mode - name: surface_configuration doc: | Options to @ref wgpuSurfaceConfigure for defining how a @ref WGPUSurface will be rendered to and presented to the user. See @ref Surface-Configuration for more details. type: extensible members: - name: device doc: The @ref WGPUDevice to use to render to surface's textures. type: object.device - name: format doc: The @ref WGPUTextureFormat of the surface's textures. type: enum.texture_format - name: usage doc: The @ref WGPUTextureUsage of the surface's textures. type: bitflag.texture_usage default: render_attachment - name: width doc: The width of the surface's textures. type: uint32 - name: height doc: The height of the surface's textures. type: uint32 - name: view_formats doc: The additional @ref WGPUTextureFormat for @ref WGPUTextureView format reinterpretation of the surface's textures. type: array pointer: immutable - name: alpha_mode doc: | How the surface's frames will be composited on the screen. If set to @ref WGPUCompositeAlphaMode_Auto, [defaults] to @ref WGPUCompositeAlphaMode_Inherit in native (allowing the mode to be configured externally), and to @ref WGPUCompositeAlphaMode_Opaque in Wasm. type: enum.composite_alpha_mode default: auto - name: present_mode doc: | When and in which order the surface's frames will be shown on the screen. If set to @ref WGPUPresentMode_Undefined, [defaults](@ref SentinelValues) to @ref WGPUPresentMode_Fifo. type: enum.present_mode - name: surface_descriptor doc: | The root descriptor for the creation of an @ref WGPUSurface with @ref wgpuInstanceCreateSurface. It isn't sufficient by itself and must have one of the `WGPUSurfaceSource*` in its chain. See @ref Surface-Creation for more details. type: extensible members: - name: label doc: Label used to refer to the object. type: string_with_default_empty - name: surface_source_android_native_window doc: Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an Android [`ANativeWindow`](https://developer.android.com/ndk/reference/group/a-native-window). type: extension extends: - surface_descriptor members: - name: window doc: The pointer to the [`ANativeWindow`](https://developer.android.com/ndk/reference/group/a-native-window) that will be wrapped by the @ref WGPUSurface. type: c_void pointer: mutable - name: surface_source_metal_layer doc: Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping a [`CAMetalLayer`](https://developer.apple.com/documentation/quartzcore/cametallayer?language=objc). type: extension extends: - surface_descriptor members: - name: layer doc: The pointer to the [`CAMetalLayer`](https://developer.apple.com/documentation/quartzcore/cametallayer?language=objc) that will be wrapped by the @ref WGPUSurface. type: c_void pointer: mutable - name: surface_source_wayland_surface 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). type: extension extends: - surface_descriptor members: - name: display doc: A [`wl_display`](https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_display) for this Wayland instance. type: c_void pointer: mutable - name: surface doc: A [`wl_surface`](https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_surface) that will be wrapped by the @ref WGPUSurface type: c_void pointer: mutable - name: surface_source_windows_HWND 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). type: extension extends: - surface_descriptor members: - name: hinstance doc: | The [`HINSTANCE`](https://learn.microsoft.com/en-us/windows/win32/learnwin32/winmain--the-application-entry-point) for this application. Most commonly `GetModuleHandle(nullptr)`. type: c_void pointer: mutable - name: hwnd doc: The [`HWND`](https://learn.microsoft.com/en-us/windows/apps/develop/ui-input/retrieve-hwnd) that will be wrapped by the @ref WGPUSurface. type: c_void pointer: mutable - name: surface_source_XCB_window doc: Chained in @ref WGPUSurfaceDescriptor to make an @ref WGPUSurface wrapping an [XCB](https://xcb.freedesktop.org/) `xcb_window_t`. type: extension extends: - surface_descriptor members: - name: connection doc: The `xcb_connection_t` for the connection to the X server. type: c_void pointer: mutable - name: window doc: The `xcb_window_t` for the window that will be wrapped by the @ref WGPUSurface. type: uint32 - name: surface_source_xlib_window 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`. type: extension extends: - surface_descriptor members: - name: display 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. type: c_void pointer: mutable - name: window doc: The [`Window`](https://www.x.org/releases/current/doc/libX11/libX11/libX11.html#Creating_Windows) that will be wrapped by the @ref WGPUSurface. type: uint64 - name: surface_texture doc: | Queried each frame from a @ref WGPUSurface to get a @ref WGPUTexture to render to along with some metadata. See @ref Surface-Presenting for more details. type: extensible members: - name: texture doc: | The @ref WGPUTexture representing the frame that will be shown on the surface. It is @ref ReturnedWithOwnership from @ref wgpuSurfaceGetCurrentTexture. type: object.texture - name: status doc: Whether the call to @ref wgpuSurfaceGetCurrentTexture succeeded and a hint as to why it might not have. type: enum.surface_get_current_texture_status - name: texel_copy_buffer_info doc: | TODO type: standalone members: - name: layout doc: | TODO type: struct.texel_copy_buffer_layout - name: buffer doc: | TODO type: object.buffer - name: texel_copy_buffer_layout doc: | TODO type: standalone members: - name: offset doc: | TODO type: uint64 default: 0 - name: bytes_per_row doc: | TODO type: uint32 default: constant.copy_stride_undefined - name: rows_per_image doc: | TODO type: uint32 default: constant.copy_stride_undefined - name: texel_copy_texture_info doc: | TODO type: standalone members: - name: texture doc: | TODO type: object.texture - name: mip_level doc: | TODO type: uint32 default: 0 - name: origin doc: | TODO type: struct.origin_3D - name: aspect doc: | If set to @ref WGPUTextureAspect_Undefined, [defaults](@ref SentinelValues) to @ref WGPUTextureAspect_All. type: enum.texture_aspect - name: texture_binding_layout doc: | TODO type: extensible members: - name: sample_type doc: | If set to @ref WGPUTextureSampleType_Undefined, [defaults](@ref SentinelValues) to @ref WGPUTextureSampleType_Float. type: enum.texture_sample_type - name: view_dimension doc: | If set to @ref WGPUTextureViewDimension_Undefined, [defaults](@ref SentinelValues) to @ref WGPUTextureViewDimension_2D. type: enum.texture_view_dimension - name: multisampled doc: | TODO type: bool default: false - name: texture_binding_view_dimension doc: | Note: While Compatibility Mode is optional to implement, this extension struct is required to be accepted (but per the WebGPU spec, its contents are ignored on devices that have the @ref WGPUFeatureName_CoreFeaturesAndLimits feature). type: extension extends: - texture_descriptor members: - name: texture_binding_view_dimension doc: | TODO type: enum.texture_view_dimension - name: texture_component_swizzle doc: | When accessed by a shader, the red/green/blue/alpha channels are replaced by the value corresponding to the component specified in r, g, b, and a, respectively unlike the JS API which uses a string of length four, with each character mapping to the texture view's red/green/blue/alpha channels. type: standalone members: - name: r doc: | The value that replaces the red channel in the shader. If set to @ref WGPUComponentSwizzle_Undefined, [defaults](@ref SentinelValues) to @ref WGPUComponentSwizzle_R. type: enum.component_swizzle - name: g doc: | The value that replaces the green channel in the shader. If set to @ref WGPUComponentSwizzle_Undefined, [defaults](@ref SentinelValues) to @ref WGPUComponentSwizzle_G. type: enum.component_swizzle - name: b doc: | The value that replaces the blue channel in the shader. If set to @ref WGPUComponentSwizzle_Undefined, [defaults](@ref SentinelValues) to @ref WGPUComponentSwizzle_B. type: enum.component_swizzle - name: a doc: | The value that replaces the alpha channel in the shader. If set to @ref WGPUComponentSwizzle_Undefined, [defaults](@ref SentinelValues) to @ref WGPUComponentSwizzle_A. type: enum.component_swizzle - name: texture_component_swizzle_descriptor doc: | TODO type: extension extends: - texture_view_descriptor members: - name: swizzle doc: | TODO type: struct.texture_component_swizzle - name: texture_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: usage doc: | TODO type: bitflag.texture_usage default: none - name: dimension doc: | If set to @ref WGPUTextureDimension_Undefined, [defaults](@ref SentinelValues) to @ref WGPUTextureDimension_2D. type: enum.texture_dimension - name: size doc: | TODO type: struct.extent_3D - name: format doc: | TODO type: enum.texture_format - name: mip_level_count doc: | TODO type: uint32 default: 1 - name: sample_count doc: | TODO type: uint32 default: 1 - name: view_formats doc: | TODO type: array pointer: immutable - name: texture_view_descriptor doc: | TODO type: extensible members: - name: label doc: | TODO type: string_with_default_empty - name: format doc: | TODO type: enum.texture_format - name: dimension doc: | TODO type: enum.texture_view_dimension - name: base_mip_level doc: | TODO type: uint32 default: 0 - name: mip_level_count doc: | TODO type: uint32 default: constant.mip_level_count_undefined - name: base_array_layer doc: | TODO type: uint32 default: 0 - name: array_layer_count doc: | TODO type: uint32 default: constant.array_layer_count_undefined - name: aspect doc: | If set to @ref WGPUTextureAspect_Undefined, [defaults](@ref SentinelValues) to @ref WGPUTextureAspect_All. type: enum.texture_aspect - name: usage doc: | TODO type: bitflag.texture_usage default: none - name: vertex_attribute doc: | TODO type: extensible members: - name: format doc: | TODO type: enum.vertex_format - name: offset doc: | TODO type: uint64 - name: shader_location doc: | TODO type: uint32 - name: vertex_buffer_layout doc: | If `attributes` is empty *and* `stepMode` is @ref WGPUVertexStepMode_Undefined, indicates a "hole" in the parent @ref WGPUVertexState `buffers` array, with behavior equivalent to `null` in the JS API. If `attributes` is empty but `stepMode` is *not* @ref WGPUVertexStepMode_Undefined, indicates a vertex buffer with no attributes, with behavior equivalent to `{ attributes: [] }` in the JS API. (TODO: If the JS API changes not to distinguish these cases, then this distinction doesn't matter and we can remove this documentation.) If `stepMode` is @ref WGPUVertexStepMode_Undefined but `attributes` is *not* empty, `stepMode` [defaults](@ref SentinelValues) to @ref WGPUVertexStepMode_Vertex. type: extensible members: - name: step_mode doc: | TODO type: enum.vertex_step_mode - name: array_stride doc: | TODO type: uint64 - name: attributes doc: | TODO type: array pointer: immutable - name: vertex_state doc: | TODO type: extensible members: - name: module doc: | TODO type: object.shader_module - name: entry_point doc: | TODO type: nullable_string - name: constants doc: | TODO type: array pointer: immutable - name: buffers doc: | TODO type: array pointer: immutable callbacks: - name: buffer_map doc: | TODO style: callback_mode args: - name: status doc: | TODO type: enum.map_async_status - name: message doc: | TODO type: out_string passed_with_ownership: false - name: compilation_info doc: | TODO style: callback_mode args: - name: status doc: | TODO type: enum.compilation_info_request_status - name: compilation_info doc: | This argument contains multiple @ref ImplementationAllocatedStructChain roots. Arbitrary chains must be handled gracefully by the application! type: struct.compilation_info pointer: immutable passed_with_ownership: false - name: create_compute_pipeline_async doc: | TODO style: callback_mode args: - name: status doc: | TODO type: enum.create_pipeline_async_status - name: pipeline doc: | TODO type: object.compute_pipeline passed_with_ownership: true - name: message doc: | TODO type: out_string - name: create_render_pipeline_async doc: | TODO style: callback_mode args: - name: status doc: | TODO type: enum.create_pipeline_async_status - name: pipeline doc: | TODO type: object.render_pipeline passed_with_ownership: true - name: message doc: | TODO type: out_string - name: device_lost doc: TODO style: callback_mode args: - name: device doc: | Pointer to the device which was lost. This is always a non-null pointer. The pointed-to @ref WGPUDevice will be null if, and only if, either: (1) The `reason` is @ref WGPUDeviceLostReason_FailedCreation. (2) The last ref of the device has been (or is being) released: see @ref DeviceRelease. type: object.device pointer: immutable passed_with_ownership: false - name: reason doc: | An error code explaining why the device was lost. type: enum.device_lost_reason - name: message doc: | A @ref LocalizableHumanReadableMessageString describing why the device was lost. type: out_string passed_with_ownership: false - name: pop_error_scope doc: | TODO style: callback_mode args: - name: status doc: | See @ref WGPUPopErrorScopeStatus. type: enum.pop_error_scope_status - name: type doc: | The type of the error caught by the scope, or @ref WGPUErrorType_NoError if there was none. If the `status` is not @ref WGPUPopErrorScopeStatus_Success, this is @ref WGPUErrorType_NoError. type: enum.error_type - name: message doc: | If the `status` is not @ref WGPUPopErrorScopeStatus_Success **or** the `type` is not @ref WGPUErrorType_NoError, this is a non-empty @ref LocalizableHumanReadableMessageString; otherwise, this is an empty string. type: out_string passed_with_ownership: false - name: queue_work_done doc: | TODO style: callback_mode args: - name: status doc: | See @ref WGPUQueueWorkDoneStatus. type: enum.queue_work_done_status - name: message doc: | If the `status` is not @ref WGPUQueueWorkDoneStatus_Success, this is a non-empty @ref LocalizableHumanReadableMessageString; otherwise, this is an empty string. type: out_string passed_with_ownership: false - name: request_adapter doc: | TODO style: callback_mode args: - name: status doc: | TODO type: enum.request_adapter_status - name: adapter doc: | TODO type: object.adapter passed_with_ownership: true - name: message doc: | TODO type: out_string passed_with_ownership: false - name: request_device doc: | TODO style: callback_mode args: - name: status doc: | TODO type: enum.request_device_status - name: device doc: | TODO type: object.device passed_with_ownership: true - name: message doc: | TODO type: out_string passed_with_ownership: false - name: uncaptured_error doc: | TODO style: immediate args: - name: device doc: | TODO type: object.device pointer: immutable passed_with_ownership: false - name: type doc: | TODO type: enum.error_type - name: message doc: | TODO type: out_string passed_with_ownership: false functions: - name: create_instance doc: Create a WGPUInstance returns: doc: | TODO type: object.instance passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.instance_descriptor pointer: immutable optional: true - name: get_instance_features doc: | Get the list of @ref WGPUInstanceFeatureName values supported by the instance. args: - name: features doc: | TODO type: struct.supported_instance_features pointer: mutable passed_with_ownership: true - name: get_instance_limits doc: | Get the limits supported by the instance. returns: doc: Indicates if there was an @ref OutStructChainError. type: enum.status args: - name: limits doc: | TODO type: struct.instance_limits pointer: mutable - name: has_instance_feature doc: | Check whether a particular @ref WGPUInstanceFeatureName is supported by the instance. returns: doc: | TODO type: bool args: - name: feature doc: | TODO type: enum.instance_feature_name objects: - name: adapter doc: | TODO methods: - name: get_limits doc: | TODO returns: doc: Indicates if there was an @ref OutStructChainError. type: enum.status args: - name: limits doc: | TODO type: struct.limits pointer: mutable - name: has_feature doc: | TODO returns: doc: | TODO type: bool args: - name: feature doc: | TODO type: enum.feature_name - name: get_features doc: | Get the list of @ref WGPUFeatureName values supported by the adapter. args: - name: features doc: | TODO type: struct.supported_features pointer: mutable passed_with_ownership: true - name: get_info doc: | TODO returns: doc: Indicates if there was an @ref OutStructChainError. type: enum.status args: - name: info doc: | TODO type: struct.adapter_info pointer: mutable passed_with_ownership: true - name: request_device doc: | TODO callback: callback.request_device args: - name: descriptor doc: | TODO type: struct.device_descriptor pointer: immutable optional: true - name: bind_group doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: bind_group_layout doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: buffer doc: | TODO methods: - name: map_async doc: | TODO callback: callback.buffer_map args: - name: mode doc: | The mapping mode (read or write). type: bitflag.map_mode - name: offset doc: | Byte offset relative to beginning of the buffer. type: usize - name: size doc: | Byte size of the region to map. If this is @ref WGPU_WHOLE_MAP_SIZE, it defaults to `buffer.size - offset`. type: usize - name: get_mapped_range doc: | Returns a mutable pointer to beginning of the mapped range. See @ref MappedRangeBehavior for error conditions and guarantees. This function is safe to call inside spontaneous callbacks (see @ref CallbackReentrancy). In Wasm, if `memcpy`ing into this range, prefer using @ref wgpuBufferWriteMappedRange instead for better performance. returns: doc: "" type: c_void pointer: mutable args: - name: offset doc: | Byte offset relative to the beginning of the buffer. type: usize - name: size doc: | Byte size of the range to get. If this is @ref WGPU_WHOLE_MAP_SIZE, it defaults to `buffer.size - offset`. The returned pointer is valid for exactly this many bytes. type: usize - name: get_const_mapped_range doc: | Returns a const pointer to beginning of the mapped range. It must not be written; writing to this range causes undefined behavior. See @ref MappedRangeBehavior for error conditions and guarantees. This function is safe to call inside spontaneous callbacks (see @ref CallbackReentrancy). In Wasm, if `memcpy`ing from this range, prefer using @ref wgpuBufferReadMappedRange instead for better performance. returns: doc: "" type: c_void pointer: immutable args: - name: offset doc: | Byte offset relative to the beginning of the buffer. type: usize - name: size doc: | Byte size of the range to get. If this is @ref WGPU_WHOLE_MAP_SIZE, it defaults to `buffer.size - offset`. The returned pointer is valid for exactly this many bytes. type: usize - name: read_mapped_range doc: | Copies a range of data from the buffer mapping into the provided destination pointer. See @ref MappedRangeBehavior for error conditions and guarantees. This function is safe to call inside spontaneous callbacks (see @ref CallbackReentrancy). In Wasm, this is more efficient than copying from a mapped range into a `malloc`'d range. returns: doc: | @ref WGPUStatus_Error if the copy did not occur. type: enum.status args: - name: offset doc: | Byte offset relative to the beginning of the buffer. type: usize - name: data doc: | Destination, to read buffer data into. type: c_void pointer: mutable - name: size doc: | Number of bytes of data to read from the buffer. (Note @ref WGPU_WHOLE_MAP_SIZE is *not* accepted here.) type: usize - name: write_mapped_range doc: | Copies a range of data from the provided source pointer into the buffer mapping. See @ref MappedRangeBehavior for error conditions and guarantees. This function is safe to call inside spontaneous callbacks (see @ref CallbackReentrancy). In Wasm, this is more efficient than copying from a `malloc`'d range into a mapped range. returns: doc: | @ref WGPUStatus_Error if the copy did not occur. type: enum.status args: - name: offset doc: | Byte offset relative to the beginning of the buffer. type: usize - name: data doc: | Source, to write buffer data from. type: c_void pointer: immutable - name: size doc: | Number of bytes of data to write to the buffer. (Note @ref WGPU_WHOLE_MAP_SIZE is *not* accepted here.) type: usize - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: get_usage doc: | TODO returns: doc: | TODO type: bitflag.buffer_usage - name: get_size doc: | TODO returns: doc: | TODO type: uint64 - name: get_map_state doc: | TODO returns: doc: | TODO type: enum.buffer_map_state - name: unmap doc: | TODO - name: destroy doc: | TODO - name: command_buffer doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: command_encoder doc: | TODO methods: - name: finish doc: | TODO returns: doc: | TODO type: object.command_buffer passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.command_buffer_descriptor pointer: immutable optional: true - name: begin_compute_pass doc: | TODO returns: doc: | TODO type: object.compute_pass_encoder passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.compute_pass_descriptor pointer: immutable optional: true - name: begin_render_pass doc: | TODO returns: doc: | TODO type: object.render_pass_encoder passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.render_pass_descriptor pointer: immutable - name: copy_buffer_to_buffer doc: | TODO args: - name: source doc: | TODO type: object.buffer - name: source_offset doc: | TODO type: uint64 - name: destination doc: | TODO type: object.buffer - name: destination_offset doc: | TODO type: uint64 - name: size doc: | TODO type: uint64 - name: copy_buffer_to_texture doc: | TODO args: - name: source doc: | TODO type: struct.texel_copy_buffer_info pointer: immutable - name: destination doc: | TODO type: struct.texel_copy_texture_info pointer: immutable - name: copy_size doc: | TODO type: struct.extent_3D pointer: immutable - name: copy_texture_to_buffer doc: | TODO args: - name: source doc: | TODO type: struct.texel_copy_texture_info pointer: immutable - name: destination doc: | TODO type: struct.texel_copy_buffer_info pointer: immutable - name: copy_size doc: | TODO type: struct.extent_3D pointer: immutable - name: copy_texture_to_texture doc: | TODO args: - name: source doc: | TODO type: struct.texel_copy_texture_info pointer: immutable - name: destination doc: | TODO type: struct.texel_copy_texture_info pointer: immutable - name: copy_size doc: | TODO type: struct.extent_3D pointer: immutable - name: clear_buffer doc: | TODO args: - name: buffer doc: | TODO type: object.buffer - name: offset doc: | TODO type: uint64 - name: size doc: | TODO type: uint64 - name: insert_debug_marker doc: | TODO args: - name: marker_label doc: | TODO type: string_with_default_empty - name: pop_debug_group doc: | TODO - name: push_debug_group doc: | TODO args: - name: group_label doc: | TODO type: string_with_default_empty - name: resolve_query_set doc: | TODO args: - name: query_set doc: | TODO type: object.query_set - name: first_query doc: | TODO type: uint32 - name: query_count doc: | TODO type: uint32 - name: destination doc: | TODO type: object.buffer - name: destination_offset doc: | TODO type: uint64 - name: write_timestamp doc: | TODO args: - name: query_set doc: | TODO type: object.query_set - name: query_index doc: | TODO type: uint32 - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: compute_pass_encoder doc: | TODO methods: - name: insert_debug_marker doc: | TODO args: - name: marker_label doc: | TODO type: string_with_default_empty - name: pop_debug_group doc: | TODO - name: push_debug_group doc: | TODO args: - name: group_label doc: | TODO type: string_with_default_empty - name: set_pipeline doc: | TODO args: - name: pipeline doc: | TODO type: object.compute_pipeline - name: set_bind_group doc: | TODO args: - name: group_index doc: | TODO type: uint32 - name: group doc: | TODO type: object.bind_group optional: true - name: dynamic_offsets doc: | TODO type: array pointer: immutable - name: dispatch_workgroups doc: | TODO args: - name: workgroupCountX doc: | TODO type: uint32 - name: workgroupCountY doc: | TODO type: uint32 - name: workgroupCountZ doc: | TODO type: uint32 - name: dispatch_workgroups_indirect doc: | TODO args: - name: indirect_buffer doc: | TODO type: object.buffer - name: indirect_offset doc: | TODO type: uint64 - name: end doc: | TODO - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: compute_pipeline doc: | TODO methods: - name: get_bind_group_layout doc: | TODO returns: doc: | TODO type: object.bind_group_layout passed_with_ownership: true args: - name: group_index doc: | TODO type: uint32 - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: device doc: | TODO Releasing the last ref to a `WGPUDevice` also calls @ref wgpuDeviceDestroy. For more info, see @ref DeviceRelease. methods: - name: create_bind_group doc: | TODO returns: doc: | TODO type: object.bind_group passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.bind_group_descriptor pointer: immutable - name: create_bind_group_layout doc: | TODO returns: doc: | TODO type: object.bind_group_layout passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.bind_group_layout_descriptor pointer: immutable - name: create_buffer doc: | TODO If @ref WGPUBufferDescriptor::mappedAtCreation is `true` and the mapping allocation fails, returns `NULL`. returns: doc: | TODO type: object.buffer optional: true passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.buffer_descriptor pointer: immutable - name: create_command_encoder doc: | TODO returns: doc: | TODO type: object.command_encoder passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.command_encoder_descriptor pointer: immutable optional: true - name: create_compute_pipeline doc: | TODO returns: doc: | TODO type: object.compute_pipeline passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.compute_pipeline_descriptor pointer: immutable - name: create_compute_pipeline_async doc: | TODO callback: callback.create_compute_pipeline_async args: - name: descriptor doc: | TODO type: struct.compute_pipeline_descriptor pointer: immutable - name: create_pipeline_layout doc: | TODO returns: doc: | TODO type: object.pipeline_layout passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.pipeline_layout_descriptor pointer: immutable - name: create_query_set doc: | TODO returns: doc: | TODO type: object.query_set passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.query_set_descriptor pointer: immutable - name: create_render_pipeline_async doc: | TODO callback: callback.create_render_pipeline_async args: - name: descriptor doc: | TODO type: struct.render_pipeline_descriptor pointer: immutable - name: create_render_bundle_encoder doc: | TODO returns: doc: | TODO type: object.render_bundle_encoder passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.render_bundle_encoder_descriptor pointer: immutable - name: create_render_pipeline doc: | TODO returns: doc: | TODO type: object.render_pipeline passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.render_pipeline_descriptor pointer: immutable - name: create_sampler doc: | TODO returns: doc: | TODO type: object.sampler passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.sampler_descriptor pointer: immutable optional: true - name: create_shader_module doc: | TODO returns: doc: | TODO type: object.shader_module passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.shader_module_descriptor pointer: immutable - name: create_texture doc: | TODO returns: doc: | TODO type: object.texture passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.texture_descriptor pointer: immutable - name: destroy doc: | TODO - name: get_lost_future doc: "" returns: doc: | The @ref WGPUFuture for the device-lost event of the device. type: struct.future - name: get_limits doc: | TODO returns: doc: Indicates if there was an @ref OutStructChainError. type: enum.status args: - name: limits doc: | TODO type: struct.limits pointer: mutable - name: has_feature doc: | TODO returns: doc: | TODO type: bool args: - name: feature doc: | TODO type: enum.feature_name - name: get_features doc: | Get the list of @ref WGPUFeatureName values supported by the device. args: - name: features doc: | TODO type: struct.supported_features pointer: mutable passed_with_ownership: true - name: get_adapter_info doc: | TODO returns: doc: Indicates if there was an @ref OutStructChainError. type: enum.status args: - name: adapter_info doc: | TODO type: struct.adapter_info pointer: mutable passed_with_ownership: true - name: get_queue doc: | TODO returns: doc: | TODO type: object.queue passed_with_ownership: true - name: push_error_scope doc: | Pushes an error scope to the current thread's error scope stack. See @ref ErrorScopes. args: - name: filter doc: | TODO type: enum.error_filter - name: pop_error_scope doc: | Pops an error scope to the current thread's error scope stack, asynchronously returning the result. See @ref ErrorScopes. callback: callback.pop_error_scope - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: external_texture doc: A sampleable 2D texture that may perform 0-copy YUV sampling internally. Creation of @ref WGPUExternalTexture is extremely implementation-dependent and not defined in this header. methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: instance doc: | TODO methods: - name: create_surface doc: Creates a @ref WGPUSurface, see @ref Surface-Creation for more details. returns: doc: A new @ref WGPUSurface for this descriptor (or an error @ref WGPUSurface). type: object.surface passed_with_ownership: true args: - name: descriptor doc: The description of the @ref WGPUSurface to create. type: struct.surface_descriptor pointer: immutable - name: get_WGSL_language_features doc: | Get the list of @ref WGPUWGSLLanguageFeatureName values supported by the instance. args: - name: features doc: | TODO type: struct.supported_WGSL_language_features pointer: mutable - name: has_WGSL_language_feature doc: | TODO returns: doc: | TODO type: bool args: - name: feature doc: | TODO type: enum.WGSL_language_feature_name - name: process_events doc: | Processes asynchronous events on this `WGPUInstance`, calling any callbacks for asynchronous operations created with @ref WGPUCallbackMode_AllowProcessEvents. See @ref Process-Events for more information. - name: request_adapter doc: | TODO callback: callback.request_adapter args: - name: options doc: | TODO type: struct.request_adapter_options pointer: immutable optional: true - name: wait_any doc: | Wait for at least one WGPUFuture in `futures` to complete, and call callbacks of the respective completed asynchronous operations. See @ref Wait-Any for more information. returns: doc: | TODO type: enum.wait_status args: - name: future_count doc: | TODO type: usize - name: futures doc: | TODO type: struct.future_wait_info pointer: mutable optional: true - name: timeout_NS doc: | TODO type: uint64 - name: pipeline_layout doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: query_set doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: get_type doc: | TODO returns: doc: | TODO type: enum.query_type - name: get_count doc: | TODO returns: doc: | TODO type: uint32 - name: destroy doc: | TODO - name: queue doc: | TODO methods: - name: submit doc: | TODO args: - name: commands doc: | TODO type: array pointer: immutable - name: on_submitted_work_done doc: | TODO callback: callback.queue_work_done - name: write_buffer doc: | Produces a @ref DeviceError both content-timeline (`size` alignment) and device-timeline errors defined by the WebGPU specification. args: - name: buffer doc: | TODO type: object.buffer - name: buffer_offset doc: | TODO type: uint64 - name: data doc: | TODO type: c_void pointer: immutable - name: size doc: | TODO type: usize - name: write_texture doc: | TODO args: - name: destination doc: | TODO type: struct.texel_copy_texture_info pointer: immutable - name: data doc: | TODO type: c_void pointer: immutable - name: data_size doc: | TODO type: usize - name: data_layout doc: | TODO type: struct.texel_copy_buffer_layout pointer: immutable - name: write_size doc: | TODO type: struct.extent_3D pointer: immutable - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: render_bundle doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: render_bundle_encoder doc: | TODO methods: - name: set_pipeline doc: | TODO args: - name: pipeline doc: | TODO type: object.render_pipeline - name: set_bind_group doc: | TODO args: - name: group_index doc: | TODO type: uint32 - name: group doc: | TODO type: object.bind_group optional: true - name: dynamic_offsets doc: | TODO type: array pointer: immutable - name: draw doc: | TODO args: - name: vertex_count doc: | TODO type: uint32 - name: instance_count doc: | TODO type: uint32 - name: first_vertex doc: | TODO type: uint32 - name: first_instance doc: | TODO type: uint32 - name: draw_indexed doc: | TODO args: - name: index_count doc: | TODO type: uint32 - name: instance_count doc: | TODO type: uint32 - name: first_index doc: | TODO type: uint32 - name: base_vertex doc: | TODO type: int32 - name: first_instance doc: | TODO type: uint32 - name: draw_indirect doc: | TODO args: - name: indirect_buffer doc: | TODO type: object.buffer - name: indirect_offset doc: | TODO type: uint64 - name: draw_indexed_indirect doc: | TODO args: - name: indirect_buffer doc: | TODO type: object.buffer - name: indirect_offset doc: | TODO type: uint64 - name: insert_debug_marker doc: | TODO args: - name: marker_label doc: | TODO type: string_with_default_empty - name: pop_debug_group doc: | TODO - name: push_debug_group doc: | TODO args: - name: group_label doc: | TODO type: string_with_default_empty - name: set_vertex_buffer doc: | TODO args: - name: slot doc: | TODO type: uint32 - name: buffer doc: | TODO type: object.buffer optional: true - name: offset doc: | TODO type: uint64 - name: size doc: | TODO type: uint64 - name: set_index_buffer doc: | TODO args: - name: buffer doc: | TODO type: object.buffer - name: format doc: | TODO type: enum.index_format - name: offset doc: | TODO type: uint64 - name: size doc: | TODO type: uint64 - name: finish doc: | TODO returns: doc: | TODO type: object.render_bundle passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.render_bundle_descriptor pointer: immutable optional: true - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: render_pass_encoder doc: | TODO methods: - name: set_pipeline doc: | TODO args: - name: pipeline doc: | TODO type: object.render_pipeline - name: set_bind_group doc: | TODO args: - name: group_index doc: | TODO type: uint32 - name: group doc: | TODO type: object.bind_group optional: true - name: dynamic_offsets doc: | TODO type: array pointer: immutable - name: draw doc: | TODO args: - name: vertex_count doc: | TODO type: uint32 - name: instance_count doc: | TODO type: uint32 - name: first_vertex doc: | TODO type: uint32 - name: first_instance doc: | TODO type: uint32 - name: draw_indexed doc: | TODO args: - name: index_count doc: | TODO type: uint32 - name: instance_count doc: | TODO type: uint32 - name: first_index doc: | TODO type: uint32 - name: base_vertex doc: | TODO type: int32 - name: first_instance doc: | TODO type: uint32 - name: draw_indirect doc: | TODO args: - name: indirect_buffer doc: | TODO type: object.buffer - name: indirect_offset doc: | TODO type: uint64 - name: draw_indexed_indirect doc: | TODO args: - name: indirect_buffer doc: | TODO type: object.buffer - name: indirect_offset doc: | TODO type: uint64 - name: execute_bundles doc: | TODO args: - name: bundles doc: | TODO type: array pointer: immutable - name: insert_debug_marker doc: | TODO args: - name: marker_label doc: | TODO type: string_with_default_empty - name: pop_debug_group doc: | TODO - name: push_debug_group doc: | TODO args: - name: group_label doc: | TODO type: string_with_default_empty - name: set_stencil_reference doc: | TODO args: - name: reference doc: | TODO type: uint32 - name: set_blend_constant doc: | TODO args: - name: color doc: | The RGBA blend constant. Represents an `f32` color using @ref DoubleAsSupertype. type: struct.color pointer: immutable - name: set_viewport doc: | TODO If any argument is non-finite, produces a @ref NonFiniteFloatValueError. args: - name: x doc: | TODO type: float32 - name: y doc: | TODO type: float32 - name: width doc: | TODO type: float32 - name: height doc: | TODO type: float32 - name: min_depth doc: | TODO type: float32 - name: max_depth doc: | TODO type: float32 - name: set_scissor_rect doc: | TODO args: - name: x doc: | TODO type: uint32 - name: y doc: | TODO type: uint32 - name: width doc: | TODO type: uint32 - name: height doc: | TODO type: uint32 - name: set_vertex_buffer doc: | TODO args: - name: slot doc: | TODO type: uint32 - name: buffer doc: | TODO type: object.buffer optional: true - name: offset doc: | TODO type: uint64 - name: size doc: | TODO type: uint64 - name: set_index_buffer doc: | TODO args: - name: buffer doc: | TODO type: object.buffer - name: format doc: | TODO type: enum.index_format - name: offset doc: | TODO type: uint64 - name: size doc: | TODO type: uint64 - name: begin_occlusion_query doc: | TODO args: - name: query_index doc: | TODO type: uint32 - name: end_occlusion_query doc: | TODO - name: end doc: | TODO - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: render_pipeline doc: | TODO methods: - name: get_bind_group_layout doc: | TODO returns: doc: | TODO type: object.bind_group_layout passed_with_ownership: true args: - name: group_index doc: | TODO type: uint32 - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: sampler doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: shader_module doc: | TODO methods: - name: get_compilation_info doc: | TODO callback: callback.compilation_info - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: surface doc: An object used to continuously present image data to the user, see @ref Surfaces for more details. methods: - name: configure doc: | Configures parameters for rendering to `surface`. Produces a @ref DeviceError for all content-timeline errors defined by the WebGPU specification. See @ref Surface-Configuration for more details. args: - name: config doc: The new configuration to use. type: struct.surface_configuration pointer: immutable - name: get_capabilities doc: | Provides information on how `adapter` is able to use `surface`. See @ref Surface-Capabilities for more details. returns: doc: Indicates if there was an @ref OutStructChainError. type: enum.status args: - name: adapter doc: The @ref WGPUAdapter to get capabilities for presenting to this @ref WGPUSurface. type: object.adapter - name: capabilities doc: | The structure to fill capabilities in. It may contain memory allocations so @ref wgpuSurfaceCapabilitiesFreeMembers must be called to avoid memory leaks. type: struct.surface_capabilities pointer: mutable passed_with_ownership: true - name: get_current_texture doc: | Returns the @ref WGPUTexture to render to `surface` this frame along with metadata on the frame. Returns `NULL` and @ref WGPUSurfaceGetCurrentTextureStatus_Error if the surface is not configured. See @ref Surface-Presenting for more details. args: - name: surface_texture doc: The structure to fill the @ref WGPUTexture and metadata in. type: struct.surface_texture pointer: mutable - name: present doc: | Shows `surface`'s current texture to the user. See @ref Surface-Presenting for more details. returns: doc: | Returns @ref WGPUStatus_Error if the surface doesn't have a current texture. type: enum.status - name: unconfigure doc: | Removes the configuration for `surface`. See @ref Surface-Configuration for more details. - name: set_label doc: Modifies the label used to refer to `surface`. args: - name: label doc: The new label. type: string_with_default_empty - name: texture doc: | TODO methods: - name: create_view doc: | TODO returns: doc: | TODO type: object.texture_view passed_with_ownership: true args: - name: descriptor doc: | TODO type: struct.texture_view_descriptor pointer: immutable optional: true - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty - name: get_width doc: | TODO returns: doc: | TODO type: uint32 - name: get_height doc: | TODO returns: doc: | TODO type: uint32 - name: get_depth_or_array_layers doc: | TODO returns: doc: | TODO type: uint32 - name: get_mip_level_count doc: | TODO returns: doc: | TODO type: uint32 - name: get_sample_count doc: | TODO returns: doc: | TODO type: uint32 - name: get_dimension doc: | TODO returns: doc: | TODO type: enum.texture_dimension - name: get_texture_binding_view_dimension doc: | TODO returns: doc: | TODO type: enum.texture_view_dimension - name: get_format doc: | TODO returns: doc: | TODO type: enum.texture_format - name: get_usage doc: | TODO returns: doc: | TODO type: bitflag.texture_usage - name: destroy doc: | TODO - name: texture_view doc: | TODO methods: - name: set_label doc: | TODO args: - name: label doc: | TODO type: string_with_default_empty