84 typedef WGPU##Type W; \
85 Type() : m_raw(nullptr) {} \
86 Type(const W &w) : m_raw(w) {} \
87 operator W &() { return m_raw; } \
88 operator const W &() const { return m_raw; } \
89 operator bool() const { return m_raw != nullptr; } \
90 bool operator==(const Type &other) const { return m_raw == other.m_raw; } \
91 bool operator!=(const Type &other) const { return m_raw != other.m_raw; } \
92 bool operator==(const W &other) const { return m_raw == other; } \
93 bool operator!=(const W &other) const { return m_raw != other; } \
94 friend auto operator<<(std::ostream &stream, const S &self) -> std::ostream & \
96 return stream << "<wgpu::" << #Type << " " << self.m_raw << ">"; \
104#define DESCRIPTOR(Type) \
105 struct Type : public WGPU##Type { \
108 typedef WGPU##Type W; \
109 Type() : W() { nextInChain = nullptr; } \
110 Type(const W &other) : W(other) { nextInChain = nullptr; } \
111 Type(const DefaultFlag &) : W() { setDefault(); } \
112 Type &operator=(const DefaultFlag &) \
117 friend auto operator<<(std::ostream &stream, const S &) -> std::ostream & \
119 return stream << "<wgpu::" << #Type << ">"; \
124#define STRUCT_NO_OSTREAM(Type) \
125 struct Type : public WGPU##Type { \
128 typedef WGPU##Type W; \
130 Type(const W &other) : W(other) {} \
131 Type(const DefaultFlag &) : W() { setDefault(); } \
132 Type &operator=(const DefaultFlag &) \
140#define STRUCT(Type) \
141 STRUCT_NO_OSTREAM(Type) \
142 friend auto operator<<(std::ostream &stream, const S &)->std::ostream & \
144 return stream << "<wgpu::" << #Type << ">"; \
153 typedef WGPU##Type W; \
154 constexpr Type() : m_raw(W{}) {} \
155 constexpr Type(const W &w) : m_raw(w) {} \
156 constexpr operator W() const { return m_raw; } \
160#define ENUM_ENTRY(Name, Value) static constexpr W Name = (W) (Value);
173ENUM_ENTRY(DiscreteGPU, WGPUAdapterType_DiscreteGPU)
174ENUM_ENTRY(IntegratedGPU, WGPUAdapterType_IntegratedGPU)
190 ENUM_ENTRY(OneMinusDst, WGPUBlendFactor_OneMinusDst)
ENUM_ENTRY(DstAlpha, WGPUBlendFactor_DstAlpha)
191 ENUM_ENTRY(OneMinusDstAlpha, WGPUBlendFactor_OneMinusDstAlpha)
192 ENUM_ENTRY(SrcAlphaSaturated, WGPUBlendFactor_SrcAlphaSaturated)
193 ENUM_ENTRY(Constant, WGPUBlendFactor_Constant)
194 ENUM_ENTRY(OneMinusConstant, WGPUBlendFactor_OneMinusConstant)
196 ENUM_ENTRY(OneMinusSrc1, WGPUBlendFactor_OneMinusSrc1)
197 ENUM_ENTRY(Src1Alpha, WGPUBlendFactor_Src1Alpha)
198 ENUM_ENTRY(OneMinusSrc1Alpha, WGPUBlendFactor_OneMinusSrc1Alpha)
204 ENUM(BufferBindingType)
ENUM_ENTRY(BindingNotUsed, WGPUBufferBindingType_BindingNotUsed)
205 ENUM_ENTRY(Undefined, WGPUBufferBindingType_Undefined)
ENUM_ENTRY(Uniform, WGPUBufferBindingType_Uniform)
206 ENUM_ENTRY(Storage, WGPUBufferBindingType_Storage)
207 ENUM_ENTRY(ReadOnlyStorage, WGPUBufferBindingType_ReadOnlyStorage)
212 ENUM_ENTRY(WaitAnyOnly, WGPUCallbackMode_WaitAnyOnly)
213 ENUM_ENTRY(AllowProcessEvents, WGPUCallbackMode_AllowProcessEvents)
214 ENUM_ENTRY(AllowSpontaneous, WGPUCallbackMode_AllowSpontaneous)
219 ENUM_ENTRY(Greater, WGPUCompareFunction_Greater)
ENUM_ENTRY(NotEqual, WGPUCompareFunction_NotEqual)
220 ENUM_ENTRY(GreaterEqual, WGPUCompareFunction_GreaterEqual)
222 ENUM_ENTRY(Force32, WGPUCompareFunction_Force32)
END ENUM(CompilationInfoRequestStatus)
223 ENUM_ENTRY(Success, WGPUCompilationInfoRequestStatus_Success)
224 ENUM_ENTRY(InstanceDropped, WGPUCompilationInfoRequestStatus_InstanceDropped)
225 ENUM_ENTRY(Error, WGPUCompilationInfoRequestStatus_Error)
226 ENUM_ENTRY(Unknown, WGPUCompilationInfoRequestStatus_Unknown)
232 ENUM_ENTRY(Premultiplied, WGPUCompositeAlphaMode_Premultiplied)
233 ENUM_ENTRY(Unpremultiplied, WGPUCompositeAlphaMode_Unpremultiplied)
235 ENUM_ENTRY(Force32, WGPUCompositeAlphaMode_Force32)
END ENUM(CreatePipelineAsyncStatus)
236 ENUM_ENTRY(Success, WGPUCreatePipelineAsyncStatus_Success)
237 ENUM_ENTRY(InstanceDropped, WGPUCreatePipelineAsyncStatus_InstanceDropped)
238 ENUM_ENTRY(ValidationError, WGPUCreatePipelineAsyncStatus_ValidationError)
239 ENUM_ENTRY(InternalError, WGPUCreatePipelineAsyncStatus_InternalError)
240 ENUM_ENTRY(Unknown, WGPUCreatePipelineAsyncStatus_Unknown)
245 ENUM_ENTRY(Unknown, WGPUDeviceLostReason_Unknown)
ENUM_ENTRY(Destroyed, WGPUDeviceLostReason_Destroyed)
246 ENUM_ENTRY(InstanceDropped, WGPUDeviceLostReason_InstanceDropped)
247 ENUM_ENTRY(FailedCreation, WGPUDeviceLostReason_FailedCreation)
255 ENUM_ENTRY(Compatibility, WGPUFeatureLevel_Compatibility)
ENUM_ENTRY(Core, WGPUFeatureLevel_Core)
259 WGPUFeatureName_Depth32FloatStencil8)
261 WGPUFeatureName_TextureCompressionBC)
262 ENUM_ENTRY(TextureCompressionBCSliced3D, WGPUFeatureName_TextureCompressionBCSliced3D)
263 ENUM_ENTRY(TextureCompressionETC2, WGPUFeatureName_TextureCompressionETC2)
264 ENUM_ENTRY(TextureCompressionASTC, WGPUFeatureName_TextureCompressionASTC)
265 ENUM_ENTRY(TextureCompressionASTCSliced3D, WGPUFeatureName_TextureCompressionASTCSliced3D)
266 ENUM_ENTRY(IndirectFirstInstance, WGPUFeatureName_IndirectFirstInstance)
267 ENUM_ENTRY(ShaderF16, WGPUFeatureName_ShaderF16)
268 ENUM_ENTRY(RG11B10UfloatRenderable, WGPUFeatureName_RG11B10UfloatRenderable)
269 ENUM_ENTRY(BGRA8UnormStorage, WGPUFeatureName_BGRA8UnormStorage)
270 ENUM_ENTRY(Float32Filterable, WGPUFeatureName_Float32Filterable)
271 ENUM_ENTRY(Float32Blendable, WGPUFeatureName_Float32Blendable)
274 WGPUFeatureName_DualSourceBlending)
293 ENUM(PopErrorScopeStatus)
ENUM_ENTRY(Success, WGPUPopErrorScopeStatus_Success)
294 ENUM_ENTRY(InstanceDropped, WGPUPopErrorScopeStatus_InstanceDropped)
297 ENUM_ENTRY(Undefined, WGPUPowerPreference_Undefined)
298 ENUM_ENTRY(LowPower, WGPUPowerPreference_LowPower)
299 ENUM_ENTRY(HighPerformance, WGPUPowerPreference_HighPerformance)
305 ENUM_ENTRY(PointList, WGPUPrimitiveTopology_PointList)
ENUM_ENTRY(LineList, WGPUPrimitiveTopology_LineList)
306 ENUM_ENTRY(LineStrip, WGPUPrimitiveTopology_LineStrip)
307 ENUM_ENTRY(TriangleList, WGPUPrimitiveTopology_TriangleList)
308 ENUM_ENTRY(TriangleStrip, WGPUPrimitiveTopology_TriangleStrip)
312 ENUM(QueueWorkDoneStatus)
ENUM_ENTRY(Success, WGPUQueueWorkDoneStatus_Success)
313 ENUM_ENTRY(InstanceDropped, WGPUQueueWorkDoneStatus_InstanceDropped)
316 ENUM(RequestAdapterStatus)
ENUM_ENTRY(Success, WGPURequestAdapterStatus_Success)
317 ENUM_ENTRY(InstanceDropped, WGPURequestAdapterStatus_InstanceDropped)
318 ENUM_ENTRY(Unavailable, WGPURequestAdapterStatus_Unavailable)
321 ENUM(RequestDeviceStatus)
ENUM_ENTRY(Success, WGPURequestDeviceStatus_Success)
322 ENUM_ENTRY(InstanceDropped, WGPURequestDeviceStatus_InstanceDropped)
325 ENUM(SType)
ENUM_ENTRY(ShaderSourceSPIRV, WGPUSType_ShaderSourceSPIRV)
326 ENUM_ENTRY(ShaderSourceWGSL, WGPUSType_ShaderSourceWGSL)
327 ENUM_ENTRY(RenderPassMaxDrawCount, WGPUSType_RenderPassMaxDrawCount)
328 ENUM_ENTRY(SurfaceSourceMetalLayer, WGPUSType_SurfaceSourceMetalLayer)
329 ENUM_ENTRY(SurfaceSourceWindowsHWND, WGPUSType_SurfaceSourceWindowsHWND)
330 ENUM_ENTRY(SurfaceSourceXlibWindow, WGPUSType_SurfaceSourceXlibWindow)
331 ENUM_ENTRY(SurfaceSourceWaylandSurface, WGPUSType_SurfaceSourceWaylandSurface)
332 ENUM_ENTRY(SurfaceSourceAndroidNativeWindow, WGPUSType_SurfaceSourceAndroidNativeWindow)
333 ENUM_ENTRY(SurfaceSourceXCBWindow, WGPUSType_SurfaceSourceXCBWindow)
335 ENUM(SamplerBindingType)
ENUM_ENTRY(BindingNotUsed, WGPUSamplerBindingType_BindingNotUsed)
336 ENUM_ENTRY(Undefined, WGPUSamplerBindingType_Undefined)
ENUM_ENTRY(Filtering, WGPUSamplerBindingType_Filtering)
337 ENUM_ENTRY(NonFiltering, WGPUSamplerBindingType_NonFiltering)
344 ENUM_ENTRY(Invert, WGPUStencilOperation_Invert)
345 ENUM_ENTRY(IncrementClamp, WGPUStencilOperation_IncrementClamp)
346 ENUM_ENTRY(DecrementClamp, WGPUStencilOperation_DecrementClamp)
347 ENUM_ENTRY(IncrementWrap, WGPUStencilOperation_IncrementWrap)
348 ENUM_ENTRY(DecrementWrap, WGPUStencilOperation_DecrementWrap)
350 ENUM(StorageTextureAccess)
ENUM_ENTRY(BindingNotUsed, WGPUStorageTextureAccess_BindingNotUsed)
351 ENUM_ENTRY(Undefined, WGPUStorageTextureAccess_Undefined)
352 ENUM_ENTRY(WriteOnly, WGPUStorageTextureAccess_WriteOnly)
353 ENUM_ENTRY(ReadOnly, WGPUStorageTextureAccess_ReadOnly)
358 ENUM(SurfaceGetCurrentTextureStatus)
ENUM_ENTRY(SuccessOptimal, WGPUSurfaceGetCurrentTextureStatus_SuccessOptimal)
359 ENUM_ENTRY(SuccessSuboptimal, WGPUSurfaceGetCurrentTextureStatus_SuccessSuboptimal)
360 ENUM_ENTRY(Timeout, WGPUSurfaceGetCurrentTextureStatus_Timeout)
361 ENUM_ENTRY(Outdated, WGPUSurfaceGetCurrentTextureStatus_Outdated)
362 ENUM_ENTRY(Lost, WGPUSurfaceGetCurrentTextureStatus_Lost)
363 ENUM_ENTRY(OutOfMemory, WGPUSurfaceGetCurrentTextureStatus_OutOfMemory)
364 ENUM_ENTRY(DeviceLost, WGPUSurfaceGetCurrentTextureStatus_DeviceLost)
376 WGPUTextureFormat_R8Snorm)
ENUM_ENTRY(R8Uint, WGPUTextureFormat_R8Uint)
378 R16Sint, WGPUTextureFormat_R16Sint)
ENUM_ENTRY(R16Float, WGPUTextureFormat_R16Float)
380 RG8Uint, WGPUTextureFormat_RG8Uint)
ENUM_ENTRY(RG8Sint, WGPUTextureFormat_RG8Sint)
382 R32Uint, WGPUTextureFormat_R32Uint)
ENUM_ENTRY(R32Sint, WGPUTextureFormat_R32Sint)
384 RG16Sint, WGPUTextureFormat_RG16Sint)
ENUM_ENTRY(RG16Float, WGPUTextureFormat_RG16Float)
387 WGPUTextureFormat_RGBA8UnormSrgb)
ENUM_ENTRY(RGBA8Snorm, WGPUTextureFormat_RGBA8Snorm)
390 WGPUTextureFormat_RGBA8Sint)
ENUM_ENTRY(BGRA8Unorm, WGPUTextureFormat_BGRA8Unorm)
392 RGB10A2Uint, WGPUTextureFormat_RGB10A2Uint)
395 WGPUTextureFormat_RG11B10Ufloat)
398 WGPUTextureFormat_RG32Float)
ENUM_ENTRY(RG32Uint, WGPUTextureFormat_RG32Uint)
401 WGPUTextureFormat_RGBA16Uint)
ENUM_ENTRY(RGBA16Sint,
402 WGPUTextureFormat_RGBA16Sint)
404 RGBA32Float, WGPUTextureFormat_RGBA32Float)
407 Stencil8, WGPUTextureFormat_Stencil8)
408 ENUM_ENTRY(Depth16Unorm, WGPUTextureFormat_Depth16Unorm)
ENUM_ENTRY(Depth24Plus, WGPUTextureFormat_Depth24Plus)
ENUM_ENTRY(Depth24PlusStencil8, WGPUTextureFormat_Depth24PlusStencil8)
ENUM_ENTRY(Depth32Float, WGPUTextureFormat_Depth32Float)
ENUM_ENTRY(Depth32FloatStencil8, WGPUTextureFormat_Depth32FloatStencil8)
ENUM_ENTRY(BC1RGBAUnorm, WGPUTextureFormat_BC1RGBAUnorm)
ENUM_ENTRY(BC1RGBAUnormSrgb, WGPUTextureFormat_BC1RGBAUnormSrgb)
ENUM_ENTRY(BC2RGBAUnorm, WGPUTextureFormat_BC2RGBAUnorm)
ENUM_ENTRY(BC2RGBAUnormSrgb, WGPUTextureFormat_BC2RGBAUnormSrgb)
ENUM_ENTRY(BC3RGBAUnorm, WGPUTextureFormat_BC3RGBAUnorm)
ENUM_ENTRY(BC3RGBAUnormSrgb, WGPUTextureFormat_BC3RGBAUnormSrgb)
ENUM_ENTRY(BC4RUnorm,
410 WGPUTextureFormat_BC4RSnorm)
ENUM_ENTRY(BC5RGUnorm, WGPUTextureFormat_BC5RGUnorm)
ENUM_ENTRY(BC5RGSnorm, WGPUTextureFormat_BC5RGSnorm)
ENUM_ENTRY(BC6HRGBUfloat, WGPUTextureFormat_BC6HRGBUfloat)
ENUM_ENTRY(BC6HRGBFloat,
411 WGPUTextureFormat_BC6HRGBFloat)
ENUM_ENTRY(BC7RGBAUnorm, WGPUTextureFormat_BC7RGBAUnorm)
ENUM_ENTRY(BC7RGBAUnormSrgb,
412 WGPUTextureFormat_BC7RGBAUnormSrgb)
ENUM_ENTRY(ETC2RGB8Unorm, WGPUTextureFormat_ETC2RGB8Unorm)
ENUM_ENTRY(ETC2RGB8UnormSrgb, WGPUTextureFormat_ETC2RGB8UnormSrgb)
ENUM_ENTRY(ETC2RGB8A1Unorm,
413 WGPUTextureFormat_ETC2RGB8A1Unorm)
ENUM_ENTRY(ETC2RGB8A1UnormSrgb, WGPUTextureFormat_ETC2RGB8A1UnormSrgb)
ENUM_ENTRY(ETC2RGBA8Unorm, WGPUTextureFormat_ETC2RGBA8Unorm)
ENUM_ENTRY(ETC2RGBA8UnormSrgb, WGPUTextureFormat_ETC2RGBA8UnormSrgb)
ENUM_ENTRY(EACR11Unorm, WGPUTextureFormat_EACR11Unorm)
ENUM_ENTRY(EACR11Snorm, WGPUTextureFormat_EACR11Snorm)
ENUM_ENTRY(EACRG11Unorm, WGPUTextureFormat_EACRG11Unorm)
ENUM_ENTRY(EACRG11Snorm, WGPUTextureFormat_EACRG11Snorm)
ENUM_ENTRY(ASTC4x4Unorm, WGPUTextureFormat_ASTC4x4Unorm)
ENUM_ENTRY(ASTC4x4UnormSrgb,
414 WGPUTextureFormat_ASTC4x4UnormSrgb)
ENUM_ENTRY(ASTC5x4Unorm,
416 WGPUTextureFormat_ASTC5x4UnormSrgb)
ENUM_ENTRY(ASTC5x5Unorm,
417 WGPUTextureFormat_ASTC5x5Unorm)
ENUM_ENTRY(ASTC5x5UnormSrgb,
418 WGPUTextureFormat_ASTC5x5UnormSrgb)
421 WGPUTextureFormat_ASTC6x5UnormSrgb)
ENUM_ENTRY(ASTC6x6Unorm, WGPUTextureFormat_ASTC6x6Unorm)
424 WGPUTextureFormat_ASTC8x5Unorm)
ENUM_ENTRY(ASTC8x5UnormSrgb, WGPUTextureFormat_ASTC8x5UnormSrgb)
427 WGPUTextureFormat_ASTC8x6UnormSrgb)
430 WGPUTextureFormat_ASTC8x8UnormSrgb)
433 WGPUTextureFormat_ASTC10x5UnormSrgb)
436 WGPUTextureFormat_ASTC10x6UnormSrgb)
439 WGPUTextureFormat_ASTC10x8UnormSrgb)
442 WGPUTextureFormat_ASTC10x10Unorm)
445 WGPUTextureFormat_ASTC10x10UnormSrgb)
448 WGPUTextureFormat_ASTC12x10Unorm)
451 WGPUTextureFormat_ASTC12x10UnormSrgb)
454 WGPUTextureFormat_ASTC12x12Unorm)
457 WGPUTextureFormat_ASTC12x12UnormSrgb)
460 WGPUTextureFormat_Force32)
462 ENUM(TextureSampleType)
ENUM_ENTRY(BindingNotUsed, WGPUTextureSampleType_BindingNotUsed)
463 ENUM_ENTRY(Undefined, WGPUTextureSampleType_Undefined)
ENUM_ENTRY(Float, WGPUTextureSampleType_Float)
464 ENUM_ENTRY(UnfilterableFloat, WGPUTextureSampleType_UnfilterableFloat)
467 ENUM(TextureViewDimension)
ENUM_ENTRY(Undefined, WGPUTextureViewDimension_Undefined)
475 Unorm8, WGPUVertexFormat_Unorm8)
ENUM_ENTRY(Unorm8x2, WGPUVertexFormat_Unorm8x2)
477 Snorm8x2, WGPUVertexFormat_Snorm8x2)
ENUM_ENTRY(Snorm8x4, WGPUVertexFormat_Snorm8x4)
479 WGPUVertexFormat_Uint16)
ENUM_ENTRY(Uint16x2, WGPUVertexFormat_Uint16x2)
481 WGPUVertexFormat_Uint16x4)
ENUM_ENTRY(Sint16, WGPUVertexFormat_Sint16)
483 WGPUVertexFormat_Sint16x2)
ENUM_ENTRY(Sint16x4, WGPUVertexFormat_Sint16x4)
485 WGPUVertexFormat_Unorm16)
ENUM_ENTRY(Unorm16x2, WGPUVertexFormat_Unorm16x2)
487 Snorm16, WGPUVertexFormat_Snorm16)
ENUM_ENTRY(Snorm16x2,
488 WGPUVertexFormat_Snorm16x2)
490 Float16, WGPUVertexFormat_Float16)
ENUM_ENTRY(Float16x2,
491 WGPUVertexFormat_Float16x2)
494 WGPUVertexFormat_Float32)
ENUM_ENTRY(Float32x2,
495 WGPUVertexFormat_Float32x2)
498 WGPUVertexFormat_Float32x4)
500 Uint32x2, WGPUVertexFormat_Uint32x2)
502 Uint32x4, WGPUVertexFormat_Uint32x4)
504 Sint32x2, WGPUVertexFormat_Sint32x2)
505 ENUM_ENTRY(Sint32x3, WGPUVertexFormat_Sint32x3)
508 WGPUVertexFormat_Unorm10_10_10_2)
510 WGPUVertexFormat_Unorm8x4BGRA)
512 WGPUVertexFormat_Force32)
END
513 ENUM(VertexStepMode)
ENUM_ENTRY(VertexBufferNotUsed, WGPUVertexStepMode_VertexBufferNotUsed)
516 ENUM(WGSLLanguageFeatureName)
517 ENUM_ENTRY(ReadonlyAndReadwriteStorageTextures, WGPUWGSLLanguageFeatureName_ReadonlyAndReadwriteStorageTextures)
518 ENUM_ENTRY(Packed4x8IntegerDotProduct, WGPUWGSLLanguageFeatureName_Packed4x8IntegerDotProduct)
519 ENUM_ENTRY(UnrestrictedPointerParameters, WGPUWGSLLanguageFeatureName_UnrestrictedPointerParameters)
520 ENUM_ENTRY(PointerCompositeAccess, WGPUWGSLLanguageFeatureName_PointerCompositeAccess)
523 ENUM_ENTRY(UnsupportedTimeout, WGPUWaitStatus_UnsupportedTimeout)
524 ENUM_ENTRY(UnsupportedCount, WGPUWaitStatus_UnsupportedCount)
525 ENUM_ENTRY(UnsupportedMixedSources, WGPUWaitStatus_UnsupportedMixedSources)
543 ENUM_ENTRY(PipelineLayoutExtras, WGPUSType_PipelineLayoutExtras)
544 ENUM_ENTRY(ShaderModuleGLSLDescriptor, WGPUSType_ShaderModuleGLSLDescriptor)
545 ENUM_ENTRY(InstanceExtras, WGPUSType_InstanceExtras)
546 ENUM_ENTRY(BindGroupEntryExtras, WGPUSType_BindGroupEntryExtras)
547 ENUM_ENTRY(BindGroupLayoutEntryExtras, WGPUSType_BindGroupLayoutEntryExtras)
548 ENUM_ENTRY(QuerySetDescriptorExtras, WGPUSType_QuerySetDescriptorExtras)
549 ENUM_ENTRY(SurfaceConfigurationExtras, WGPUSType_SurfaceConfigurationExtras)
552 TextureAdapterSpecificFormatFeatures,
553 WGPUNativeFeature_TextureAdapterSpecificFormatFeatures)
ENUM_ENTRY(MultiDrawIndirect,
554 WGPUNativeFeature_MultiDrawIndirect)
556 WGPUNativeFeature_MultiDrawIndirectCount)
ENUM_ENTRY(VertexWritableStorage,
557 WGPUNativeFeature_VertexWritableStorage)
559 SampledTextureAndStorageBufferArrayNonUniformIndexing,
560 WGPUNativeFeature_SampledTextureAndStorageBufferArrayNonUniformIndexing)
562 StorageResourceBindingArray, WGPUNativeFeature_StorageResourceBindingArray)
563 ENUM_ENTRY(PartiallyBoundBindingArray, WGPUNativeFeature_PartiallyBoundBindingArray)
ENUM_ENTRY(
564 TextureFormat16bitNorm,
565 WGPUNativeFeature_TextureFormat16bitNorm)
567 MappablePrimaryBuffers,
568 WGPUNativeFeature_MappablePrimaryBuffers)
ENUM_ENTRY(BufferBindingArray,
569 WGPUNativeFeature_BufferBindingArray)
570 ENUM_ENTRY(UniformBufferAndStorageTextureArrayNonUniformIndexing,
571 WGPUNativeFeature_UniformBufferAndStorageTextureArrayNonUniformIndexing)
573 VertexAttribute64bit, WGPUNativeFeature_VertexAttribute64bit)
575 RayTracingAccelerationStructure,
576 WGPUNativeFeature_RayTracingAccelerationStructure)
578 WGPUNativeFeature_RayQuery)
ENUM_ENTRY(ShaderF64,
579 WGPUNativeFeature_ShaderF64)
581 ShaderPrimitiveIndex, WGPUNativeFeature_ShaderPrimitiveIndex)
582 ENUM_ENTRY(ShaderEarlyDepthTest, WGPUNativeFeature_ShaderEarlyDepthTest)
585 WGPUNativeFeature_SubgroupVertex)
586 ENUM_ENTRY(SubgroupBarrier, WGPUNativeFeature_SubgroupBarrier)
588 WGPUNativeFeature_TimestampQueryInsideEncoders)
590 WGPUNativeFeature_TimestampQueryInsidePasses)
602 ENUM(PipelineStatisticName)
ENUM_ENTRY(VertexShaderInvocations, WGPUPipelineStatisticName_VertexShaderInvocations)
603 ENUM_ENTRY(ClipperInvocations, WGPUPipelineStatisticName_ClipperInvocations)
604 ENUM_ENTRY(ClipperPrimitivesOut, WGPUPipelineStatisticName_ClipperPrimitivesOut)
605 ENUM_ENTRY(FragmentShaderInvocations, WGPUPipelineStatisticName_FragmentShaderInvocations)
606 ENUM_ENTRY(ComputeShaderInvocations, WGPUPipelineStatisticName_ComputeShaderInvocations)
608 ENUM_ENTRY(PipelineStatistics, WGPUNativeQueryType_PipelineStatistics)
611 ENUM_ENTRY(R16Snorm, WGPUNativeTextureFormat_R16Snorm)
ENUM_ENTRY(Rg16Unorm, WGPUNativeTextureFormat_Rg16Unorm)
612 ENUM_ENTRY(Rg16Snorm, WGPUNativeTextureFormat_Rg16Snorm)
613 ENUM_ENTRY(Rgba16Unorm, WGPUNativeTextureFormat_Rgba16Unorm)
619StringView(
const std::string_view &cpp) : WGPUStringView{cpp.data(), cpp.length()} {}
620operator std::string_view()
const;
621friend auto operator<<(std::ostream &stream,
const S &self) -> std::ostream &
623 return stream << std::string_view(self);
627 STRUCT(ChainedStruct)
void setDefault();
630 STRUCT(ChainedStructOut)
void setDefault();
633 STRUCT(BlendComponent)
void setDefault();
637Color(
double r,
double g,
double b,
double a) : WGPUColor{r, g, b, a} {}
640 STRUCT(ComputePassTimestampWrites)
void setDefault();
644Extent3D(uint32_t width, uint32_t height, uint32_t depthOrArrayLayers) : WGPUExtent3D{width, height, depthOrArrayLayers}
649 STRUCT(Future)
void setDefault();
653Origin3D(uint32_t x, uint32_t y, uint32_t z) : WGPUOrigin3D{x, y, z} {}
656 STRUCT(RenderPassDepthStencilAttachment)
void setDefault();
659 STRUCT(RenderPassMaxDrawCount)
void setDefault();
662 STRUCT(RenderPassTimestampWrites)
void setDefault();
665 STRUCT(ShaderSourceSPIRV)
void setDefault();
668 STRUCT(ShaderSourceWGSL)
void setDefault();
671 STRUCT(StencilFaceState)
void setDefault();
674 STRUCT(SupportedFeatures)
void setDefault();
678 STRUCT(SupportedWGSLLanguageFeatures)
void setDefault();
682 STRUCT(SurfaceSourceAndroidNativeWindow)
void setDefault();
685 STRUCT(SurfaceSourceMetalLayer)
void setDefault();
688 STRUCT(SurfaceSourceWaylandSurface)
void setDefault();
691 STRUCT(SurfaceSourceWindowsHWND)
void setDefault();
694 STRUCT(SurfaceSourceXCBWindow)
void setDefault();
697 STRUCT(SurfaceSourceXlibWindow)
void setDefault();
700 STRUCT(TexelCopyBufferLayout)
void setDefault();
703 STRUCT(VertexAttribute)
void setDefault();
706 STRUCT(BlendState)
void setDefault();
709 STRUCT(FutureWaitInfo)
void setDefault();
712 STRUCT(TexelCopyBufferInfo)
void setDefault();
715 STRUCT(TexelCopyTextureInfo)
void setDefault();
718 STRUCT(VertexBufferLayout)
void setDefault();
721 STRUCT(InstanceExtras)
void setDefault();
724 STRUCT(DeviceExtras)
void setDefault();
727 STRUCT(NativeLimits)
void setDefault();
730 STRUCT(PushConstantRange)
void setDefault();
733 STRUCT(PipelineLayoutExtras)
void setDefault();
736 STRUCT(ShaderDefine)
void setDefault();
739 STRUCT(ShaderModuleGLSLDescriptor)
void setDefault();
742 STRUCT(ShaderModuleDescriptorSpirV)
void setDefault();
745 STRUCT(RegistryReport)
void setDefault();
748 STRUCT(HubReport)
void setDefault();
751 STRUCT(GlobalReport)
void setDefault();
754 STRUCT(BindGroupEntryExtras)
void setDefault();
757 STRUCT(BindGroupLayoutEntryExtras)
void setDefault();
760 STRUCT(QuerySetDescriptorExtras)
void setDefault();
763 STRUCT(SurfaceConfigurationExtras)
void setDefault();
767 DESCRIPTOR(BufferMapCallbackInfo)
void setDefault();
770 DESCRIPTOR(CompilationInfoCallbackInfo)
void setDefault();
773 DESCRIPTOR(CreateComputePipelineAsyncCallbackInfo)
void setDefault();
776 DESCRIPTOR(CreateRenderPipelineAsyncCallbackInfo)
void setDefault();
779 DESCRIPTOR(DeviceLostCallbackInfo)
void setDefault();
782 DESCRIPTOR(PopErrorScopeCallbackInfo)
void setDefault();
785 DESCRIPTOR(QueueWorkDoneCallbackInfo)
void setDefault();
788 DESCRIPTOR(RequestAdapterCallbackInfo)
void setDefault();
791 DESCRIPTOR(RequestDeviceCallbackInfo)
void setDefault();
794 DESCRIPTOR(UncapturedErrorCallbackInfo)
void setDefault();
804 DESCRIPTOR(BufferBindingLayout)
void setDefault();
807 DESCRIPTOR(BufferDescriptor)
void setDefault();
810 DESCRIPTOR(CommandBufferDescriptor)
void setDefault();
813 DESCRIPTOR(CommandEncoderDescriptor)
void setDefault();
816 DESCRIPTOR(CompilationMessage)
void setDefault();
822 DESCRIPTOR(InstanceCapabilities)
void setDefault();
828 DESCRIPTOR(MultisampleState)
void setDefault();
831 DESCRIPTOR(PipelineLayoutDescriptor)
void setDefault();
837 DESCRIPTOR(QuerySetDescriptor)
void setDefault();
840 DESCRIPTOR(QueueDescriptor)
void setDefault();
843 DESCRIPTOR(RenderBundleDescriptor)
void setDefault();
846 DESCRIPTOR(RenderBundleEncoderDescriptor)
void setDefault();
849 DESCRIPTOR(RequestAdapterOptions)
void setDefault();
852 DESCRIPTOR(SamplerBindingLayout)
void setDefault();
855 DESCRIPTOR(SamplerDescriptor)
void setDefault();
858 DESCRIPTOR(ShaderModuleDescriptor)
void setDefault();
861 DESCRIPTOR(StorageTextureBindingLayout)
void setDefault();
864 DESCRIPTOR(SurfaceCapabilities)
void setDefault();
868 DESCRIPTOR(SurfaceConfiguration)
void setDefault();
871 DESCRIPTOR(SurfaceDescriptor)
void setDefault();
877 DESCRIPTOR(TextureBindingLayout)
void setDefault();
880 DESCRIPTOR(TextureViewDescriptor)
void setDefault();
883 DESCRIPTOR(BindGroupDescriptor)
void setDefault();
886 DESCRIPTOR(BindGroupLayoutEntry)
void setDefault();
889 DESCRIPTOR(CompilationInfo)
void setDefault();
892 DESCRIPTOR(ComputePassDescriptor)
void setDefault();
895 DESCRIPTOR(DepthStencilState)
void setDefault();
898 DESCRIPTOR(DeviceDescriptor)
void setDefault();
901 DESCRIPTOR(InstanceDescriptor)
void setDefault();
904 DESCRIPTOR(ProgrammableStageDescriptor)
void setDefault();
907 DESCRIPTOR(RenderPassColorAttachment)
void setDefault();
910 DESCRIPTOR(TextureDescriptor)
void setDefault();
913 DESCRIPTOR(BindGroupLayoutDescriptor)
void setDefault();
916 DESCRIPTOR(ColorTargetState)
void setDefault();
919 DESCRIPTOR(ComputePipelineDescriptor)
void setDefault();
922 DESCRIPTOR(RenderPassDescriptor)
void setDefault();
931 DESCRIPTOR(RenderPipelineDescriptor)
void setDefault();
934 DESCRIPTOR(InstanceEnumerateAdapterOptions)
void setDefault();
940class BindGroupLayout;
944class ComputePassEncoder;
945class ComputePipeline;
952class RenderBundleEncoder;
953class RenderPassEncoder;
964 std::function<void(CompilationInfoRequestStatus status,
const CompilationInfo &compilationInfo,
void *userdata1)>;
966 CreatePipelineAsyncStatus status, ComputePipeline pipeline,
StringView message,
void *userdata1)>;
968 std::function<void(CreatePipelineAsyncStatus status, RenderPipeline pipeline,
StringView message,
void *userdata1)>;
970 std::function<void(Device
const *device, DeviceLostReason reason,
StringView message,
void *userdata1)>;
972 std::function<void(PopErrorScopeStatus status, ErrorType type,
StringView message,
void *userdata1)>;
975 std::function<void(RequestAdapterStatus status, Adapter adapter,
StringView message,
void *userdata1)>;
977 std::function<void(RequestDeviceStatus status, Device device,
StringView message,
void *userdata1)>;
979 std::function<void(Device
const *device, ErrorType type,
StringView message,
void *userdata1)>;
1010Future
mapAsync(MapMode mode,
size_t offset,
size_t size, BufferMapCallbackInfo callbackInfo)
const;
1026void copyBufferToBuffer(Buffer source, uint64_t sourceOffset, Buffer destination, uint64_t destinationOffset,
1039void resolveQuerySet(QuerySet querySet, uint32_t firstQuery, uint32_t queryCount, Buffer destination,
1040 uint64_t destinationOffset)
const;
1054void setBindGroup(uint32_t groupIndex, BindGroup group,
size_t dynamicOffsetCount,
1068 HANDLE(ComputePipeline) BindGroupLayout getBindGroupLayout(uint32_t groupIndex)
const;
1081 CreateComputePipelineAsyncCallbackInfo callbackInfo)
const;
1087 CreateRenderPipelineAsyncCallbackInfo callbackInfo)
const;
1112WaitStatus
waitAny(
size_t futureCount, FutureWaitInfo *futures, uint64_t timeoutNS)
const;
1132 HANDLE(Queue) Future onSubmittedWorkDone(QueueWorkDoneCallbackInfo callbackInfo)
const;
1163void setBindGroup(uint32_t groupIndex, BindGroup group,
size_t dynamicOffsetCount,
1165void setBindGroup(uint32_t groupIndex, BindGroup group,
const std::vector<uint32_t> &dynamicOffsets)
const;
1167void setIndexBuffer(Buffer buffer, IndexFormat format, uint64_t offset, uint64_t size)
const;
1176 HANDLE(RenderPassEncoder)
void beginOcclusionQuery(uint32_t queryIndex)
const;
1179 uint32_t firstInstance)
const;
1190void setBindGroup(uint32_t groupIndex, BindGroup group,
size_t dynamicOffsetCount,
1192void setBindGroup(uint32_t groupIndex, BindGroup group,
const std::vector<uint32_t> &dynamicOffsets)
const;
1195void setIndexBuffer(Buffer buffer, IndexFormat format, uint64_t offset, uint64_t size)
const;
1201void setViewport(
float x,
float y,
float width,
float height,
float minDepth,
float maxDepth)
const;
1207void multiDrawIndirectCount(Buffer buffer, uint64_t offset, Buffer count_buffer, uint64_t count_buffer_offset,
1210 uint32_t max_count)
const;
1216 HANDLE(RenderPipeline) BindGroupLayout getBindGroupLayout(uint32_t groupIndex)
const;
1227 HANDLE(ShaderModule) Future getCompilationInfo(CompilationInfoCallbackInfo callbackInfo)
const;
1269#ifdef WEBGPU_CPP_IMPLEMENTATION
1273Instance
createInstance(
const InstanceDescriptor &descriptor) {
return wgpuCreateInstance(&descriptor); }
1277void StringView::setDefault() {}
1280void ChainedStruct::setDefault() {}
1283void ChainedStructOut::setDefault() {}
1286void BufferMapCallbackInfo::setDefault() {}
1289void CompilationInfoCallbackInfo::setDefault() {}
1292void CreateComputePipelineAsyncCallbackInfo::setDefault() {}
1295void CreateRenderPipelineAsyncCallbackInfo::setDefault() {}
1298void DeviceLostCallbackInfo::setDefault() {}
1301void PopErrorScopeCallbackInfo::setDefault() {}
1304void QueueWorkDoneCallbackInfo::setDefault() {}
1307void RequestAdapterCallbackInfo::setDefault() {}
1310void RequestDeviceCallbackInfo::setDefault() {}
1313void UncapturedErrorCallbackInfo::setDefault() {}
1316void AdapterInfo::setDefault()
1318 backendType = BackendType::Undefined;
1320 ((
StringView *) &architecture)->setDefault();
1324void AdapterInfo::freeMembers() {
return wgpuAdapterInfoFreeMembers(*
this); }
1327void BindGroupEntry::setDefault() { offset = 0; }
1330void BlendComponent::setDefault()
1332 operation = BlendOperation::Add;
1333 srcFactor = BlendFactor::One;
1334 dstFactor = BlendFactor::Zero;
1338void BufferBindingLayout::setDefault()
1340 type = BufferBindingType::Uniform;
1341 hasDynamicOffset =
false;
1346void BufferDescriptor::setDefault()
1348 mappedAtCreation =
false;
1353void Color::setDefault() {}
1356void CommandBufferDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1359void CommandEncoderDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1362void CompilationMessage::setDefault() { ((
StringView *) &message)->setDefault(); }
1365void ComputePassTimestampWrites::setDefault() {}
1368void ConstantEntry::setDefault() { ((
StringView *) &key)->setDefault(); }
1371void Extent3D::setDefault()
1374 depthOrArrayLayers = 1;
1378void Future::setDefault() {}
1381void InstanceCapabilities::setDefault() {}
1384void Limits::setDefault()
1386 maxTextureDimension1D = WGPU_LIMIT_U32_UNDEFINED;
1387 maxTextureDimension2D = WGPU_LIMIT_U32_UNDEFINED;
1388 maxTextureDimension3D = WGPU_LIMIT_U32_UNDEFINED;
1389 maxTextureArrayLayers = WGPU_LIMIT_U32_UNDEFINED;
1390 maxBindGroups = WGPU_LIMIT_U32_UNDEFINED;
1391 maxBindGroupsPlusVertexBuffers = WGPU_LIMIT_U32_UNDEFINED;
1392 maxBindingsPerBindGroup = WGPU_LIMIT_U32_UNDEFINED;
1393 maxDynamicUniformBuffersPerPipelineLayout = WGPU_LIMIT_U32_UNDEFINED;
1394 maxDynamicStorageBuffersPerPipelineLayout = WGPU_LIMIT_U32_UNDEFINED;
1395 maxSampledTexturesPerShaderStage = WGPU_LIMIT_U32_UNDEFINED;
1396 maxSamplersPerShaderStage = WGPU_LIMIT_U32_UNDEFINED;
1397 maxStorageBuffersPerShaderStage = WGPU_LIMIT_U32_UNDEFINED;
1398 maxStorageTexturesPerShaderStage = WGPU_LIMIT_U32_UNDEFINED;
1399 maxUniformBuffersPerShaderStage = WGPU_LIMIT_U32_UNDEFINED;
1400 maxUniformBufferBindingSize = WGPU_LIMIT_U64_UNDEFINED;
1401 maxStorageBufferBindingSize = WGPU_LIMIT_U64_UNDEFINED;
1402 minUniformBufferOffsetAlignment = WGPU_LIMIT_U32_UNDEFINED;
1403 minStorageBufferOffsetAlignment = WGPU_LIMIT_U32_UNDEFINED;
1404 maxVertexBuffers = WGPU_LIMIT_U32_UNDEFINED;
1405 maxBufferSize = WGPU_LIMIT_U64_UNDEFINED;
1406 maxVertexAttributes = WGPU_LIMIT_U32_UNDEFINED;
1407 maxVertexBufferArrayStride = WGPU_LIMIT_U32_UNDEFINED;
1408 maxInterStageShaderVariables = WGPU_LIMIT_U32_UNDEFINED;
1409 maxColorAttachments = WGPU_LIMIT_U32_UNDEFINED;
1410 maxColorAttachmentBytesPerSample = WGPU_LIMIT_U32_UNDEFINED;
1411 maxComputeWorkgroupStorageSize = WGPU_LIMIT_U32_UNDEFINED;
1412 maxComputeInvocationsPerWorkgroup = WGPU_LIMIT_U32_UNDEFINED;
1413 maxComputeWorkgroupSizeX = WGPU_LIMIT_U32_UNDEFINED;
1414 maxComputeWorkgroupSizeY = WGPU_LIMIT_U32_UNDEFINED;
1415 maxComputeWorkgroupSizeZ = WGPU_LIMIT_U32_UNDEFINED;
1416 maxComputeWorkgroupsPerDimension = WGPU_LIMIT_U32_UNDEFINED;
1420void MultisampleState::setDefault()
1424 alphaToCoverageEnabled =
false;
1428void Origin3D::setDefault()
1436void PipelineLayoutDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1439void PrimitiveState::setDefault()
1441 topology = PrimitiveTopology::TriangleList;
1442 stripIndexFormat = IndexFormat::Undefined;
1443 frontFace = FrontFace::CCW;
1444 cullMode = CullMode::None;
1445 unclippedDepth =
false;
1449void QuerySetDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1452void QueueDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1455void RenderBundleDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1458void RenderBundleEncoderDescriptor::setDefault()
1460 depthStencilFormat = TextureFormat::Undefined;
1461 depthReadOnly =
false;
1462 stencilReadOnly =
false;
1468void RenderPassDepthStencilAttachment::setDefault()
1470 depthLoadOp = LoadOp::Undefined;
1471 depthStoreOp = StoreOp::Undefined;
1472 depthReadOnly =
false;
1473 stencilLoadOp = LoadOp::Undefined;
1474 stencilStoreOp = StoreOp::Undefined;
1475 stencilClearValue = 0;
1476 stencilReadOnly =
false;
1480void RenderPassMaxDrawCount::setDefault()
1482 maxDrawCount = 50000000;
1483 ((ChainedStruct *) &chain)->setDefault();
1484 chain.sType = SType::RenderPassMaxDrawCount;
1485 chain.next =
nullptr;
1489void RenderPassTimestampWrites::setDefault() {}
1492void RequestAdapterOptions::setDefault()
1494 powerPreference = PowerPreference::Undefined;
1495 forceFallbackAdapter =
false;
1496 backendType = BackendType::Undefined;
1500void SamplerBindingLayout::setDefault() { type = SamplerBindingType::Filtering; }
1503void SamplerDescriptor::setDefault()
1505 addressModeU = AddressMode::ClampToEdge;
1506 addressModeV = AddressMode::ClampToEdge;
1507 addressModeW = AddressMode::ClampToEdge;
1508 magFilter = FilterMode::Nearest;
1509 minFilter = FilterMode::Nearest;
1510 mipmapFilter = MipmapFilterMode::Nearest;
1513 compare = CompareFunction::Undefined;
1518void ShaderModuleDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1521void ShaderSourceSPIRV::setDefault()
1523 ((ChainedStruct *) &chain)->setDefault();
1524 chain.sType = SType::ShaderSourceSPIRV;
1525 chain.next =
nullptr;
1529void ShaderSourceWGSL::setDefault()
1531 ((ChainedStruct *) &chain)->setDefault();
1533 chain.sType = SType::ShaderSourceWGSL;
1534 chain.next =
nullptr;
1538void StencilFaceState::setDefault()
1540 compare = CompareFunction::Always;
1541 failOp = StencilOperation::Keep;
1542 depthFailOp = StencilOperation::Keep;
1543 passOp = StencilOperation::Keep;
1547void StorageTextureBindingLayout::setDefault()
1549 access = StorageTextureAccess::WriteOnly;
1550 format = TextureFormat::Undefined;
1551 viewDimension = TextureViewDimension::_2D;
1555void SupportedFeatures::setDefault() {}
1556void SupportedFeatures::freeMembers() {
return wgpuSupportedFeaturesFreeMembers(*
this); }
1559void SupportedWGSLLanguageFeatures::setDefault() {}
1560void SupportedWGSLLanguageFeatures::freeMembers() {
return wgpuSupportedWGSLLanguageFeaturesFreeMembers(*
this); }
1563void SurfaceCapabilities::setDefault() {}
1564void SurfaceCapabilities::freeMembers() {
return wgpuSurfaceCapabilitiesFreeMembers(*
this); }
1567void SurfaceConfiguration::setDefault()
1569 format = TextureFormat::Undefined;
1570 presentMode = PresentMode::Undefined;
1574void SurfaceDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1577void SurfaceSourceAndroidNativeWindow::setDefault()
1579 ((ChainedStruct *) &chain)->setDefault();
1580 chain.sType = SType::SurfaceSourceAndroidNativeWindow;
1581 chain.next =
nullptr;
1585void SurfaceSourceMetalLayer::setDefault()
1587 ((ChainedStruct *) &chain)->setDefault();
1588 chain.sType = SType::SurfaceSourceMetalLayer;
1589 chain.next =
nullptr;
1593void SurfaceSourceWaylandSurface::setDefault()
1595 ((ChainedStruct *) &chain)->setDefault();
1596 chain.sType = SType::SurfaceSourceWaylandSurface;
1597 chain.next =
nullptr;
1601void SurfaceSourceWindowsHWND::setDefault()
1603 ((ChainedStruct *) &chain)->setDefault();
1604 chain.sType = SType::SurfaceSourceWindowsHWND;
1605 chain.next =
nullptr;
1609void SurfaceSourceXCBWindow::setDefault()
1611 ((ChainedStruct *) &chain)->setDefault();
1612 chain.sType = SType::SurfaceSourceXCBWindow;
1613 chain.next =
nullptr;
1617void SurfaceSourceXlibWindow::setDefault()
1619 ((ChainedStruct *) &chain)->setDefault();
1620 chain.sType = SType::SurfaceSourceXlibWindow;
1621 chain.next =
nullptr;
1625void SurfaceTexture::setDefault() {}
1628void TexelCopyBufferLayout::setDefault() {}
1631void TextureBindingLayout::setDefault()
1633 sampleType = TextureSampleType::Float;
1634 viewDimension = TextureViewDimension::_2D;
1635 multisampled =
false;
1639void TextureViewDescriptor::setDefault()
1641 format = TextureFormat::Undefined;
1642 dimension = TextureViewDimension::Undefined;
1645 aspect = TextureAspect::All;
1650void VertexAttribute::setDefault() {}
1653void BindGroupDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1656void BindGroupLayoutEntry::setDefault()
1658 ((BufferBindingLayout *) &buffer)->setDefault();
1659 ((SamplerBindingLayout *) &sampler)->setDefault();
1660 ((TextureBindingLayout *) &texture)->setDefault();
1661 ((StorageTextureBindingLayout *) &storageTexture)->setDefault();
1662 buffer.type = BufferBindingType::Undefined;
1663 sampler.type = SamplerBindingType::Undefined;
1664 storageTexture.access = StorageTextureAccess::Undefined;
1665 texture.sampleType = TextureSampleType::Undefined;
1669void BlendState::setDefault()
1671 ((BlendComponent *) &color)->setDefault();
1672 ((BlendComponent *) &alpha)->setDefault();
1676void CompilationInfo::setDefault() {}
1679void ComputePassDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1682void DepthStencilState::setDefault()
1684 format = TextureFormat::Undefined;
1685 depthWriteEnabled = OptionalBool::Undefined;
1686 depthCompare = CompareFunction::Undefined;
1687 stencilReadMask = 0xFFFFFFFF;
1688 stencilWriteMask = 0xFFFFFFFF;
1690 depthBiasSlopeScale = 0;
1692 ((StencilFaceState *) &stencilFront)->setDefault();
1693 ((StencilFaceState *) &stencilBack)->setDefault();
1697void DeviceDescriptor::setDefault()
1700 ((QueueDescriptor *) &defaultQueue)->setDefault();
1701 ((DeviceLostCallbackInfo *) &deviceLostCallbackInfo)->setDefault();
1702 ((UncapturedErrorCallbackInfo *) &uncapturedErrorCallbackInfo)->setDefault();
1706void FutureWaitInfo::setDefault() { ((Future *) &future)->setDefault(); }
1709void InstanceDescriptor::setDefault() { ((InstanceCapabilities *) &features)->setDefault(); }
1712void ProgrammableStageDescriptor::setDefault() { ((
StringView *) &entryPoint)->setDefault(); }
1715void RenderPassColorAttachment::setDefault()
1717 loadOp = LoadOp::Undefined;
1718 storeOp = StoreOp::Undefined;
1719 ((
Color *) &clearValue)->setDefault();
1723void TexelCopyBufferInfo::setDefault() { ((TexelCopyBufferLayout *) &layout)->setDefault(); }
1726void TexelCopyTextureInfo::setDefault()
1729 aspect = TextureAspect::All;
1730 ((
Origin3D *) &origin)->setDefault();
1734void TextureDescriptor::setDefault()
1736 dimension = TextureDimension::_2D;
1737 format = TextureFormat::Undefined;
1741 ((
Extent3D *) &size)->setDefault();
1745void VertexBufferLayout::setDefault() { stepMode = VertexStepMode::Vertex; }
1748void BindGroupLayoutDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1751void ColorTargetState::setDefault() { format = TextureFormat::Undefined; }
1754void ComputePipelineDescriptor::setDefault()
1757 ((ProgrammableStageDescriptor *) &compute)->setDefault();
1761void RenderPassDescriptor::setDefault() { ((
StringView *) &label)->setDefault(); }
1764void VertexState::setDefault() { ((
StringView *) &entryPoint)->setDefault(); }
1767void FragmentState::setDefault() { ((
StringView *) &entryPoint)->setDefault(); }
1770void RenderPipelineDescriptor::setDefault()
1773 ((VertexState *) &vertex)->setDefault();
1774 ((PrimitiveState *) &primitive)->setDefault();
1775 ((MultisampleState *) &multisample)->setDefault();
1779void InstanceExtras::setDefault()
1781 dx12ShaderCompiler = Dx12Compiler::Undefined;
1782 ((ChainedStruct *) &chain)->setDefault();
1785 chain.sType = (WGPUSType) NativeSType::InstanceExtras;
1786 chain.next =
nullptr;
1790void DeviceExtras::setDefault()
1792 ((ChainedStruct *) &chain)->setDefault();
1794 chain.sType = (WGPUSType) NativeSType::DeviceExtras;
1795 chain.next =
nullptr;
1799void NativeLimits::setDefault()
1801 ((ChainedStructOut *) &chain)->setDefault();
1802 chain.sType = (WGPUSType) NativeSType::NativeLimits;
1803 chain.next =
nullptr;
1807void PushConstantRange::setDefault() {}
1810void PipelineLayoutExtras::setDefault()
1812 ((ChainedStruct *) &chain)->setDefault();
1813 chain.sType = (WGPUSType) NativeSType::PipelineLayoutExtras;
1814 chain.next =
nullptr;
1818void ShaderDefine::setDefault()
1825void ShaderModuleGLSLDescriptor::setDefault()
1827 ((ChainedStruct *) &chain)->setDefault();
1829 chain.sType = (WGPUSType) NativeSType::ShaderModuleGLSLDescriptor;
1830 chain.next =
nullptr;
1834void ShaderModuleDescriptorSpirV::setDefault() { ((
StringView *) &label)->setDefault(); }
1837void RegistryReport::setDefault() {}
1840void HubReport::setDefault()
1842 ((RegistryReport *) &adapters)->setDefault();
1843 ((RegistryReport *) &devices)->setDefault();
1844 ((RegistryReport *) &queues)->setDefault();
1845 ((RegistryReport *) &pipelineLayouts)->setDefault();
1846 ((RegistryReport *) &shaderModules)->setDefault();
1847 ((RegistryReport *) &bindGroupLayouts)->setDefault();
1848 ((RegistryReport *) &bindGroups)->setDefault();
1849 ((RegistryReport *) &commandBuffers)->setDefault();
1850 ((RegistryReport *) &renderBundles)->setDefault();
1851 ((RegistryReport *) &renderPipelines)->setDefault();
1852 ((RegistryReport *) &computePipelines)->setDefault();
1853 ((RegistryReport *) &pipelineCaches)->setDefault();
1854 ((RegistryReport *) &querySets)->setDefault();
1855 ((RegistryReport *) &buffers)->setDefault();
1856 ((RegistryReport *) &textures)->setDefault();
1857 ((RegistryReport *) &textureViews)->setDefault();
1858 ((RegistryReport *) &samplers)->setDefault();
1862void GlobalReport::setDefault()
1864 ((RegistryReport *) &surfaces)->setDefault();
1865 ((HubReport *) &hub)->setDefault();
1869void InstanceEnumerateAdapterOptions::setDefault() {}
1872void BindGroupEntryExtras::setDefault()
1874 ((ChainedStruct *) &chain)->setDefault();
1875 chain.sType = (WGPUSType) NativeSType::BindGroupEntryExtras;
1876 chain.next =
nullptr;
1880void BindGroupLayoutEntryExtras::setDefault()
1882 ((ChainedStruct *) &chain)->setDefault();
1883 chain.sType = (WGPUSType) NativeSType::BindGroupLayoutEntryExtras;
1884 chain.next =
nullptr;
1888void QuerySetDescriptorExtras::setDefault()
1890 ((ChainedStruct *) &chain)->setDefault();
1891 chain.sType = (WGPUSType) NativeSType::QuerySetDescriptorExtras;
1892 chain.next =
nullptr;
1896void SurfaceConfigurationExtras::setDefault()
1898 ((ChainedStruct *) &chain)->setDefault();
1899 chain.sType = (WGPUSType) NativeSType::SurfaceConfigurationExtras;
1900 chain.next =
nullptr;
1904void Adapter::getFeatures(SupportedFeatures *features)
const {
return wgpuAdapterGetFeatures(m_raw, features); }
1905Status Adapter::getInfo(AdapterInfo *info)
const {
return static_cast<Status
>(wgpuAdapterGetInfo(m_raw, info)); }
1906Status Adapter::getLimits(Limits *limits)
const {
return static_cast<Status
>(wgpuAdapterGetLimits(m_raw, limits)); }
1907Bool Adapter::hasFeature(FeatureName feature)
const
1909 return wgpuAdapterHasFeature(m_raw,
static_cast<WGPUFeatureName
>(feature));
1911Future Adapter::requestDevice(
const DeviceDescriptor &descriptor, RequestDeviceCallbackInfo callbackInfo)
const
1913 return wgpuAdapterRequestDevice(m_raw, &descriptor, callbackInfo);
1915void Adapter::addRef()
const {
return wgpuAdapterAddRef(m_raw); }
1916void Adapter::release()
const {
return wgpuAdapterRelease(m_raw); }
1919void BindGroup::setLabel(
StringView label)
const {
return wgpuBindGroupSetLabel(m_raw, label); }
1920void BindGroup::addRef()
const {
return wgpuBindGroupAddRef(m_raw); }
1921void BindGroup::release()
const {
return wgpuBindGroupRelease(m_raw); }
1924void BindGroupLayout::setLabel(
StringView label)
const {
return wgpuBindGroupLayoutSetLabel(m_raw, label); }
1925void BindGroupLayout::addRef()
const {
return wgpuBindGroupLayoutAddRef(m_raw); }
1926void BindGroupLayout::release()
const {
return wgpuBindGroupLayoutRelease(m_raw); }
1929void Buffer::destroy()
const {
return wgpuBufferDestroy(m_raw); }
1930void const *Buffer::getConstMappedRange(
size_t offset,
size_t size)
const
1932 return wgpuBufferGetConstMappedRange(m_raw, offset, size);
1934BufferMapState Buffer::getMapState()
const {
return static_cast<BufferMapState
>(wgpuBufferGetMapState(m_raw)); }
1935void *Buffer::getMappedRange(
size_t offset,
size_t size)
const {
return wgpuBufferGetMappedRange(m_raw, offset, size); }
1936uint64_t Buffer::getSize()
const {
return wgpuBufferGetSize(m_raw); }
1937BufferUsage Buffer::getUsage()
const {
return static_cast<BufferUsage
>(wgpuBufferGetUsage(m_raw)); }
1938Future Buffer::mapAsync(MapMode mode,
size_t offset,
size_t size, BufferMapCallbackInfo callbackInfo)
const
1940 return wgpuBufferMapAsync(m_raw,
static_cast<WGPUMapMode
>(mode), offset, size, callbackInfo);
1942void Buffer::setLabel(
StringView label)
const {
return wgpuBufferSetLabel(m_raw, label); }
1943void Buffer::unmap()
const {
return wgpuBufferUnmap(m_raw); }
1944void Buffer::addRef()
const {
return wgpuBufferAddRef(m_raw); }
1945void Buffer::release()
const {
return wgpuBufferRelease(m_raw); }
1948void CommandBuffer::setLabel(
StringView label)
const {
return wgpuCommandBufferSetLabel(m_raw, label); }
1949void CommandBuffer::addRef()
const {
return wgpuCommandBufferAddRef(m_raw); }
1950void CommandBuffer::release()
const {
return wgpuCommandBufferRelease(m_raw); }
1953ComputePassEncoder CommandEncoder::beginComputePass(
const ComputePassDescriptor &descriptor)
const
1955 return wgpuCommandEncoderBeginComputePass(m_raw, &descriptor);
1957ComputePassEncoder CommandEncoder::beginComputePass()
const
1959 return wgpuCommandEncoderBeginComputePass(m_raw,
nullptr);
1961RenderPassEncoder CommandEncoder::beginRenderPass(
const RenderPassDescriptor &descriptor)
const
1963 return wgpuCommandEncoderBeginRenderPass(m_raw, &descriptor);
1965void CommandEncoder::clearBuffer(Buffer buffer, uint64_t offset, uint64_t size)
const
1967 return wgpuCommandEncoderClearBuffer(m_raw, buffer, offset, size);
1969void CommandEncoder::copyBufferToBuffer(Buffer source, uint64_t sourceOffset, Buffer destination,
1970 uint64_t destinationOffset, uint64_t size)
const
1972 return wgpuCommandEncoderCopyBufferToBuffer(m_raw, source, sourceOffset, destination, destinationOffset, size);
1974void CommandEncoder::copyBufferToTexture(
const TexelCopyBufferInfo &source,
const TexelCopyTextureInfo &destination,
1977 return wgpuCommandEncoderCopyBufferToTexture(m_raw, &source, &destination, ©Size);
1979void CommandEncoder::copyTextureToBuffer(
const TexelCopyTextureInfo &source,
const TexelCopyBufferInfo &destination,
1982 return wgpuCommandEncoderCopyTextureToBuffer(m_raw, &source, &destination, ©Size);
1984void CommandEncoder::copyTextureToTexture(
const TexelCopyTextureInfo &source,
const TexelCopyTextureInfo &destination,
1987 return wgpuCommandEncoderCopyTextureToTexture(m_raw, &source, &destination, ©Size);
1989CommandBuffer CommandEncoder::finish(
const CommandBufferDescriptor &descriptor)
const
1991 return wgpuCommandEncoderFinish(m_raw, &descriptor);
1993CommandBuffer CommandEncoder::finish()
const {
return wgpuCommandEncoderFinish(m_raw,
nullptr); }
1994void CommandEncoder::insertDebugMarker(
StringView markerLabel)
const
1996 return wgpuCommandEncoderInsertDebugMarker(m_raw, markerLabel);
1998void CommandEncoder::popDebugGroup()
const {
return wgpuCommandEncoderPopDebugGroup(m_raw); }
1999void CommandEncoder::pushDebugGroup(
StringView groupLabel)
const
2001 return wgpuCommandEncoderPushDebugGroup(m_raw, groupLabel);
2003void CommandEncoder::resolveQuerySet(QuerySet querySet, uint32_t firstQuery, uint32_t queryCount, Buffer destination,
2004 uint64_t destinationOffset)
const
2006 return wgpuCommandEncoderResolveQuerySet(m_raw, querySet, firstQuery, queryCount, destination, destinationOffset);
2008void CommandEncoder::setLabel(
StringView label)
const {
return wgpuCommandEncoderSetLabel(m_raw, label); }
2009void CommandEncoder::writeTimestamp(QuerySet querySet, uint32_t queryIndex)
const
2011 return wgpuCommandEncoderWriteTimestamp(m_raw, querySet, queryIndex);
2013void CommandEncoder::addRef()
const {
return wgpuCommandEncoderAddRef(m_raw); }
2014void CommandEncoder::release()
const {
return wgpuCommandEncoderRelease(m_raw); }
2017void ComputePassEncoder::dispatchWorkgroups(uint32_t workgroupCountX, uint32_t
workgroupCountY,
2018 uint32_t workgroupCountZ)
const
2020 return wgpuComputePassEncoderDispatchWorkgroups(m_raw, workgroupCountX,
workgroupCountY, workgroupCountZ);
2022void ComputePassEncoder::dispatchWorkgroupsIndirect(Buffer indirectBuffer, uint64_t indirectOffset)
const
2024 return wgpuComputePassEncoderDispatchWorkgroupsIndirect(m_raw, indirectBuffer, indirectOffset);
2026void ComputePassEncoder::end()
const {
return wgpuComputePassEncoderEnd(m_raw); }
2027void ComputePassEncoder::insertDebugMarker(
StringView markerLabel)
const
2029 return wgpuComputePassEncoderInsertDebugMarker(m_raw, markerLabel);
2031void ComputePassEncoder::popDebugGroup()
const {
return wgpuComputePassEncoderPopDebugGroup(m_raw); }
2032void ComputePassEncoder::pushDebugGroup(
StringView groupLabel)
const
2034 return wgpuComputePassEncoderPushDebugGroup(m_raw, groupLabel);
2036void ComputePassEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
size_t dynamicOffsetCount,
2037 uint32_t
const *dynamicOffsets)
const
2039 return wgpuComputePassEncoderSetBindGroup(m_raw, groupIndex, group, dynamicOffsetCount, dynamicOffsets);
2041void ComputePassEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
2042 const std::vector<uint32_t> &dynamicOffsets)
const
2044 return wgpuComputePassEncoderSetBindGroup(m_raw, groupIndex, group,
static_cast<size_t>(dynamicOffsets.size()),
2045 dynamicOffsets.data());
2047void ComputePassEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
const uint32_t &dynamicOffsets)
const
2049 return wgpuComputePassEncoderSetBindGroup(m_raw, groupIndex, group, 1, &dynamicOffsets);
2051void ComputePassEncoder::setLabel(
StringView label)
const {
return wgpuComputePassEncoderSetLabel(m_raw, label); }
2052void ComputePassEncoder::setPipeline(ComputePipeline pipeline)
const
2054 return wgpuComputePassEncoderSetPipeline(m_raw, pipeline);
2056void ComputePassEncoder::addRef()
const {
return wgpuComputePassEncoderAddRef(m_raw); }
2057void ComputePassEncoder::release()
const {
return wgpuComputePassEncoderRelease(m_raw); }
2058void ComputePassEncoder::setPushConstants(uint32_t offset, uint32_t sizeBytes,
void const *data)
const
2060 return wgpuComputePassEncoderSetPushConstants(m_raw, offset, sizeBytes, data);
2062void ComputePassEncoder::beginPipelineStatisticsQuery(QuerySet querySet, uint32_t queryIndex)
const
2064 return wgpuComputePassEncoderBeginPipelineStatisticsQuery(m_raw, querySet, queryIndex);
2066void ComputePassEncoder::endPipelineStatisticsQuery()
const
2068 return wgpuComputePassEncoderEndPipelineStatisticsQuery(m_raw);
2070void ComputePassEncoder::writeTimestamp(QuerySet querySet, uint32_t queryIndex)
const
2072 return wgpuComputePassEncoderWriteTimestamp(m_raw, querySet, queryIndex);
2076BindGroupLayout ComputePipeline::getBindGroupLayout(uint32_t groupIndex)
const
2078 return wgpuComputePipelineGetBindGroupLayout(m_raw, groupIndex);
2080void ComputePipeline::setLabel(
StringView label)
const {
return wgpuComputePipelineSetLabel(m_raw, label); }
2081void ComputePipeline::addRef()
const {
return wgpuComputePipelineAddRef(m_raw); }
2082void ComputePipeline::release()
const {
return wgpuComputePipelineRelease(m_raw); }
2085BindGroup Device::createBindGroup(
const BindGroupDescriptor &descriptor)
const
2087 return wgpuDeviceCreateBindGroup(m_raw, &descriptor);
2089BindGroupLayout Device::createBindGroupLayout(
const BindGroupLayoutDescriptor &descriptor)
const
2091 return wgpuDeviceCreateBindGroupLayout(m_raw, &descriptor);
2093Buffer Device::createBuffer(
const BufferDescriptor &descriptor)
const
2095 return wgpuDeviceCreateBuffer(m_raw, &descriptor);
2097CommandEncoder Device::createCommandEncoder(
const CommandEncoderDescriptor &descriptor)
const
2099 return wgpuDeviceCreateCommandEncoder(m_raw, &descriptor);
2101CommandEncoder Device::createCommandEncoder()
const {
return wgpuDeviceCreateCommandEncoder(m_raw,
nullptr); }
2102ComputePipeline Device::createComputePipeline(
const ComputePipelineDescriptor &descriptor)
const
2104 return wgpuDeviceCreateComputePipeline(m_raw, &descriptor);
2106Future Device::createComputePipelineAsync(
const ComputePipelineDescriptor &descriptor,
2107 CreateComputePipelineAsyncCallbackInfo callbackInfo)
const
2109 return wgpuDeviceCreateComputePipelineAsync(m_raw, &descriptor, callbackInfo);
2111PipelineLayout Device::createPipelineLayout(
const PipelineLayoutDescriptor &descriptor)
const
2113 return wgpuDeviceCreatePipelineLayout(m_raw, &descriptor);
2115QuerySet Device::createQuerySet(
const QuerySetDescriptor &descriptor)
const
2117 return wgpuDeviceCreateQuerySet(m_raw, &descriptor);
2119RenderBundleEncoder Device::createRenderBundleEncoder(
const RenderBundleEncoderDescriptor &descriptor)
const
2121 return wgpuDeviceCreateRenderBundleEncoder(m_raw, &descriptor);
2123RenderPipeline Device::createRenderPipeline(
const RenderPipelineDescriptor &descriptor)
const
2125 return wgpuDeviceCreateRenderPipeline(m_raw, &descriptor);
2127Future Device::createRenderPipelineAsync(
const RenderPipelineDescriptor &descriptor,
2128 CreateRenderPipelineAsyncCallbackInfo callbackInfo)
const
2130 return wgpuDeviceCreateRenderPipelineAsync(m_raw, &descriptor, callbackInfo);
2132Sampler Device::createSampler(
const SamplerDescriptor &descriptor)
const
2134 return wgpuDeviceCreateSampler(m_raw, &descriptor);
2136Sampler Device::createSampler()
const {
return wgpuDeviceCreateSampler(m_raw,
nullptr); }
2137ShaderModule Device::createShaderModule(
const ShaderModuleDescriptor &descriptor)
const
2139 return wgpuDeviceCreateShaderModule(m_raw, &descriptor);
2141Texture Device::createTexture(
const TextureDescriptor &descriptor)
const
2143 return wgpuDeviceCreateTexture(m_raw, &descriptor);
2145void Device::destroy()
const {
return wgpuDeviceDestroy(m_raw); }
2146AdapterInfo Device::getAdapterInfo()
const {
return wgpuDeviceGetAdapterInfo(m_raw); }
2147void Device::getFeatures(SupportedFeatures *features)
const {
return wgpuDeviceGetFeatures(m_raw, features); }
2148Status Device::getLimits(Limits *limits)
const {
return static_cast<Status
>(wgpuDeviceGetLimits(m_raw, limits)); }
2149Queue Device::getQueue()
const {
return wgpuDeviceGetQueue(m_raw); }
2150Bool Device::hasFeature(FeatureName feature)
const
2152 return wgpuDeviceHasFeature(m_raw,
static_cast<WGPUFeatureName
>(feature));
2154Future Device::popErrorScope(PopErrorScopeCallbackInfo callbackInfo)
const
2156 return wgpuDevicePopErrorScope(m_raw, callbackInfo);
2158void Device::pushErrorScope(ErrorFilter filter)
const
2160 return wgpuDevicePushErrorScope(m_raw,
static_cast<WGPUErrorFilter
>(filter));
2162void Device::setLabel(
StringView label)
const {
return wgpuDeviceSetLabel(m_raw, label); }
2163void Device::addRef()
const {
return wgpuDeviceAddRef(m_raw); }
2164void Device::release()
const {
return wgpuDeviceRelease(m_raw); }
2167 return wgpuDevicePoll(m_raw, wait, wrappedSubmissionIndex);
2169ShaderModule Device::createShaderModuleSpirV(
const ShaderModuleDescriptorSpirV &descriptor)
const
2171 return wgpuDeviceCreateShaderModuleSpirV(m_raw, &descriptor);
2175Surface Instance::createSurface(
const SurfaceDescriptor &descriptor)
const
2177 return wgpuInstanceCreateSurface(m_raw, &descriptor);
2179Status Instance::getWGSLLanguageFeatures(SupportedWGSLLanguageFeatures *features)
const
2181 return static_cast<Status
>(wgpuInstanceGetWGSLLanguageFeatures(m_raw, features));
2183Bool Instance::hasWGSLLanguageFeature(WGSLLanguageFeatureName feature)
const
2185 return wgpuInstanceHasWGSLLanguageFeature(m_raw,
static_cast<WGPUWGSLLanguageFeatureName
>(feature));
2187void Instance::processEvents()
const {
return wgpuInstanceProcessEvents(m_raw); }
2188Future Instance::requestAdapter(
const RequestAdapterOptions &options, RequestAdapterCallbackInfo callbackInfo)
const
2190 return wgpuInstanceRequestAdapter(m_raw, &options, callbackInfo);
2192WaitStatus Instance::waitAny(
size_t futureCount, FutureWaitInfo *futures, uint64_t timeoutNS)
const
2194 return static_cast<WaitStatus
>(wgpuInstanceWaitAny(m_raw, futureCount, futures, timeoutNS));
2196void Instance::addRef()
const {
return wgpuInstanceAddRef(m_raw); }
2197void Instance::release()
const {
return wgpuInstanceRelease(m_raw); }
2198size_t Instance::enumerateAdapters(
const InstanceEnumerateAdapterOptions &options, Adapter *adapters)
const
2200 return wgpuInstanceEnumerateAdapters(m_raw, &options,
reinterpret_cast<WGPUAdapter *
>(adapters));
2204void PipelineLayout::setLabel(
StringView label)
const {
return wgpuPipelineLayoutSetLabel(m_raw, label); }
2205void PipelineLayout::addRef()
const {
return wgpuPipelineLayoutAddRef(m_raw); }
2206void PipelineLayout::release()
const {
return wgpuPipelineLayoutRelease(m_raw); }
2209void QuerySet::destroy()
const {
return wgpuQuerySetDestroy(m_raw); }
2210uint32_t QuerySet::getCount()
const {
return wgpuQuerySetGetCount(m_raw); }
2211QueryType QuerySet::getType()
const {
return static_cast<QueryType
>(wgpuQuerySetGetType(m_raw)); }
2212void QuerySet::setLabel(
StringView label)
const {
return wgpuQuerySetSetLabel(m_raw, label); }
2213void QuerySet::addRef()
const {
return wgpuQuerySetAddRef(m_raw); }
2214void QuerySet::release()
const {
return wgpuQuerySetRelease(m_raw); }
2217Future Queue::onSubmittedWorkDone(QueueWorkDoneCallbackInfo callbackInfo)
const
2219 return wgpuQueueOnSubmittedWorkDone(m_raw, callbackInfo);
2221void Queue::setLabel(
StringView label)
const {
return wgpuQueueSetLabel(m_raw, label); }
2222void Queue::submit(
size_t commandCount, CommandBuffer
const *commands)
const
2224 return wgpuQueueSubmit(m_raw, commandCount,
reinterpret_cast<WGPUCommandBuffer
const *
>(commands));
2226void Queue::submit(
const std::vector<WGPUCommandBuffer> &commands)
const
2228 return wgpuQueueSubmit(m_raw,
static_cast<size_t>(commands.size()), commands.data());
2230void Queue::submit(
const WGPUCommandBuffer &commands)
const {
return wgpuQueueSubmit(m_raw, 1, &commands); }
2231void Queue::writeBuffer(Buffer buffer, uint64_t bufferOffset,
void const *data,
size_t size)
const
2233 return wgpuQueueWriteBuffer(m_raw, buffer, bufferOffset, data, size);
2235void Queue::writeTexture(
const TexelCopyTextureInfo &destination,
void const *data,
size_t dataSize,
2236 const TexelCopyBufferLayout &dataLayout,
const Extent3D &writeSize)
const
2238 return wgpuQueueWriteTexture(m_raw, &destination, data, dataSize, &dataLayout, &writeSize);
2240void Queue::addRef()
const {
return wgpuQueueAddRef(m_raw); }
2241void Queue::release()
const {
return wgpuQueueRelease(m_raw); }
2242SubmissionIndex Queue::submitForIndex(
size_t commandCount, CommandBuffer
const *commands)
const
2244 return wgpuQueueSubmitForIndex(m_raw, commandCount,
reinterpret_cast<WGPUCommandBuffer
const *
>(commands));
2246SubmissionIndex Queue::submitForIndex(
const std::vector<WGPUCommandBuffer> &commands)
const
2248 return wgpuQueueSubmitForIndex(m_raw,
static_cast<size_t>(commands.size()), commands.data());
2250SubmissionIndex Queue::submitForIndex(
const WGPUCommandBuffer &commands)
const
2252 return wgpuQueueSubmitForIndex(m_raw, 1, &commands);
2256void RenderBundle::setLabel(
StringView label)
const {
return wgpuRenderBundleSetLabel(m_raw, label); }
2257void RenderBundle::addRef()
const {
return wgpuRenderBundleAddRef(m_raw); }
2258void RenderBundle::release()
const {
return wgpuRenderBundleRelease(m_raw); }
2262 uint32_t firstInstance)
const
2266void RenderBundleEncoder::drawIndexed(uint32_t indexCount, uint32_t
instanceCount, uint32_t firstIndex,
2267 int32_t baseVertex, uint32_t firstInstance)
const
2269 return wgpuRenderBundleEncoderDrawIndexed(m_raw, indexCount,
instanceCount, firstIndex, baseVertex, firstInstance);
2271void RenderBundleEncoder::drawIndexedIndirect(Buffer indirectBuffer, uint64_t indirectOffset)
const
2273 return wgpuRenderBundleEncoderDrawIndexedIndirect(m_raw, indirectBuffer, indirectOffset);
2275void RenderBundleEncoder::drawIndirect(Buffer indirectBuffer, uint64_t indirectOffset)
const
2277 return wgpuRenderBundleEncoderDrawIndirect(m_raw, indirectBuffer, indirectOffset);
2279RenderBundle RenderBundleEncoder::finish(
const RenderBundleDescriptor &descriptor)
const
2281 return wgpuRenderBundleEncoderFinish(m_raw, &descriptor);
2283RenderBundle RenderBundleEncoder::finish()
const {
return wgpuRenderBundleEncoderFinish(m_raw,
nullptr); }
2284void RenderBundleEncoder::insertDebugMarker(
StringView markerLabel)
const
2286 return wgpuRenderBundleEncoderInsertDebugMarker(m_raw, markerLabel);
2288void RenderBundleEncoder::popDebugGroup()
const {
return wgpuRenderBundleEncoderPopDebugGroup(m_raw); }
2289void RenderBundleEncoder::pushDebugGroup(
StringView groupLabel)
const
2291 return wgpuRenderBundleEncoderPushDebugGroup(m_raw, groupLabel);
2293void RenderBundleEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
size_t dynamicOffsetCount,
2294 uint32_t
const *dynamicOffsets)
const
2296 return wgpuRenderBundleEncoderSetBindGroup(m_raw, groupIndex, group, dynamicOffsetCount, dynamicOffsets);
2298void RenderBundleEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
2299 const std::vector<uint32_t> &dynamicOffsets)
const
2301 return wgpuRenderBundleEncoderSetBindGroup(m_raw, groupIndex, group,
static_cast<size_t>(dynamicOffsets.size()),
2302 dynamicOffsets.data());
2304void RenderBundleEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
const uint32_t &dynamicOffsets)
const
2306 return wgpuRenderBundleEncoderSetBindGroup(m_raw, groupIndex, group, 1, &dynamicOffsets);
2308void RenderBundleEncoder::setIndexBuffer(Buffer buffer, IndexFormat format, uint64_t offset, uint64_t size)
const
2310 return wgpuRenderBundleEncoderSetIndexBuffer(m_raw, buffer,
static_cast<WGPUIndexFormat
>(format), offset, size);
2312void RenderBundleEncoder::setLabel(
StringView label)
const {
return wgpuRenderBundleEncoderSetLabel(m_raw, label); }
2313void RenderBundleEncoder::setPipeline(RenderPipeline pipeline)
const
2315 return wgpuRenderBundleEncoderSetPipeline(m_raw, pipeline);
2317void RenderBundleEncoder::setVertexBuffer(uint32_t slot, Buffer buffer, uint64_t offset, uint64_t size)
const
2319 return wgpuRenderBundleEncoderSetVertexBuffer(m_raw, slot, buffer, offset, size);
2321void RenderBundleEncoder::addRef()
const {
return wgpuRenderBundleEncoderAddRef(m_raw); }
2322void RenderBundleEncoder::release()
const {
return wgpuRenderBundleEncoderRelease(m_raw); }
2323void RenderBundleEncoder::setPushConstants(ShaderStage stages, uint32_t offset, uint32_t sizeBytes,
2324 void const *data)
const
2326 return wgpuRenderBundleEncoderSetPushConstants(m_raw,
static_cast<WGPUShaderStage
>(stages), offset, sizeBytes,
2331void RenderPassEncoder::beginOcclusionQuery(uint32_t queryIndex)
const
2333 return wgpuRenderPassEncoderBeginOcclusionQuery(m_raw, queryIndex);
2336 uint32_t firstInstance)
const
2340void RenderPassEncoder::drawIndexed(uint32_t indexCount, uint32_t
instanceCount, uint32_t firstIndex,
2341 int32_t baseVertex, uint32_t firstInstance)
const
2343 return wgpuRenderPassEncoderDrawIndexed(m_raw, indexCount,
instanceCount, firstIndex, baseVertex, firstInstance);
2345void RenderPassEncoder::drawIndexedIndirect(Buffer indirectBuffer, uint64_t indirectOffset)
const
2347 return wgpuRenderPassEncoderDrawIndexedIndirect(m_raw, indirectBuffer, indirectOffset);
2349void RenderPassEncoder::drawIndirect(Buffer indirectBuffer, uint64_t indirectOffset)
const
2351 return wgpuRenderPassEncoderDrawIndirect(m_raw, indirectBuffer, indirectOffset);
2353void RenderPassEncoder::end()
const {
return wgpuRenderPassEncoderEnd(m_raw); }
2354void RenderPassEncoder::endOcclusionQuery()
const {
return wgpuRenderPassEncoderEndOcclusionQuery(m_raw); }
2355void RenderPassEncoder::executeBundles(
size_t bundleCount, RenderBundle
const *bundles)
const
2357 return wgpuRenderPassEncoderExecuteBundles(m_raw, bundleCount,
reinterpret_cast<WGPURenderBundle
const *
>(bundles));
2359void RenderPassEncoder::executeBundles(
const std::vector<WGPURenderBundle> &bundles)
const
2361 return wgpuRenderPassEncoderExecuteBundles(m_raw,
static_cast<size_t>(bundles.size()), bundles.data());
2363void RenderPassEncoder::executeBundles(
const WGPURenderBundle &bundles)
const
2365 return wgpuRenderPassEncoderExecuteBundles(m_raw, 1, &bundles);
2367void RenderPassEncoder::insertDebugMarker(
StringView markerLabel)
const
2369 return wgpuRenderPassEncoderInsertDebugMarker(m_raw, markerLabel);
2371void RenderPassEncoder::popDebugGroup()
const {
return wgpuRenderPassEncoderPopDebugGroup(m_raw); }
2372void RenderPassEncoder::pushDebugGroup(
StringView groupLabel)
const
2374 return wgpuRenderPassEncoderPushDebugGroup(m_raw, groupLabel);
2376void RenderPassEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
size_t dynamicOffsetCount,
2377 uint32_t
const *dynamicOffsets)
const
2379 return wgpuRenderPassEncoderSetBindGroup(m_raw, groupIndex, group, dynamicOffsetCount, dynamicOffsets);
2381void RenderPassEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
2382 const std::vector<uint32_t> &dynamicOffsets)
const
2384 return wgpuRenderPassEncoderSetBindGroup(m_raw, groupIndex, group,
static_cast<size_t>(dynamicOffsets.size()),
2385 dynamicOffsets.data());
2387void RenderPassEncoder::setBindGroup(uint32_t groupIndex, BindGroup group,
const uint32_t &dynamicOffsets)
const
2389 return wgpuRenderPassEncoderSetBindGroup(m_raw, groupIndex, group, 1, &dynamicOffsets);
2391void RenderPassEncoder::setBlendConstant(
const Color &color)
const
2393 return wgpuRenderPassEncoderSetBlendConstant(m_raw, &color);
2395void RenderPassEncoder::setIndexBuffer(Buffer buffer, IndexFormat format, uint64_t offset, uint64_t size)
const
2397 return wgpuRenderPassEncoderSetIndexBuffer(m_raw, buffer,
static_cast<WGPUIndexFormat
>(format), offset, size);
2399void RenderPassEncoder::setLabel(
StringView label)
const {
return wgpuRenderPassEncoderSetLabel(m_raw, label); }
2400void RenderPassEncoder::setPipeline(RenderPipeline pipeline)
const
2402 return wgpuRenderPassEncoderSetPipeline(m_raw, pipeline);
2404void RenderPassEncoder::setScissorRect(uint32_t x, uint32_t y, uint32_t width, uint32_t height)
const
2406 return wgpuRenderPassEncoderSetScissorRect(m_raw, x, y, width, height);
2408void RenderPassEncoder::setStencilReference(uint32_t reference)
const
2410 return wgpuRenderPassEncoderSetStencilReference(m_raw, reference);
2412void RenderPassEncoder::setVertexBuffer(uint32_t slot, Buffer buffer, uint64_t offset, uint64_t size)
const
2414 return wgpuRenderPassEncoderSetVertexBuffer(m_raw, slot, buffer, offset, size);
2416void RenderPassEncoder::setViewport(
float x,
float y,
float width,
float height,
float minDepth,
float maxDepth)
const
2418 return wgpuRenderPassEncoderSetViewport(m_raw, x, y, width, height, minDepth, maxDepth);
2420void RenderPassEncoder::addRef()
const {
return wgpuRenderPassEncoderAddRef(m_raw); }
2421void RenderPassEncoder::release()
const {
return wgpuRenderPassEncoderRelease(m_raw); }
2422void RenderPassEncoder::setPushConstants(ShaderStage stages, uint32_t offset, uint32_t sizeBytes,
2423 void const *data)
const
2425 return wgpuRenderPassEncoderSetPushConstants(m_raw,
static_cast<WGPUShaderStage
>(stages), offset, sizeBytes, data);
2427void RenderPassEncoder::multiDrawIndirect(Buffer buffer, uint64_t offset, uint32_t
count)
const
2429 return wgpuRenderPassEncoderMultiDrawIndirect(m_raw, buffer, offset,
count);
2431void RenderPassEncoder::multiDrawIndexedIndirect(Buffer buffer, uint64_t offset, uint32_t
count)
const
2433 return wgpuRenderPassEncoderMultiDrawIndexedIndirect(m_raw, buffer, offset,
count);
2435void RenderPassEncoder::multiDrawIndirectCount(Buffer buffer, uint64_t offset, Buffer count_buffer,
2436 uint64_t count_buffer_offset, uint32_t max_count)
const
2438 return wgpuRenderPassEncoderMultiDrawIndirectCount(m_raw, buffer, offset, count_buffer, count_buffer_offset,
2441void RenderPassEncoder::multiDrawIndexedIndirectCount(Buffer buffer, uint64_t offset, Buffer count_buffer,
2442 uint64_t count_buffer_offset, uint32_t max_count)
const
2444 return wgpuRenderPassEncoderMultiDrawIndexedIndirectCount(m_raw, buffer, offset, count_buffer, count_buffer_offset,
2447void RenderPassEncoder::beginPipelineStatisticsQuery(QuerySet querySet, uint32_t queryIndex)
const
2449 return wgpuRenderPassEncoderBeginPipelineStatisticsQuery(m_raw, querySet, queryIndex);
2451void RenderPassEncoder::endPipelineStatisticsQuery()
const
2453 return wgpuRenderPassEncoderEndPipelineStatisticsQuery(m_raw);
2455void RenderPassEncoder::writeTimestamp(QuerySet querySet, uint32_t queryIndex)
const
2457 return wgpuRenderPassEncoderWriteTimestamp(m_raw, querySet, queryIndex);
2461BindGroupLayout RenderPipeline::getBindGroupLayout(uint32_t groupIndex)
const
2463 return wgpuRenderPipelineGetBindGroupLayout(m_raw, groupIndex);
2465void RenderPipeline::setLabel(
StringView label)
const {
return wgpuRenderPipelineSetLabel(m_raw, label); }
2466void RenderPipeline::addRef()
const {
return wgpuRenderPipelineAddRef(m_raw); }
2467void RenderPipeline::release()
const {
return wgpuRenderPipelineRelease(m_raw); }
2470void Sampler::setLabel(
StringView label)
const {
return wgpuSamplerSetLabel(m_raw, label); }
2471void Sampler::addRef()
const {
return wgpuSamplerAddRef(m_raw); }
2472void Sampler::release()
const {
return wgpuSamplerRelease(m_raw); }
2475Future ShaderModule::getCompilationInfo(CompilationInfoCallbackInfo callbackInfo)
const
2477 return wgpuShaderModuleGetCompilationInfo(m_raw, callbackInfo);
2479void ShaderModule::setLabel(
StringView label)
const {
return wgpuShaderModuleSetLabel(m_raw, label); }
2480void ShaderModule::addRef()
const {
return wgpuShaderModuleAddRef(m_raw); }
2481void ShaderModule::release()
const {
return wgpuShaderModuleRelease(m_raw); }
2484void Surface::configure(
const SurfaceConfiguration &config)
const {
return wgpuSurfaceConfigure(m_raw, &config); }
2485Status Surface::getCapabilities(Adapter adapter, SurfaceCapabilities *capabilities)
const
2487 return static_cast<Status
>(wgpuSurfaceGetCapabilities(m_raw, adapter, capabilities));
2489void Surface::getCurrentTexture(SurfaceTexture *surfaceTexture)
const
2491 return wgpuSurfaceGetCurrentTexture(m_raw, surfaceTexture);
2493Status Surface::present()
const {
return static_cast<Status
>(wgpuSurfacePresent(m_raw)); }
2494void Surface::setLabel(
StringView label)
const {
return wgpuSurfaceSetLabel(m_raw, label); }
2495void Surface::unconfigure()
const {
return wgpuSurfaceUnconfigure(m_raw); }
2496void Surface::addRef()
const {
return wgpuSurfaceAddRef(m_raw); }
2497void Surface::release()
const {
return wgpuSurfaceRelease(m_raw); }
2500TextureView Texture::createView(
const TextureViewDescriptor &descriptor)
const
2502 return wgpuTextureCreateView(m_raw, &descriptor);
2504TextureView Texture::createView()
const {
return wgpuTextureCreateView(m_raw,
nullptr); }
2505void Texture::destroy()
const {
return wgpuTextureDestroy(m_raw); }
2506uint32_t Texture::getDepthOrArrayLayers()
const {
return wgpuTextureGetDepthOrArrayLayers(m_raw); }
2507TextureDimension Texture::getDimension()
const {
return static_cast<TextureDimension
>(wgpuTextureGetDimension(m_raw)); }
2508TextureFormat Texture::getFormat()
const {
return static_cast<TextureFormat
>(wgpuTextureGetFormat(m_raw)); }
2509uint32_t Texture::getHeight()
const {
return wgpuTextureGetHeight(m_raw); }
2510uint32_t Texture::getMipLevelCount()
const {
return wgpuTextureGetMipLevelCount(m_raw); }
2511uint32_t Texture::getSampleCount()
const {
return wgpuTextureGetSampleCount(m_raw); }
2512TextureUsage Texture::getUsage()
const {
return static_cast<TextureUsage
>(wgpuTextureGetUsage(m_raw)); }
2513uint32_t Texture::getWidth()
const {
return wgpuTextureGetWidth(m_raw); }
2514void Texture::setLabel(
StringView label)
const {
return wgpuTextureSetLabel(m_raw, label); }
2515void Texture::addRef()
const {
return wgpuTextureAddRef(m_raw); }
2516void Texture::release()
const {
return wgpuTextureRelease(m_raw); }
2519void TextureView::setLabel(
StringView label)
const {
return wgpuTextureViewSetLabel(m_raw, label); }
2520void TextureView::addRef()
const {
return wgpuTextureViewAddRef(m_raw); }
2521void TextureView::release()
const {
return wgpuTextureViewRelease(m_raw); }
2524Adapter Instance::requestAdapter(
const RequestAdapterOptions &options)
2527 Adapter adapter =
nullptr;
2528 bool requestEnded =
false;
2532 RequestAdapterCallbackInfo callbackInfo;
2533 callbackInfo.nextInChain =
nullptr;
2534 callbackInfo.userdata1 = &context;
2535 callbackInfo.callback = [](WGPURequestAdapterStatus status, WGPUAdapter adapter, WGPUStringView message,
2536 void *userdata1, [[maybe_unused]]
void *userdata2) {
2537 Context &context = *
reinterpret_cast<Context *
>(userdata1);
2538 if (status == RequestAdapterStatus::Success)
2540 context.adapter = adapter;
2544 std::cout <<
"Could not get WebGPU adapter: " <<
StringView(message) << std::endl;
2546 context.requestEnded =
true;
2548 callbackInfo.mode = CallbackMode::AllowSpontaneous;
2552 while (!context.requestEnded)
2554 emscripten_sleep(50);
2558 assert(context.requestEnded);
2559 return context.adapter;
2562Device Adapter::requestDevice(
const DeviceDescriptor &descriptor)
2565 Device device =
nullptr;
2566 bool requestEnded =
false;
2570 RequestDeviceCallbackInfo callbackInfo;
2571 callbackInfo.nextInChain =
nullptr;
2572 callbackInfo.userdata1 = &context;
2573 callbackInfo.callback = [](WGPURequestDeviceStatus status, WGPUDevice device, WGPUStringView message,
2574 void *userdata1, [[maybe_unused]]
void *userdata2) {
2575 Context &context = *
reinterpret_cast<Context *
>(userdata1);
2576 if (status == RequestDeviceStatus::Success)
2578 context.device = device;
2582 std::cout <<
"Could not get WebGPU device: " <<
StringView(message) << std::endl;
2584 context.requestEnded =
true;
2586 callbackInfo.mode = CallbackMode::AllowSpontaneous;
2590 while (!context.requestEnded)
2592 emscripten_sleep(50);
2596 assert(context.requestEnded);
2597 return context.device;
2600StringView::operator std::string_view()
const
2602 return length == WGPU_STRLEN ? std::string_view(data) : std::string_view(data, length);