playbit / docs / runtime

WebGPU

Playbit uses WebGPU as the system GPU interface, defined by <webgpu/webgpu.h>

The runtime interface for these functions is the syscall PBSysThreadWGpuOp and PBSysThreadWGpuOpAsync. Our C library provides C implementations of the wgpu functions defined by webgpu/webgpu.h on top of these syscalls.

API status

This section tracks the WebGPU C API exposed by webgpu/webgpu.h.

"Portable API v1" (P1) is the WebGPU C API subset which Playbit intends to support on both native and web runtimes.

P1 = Portable API v1 (124)
Native implemented: 149/254
Web implemented: 66/254
● = Implemented
○ = Not implemented
✗ = Unavailable (2)

Function P1 Native Web
wgpuCreateInstance □ ● ●
wgpuGetInstanceFeatures □ ● ●
wgpuGetInstanceLimits ○ ○
wgpuHasInstanceFeature ○ ○
wgpuGetProcAddress ○ ○
wgpuAdapterCreateDevice □ ● ○
wgpuAdapterGetFeatures □ ● ○
wgpuAdapterGetFormatCapabilities ○ ○
wgpuAdapterGetInfo □ ● ○
wgpuAdapterGetInstance ○ ○
wgpuAdapterGetLimits □ ● ○
wgpuAdapterHasFeature □ ● ○
wgpuAdapterRequestDevice □ ● ●
wgpuAdapterAddRef □ ● ○
wgpuAdapterRelease □ ● ○
wgpuAdapterInfoFreeMembers ● ○
wgpuAdapterPropertiesMemoryHeapsFreeMembers ● ○
wgpuAdapterPropertiesSubgroupMatrixConfigsFreeMembers ● ○
wgpuBindGroupSetLabel ○ ○
wgpuBindGroupAddRef □ ● ○
wgpuBindGroupRelease □ ● ○
wgpuBindGroupLayoutSetLabel ○ ○
wgpuBindGroupLayoutAddRef □ ● ○
wgpuBindGroupLayoutRelease □ ● ○
wgpuBufferDestroy □ ● ●
wgpuBufferGetConstMappedRange ○ ○
wgpuBufferGetMappedRange ○ ○
wgpuBufferGetMapState □ ● ○
wgpuBufferGetSize □ ● ○
wgpuBufferGetUsage □ ● ○
wgpuBufferMapAsync □ ● ○
wgpuBufferReadMappedRange □ ● ○
wgpuBufferSetLabel ○ ○
wgpuBufferUnmap □ ● ○
wgpuBufferWriteMappedRange □ ● ○
wgpuBufferAddRef □ ● ○
wgpuBufferRelease □ ● ○
wgpuCommandBufferSetLabel ○ ○
wgpuCommandBufferAddRef □ ● ●
wgpuCommandBufferRelease □ ● ●
wgpuCommandEncoderBeginComputePass □ ● ○
wgpuCommandEncoderBeginRenderPass □ ● ●
wgpuCommandEncoderClearBuffer □ ● ○
wgpuCommandEncoderCopyBufferToBuffer □ ● ○
wgpuCommandEncoderCopyBufferToTexture □ ● ○
wgpuCommandEncoderCopyTextureToBuffer □ ● ○
wgpuCommandEncoderCopyTextureToTexture □ ● ○
wgpuCommandEncoderFinish □ ● ●
wgpuCommandEncoderInjectValidationError ○ ○
wgpuCommandEncoderInsertDebugMarker ○ ○
wgpuCommandEncoderPopDebugGroup ○ ○
wgpuCommandEncoderPushDebugGroup ○ ○
wgpuCommandEncoderResolveQuerySet ○ ○
wgpuCommandEncoderSetLabel ○ ○
wgpuCommandEncoderWriteBuffer ○ ○
wgpuCommandEncoderWriteTimestamp ○ ○
wgpuCommandEncoderAddRef □ ● ●
wgpuCommandEncoderRelease □ ● ●
wgpuComputePassEncoderDispatchWorkgroups □ ● ○
wgpuComputePassEncoderDispatchWorkgroupsIndirect □ ● ○
wgpuComputePassEncoderEnd □ ● ○
wgpuComputePassEncoderInsertDebugMarker ○ ○
wgpuComputePassEncoderPopDebugGroup ○ ○
wgpuComputePassEncoderPushDebugGroup ○ ○
wgpuComputePassEncoderSetBindGroup □ ● ○
wgpuComputePassEncoderSetImmediateData ○ ○
wgpuComputePassEncoderSetLabel ○ ○
wgpuComputePassEncoderSetPipeline □ ● ○
wgpuComputePassEncoderWriteTimestamp ○ ○
wgpuComputePassEncoderAddRef □ ● ○
wgpuComputePassEncoderRelease □ ● ○
wgpuComputePipelineGetBindGroupLayout □ ● ○
wgpuComputePipelineSetLabel ○ ○
wgpuComputePipelineAddRef □ ● ○
wgpuComputePipelineRelease □ ● ○
wgpuDawnDrmFormatCapabilitiesFreeMembers ● ○
wgpuDeviceCreateBindGroup □ ● ●
wgpuDeviceCreateBindGroupLayout □ ● ●
wgpuDeviceCreateBuffer □ ● ●
wgpuDeviceCreateCommandEncoder □ ● ●
wgpuDeviceCreateComputePipeline □ ● ○
wgpuDeviceCreateComputePipelineAsync □ ● ○
wgpuDeviceCreateErrorBuffer ○ ○
wgpuDeviceCreateErrorExternalTexture ○ ○
wgpuDeviceCreateErrorShaderModule ○ ○
wgpuDeviceCreateErrorTexture ○ ○
wgpuDeviceCreateExternalTexture ○ ○
wgpuDeviceCreatePipelineLayout □ ● ●
wgpuDeviceCreateQuerySet ○ ○
wgpuDeviceCreateRenderBundleEncoder ○ ○
wgpuDeviceCreateRenderPipeline □ ● ●
wgpuDeviceCreateRenderPipelineAsync □ ● ○
wgpuDeviceCreateSampler □ ● ●
wgpuDeviceCreateShaderModule □ ● ●
wgpuDeviceCreateTexture □ ● ●
wgpuDeviceDestroy ○ ○
wgpuDeviceForceLoss ○ ○
wgpuDeviceGetAdapter ○ ○
wgpuDeviceGetAdapterInfo ○ ○
wgpuDeviceGetAHardwareBufferProperties ○ ○
wgpuDeviceGetFeatures □ ● ●
wgpuDeviceGetLimits □ ● ○
wgpuDeviceGetLostFuture □ ● ○
wgpuDeviceGetQueue □ ● ●
wgpuDeviceHasFeature □ ● ○
wgpuDeviceImportSharedBufferMemory ○ ○
wgpuDeviceImportSharedFence ○ ○
wgpuDeviceImportSharedTextureMemory ○ ○
wgpuDeviceInjectError ○ ○
wgpuDevicePopErrorScope □ ● ○
wgpuDevicePushErrorScope □ ● ○
wgpuDeviceSetLabel ○ ○
wgpuDeviceSetLoggingCallback ○ ○
wgpuDeviceTick ○ ○
wgpuDeviceValidateTextureDescriptor ○ ○
wgpuDeviceAddRef □ ● ●
wgpuDeviceRelease □ ● ●
wgpuExternalTextureDestroy ○ ○
wgpuExternalTextureExpire ○ ○
wgpuExternalTextureRefresh ○ ○
wgpuExternalTextureSetLabel ○ ○
wgpuExternalTextureAddRef ● ○
wgpuExternalTextureRelease ● ○
wgpuInstanceCreateSurface □ ● ●
wgpuInstanceGetWGSLLanguageFeatures □ ● ●
wgpuInstanceHasWGSLLanguageFeature ○ ○
wgpuInstanceProcessEvents ✗ ✗
wgpuInstanceRequestAdapter □ ● ●
wgpuInstanceWaitAny ✗ ✗
wgpuInstanceAddRef □ ● ●
wgpuInstanceRelease □ ● ●
wgpuPipelineLayoutSetLabel ○ ○
wgpuPipelineLayoutAddRef □ ● ○
wgpuPipelineLayoutRelease □ ● ○
wgpuQuerySetDestroy ○ ○
wgpuQuerySetGetCount ○ ○
wgpuQuerySetGetType ○ ○
wgpuQuerySetSetLabel ○ ○
wgpuQuerySetAddRef ● ○
wgpuQuerySetRelease ● ○
wgpuQueueCopyExternalTextureForBrowser ○ ○
wgpuQueueCopyTextureForBrowser ○ ○
wgpuQueueOnSubmittedWorkDone □ ● ●
wgpuQueueSetLabel ○ ○
wgpuQueueSubmit □ ● ●
wgpuQueueWriteBuffer □ ● ●
wgpuQueueWriteTexture □ ● ●
wgpuQueueAddRef □ ● ●
wgpuQueueRelease □ ● ●
wgpuRenderBundleSetLabel ○ ○
wgpuRenderBundleAddRef ● ○
wgpuRenderBundleRelease ● ○
wgpuRenderBundleEncoderDraw ○ ○
wgpuRenderBundleEncoderDrawIndexed ○ ○
wgpuRenderBundleEncoderDrawIndexedIndirect ○ ○
wgpuRenderBundleEncoderDrawIndirect ○ ○
wgpuRenderBundleEncoderFinish ○ ○
wgpuRenderBundleEncoderInsertDebugMarker ○ ○
wgpuRenderBundleEncoderPopDebugGroup ○ ○
wgpuRenderBundleEncoderPushDebugGroup ○ ○
wgpuRenderBundleEncoderSetBindGroup ○ ○
wgpuRenderBundleEncoderSetImmediateData ○ ○
wgpuRenderBundleEncoderSetIndexBuffer ○ ○
wgpuRenderBundleEncoderSetLabel ○ ○
wgpuRenderBundleEncoderSetPipeline ○ ○
wgpuRenderBundleEncoderSetVertexBuffer ○ ○
wgpuRenderBundleEncoderAddRef ● ○
wgpuRenderBundleEncoderRelease ● ○
wgpuRenderPassEncoderBeginOcclusionQuery ○ ○
wgpuRenderPassEncoderDraw □ ● ●
wgpuRenderPassEncoderDrawIndexed □ ● ○
wgpuRenderPassEncoderDrawIndexedIndirect □ ● ○
wgpuRenderPassEncoderDrawIndirect □ ● ○
wgpuRenderPassEncoderEnd □ ● ●
wgpuRenderPassEncoderEndOcclusionQuery ○ ○
wgpuRenderPassEncoderExecuteBundles ○ ○
wgpuRenderPassEncoderInsertDebugMarker ○ ○
wgpuRenderPassEncoderMultiDrawIndexedIndirect ○ ○
wgpuRenderPassEncoderMultiDrawIndirect ○ ○
wgpuRenderPassEncoderPixelLocalStorageBarrier ○ ○
wgpuRenderPassEncoderPopDebugGroup ○ ○
wgpuRenderPassEncoderPushDebugGroup ○ ○
wgpuRenderPassEncoderSetBindGroup □ ● ●
wgpuRenderPassEncoderSetBlendConstant □ ● ○
wgpuRenderPassEncoderSetImmediateData ○ ○
wgpuRenderPassEncoderSetIndexBuffer □ ● ○
wgpuRenderPassEncoderSetLabel ○ ○
wgpuRenderPassEncoderSetPipeline □ ● ●
wgpuRenderPassEncoderSetScissorRect □ ● ●
wgpuRenderPassEncoderSetStencilReference □ ● ○
wgpuRenderPassEncoderSetVertexBuffer □ ● ●
wgpuRenderPassEncoderSetViewport □ ● ○
wgpuRenderPassEncoderWriteTimestamp ○ ○
wgpuRenderPassEncoderAddRef □ ● ●
wgpuRenderPassEncoderRelease □ ● ●
wgpuRenderPipelineGetBindGroupLayout □ ● ○
wgpuRenderPipelineSetLabel ○ ○
wgpuRenderPipelineAddRef □ ● ●
wgpuRenderPipelineRelease □ ● ●
wgpuSamplerSetLabel ○ ○
wgpuSamplerAddRef □ ● ○
wgpuSamplerRelease □ ● ○
wgpuShaderModuleGetCompilationInfo □ ● ○
wgpuShaderModuleSetLabel ○ ○
wgpuShaderModuleAddRef □ ● ●
wgpuShaderModuleRelease □ ● ●
wgpuSharedBufferMemoryBeginAccess ○ ○
wgpuSharedBufferMemoryCreateBuffer ○ ○
wgpuSharedBufferMemoryEndAccess ○ ○
wgpuSharedBufferMemoryGetProperties ○ ○
wgpuSharedBufferMemoryIsDeviceLost ○ ○
wgpuSharedBufferMemorySetLabel ○ ○
wgpuSharedBufferMemoryAddRef ● ○
wgpuSharedBufferMemoryRelease ● ○
wgpuSharedBufferMemoryEndAccessStateFreeMembers ● ○
wgpuSharedFenceExportInfo ○ ○
wgpuSharedFenceAddRef ● ○
wgpuSharedFenceRelease ● ○
wgpuSharedTextureMemoryBeginAccess ○ ○
wgpuSharedTextureMemoryCreateTexture ○ ○
wgpuSharedTextureMemoryEndAccess ○ ○
wgpuSharedTextureMemoryGetProperties ○ ○
wgpuSharedTextureMemoryIsDeviceLost ○ ○
wgpuSharedTextureMemorySetLabel ○ ○
wgpuSharedTextureMemoryAddRef ● ○
wgpuSharedTextureMemoryRelease ● ○
wgpuSharedTextureMemoryEndAccessStateFreeMembers ● ○
wgpuSupportedFeaturesFreeMembers ● ●
wgpuSupportedInstanceFeaturesFreeMembers ● ●
wgpuSupportedWGSLLanguageFeaturesFreeMembers ● ●
wgpuSurfaceConfigure □ ● ●
wgpuSurfaceGetCapabilities □ ● ○
wgpuSurfaceGetCurrentTexture □ ● ●
wgpuSurfacePresent □ ● ●
wgpuSurfaceSetLabel □ ● ○
wgpuSurfaceUnconfigure □ ● ○
wgpuSurfaceAddRef □ ● ○
wgpuSurfaceRelease □ ● ○
wgpuSurfaceCapabilitiesFreeMembers ● ○
wgpuTextureCreateErrorView ○ ○
wgpuTextureCreateView □ ● ●
wgpuTextureDestroy ● ●
wgpuTextureGetDepthOrArrayLayers □ ● ●
wgpuTextureGetDimension □ ● ●
wgpuTextureGetFormat □ ● ●
wgpuTextureGetHeight □ ● ●
wgpuTextureGetMipLevelCount □ ● ●
wgpuTextureGetSampleCount □ ● ●
wgpuTextureGetUsage □ ● ●
wgpuTextureGetWidth □ ● ●
wgpuTextureSetLabel ○ ○
wgpuTextureAddRef □ ● ●
wgpuTextureRelease □ ● ●
wgpuTextureViewSetLabel ○ ○
wgpuTextureViewAddRef □ ● ●
wgpuTextureViewRelease □ ● ●