1 // BSD 3-Clause License 2 // 3 // Copyright (c) 2019, "WebGPU native" developers 4 // All rights reserved. 5 // 6 // Redistribution and use in source and binary forms, with or without 7 // modification, are permitted provided that the following conditions are met: 8 // 9 // 1. Redistributions of source code must retain the above copyright notice, this 10 // list of conditions and the following disclaimer. 11 // 12 // 2. Redistributions in binary form must reproduce the above copyright notice, 13 // this list of conditions and the following disclaimer in the documentation 14 // and/or other materials provided with the distribution. 15 // 16 // 3. Neither the name of the copyright holder nor the names of its 17 // contributors may be used to endorse or promote products derived from 18 // this software without specific prior written permission. 19 // 20 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 #ifndef WEBGPU_H_ 31 #define WEBGPU_H_ 32 33 #if defined(WGPU_SHARED_LIBRARY) 34 # if defined(_WIN32) 35 # if defined(WGPU_IMPLEMENTATION) 36 # define WGPU_EXPORT __declspec(dllexport) 37 # else 38 # define WGPU_EXPORT __declspec(dllimport) 39 # endif 40 # else // defined(_WIN32) 41 # if defined(WGPU_IMPLEMENTATION) 42 # define WGPU_EXPORT __attribute__((visibility("default"))) 43 # else 44 # define WGPU_EXPORT 45 # endif 46 # endif // defined(_WIN32) 47 #else // defined(WGPU_SHARED_LIBRARY) 48 # define WGPU_EXPORT 49 #endif // defined(WGPU_SHARED_LIBRARY) 50 51 #include <stdint.h> 52 #include <stddef.h> 53 #include <stdbool.h> 54 55 #define WGPU_WHOLE_SIZE (0xffffffffffffffffULL) 56 57 typedef uint32_t WGPUFlags; 58 59 typedef struct WGPUAdapterImpl* WGPUAdapter; 60 typedef struct WGPUBindGroupImpl* WGPUBindGroup; 61 typedef struct WGPUBindGroupLayoutImpl* WGPUBindGroupLayout; 62 typedef struct WGPUBufferImpl* WGPUBuffer; 63 typedef struct WGPUCommandBufferImpl* WGPUCommandBuffer; 64 typedef struct WGPUCommandEncoderImpl* WGPUCommandEncoder; 65 typedef struct WGPUComputePassEncoderImpl* WGPUComputePassEncoder; 66 typedef struct WGPUComputePipelineImpl* WGPUComputePipeline; 67 typedef struct WGPUDeviceImpl* WGPUDevice; 68 typedef struct WGPUFenceImpl* WGPUFence; 69 typedef struct WGPUInstanceImpl* WGPUInstance; 70 typedef struct WGPUPipelineLayoutImpl* WGPUPipelineLayout; 71 typedef struct WGPUQuerySetImpl* WGPUQuerySet; 72 typedef struct WGPUQueueImpl* WGPUQueue; 73 typedef struct WGPURenderBundleImpl* WGPURenderBundle; 74 typedef struct WGPURenderBundleEncoderImpl* WGPURenderBundleEncoder; 75 typedef struct WGPURenderPassEncoderImpl* WGPURenderPassEncoder; 76 typedef struct WGPURenderPipelineImpl* WGPURenderPipeline; 77 typedef struct WGPUSamplerImpl* WGPUSampler; 78 typedef struct WGPUShaderModuleImpl* WGPUShaderModule; 79 typedef struct WGPUSurfaceImpl* WGPUSurface; 80 typedef struct WGPUSwapChainImpl* WGPUSwapChain; 81 typedef struct WGPUTextureImpl* WGPUTexture; 82 typedef struct WGPUTextureViewImpl* WGPUTextureView; 83 84 typedef enum WGPUAdapterType { 85 WGPUAdapterType_DiscreteGPU = 0x00000000, 86 WGPUAdapterType_IntegratedGPU = 0x00000001, 87 WGPUAdapterType_CPU = 0x00000002, 88 WGPUAdapterType_Unknown = 0x00000003, 89 WGPUAdapterType_Force32 = 0x7FFFFFFF 90 } WGPUAdapterType; 91 92 typedef enum WGPUAddressMode { 93 WGPUAddressMode_Repeat = 0x00000000, 94 WGPUAddressMode_MirrorRepeat = 0x00000001, 95 WGPUAddressMode_ClampToEdge = 0x00000002, 96 WGPUAddressMode_Force32 = 0x7FFFFFFF 97 } WGPUAddressMode; 98 99 typedef enum WGPUBackendType { 100 WGPUBackendType_Null = 0x00000000, 101 WGPUBackendType_D3D11 = 0x00000001, 102 WGPUBackendType_D3D12 = 0x00000002, 103 WGPUBackendType_Metal = 0x00000003, 104 WGPUBackendType_Vulkan = 0x00000004, 105 WGPUBackendType_OpenGL = 0x00000005, 106 WGPUBackendType_OpenGLES = 0x00000006, 107 WGPUBackendType_Force32 = 0x7FFFFFFF 108 } WGPUBackendType; 109 110 typedef enum WGPUBindingType { 111 WGPUBindingType_UniformBuffer = 0x00000000, 112 WGPUBindingType_StorageBuffer = 0x00000001, 113 WGPUBindingType_ReadonlyStorageBuffer = 0x00000002, 114 WGPUBindingType_Sampler = 0x00000003, 115 WGPUBindingType_ComparisonSampler = 0x00000004, 116 WGPUBindingType_SampledTexture = 0x00000005, 117 WGPUBindingType_ReadonlyStorageTexture = 0x00000006, 118 WGPUBindingType_WriteonlyStorageTexture = 0x00000007, 119 WGPUBindingType_Force32 = 0x7FFFFFFF 120 } WGPUBindingType; 121 122 typedef enum WGPUBlendFactor { 123 WGPUBlendFactor_Zero = 0x00000000, 124 WGPUBlendFactor_One = 0x00000001, 125 WGPUBlendFactor_SrcColor = 0x00000002, 126 WGPUBlendFactor_OneMinusSrcColor = 0x00000003, 127 WGPUBlendFactor_SrcAlpha = 0x00000004, 128 WGPUBlendFactor_OneMinusSrcAlpha = 0x00000005, 129 WGPUBlendFactor_DstColor = 0x00000006, 130 WGPUBlendFactor_OneMinusDstColor = 0x00000007, 131 WGPUBlendFactor_DstAlpha = 0x00000008, 132 WGPUBlendFactor_OneMinusDstAlpha = 0x00000009, 133 WGPUBlendFactor_SrcAlphaSaturated = 0x0000000A, 134 WGPUBlendFactor_BlendColor = 0x0000000B, 135 WGPUBlendFactor_OneMinusBlendColor = 0x0000000C, 136 WGPUBlendFactor_Force32 = 0x7FFFFFFF 137 } WGPUBlendFactor; 138 139 typedef enum WGPUBlendOperation { 140 WGPUBlendOperation_Add = 0x00000000, 141 WGPUBlendOperation_Subtract = 0x00000001, 142 WGPUBlendOperation_ReverseSubtract = 0x00000002, 143 WGPUBlendOperation_Min = 0x00000003, 144 WGPUBlendOperation_Max = 0x00000004, 145 WGPUBlendOperation_Force32 = 0x7FFFFFFF 146 } WGPUBlendOperation; 147 148 typedef enum WGPUBufferMapAsyncStatus { 149 WGPUBufferMapAsyncStatus_Success = 0x00000000, 150 WGPUBufferMapAsyncStatus_Error = 0x00000001, 151 WGPUBufferMapAsyncStatus_Unknown = 0x00000002, 152 WGPUBufferMapAsyncStatus_DeviceLost = 0x00000003, 153 WGPUBufferMapAsyncStatus_Force32 = 0x7FFFFFFF 154 } WGPUBufferMapAsyncStatus; 155 156 typedef enum WGPUCompareFunction { 157 WGPUCompareFunction_Undefined = 0x00000000, 158 WGPUCompareFunction_Never = 0x00000001, 159 WGPUCompareFunction_Less = 0x00000002, 160 WGPUCompareFunction_LessEqual = 0x00000003, 161 WGPUCompareFunction_Greater = 0x00000004, 162 WGPUCompareFunction_GreaterEqual = 0x00000005, 163 WGPUCompareFunction_Equal = 0x00000006, 164 WGPUCompareFunction_NotEqual = 0x00000007, 165 WGPUCompareFunction_Always = 0x00000008, 166 WGPUCompareFunction_Force32 = 0x7FFFFFFF 167 } WGPUCompareFunction; 168 169 typedef enum WGPUCullMode { 170 WGPUCullMode_None = 0x00000000, 171 WGPUCullMode_Front = 0x00000001, 172 WGPUCullMode_Back = 0x00000002, 173 WGPUCullMode_Force32 = 0x7FFFFFFF 174 } WGPUCullMode; 175 176 typedef enum WGPUErrorFilter { 177 WGPUErrorFilter_None = 0x00000000, 178 WGPUErrorFilter_Validation = 0x00000001, 179 WGPUErrorFilter_OutOfMemory = 0x00000002, 180 WGPUErrorFilter_Force32 = 0x7FFFFFFF 181 } WGPUErrorFilter; 182 183 typedef enum WGPUErrorType { 184 WGPUErrorType_NoError = 0x00000000, 185 WGPUErrorType_Validation = 0x00000001, 186 WGPUErrorType_OutOfMemory = 0x00000002, 187 WGPUErrorType_Unknown = 0x00000003, 188 WGPUErrorType_DeviceLost = 0x00000004, 189 WGPUErrorType_Force32 = 0x7FFFFFFF 190 } WGPUErrorType; 191 192 typedef enum WGPUFenceCompletionStatus { 193 WGPUFenceCompletionStatus_Success = 0x00000000, 194 WGPUFenceCompletionStatus_Error = 0x00000001, 195 WGPUFenceCompletionStatus_Unknown = 0x00000002, 196 WGPUFenceCompletionStatus_DeviceLost = 0x00000003, 197 WGPUFenceCompletionStatus_Force32 = 0x7FFFFFFF 198 } WGPUFenceCompletionStatus; 199 200 typedef enum WGPUFilterMode { 201 WGPUFilterMode_Nearest = 0x00000000, 202 WGPUFilterMode_Linear = 0x00000001, 203 WGPUFilterMode_Force32 = 0x7FFFFFFF 204 } WGPUFilterMode; 205 206 typedef enum WGPUFrontFace { 207 WGPUFrontFace_CCW = 0x00000000, 208 WGPUFrontFace_CW = 0x00000001, 209 WGPUFrontFace_Force32 = 0x7FFFFFFF 210 } WGPUFrontFace; 211 212 typedef enum WGPUIndexFormat { 213 WGPUIndexFormat_Uint16 = 0x00000000, 214 WGPUIndexFormat_Uint32 = 0x00000001, 215 WGPUIndexFormat_Force32 = 0x7FFFFFFF 216 } WGPUIndexFormat; 217 218 typedef enum WGPUInputStepMode { 219 WGPUInputStepMode_Vertex = 0x00000000, 220 WGPUInputStepMode_Instance = 0x00000001, 221 WGPUInputStepMode_Force32 = 0x7FFFFFFF 222 } WGPUInputStepMode; 223 224 typedef enum WGPULoadOp { 225 WGPULoadOp_Clear = 0x00000000, 226 WGPULoadOp_Load = 0x00000001, 227 WGPULoadOp_Force32 = 0x7FFFFFFF 228 } WGPULoadOp; 229 230 typedef enum WGPUPipelineStatisticName { 231 WGPUPipelineStatisticName_VertexShaderInvocations = 0x00000000, 232 WGPUPipelineStatisticName_ClipperInvocations = 0x00000001, 233 WGPUPipelineStatisticName_ClipperPrimitivesOut = 0x00000002, 234 WGPUPipelineStatisticName_FragmentShaderInvocations = 0x00000003, 235 WGPUPipelineStatisticName_ComputeShaderInvocations = 0x00000004, 236 WGPUPipelineStatisticName_Force32 = 0x7FFFFFFF 237 } WGPUPipelineStatisticName; 238 239 typedef enum WGPUPresentMode { 240 WGPUPresentMode_Immediate = 0x00000000, 241 WGPUPresentMode_Mailbox = 0x00000001, 242 WGPUPresentMode_Fifo = 0x00000002, 243 WGPUPresentMode_Force32 = 0x7FFFFFFF 244 } WGPUPresentMode; 245 246 typedef enum WGPUPrimitiveTopology { 247 WGPUPrimitiveTopology_PointList = 0x00000000, 248 WGPUPrimitiveTopology_LineList = 0x00000001, 249 WGPUPrimitiveTopology_LineStrip = 0x00000002, 250 WGPUPrimitiveTopology_TriangleList = 0x00000003, 251 WGPUPrimitiveTopology_TriangleStrip = 0x00000004, 252 WGPUPrimitiveTopology_Force32 = 0x7FFFFFFF 253 } WGPUPrimitiveTopology; 254 255 typedef enum WGPUQueryType { 256 WGPUQueryType_Occlusion = 0x00000000, 257 WGPUQueryType_PipelineStatistics = 0x00000001, 258 WGPUQueryType_Timestamp = 0x00000002, 259 WGPUQueryType_Force32 = 0x7FFFFFFF 260 } WGPUQueryType; 261 262 typedef enum WGPUSType { 263 WGPUSType_Invalid = 0x00000000, 264 WGPUSType_SurfaceDescriptorFromMetalLayer = 0x00000001, 265 WGPUSType_SurfaceDescriptorFromWindowsHWND = 0x00000002, 266 WGPUSType_SurfaceDescriptorFromXlib = 0x00000003, 267 WGPUSType_SurfaceDescriptorFromCanvasHTMLSelector = 0x00000004, 268 WGPUSType_ShaderModuleSPIRVDescriptor = 0x00000005, 269 WGPUSType_ShaderModuleWGSLDescriptor = 0x00000006, 270 WGPUSType_Force32 = 0x7FFFFFFF 271 } WGPUSType; 272 273 typedef enum WGPUStencilOperation { 274 WGPUStencilOperation_Keep = 0x00000000, 275 WGPUStencilOperation_Zero = 0x00000001, 276 WGPUStencilOperation_Replace = 0x00000002, 277 WGPUStencilOperation_Invert = 0x00000003, 278 WGPUStencilOperation_IncrementClamp = 0x00000004, 279 WGPUStencilOperation_DecrementClamp = 0x00000005, 280 WGPUStencilOperation_IncrementWrap = 0x00000006, 281 WGPUStencilOperation_DecrementWrap = 0x00000007, 282 WGPUStencilOperation_Force32 = 0x7FFFFFFF 283 } WGPUStencilOperation; 284 285 typedef enum WGPUStoreOp { 286 WGPUStoreOp_Store = 0x00000000, 287 WGPUStoreOp_Clear = 0x00000001, 288 WGPUStoreOp_Force32 = 0x7FFFFFFF 289 } WGPUStoreOp; 290 291 typedef enum WGPUTextureAspect { 292 WGPUTextureAspect_All = 0x00000000, 293 WGPUTextureAspect_StencilOnly = 0x00000001, 294 WGPUTextureAspect_DepthOnly = 0x00000002, 295 WGPUTextureAspect_Force32 = 0x7FFFFFFF 296 } WGPUTextureAspect; 297 298 typedef enum WGPUTextureComponentType { 299 WGPUTextureComponentType_Float = 0x00000000, 300 WGPUTextureComponentType_Sint = 0x00000001, 301 WGPUTextureComponentType_Uint = 0x00000002, 302 WGPUTextureComponentType_Force32 = 0x7FFFFFFF 303 } WGPUTextureComponentType; 304 305 typedef enum WGPUTextureDimension { 306 WGPUTextureDimension_1D = 0x00000000, 307 WGPUTextureDimension_2D = 0x00000001, 308 WGPUTextureDimension_3D = 0x00000002, 309 WGPUTextureDimension_Force32 = 0x7FFFFFFF 310 } WGPUTextureDimension; 311 312 typedef enum WGPUTextureFormat { 313 WGPUTextureFormat_Undefined = 0x00000000, 314 WGPUTextureFormat_R8Unorm = 0x00000001, 315 WGPUTextureFormat_R8Snorm = 0x00000002, 316 WGPUTextureFormat_R8Uint = 0x00000003, 317 WGPUTextureFormat_R8Sint = 0x00000004, 318 WGPUTextureFormat_R16Uint = 0x00000005, 319 WGPUTextureFormat_R16Sint = 0x00000006, 320 WGPUTextureFormat_R16Float = 0x00000007, 321 WGPUTextureFormat_RG8Unorm = 0x00000008, 322 WGPUTextureFormat_RG8Snorm = 0x00000009, 323 WGPUTextureFormat_RG8Uint = 0x0000000A, 324 WGPUTextureFormat_RG8Sint = 0x0000000B, 325 WGPUTextureFormat_R32Float = 0x0000000C, 326 WGPUTextureFormat_R32Uint = 0x0000000D, 327 WGPUTextureFormat_R32Sint = 0x0000000E, 328 WGPUTextureFormat_RG16Uint = 0x0000000F, 329 WGPUTextureFormat_RG16Sint = 0x00000010, 330 WGPUTextureFormat_RG16Float = 0x00000011, 331 WGPUTextureFormat_RGBA8Unorm = 0x00000012, 332 WGPUTextureFormat_RGBA8UnormSrgb = 0x00000013, 333 WGPUTextureFormat_RGBA8Snorm = 0x00000014, 334 WGPUTextureFormat_RGBA8Uint = 0x00000015, 335 WGPUTextureFormat_RGBA8Sint = 0x00000016, 336 WGPUTextureFormat_BGRA8Unorm = 0x00000017, 337 WGPUTextureFormat_BGRA8UnormSrgb = 0x00000018, 338 WGPUTextureFormat_RGB10A2Unorm = 0x00000019, 339 WGPUTextureFormat_RG11B10Float = 0x0000001A, 340 WGPUTextureFormat_RG32Float = 0x0000001B, 341 WGPUTextureFormat_RG32Uint = 0x0000001C, 342 WGPUTextureFormat_RG32Sint = 0x0000001D, 343 WGPUTextureFormat_RGBA16Uint = 0x0000001E, 344 WGPUTextureFormat_RGBA16Sint = 0x0000001F, 345 WGPUTextureFormat_RGBA16Float = 0x00000020, 346 WGPUTextureFormat_RGBA32Float = 0x00000021, 347 WGPUTextureFormat_RGBA32Uint = 0x00000022, 348 WGPUTextureFormat_RGBA32Sint = 0x00000023, 349 WGPUTextureFormat_Depth32Float = 0x00000024, 350 WGPUTextureFormat_Depth24Plus = 0x00000025, 351 WGPUTextureFormat_Depth24PlusStencil8 = 0x00000026, 352 WGPUTextureFormat_BC1RGBAUnorm = 0x00000027, 353 WGPUTextureFormat_BC1RGBAUnormSrgb = 0x00000028, 354 WGPUTextureFormat_BC2RGBAUnorm = 0x00000029, 355 WGPUTextureFormat_BC2RGBAUnormSrgb = 0x0000002A, 356 WGPUTextureFormat_BC3RGBAUnorm = 0x0000002B, 357 WGPUTextureFormat_BC3RGBAUnormSrgb = 0x0000002C, 358 WGPUTextureFormat_BC4RUnorm = 0x0000002D, 359 WGPUTextureFormat_BC4RSnorm = 0x0000002E, 360 WGPUTextureFormat_BC5RGUnorm = 0x0000002F, 361 WGPUTextureFormat_BC5RGSnorm = 0x00000030, 362 WGPUTextureFormat_BC6HRGBUfloat = 0x00000031, 363 WGPUTextureFormat_BC6HRGBSfloat = 0x00000032, 364 WGPUTextureFormat_BC7RGBAUnorm = 0x00000033, 365 WGPUTextureFormat_BC7RGBAUnormSrgb = 0x00000034, 366 WGPUTextureFormat_Force32 = 0x7FFFFFFF 367 } WGPUTextureFormat; 368 369 typedef enum WGPUTextureViewDimension { 370 WGPUTextureViewDimension_Undefined = 0x00000000, 371 WGPUTextureViewDimension_1D = 0x00000001, 372 WGPUTextureViewDimension_2D = 0x00000002, 373 WGPUTextureViewDimension_2DArray = 0x00000003, 374 WGPUTextureViewDimension_Cube = 0x00000004, 375 WGPUTextureViewDimension_CubeArray = 0x00000005, 376 WGPUTextureViewDimension_3D = 0x00000006, 377 WGPUTextureViewDimension_Force32 = 0x7FFFFFFF 378 } WGPUTextureViewDimension; 379 380 typedef enum WGPUVertexFormat { 381 WGPUVertexFormat_UChar2 = 0x00000000, 382 WGPUVertexFormat_UChar4 = 0x00000001, 383 WGPUVertexFormat_Char2 = 0x00000002, 384 WGPUVertexFormat_Char4 = 0x00000003, 385 WGPUVertexFormat_UChar2Norm = 0x00000004, 386 WGPUVertexFormat_UChar4Norm = 0x00000005, 387 WGPUVertexFormat_Char2Norm = 0x00000006, 388 WGPUVertexFormat_Char4Norm = 0x00000007, 389 WGPUVertexFormat_UShort2 = 0x00000008, 390 WGPUVertexFormat_UShort4 = 0x00000009, 391 WGPUVertexFormat_Short2 = 0x0000000A, 392 WGPUVertexFormat_Short4 = 0x0000000B, 393 WGPUVertexFormat_UShort2Norm = 0x0000000C, 394 WGPUVertexFormat_UShort4Norm = 0x0000000D, 395 WGPUVertexFormat_Short2Norm = 0x0000000E, 396 WGPUVertexFormat_Short4Norm = 0x0000000F, 397 WGPUVertexFormat_Half2 = 0x00000010, 398 WGPUVertexFormat_Half4 = 0x00000011, 399 WGPUVertexFormat_Float = 0x00000012, 400 WGPUVertexFormat_Float2 = 0x00000013, 401 WGPUVertexFormat_Float3 = 0x00000014, 402 WGPUVertexFormat_Float4 = 0x00000015, 403 WGPUVertexFormat_UInt = 0x00000016, 404 WGPUVertexFormat_UInt2 = 0x00000017, 405 WGPUVertexFormat_UInt3 = 0x00000018, 406 WGPUVertexFormat_UInt4 = 0x00000019, 407 WGPUVertexFormat_Int = 0x0000001A, 408 WGPUVertexFormat_Int2 = 0x0000001B, 409 WGPUVertexFormat_Int3 = 0x0000001C, 410 WGPUVertexFormat_Int4 = 0x0000001D, 411 WGPUVertexFormat_Force32 = 0x7FFFFFFF 412 } WGPUVertexFormat; 413 414 typedef enum WGPUBufferUsage { 415 WGPUBufferUsage_None = 0x00000000, 416 WGPUBufferUsage_MapRead = 0x00000001, 417 WGPUBufferUsage_MapWrite = 0x00000002, 418 WGPUBufferUsage_CopySrc = 0x00000004, 419 WGPUBufferUsage_CopyDst = 0x00000008, 420 WGPUBufferUsage_Index = 0x00000010, 421 WGPUBufferUsage_Vertex = 0x00000020, 422 WGPUBufferUsage_Uniform = 0x00000040, 423 WGPUBufferUsage_Storage = 0x00000080, 424 WGPUBufferUsage_Indirect = 0x00000100, 425 WGPUBufferUsage_QueryResolve = 0x00000200, 426 WGPUBufferUsage_Force32 = 0x7FFFFFFF 427 } WGPUBufferUsage; 428 typedef WGPUFlags WGPUBufferUsageFlags; 429 430 typedef enum WGPUColorWriteMask { 431 WGPUColorWriteMask_None = 0x00000000, 432 WGPUColorWriteMask_Red = 0x00000001, 433 WGPUColorWriteMask_Green = 0x00000002, 434 WGPUColorWriteMask_Blue = 0x00000004, 435 WGPUColorWriteMask_Alpha = 0x00000008, 436 WGPUColorWriteMask_All = 0x0000000F, 437 WGPUColorWriteMask_Force32 = 0x7FFFFFFF 438 } WGPUColorWriteMask; 439 typedef WGPUFlags WGPUColorWriteMaskFlags; 440 441 typedef enum WGPUMapMode { 442 WGPUMapMode_Read = 0x00000001, 443 WGPUMapMode_Write = 0x00000002, 444 WGPUMapMode_Force32 = 0x7FFFFFFF 445 } WGPUMapMode; 446 typedef WGPUFlags WGPUMapModeFlags; 447 448 typedef enum WGPUShaderStage { 449 WGPUShaderStage_None = 0x00000000, 450 WGPUShaderStage_Vertex = 0x00000001, 451 WGPUShaderStage_Fragment = 0x00000002, 452 WGPUShaderStage_Compute = 0x00000004, 453 WGPUShaderStage_Force32 = 0x7FFFFFFF 454 } WGPUShaderStage; 455 typedef WGPUFlags WGPUShaderStageFlags; 456 457 typedef enum WGPUTextureUsage { 458 WGPUTextureUsage_None = 0x00000000, 459 WGPUTextureUsage_CopySrc = 0x00000001, 460 WGPUTextureUsage_CopyDst = 0x00000002, 461 WGPUTextureUsage_Sampled = 0x00000004, 462 WGPUTextureUsage_Storage = 0x00000008, 463 WGPUTextureUsage_OutputAttachment = 0x00000010, 464 WGPUTextureUsage_Force32 = 0x7FFFFFFF 465 } WGPUTextureUsage; 466 typedef WGPUFlags WGPUTextureUsageFlags; 467 468 469 typedef struct WGPUChainedStruct { 470 struct WGPUChainedStruct const * next; 471 WGPUSType sType; 472 } WGPUChainedStruct; 473 474 typedef struct WGPUAdapterProperties { 475 WGPUChainedStruct const * nextInChain; 476 uint32_t deviceID; 477 uint32_t vendorID; 478 char const * name; 479 WGPUAdapterType adapterType; 480 WGPUBackendType backendType; 481 } WGPUAdapterProperties; 482 483 typedef struct WGPUBindGroupEntry { 484 uint32_t binding; 485 WGPUBuffer buffer; 486 uint64_t offset; 487 uint64_t size; 488 WGPUSampler sampler; 489 WGPUTextureView textureView; 490 } WGPUBindGroupEntry; 491 492 typedef struct WGPUBindGroupLayoutEntry { 493 uint32_t binding; 494 WGPUShaderStageFlags visibility; 495 WGPUBindingType type; 496 bool hasDynamicOffset; 497 uint64_t minBufferBindingSize; 498 bool multisampled; 499 WGPUTextureViewDimension viewDimension; 500 WGPUTextureComponentType textureComponentType; 501 WGPUTextureFormat storageTextureFormat; 502 } WGPUBindGroupLayoutEntry; 503 504 typedef struct WGPUBlendDescriptor { 505 WGPUBlendOperation operation; 506 WGPUBlendFactor srcFactor; 507 WGPUBlendFactor dstFactor; 508 } WGPUBlendDescriptor; 509 510 typedef struct WGPUBufferDescriptor { 511 WGPUChainedStruct const * nextInChain; 512 char const * label; 513 WGPUBufferUsageFlags usage; 514 uint64_t size; 515 bool mappedAtCreation; 516 } WGPUBufferDescriptor; 517 518 typedef struct WGPUColor { 519 float r; 520 float g; 521 float b; 522 float a; 523 } WGPUColor; 524 525 typedef struct WGPUCommandBufferDescriptor { 526 WGPUChainedStruct const * nextInChain; 527 char const * label; 528 } WGPUCommandBufferDescriptor; 529 530 typedef struct WGPUCommandEncoderDescriptor { 531 WGPUChainedStruct const * nextInChain; 532 char const * label; 533 } WGPUCommandEncoderDescriptor; 534 535 typedef struct WGPUComputePassDescriptor { 536 WGPUChainedStruct const * nextInChain; 537 char const * label; 538 } WGPUComputePassDescriptor; 539 540 typedef struct WGPUDeviceDescriptor { 541 WGPUChainedStruct const * nextInChain; 542 } WGPUDeviceDescriptor; 543 544 typedef struct WGPUExtent3D { 545 uint32_t width; 546 uint32_t height; 547 uint32_t depth; 548 } WGPUExtent3D; 549 550 typedef struct WGPUFenceDescriptor { 551 WGPUChainedStruct const * nextInChain; 552 char const * label; 553 uint64_t initialValue; 554 } WGPUFenceDescriptor; 555 556 typedef struct WGPUInstanceDescriptor { 557 WGPUChainedStruct const * nextInChain; 558 } WGPUInstanceDescriptor; 559 560 typedef struct WGPUOrigin3D { 561 uint32_t x; 562 uint32_t y; 563 uint32_t z; 564 } WGPUOrigin3D; 565 566 typedef struct WGPUPipelineLayoutDescriptor { 567 WGPUChainedStruct const * nextInChain; 568 char const * label; 569 uint32_t bindGroupLayoutCount; 570 WGPUBindGroupLayout const * bindGroupLayouts; 571 } WGPUPipelineLayoutDescriptor; 572 573 typedef struct WGPUProgrammableStageDescriptor { 574 WGPUChainedStruct const * nextInChain; 575 WGPUShaderModule module; 576 char const * entryPoint; 577 } WGPUProgrammableStageDescriptor; 578 579 typedef struct WGPUQuerySetDescriptor { 580 WGPUChainedStruct const * nextInChain; 581 char const * label; 582 WGPUQueryType type; 583 uint32_t count; 584 WGPUPipelineStatisticName const * pipelineStatistics; 585 uint32_t pipelineStatisticsCount; 586 } WGPUQuerySetDescriptor; 587 588 typedef struct WGPURasterizationStateDescriptor { 589 WGPUChainedStruct const * nextInChain; 590 WGPUFrontFace frontFace; 591 WGPUCullMode cullMode; 592 int32_t depthBias; 593 float depthBiasSlopeScale; 594 float depthBiasClamp; 595 } WGPURasterizationStateDescriptor; 596 597 typedef struct WGPURenderBundleDescriptor { 598 WGPUChainedStruct const * nextInChain; 599 char const * label; 600 } WGPURenderBundleDescriptor; 601 602 typedef struct WGPURenderBundleEncoderDescriptor { 603 WGPUChainedStruct const * nextInChain; 604 char const * label; 605 uint32_t colorFormatsCount; 606 WGPUTextureFormat const * colorFormats; 607 WGPUTextureFormat depthStencilFormat; 608 uint32_t sampleCount; 609 } WGPURenderBundleEncoderDescriptor; 610 611 typedef struct WGPURenderPassDepthStencilAttachmentDescriptor { 612 WGPUTextureView attachment; 613 WGPULoadOp depthLoadOp; 614 WGPUStoreOp depthStoreOp; 615 float clearDepth; 616 bool depthReadOnly; 617 WGPULoadOp stencilLoadOp; 618 WGPUStoreOp stencilStoreOp; 619 uint32_t clearStencil; 620 bool stencilReadOnly; 621 } WGPURenderPassDepthStencilAttachmentDescriptor; 622 623 typedef struct WGPURequestAdapterOptions { 624 WGPUChainedStruct const * nextInChain; 625 WGPUSurface compatibleSurface; 626 } WGPURequestAdapterOptions; 627 628 typedef struct WGPUSamplerDescriptor { 629 WGPUChainedStruct const * nextInChain; 630 char const * label; 631 WGPUAddressMode addressModeU; 632 WGPUAddressMode addressModeV; 633 WGPUAddressMode addressModeW; 634 WGPUFilterMode magFilter; 635 WGPUFilterMode minFilter; 636 WGPUFilterMode mipmapFilter; 637 float lodMinClamp; 638 float lodMaxClamp; 639 WGPUCompareFunction compare; 640 } WGPUSamplerDescriptor; 641 642 typedef struct WGPUShaderModuleDescriptor { 643 WGPUChainedStruct const * nextInChain; 644 char const * label; 645 } WGPUShaderModuleDescriptor; 646 647 typedef struct WGPUShaderModuleSPIRVDescriptor { 648 WGPUChainedStruct chain; 649 uint32_t codeSize; 650 uint32_t const * code; 651 } WGPUShaderModuleSPIRVDescriptor; 652 653 typedef struct WGPUShaderModuleWGSLDescriptor { 654 WGPUChainedStruct chain; 655 char const * source; 656 } WGPUShaderModuleWGSLDescriptor; 657 658 typedef struct WGPUStencilStateFaceDescriptor { 659 WGPUCompareFunction compare; 660 WGPUStencilOperation failOp; 661 WGPUStencilOperation depthFailOp; 662 WGPUStencilOperation passOp; 663 } WGPUStencilStateFaceDescriptor; 664 665 typedef struct WGPUSurfaceDescriptor { 666 WGPUChainedStruct const * nextInChain; 667 char const * label; 668 } WGPUSurfaceDescriptor; 669 670 typedef struct WGPUSurfaceDescriptorFromCanvasHTMLSelector { 671 WGPUChainedStruct chain; 672 char const * selector; 673 } WGPUSurfaceDescriptorFromCanvasHTMLSelector; 674 675 typedef struct WGPUSurfaceDescriptorFromMetalLayer { 676 WGPUChainedStruct chain; 677 void * layer; 678 } WGPUSurfaceDescriptorFromMetalLayer; 679 680 typedef struct WGPUSurfaceDescriptorFromWindowsHWND { 681 WGPUChainedStruct chain; 682 void * hinstance; 683 void * hwnd; 684 } WGPUSurfaceDescriptorFromWindowsHWND; 685 686 typedef struct WGPUSurfaceDescriptorFromXlib { 687 WGPUChainedStruct chain; 688 void * display; 689 uint32_t window; 690 } WGPUSurfaceDescriptorFromXlib; 691 692 typedef struct WGPUSwapChainDescriptor { 693 WGPUChainedStruct const * nextInChain; 694 char const * label; 695 WGPUTextureUsageFlags usage; 696 WGPUTextureFormat format; 697 uint32_t width; 698 uint32_t height; 699 WGPUPresentMode presentMode; 700 } WGPUSwapChainDescriptor; 701 702 typedef struct WGPUTextureDataLayout { 703 WGPUChainedStruct const * nextInChain; 704 uint64_t offset; 705 uint32_t bytesPerRow; 706 uint32_t rowsPerImage; 707 } WGPUTextureDataLayout; 708 709 typedef struct WGPUTextureViewDescriptor { 710 WGPUChainedStruct const * nextInChain; 711 char const * label; 712 WGPUTextureFormat format; 713 WGPUTextureViewDimension dimension; 714 uint32_t baseMipLevel; 715 uint32_t mipLevelCount; 716 uint32_t baseArrayLayer; 717 uint32_t arrayLayerCount; 718 WGPUTextureAspect aspect; 719 } WGPUTextureViewDescriptor; 720 721 typedef struct WGPUVertexAttributeDescriptor { 722 WGPUVertexFormat format; 723 uint64_t offset; 724 uint32_t shaderLocation; 725 } WGPUVertexAttributeDescriptor; 726 727 typedef struct WGPUBindGroupDescriptor { 728 WGPUChainedStruct const * nextInChain; 729 char const * label; 730 WGPUBindGroupLayout layout; 731 uint32_t entryCount; 732 WGPUBindGroupEntry const * entries; 733 } WGPUBindGroupDescriptor; 734 735 typedef struct WGPUBindGroupLayoutDescriptor { 736 WGPUChainedStruct const * nextInChain; 737 char const * label; 738 uint32_t entryCount; 739 WGPUBindGroupLayoutEntry const * entries; 740 } WGPUBindGroupLayoutDescriptor; 741 742 typedef struct WGPUBufferCopyView { 743 WGPUChainedStruct const * nextInChain; 744 WGPUTextureDataLayout layout; 745 WGPUBuffer buffer; 746 } WGPUBufferCopyView; 747 748 typedef struct WGPUColorStateDescriptor { 749 WGPUChainedStruct const * nextInChain; 750 WGPUTextureFormat format; 751 WGPUBlendDescriptor alphaBlend; 752 WGPUBlendDescriptor colorBlend; 753 WGPUColorWriteMaskFlags writeMask; 754 } WGPUColorStateDescriptor; 755 756 typedef struct WGPUComputePipelineDescriptor { 757 WGPUChainedStruct const * nextInChain; 758 char const * label; 759 WGPUPipelineLayout layout; 760 WGPUProgrammableStageDescriptor computeStage; 761 } WGPUComputePipelineDescriptor; 762 763 typedef struct WGPUDepthStencilStateDescriptor { 764 WGPUChainedStruct const * nextInChain; 765 WGPUTextureFormat format; 766 bool depthWriteEnabled; 767 WGPUCompareFunction depthCompare; 768 WGPUStencilStateFaceDescriptor stencilFront; 769 WGPUStencilStateFaceDescriptor stencilBack; 770 uint32_t stencilReadMask; 771 uint32_t stencilWriteMask; 772 } WGPUDepthStencilStateDescriptor; 773 774 typedef struct WGPURenderPassColorAttachmentDescriptor { 775 WGPUTextureView attachment; 776 WGPUTextureView resolveTarget; 777 WGPULoadOp loadOp; 778 WGPUStoreOp storeOp; 779 WGPUColor clearColor; 780 } WGPURenderPassColorAttachmentDescriptor; 781 782 typedef struct WGPUTextureCopyView { 783 WGPUChainedStruct const * nextInChain; 784 WGPUTexture texture; 785 uint32_t mipLevel; 786 WGPUOrigin3D origin; 787 } WGPUTextureCopyView; 788 789 typedef struct WGPUTextureDescriptor { 790 WGPUChainedStruct const * nextInChain; 791 char const * label; 792 WGPUTextureUsageFlags usage; 793 WGPUTextureDimension dimension; 794 WGPUExtent3D size; 795 WGPUTextureFormat format; 796 uint32_t mipLevelCount; 797 uint32_t sampleCount; 798 } WGPUTextureDescriptor; 799 800 typedef struct WGPUVertexBufferLayoutDescriptor { 801 uint64_t arrayStride; 802 WGPUInputStepMode stepMode; 803 uint32_t attributeCount; 804 WGPUVertexAttributeDescriptor const * attributes; 805 } WGPUVertexBufferLayoutDescriptor; 806 807 typedef struct WGPURenderPassDescriptor { 808 WGPUChainedStruct const * nextInChain; 809 char const * label; 810 uint32_t colorAttachmentCount; 811 WGPURenderPassColorAttachmentDescriptor const * colorAttachments; 812 WGPURenderPassDepthStencilAttachmentDescriptor const * depthStencilAttachment; 813 WGPUQuerySet occlusionQuerySet; 814 } WGPURenderPassDescriptor; 815 816 typedef struct WGPUVertexStateDescriptor { 817 WGPUChainedStruct const * nextInChain; 818 WGPUIndexFormat indexFormat; 819 uint32_t vertexBufferCount; 820 WGPUVertexBufferLayoutDescriptor const * vertexBuffers; 821 } WGPUVertexStateDescriptor; 822 823 typedef struct WGPURenderPipelineDescriptor { 824 WGPUChainedStruct const * nextInChain; 825 char const * label; 826 WGPUPipelineLayout layout; 827 WGPUProgrammableStageDescriptor vertexStage; 828 WGPUProgrammableStageDescriptor const * fragmentStage; 829 WGPUVertexStateDescriptor const * vertexState; 830 WGPUPrimitiveTopology primitiveTopology; 831 WGPURasterizationStateDescriptor const * rasterizationState; 832 uint32_t sampleCount; 833 WGPUDepthStencilStateDescriptor const * depthStencilState; 834 uint32_t colorStateCount; 835 WGPUColorStateDescriptor const * colorStates; 836 uint32_t sampleMask; 837 bool alphaToCoverageEnabled; 838 } WGPURenderPipelineDescriptor; 839 840 841 #ifdef __cplusplus 842 extern "C" { 843 #endif 844 845 typedef void (*WGPUBufferMapCallback)(WGPUBufferMapAsyncStatus status, void * userdata); 846 typedef void (*WGPUDeviceLostCallback)(char const * message, void * userdata); 847 typedef void (*WGPUErrorCallback)(WGPUErrorType type, char const * message, void * userdata); 848 typedef void (*WGPUFenceOnCompletionCallback)(WGPUFenceCompletionStatus status, void * userdata); 849 typedef void (*WGPURequestAdapterCallback)(WGPUAdapter result, void * userdata); 850 typedef void (*WGPURequestDeviceCallback)(WGPUDevice result, void * userdata); 851 typedef void (*WGPUSurfaceGetPreferredFormatCallback)(WGPUTextureFormat format, void * userdata); 852 853 typedef void (*WGPUProc)(void); 854 855 #if !defined(WGPU_SKIP_PROCS) 856 857 typedef WGPUInstance (*WGPUProcCreateInstance)(WGPUInstanceDescriptor const * descriptor); 858 typedef WGPUProc (*WGPUProcGetProcAddress)(WGPUDevice device, char const * procName); 859 860 // Procs of Adapter 861 typedef void (*WGPUProcAdapterGetProperties)(WGPUAdapter adapter, WGPUAdapterProperties * properties); 862 typedef void (*WGPUProcAdapterRequestDevice)(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor, WGPURequestDeviceCallback callback, void * userdata); 863 864 // Procs of BindGroup 865 typedef void (*WGPUProcBindGroupReference)(WGPUBindGroup bindGroup); 866 typedef void (*WGPUProcBindGroupRelease)(WGPUBindGroup bindGroup); 867 868 // Procs of BindGroupLayout 869 typedef void (*WGPUProcBindGroupLayoutReference)(WGPUBindGroupLayout bindGroupLayout); 870 typedef void (*WGPUProcBindGroupLayoutRelease)(WGPUBindGroupLayout bindGroupLayout); 871 872 // Procs of Buffer 873 typedef void (*WGPUProcBufferDestroy)(WGPUBuffer buffer); 874 typedef void const * (*WGPUProcBufferGetConstMappedRange)(WGPUBuffer buffer, size_t offset, size_t size); 875 typedef void * (*WGPUProcBufferGetMappedRange)(WGPUBuffer buffer, size_t offset, size_t size); 876 typedef void (*WGPUProcBufferMapAsync)(WGPUBuffer buffer, WGPUMapModeFlags mode, size_t offset, size_t size, WGPUBufferMapCallback callback, void * userdata); 877 typedef void (*WGPUProcBufferUnmap)(WGPUBuffer buffer); 878 typedef void (*WGPUProcBufferReference)(WGPUBuffer buffer); 879 typedef void (*WGPUProcBufferRelease)(WGPUBuffer buffer); 880 881 // Procs of CommandBuffer 882 typedef void (*WGPUProcCommandBufferReference)(WGPUCommandBuffer commandBuffer); 883 typedef void (*WGPUProcCommandBufferRelease)(WGPUCommandBuffer commandBuffer); 884 885 // Procs of CommandEncoder 886 typedef WGPUComputePassEncoder (*WGPUProcCommandEncoderBeginComputePass)(WGPUCommandEncoder commandEncoder, WGPUComputePassDescriptor const * descriptor); 887 typedef WGPURenderPassEncoder (*WGPUProcCommandEncoderBeginRenderPass)(WGPUCommandEncoder commandEncoder, WGPURenderPassDescriptor const * descriptor); 888 typedef void (*WGPUProcCommandEncoderCopyBufferToBuffer)(WGPUCommandEncoder commandEncoder, WGPUBuffer source, uint64_t sourceOffset, WGPUBuffer destination, uint64_t destinationOffset, uint64_t size); 889 typedef void (*WGPUProcCommandEncoderCopyBufferToTexture)(WGPUCommandEncoder commandEncoder, WGPUBufferCopyView const * source, WGPUTextureCopyView const * destination, WGPUExtent3D const * copySize); 890 typedef void (*WGPUProcCommandEncoderCopyTextureToBuffer)(WGPUCommandEncoder commandEncoder, WGPUTextureCopyView const * source, WGPUBufferCopyView const * destination, WGPUExtent3D const * copySize); 891 typedef void (*WGPUProcCommandEncoderCopyTextureToTexture)(WGPUCommandEncoder commandEncoder, WGPUTextureCopyView const * source, WGPUTextureCopyView const * destination, WGPUExtent3D const * copySize); 892 typedef WGPUCommandBuffer (*WGPUProcCommandEncoderFinish)(WGPUCommandEncoder commandEncoder, WGPUCommandBufferDescriptor const * descriptor); 893 typedef void (*WGPUProcCommandEncoderInsertDebugMarker)(WGPUCommandEncoder commandEncoder, char const * markerLabel); 894 typedef void (*WGPUProcCommandEncoderPopDebugGroup)(WGPUCommandEncoder commandEncoder); 895 typedef void (*WGPUProcCommandEncoderPushDebugGroup)(WGPUCommandEncoder commandEncoder, char const * groupLabel); 896 typedef void (*WGPUProcCommandEncoderResolveQuerySet)(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t firstQuery, uint32_t queryCount, WGPUBuffer destination, uint64_t destinationOffset); 897 typedef void (*WGPUProcCommandEncoderWriteTimestamp)(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 898 typedef void (*WGPUProcCommandEncoderReference)(WGPUCommandEncoder commandEncoder); 899 typedef void (*WGPUProcCommandEncoderRelease)(WGPUCommandEncoder commandEncoder); 900 901 // Procs of ComputePassEncoder 902 typedef void (*WGPUProcComputePassEncoderBeginPipelineStatisticsQuery)(WGPUComputePassEncoder computePassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 903 typedef void (*WGPUProcComputePassEncoderDispatch)(WGPUComputePassEncoder computePassEncoder, uint32_t x, uint32_t y, uint32_t z); 904 typedef void (*WGPUProcComputePassEncoderDispatchIndirect)(WGPUComputePassEncoder computePassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 905 typedef void (*WGPUProcComputePassEncoderEndPass)(WGPUComputePassEncoder computePassEncoder); 906 typedef void (*WGPUProcComputePassEncoderEndPipelineStatisticsQuery)(WGPUComputePassEncoder computePassEncoder); 907 typedef void (*WGPUProcComputePassEncoderInsertDebugMarker)(WGPUComputePassEncoder computePassEncoder, char const * markerLabel); 908 typedef void (*WGPUProcComputePassEncoderPopDebugGroup)(WGPUComputePassEncoder computePassEncoder); 909 typedef void (*WGPUProcComputePassEncoderPushDebugGroup)(WGPUComputePassEncoder computePassEncoder, char const * groupLabel); 910 typedef void (*WGPUProcComputePassEncoderSetBindGroup)(WGPUComputePassEncoder computePassEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets); 911 typedef void (*WGPUProcComputePassEncoderSetPipeline)(WGPUComputePassEncoder computePassEncoder, WGPUComputePipeline pipeline); 912 typedef void (*WGPUProcComputePassEncoderWriteTimestamp)(WGPUComputePassEncoder computePassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 913 typedef void (*WGPUProcComputePassEncoderReference)(WGPUComputePassEncoder computePassEncoder); 914 typedef void (*WGPUProcComputePassEncoderRelease)(WGPUComputePassEncoder computePassEncoder); 915 916 // Procs of ComputePipeline 917 typedef WGPUBindGroupLayout (*WGPUProcComputePipelineGetBindGroupLayout)(WGPUComputePipeline computePipeline, uint32_t groupIndex); 918 typedef void (*WGPUProcComputePipelineReference)(WGPUComputePipeline computePipeline); 919 typedef void (*WGPUProcComputePipelineRelease)(WGPUComputePipeline computePipeline); 920 921 // Procs of Device 922 typedef WGPUBindGroup (*WGPUProcDeviceCreateBindGroup)(WGPUDevice device, WGPUBindGroupDescriptor const * descriptor); 923 typedef WGPUBindGroupLayout (*WGPUProcDeviceCreateBindGroupLayout)(WGPUDevice device, WGPUBindGroupLayoutDescriptor const * descriptor); 924 typedef WGPUBuffer (*WGPUProcDeviceCreateBuffer)(WGPUDevice device, WGPUBufferDescriptor const * descriptor); 925 typedef WGPUCommandEncoder (*WGPUProcDeviceCreateCommandEncoder)(WGPUDevice device, WGPUCommandEncoderDescriptor const * descriptor); 926 typedef WGPUComputePipeline (*WGPUProcDeviceCreateComputePipeline)(WGPUDevice device, WGPUComputePipelineDescriptor const * descriptor); 927 typedef WGPUPipelineLayout (*WGPUProcDeviceCreatePipelineLayout)(WGPUDevice device, WGPUPipelineLayoutDescriptor const * descriptor); 928 typedef WGPUQuerySet (*WGPUProcDeviceCreateQuerySet)(WGPUDevice device, WGPUQuerySetDescriptor const * descriptor); 929 typedef WGPURenderBundleEncoder (*WGPUProcDeviceCreateRenderBundleEncoder)(WGPUDevice device, WGPURenderBundleEncoderDescriptor const * descriptor); 930 typedef WGPURenderPipeline (*WGPUProcDeviceCreateRenderPipeline)(WGPUDevice device, WGPURenderPipelineDescriptor const * descriptor); 931 typedef WGPUSampler (*WGPUProcDeviceCreateSampler)(WGPUDevice device, WGPUSamplerDescriptor const * descriptor); 932 typedef WGPUShaderModule (*WGPUProcDeviceCreateShaderModule)(WGPUDevice device, WGPUShaderModuleDescriptor const * descriptor); 933 typedef WGPUSwapChain (*WGPUProcDeviceCreateSwapChain)(WGPUDevice device, WGPUSurface surface, WGPUSwapChainDescriptor const * descriptor); 934 typedef WGPUTexture (*WGPUProcDeviceCreateTexture)(WGPUDevice device, WGPUTextureDescriptor const * descriptor); 935 typedef WGPUQueue (*WGPUProcDeviceGetDefaultQueue)(WGPUDevice device); 936 typedef bool (*WGPUProcDevicePopErrorScope)(WGPUDevice device, WGPUErrorCallback callback, void * userdata); 937 typedef void (*WGPUProcDevicePushErrorScope)(WGPUDevice device, WGPUErrorFilter filter); 938 typedef void (*WGPUProcDeviceSetDeviceLostCallback)(WGPUDevice device, WGPUDeviceLostCallback callback, void * userdata); 939 typedef void (*WGPUProcDeviceSetUncapturedErrorCallback)(WGPUDevice device, WGPUErrorCallback callback, void * userdata); 940 typedef void (*WGPUProcDeviceReference)(WGPUDevice device); 941 typedef void (*WGPUProcDeviceRelease)(WGPUDevice device); 942 943 // Procs of Fence 944 typedef uint64_t (*WGPUProcFenceGetCompletedValue)(WGPUFence fence); 945 typedef void (*WGPUProcFenceOnCompletion)(WGPUFence fence, uint64_t value, WGPUFenceOnCompletionCallback callback, void * userdata); 946 typedef void (*WGPUProcFenceReference)(WGPUFence fence); 947 typedef void (*WGPUProcFenceRelease)(WGPUFence fence); 948 949 // Procs of Instance 950 typedef WGPUSurface (*WGPUProcInstanceCreateSurface)(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor); 951 typedef void (*WGPUProcInstanceProcessEvents)(WGPUInstance instance); 952 typedef void (*WGPUProcInstanceRequestAdapter)(WGPUInstance instance, WGPURequestAdapterOptions const * options, WGPURequestAdapterCallback callback, void * userdata); 953 typedef void (*WGPUProcInstanceReference)(WGPUInstance instance); 954 typedef void (*WGPUProcInstanceRelease)(WGPUInstance instance); 955 956 // Procs of PipelineLayout 957 typedef void (*WGPUProcPipelineLayoutReference)(WGPUPipelineLayout pipelineLayout); 958 typedef void (*WGPUProcPipelineLayoutRelease)(WGPUPipelineLayout pipelineLayout); 959 960 // Procs of QuerySet 961 typedef void (*WGPUProcQuerySetDestroy)(WGPUQuerySet querySet); 962 typedef void (*WGPUProcQuerySetReference)(WGPUQuerySet querySet); 963 typedef void (*WGPUProcQuerySetRelease)(WGPUQuerySet querySet); 964 965 // Procs of Queue 966 typedef WGPUFence (*WGPUProcQueueCreateFence)(WGPUQueue queue, WGPUFenceDescriptor const * descriptor); 967 typedef void (*WGPUProcQueueSignal)(WGPUQueue queue, WGPUFence fence, uint64_t signalValue); 968 typedef void (*WGPUProcQueueSubmit)(WGPUQueue queue, uint32_t commandCount, WGPUCommandBuffer const * commands); 969 typedef void (*WGPUProcQueueWriteBuffer)(WGPUQueue queue, WGPUBuffer buffer, uint64_t bufferOffset, void const * data, size_t size); 970 typedef void (*WGPUProcQueueWriteTexture)(WGPUQueue queue, WGPUTextureCopyView const * destination, void const * data, size_t dataSize, WGPUTextureDataLayout const * dataLayout, WGPUExtent3D const * writeSize); 971 typedef void (*WGPUProcQueueReference)(WGPUQueue queue); 972 typedef void (*WGPUProcQueueRelease)(WGPUQueue queue); 973 974 // Procs of RenderBundle 975 typedef void (*WGPUProcRenderBundleReference)(WGPURenderBundle renderBundle); 976 typedef void (*WGPUProcRenderBundleRelease)(WGPURenderBundle renderBundle); 977 978 // Procs of RenderBundleEncoder 979 typedef void (*WGPUProcRenderBundleEncoderDraw)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); 980 typedef void (*WGPUProcRenderBundleEncoderDrawIndexed)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance); 981 typedef void (*WGPUProcRenderBundleEncoderDrawIndexedIndirect)(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 982 typedef void (*WGPUProcRenderBundleEncoderDrawIndirect)(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 983 typedef WGPURenderBundle (*WGPUProcRenderBundleEncoderFinish)(WGPURenderBundleEncoder renderBundleEncoder, WGPURenderBundleDescriptor const * descriptor); 984 typedef void (*WGPUProcRenderBundleEncoderInsertDebugMarker)(WGPURenderBundleEncoder renderBundleEncoder, char const * markerLabel); 985 typedef void (*WGPUProcRenderBundleEncoderPopDebugGroup)(WGPURenderBundleEncoder renderBundleEncoder); 986 typedef void (*WGPUProcRenderBundleEncoderPushDebugGroup)(WGPURenderBundleEncoder renderBundleEncoder, char const * groupLabel); 987 typedef void (*WGPUProcRenderBundleEncoderSetBindGroup)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets); 988 typedef void (*WGPUProcRenderBundleEncoderSetIndexBuffer)(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer buffer, uint64_t offset, uint64_t size); 989 typedef void (*WGPUProcRenderBundleEncoderSetPipeline)(WGPURenderBundleEncoder renderBundleEncoder, WGPURenderPipeline pipeline); 990 typedef void (*WGPUProcRenderBundleEncoderSetVertexBuffer)(WGPURenderBundleEncoder renderBundleEncoder, uint32_t slot, WGPUBuffer buffer, uint64_t offset, uint64_t size); 991 typedef void (*WGPUProcRenderBundleEncoderReference)(WGPURenderBundleEncoder renderBundleEncoder); 992 typedef void (*WGPUProcRenderBundleEncoderRelease)(WGPURenderBundleEncoder renderBundleEncoder); 993 994 // Procs of RenderPassEncoder 995 typedef void (*WGPUProcRenderPassEncoderBeginOcclusionQuery)(WGPURenderPassEncoder renderPassEncoder, uint32_t queryIndex); 996 typedef void (*WGPUProcRenderPassEncoderBeginPipelineStatisticsQuery)(WGPURenderPassEncoder renderPassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 997 typedef void (*WGPUProcRenderPassEncoderDraw)(WGPURenderPassEncoder renderPassEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); 998 typedef void (*WGPUProcRenderPassEncoderDrawIndexed)(WGPURenderPassEncoder renderPassEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance); 999 typedef void (*WGPUProcRenderPassEncoderDrawIndexedIndirect)(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 1000 typedef void (*WGPUProcRenderPassEncoderDrawIndirect)(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 1001 typedef void (*WGPUProcRenderPassEncoderEndOcclusionQuery)(WGPURenderPassEncoder renderPassEncoder); 1002 typedef void (*WGPUProcRenderPassEncoderEndPass)(WGPURenderPassEncoder renderPassEncoder); 1003 typedef void (*WGPUProcRenderPassEncoderEndPipelineStatisticsQuery)(WGPURenderPassEncoder renderPassEncoder); 1004 typedef void (*WGPUProcRenderPassEncoderExecuteBundles)(WGPURenderPassEncoder renderPassEncoder, uint32_t bundlesCount, WGPURenderBundle const * bundles); 1005 typedef void (*WGPUProcRenderPassEncoderInsertDebugMarker)(WGPURenderPassEncoder renderPassEncoder, char const * markerLabel); 1006 typedef void (*WGPUProcRenderPassEncoderPopDebugGroup)(WGPURenderPassEncoder renderPassEncoder); 1007 typedef void (*WGPUProcRenderPassEncoderPushDebugGroup)(WGPURenderPassEncoder renderPassEncoder, char const * groupLabel); 1008 typedef void (*WGPUProcRenderPassEncoderSetBindGroup)(WGPURenderPassEncoder renderPassEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets); 1009 typedef void (*WGPUProcRenderPassEncoderSetBlendColor)(WGPURenderPassEncoder renderPassEncoder, WGPUColor const * color); 1010 typedef void (*WGPUProcRenderPassEncoderSetIndexBuffer)(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer buffer, uint64_t offset, uint64_t size); 1011 typedef void (*WGPUProcRenderPassEncoderSetPipeline)(WGPURenderPassEncoder renderPassEncoder, WGPURenderPipeline pipeline); 1012 typedef void (*WGPUProcRenderPassEncoderSetScissorRect)(WGPURenderPassEncoder renderPassEncoder, uint32_t x, uint32_t y, uint32_t width, uint32_t height); 1013 typedef void (*WGPUProcRenderPassEncoderSetStencilReference)(WGPURenderPassEncoder renderPassEncoder, uint32_t reference); 1014 typedef void (*WGPUProcRenderPassEncoderSetVertexBuffer)(WGPURenderPassEncoder renderPassEncoder, uint32_t slot, WGPUBuffer buffer, uint64_t offset, uint64_t size); 1015 typedef void (*WGPUProcRenderPassEncoderSetViewport)(WGPURenderPassEncoder renderPassEncoder, float x, float y, float width, float height, float minDepth, float maxDepth); 1016 typedef void (*WGPUProcRenderPassEncoderWriteTimestamp)(WGPURenderPassEncoder renderPassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 1017 typedef void (*WGPUProcRenderPassEncoderReference)(WGPURenderPassEncoder renderPassEncoder); 1018 typedef void (*WGPUProcRenderPassEncoderRelease)(WGPURenderPassEncoder renderPassEncoder); 1019 1020 // Procs of RenderPipeline 1021 typedef WGPUBindGroupLayout (*WGPUProcRenderPipelineGetBindGroupLayout)(WGPURenderPipeline renderPipeline, uint32_t groupIndex); 1022 typedef void (*WGPUProcRenderPipelineReference)(WGPURenderPipeline renderPipeline); 1023 typedef void (*WGPUProcRenderPipelineRelease)(WGPURenderPipeline renderPipeline); 1024 1025 // Procs of Sampler 1026 typedef void (*WGPUProcSamplerReference)(WGPUSampler sampler); 1027 typedef void (*WGPUProcSamplerRelease)(WGPUSampler sampler); 1028 1029 // Procs of ShaderModule 1030 typedef void (*WGPUProcShaderModuleReference)(WGPUShaderModule shaderModule); 1031 typedef void (*WGPUProcShaderModuleRelease)(WGPUShaderModule shaderModule); 1032 1033 // Procs of Surface 1034 typedef void (*WGPUProcSurfaceGetPreferredFormat)(WGPUSurface surface, WGPUAdapter adapter, WGPUSurfaceGetPreferredFormatCallback callback, void * userdata); 1035 typedef void (*WGPUProcSurfaceReference)(WGPUSurface surface); 1036 typedef void (*WGPUProcSurfaceRelease)(WGPUSurface surface); 1037 1038 // Procs of SwapChain 1039 typedef WGPUTextureView (*WGPUProcSwapChainGetCurrentTextureView)(WGPUSwapChain swapChain); 1040 typedef void (*WGPUProcSwapChainPresent)(WGPUSwapChain swapChain); 1041 typedef void (*WGPUProcSwapChainReference)(WGPUSwapChain swapChain); 1042 typedef void (*WGPUProcSwapChainRelease)(WGPUSwapChain swapChain); 1043 1044 // Procs of Texture 1045 typedef WGPUTextureView (*WGPUProcTextureCreateView)(WGPUTexture texture, WGPUTextureViewDescriptor const * descriptor); 1046 typedef void (*WGPUProcTextureDestroy)(WGPUTexture texture); 1047 typedef void (*WGPUProcTextureReference)(WGPUTexture texture); 1048 typedef void (*WGPUProcTextureRelease)(WGPUTexture texture); 1049 1050 // Procs of TextureView 1051 typedef void (*WGPUProcTextureViewReference)(WGPUTextureView textureView); 1052 typedef void (*WGPUProcTextureViewRelease)(WGPUTextureView textureView); 1053 1054 #endif // !defined(WGPU_SKIP_PROCS) 1055 1056 #if !defined(WGPU_SKIP_DECLARATIONS) 1057 1058 WGPU_EXPORT WGPUInstance wgpuCreateInstance(WGPUInstanceDescriptor const * descriptor); 1059 WGPU_EXPORT WGPUProc wgpuGetProcAddress(WGPUDevice device, char const * procName); 1060 1061 // Methods of Adapter 1062 WGPU_EXPORT void wgpuAdapterGetProperties(WGPUAdapter adapter, WGPUAdapterProperties * properties); 1063 WGPU_EXPORT void wgpuAdapterRequestDevice(WGPUAdapter adapter, WGPUDeviceDescriptor const * descriptor, WGPURequestDeviceCallback callback, void * userdata); 1064 1065 // Methods of BindGroup 1066 WGPU_EXPORT void wgpuBindGroupReference(WGPUBindGroup bindGroup); 1067 WGPU_EXPORT void wgpuBindGroupRelease(WGPUBindGroup bindGroup); 1068 1069 // Methods of BindGroupLayout 1070 WGPU_EXPORT void wgpuBindGroupLayoutReference(WGPUBindGroupLayout bindGroupLayout); 1071 WGPU_EXPORT void wgpuBindGroupLayoutRelease(WGPUBindGroupLayout bindGroupLayout); 1072 1073 // Methods of Buffer 1074 WGPU_EXPORT void wgpuBufferDestroy(WGPUBuffer buffer); 1075 WGPU_EXPORT void const * wgpuBufferGetConstMappedRange(WGPUBuffer buffer, size_t offset, size_t size); 1076 WGPU_EXPORT void * wgpuBufferGetMappedRange(WGPUBuffer buffer, size_t offset, size_t size); 1077 WGPU_EXPORT void wgpuBufferMapAsync(WGPUBuffer buffer, WGPUMapModeFlags mode, size_t offset, size_t size, WGPUBufferMapCallback callback, void * userdata); 1078 WGPU_EXPORT void wgpuBufferUnmap(WGPUBuffer buffer); 1079 WGPU_EXPORT void wgpuBufferReference(WGPUBuffer buffer); 1080 WGPU_EXPORT void wgpuBufferRelease(WGPUBuffer buffer); 1081 1082 // Methods of CommandBuffer 1083 WGPU_EXPORT void wgpuCommandBufferReference(WGPUCommandBuffer commandBuffer); 1084 WGPU_EXPORT void wgpuCommandBufferRelease(WGPUCommandBuffer commandBuffer); 1085 1086 // Methods of CommandEncoder 1087 WGPU_EXPORT WGPUComputePassEncoder wgpuCommandEncoderBeginComputePass(WGPUCommandEncoder commandEncoder, WGPUComputePassDescriptor const * descriptor); 1088 WGPU_EXPORT WGPURenderPassEncoder wgpuCommandEncoderBeginRenderPass(WGPUCommandEncoder commandEncoder, WGPURenderPassDescriptor const * descriptor); 1089 WGPU_EXPORT void wgpuCommandEncoderCopyBufferToBuffer(WGPUCommandEncoder commandEncoder, WGPUBuffer source, uint64_t sourceOffset, WGPUBuffer destination, uint64_t destinationOffset, uint64_t size); 1090 WGPU_EXPORT void wgpuCommandEncoderCopyBufferToTexture(WGPUCommandEncoder commandEncoder, WGPUBufferCopyView const * source, WGPUTextureCopyView const * destination, WGPUExtent3D const * copySize); 1091 WGPU_EXPORT void wgpuCommandEncoderCopyTextureToBuffer(WGPUCommandEncoder commandEncoder, WGPUTextureCopyView const * source, WGPUBufferCopyView const * destination, WGPUExtent3D const * copySize); 1092 WGPU_EXPORT void wgpuCommandEncoderCopyTextureToTexture(WGPUCommandEncoder commandEncoder, WGPUTextureCopyView const * source, WGPUTextureCopyView const * destination, WGPUExtent3D const * copySize); 1093 WGPU_EXPORT WGPUCommandBuffer wgpuCommandEncoderFinish(WGPUCommandEncoder commandEncoder, WGPUCommandBufferDescriptor const * descriptor); 1094 WGPU_EXPORT void wgpuCommandEncoderInsertDebugMarker(WGPUCommandEncoder commandEncoder, char const * markerLabel); 1095 WGPU_EXPORT void wgpuCommandEncoderPopDebugGroup(WGPUCommandEncoder commandEncoder); 1096 WGPU_EXPORT void wgpuCommandEncoderPushDebugGroup(WGPUCommandEncoder commandEncoder, char const * groupLabel); 1097 WGPU_EXPORT void wgpuCommandEncoderResolveQuerySet(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t firstQuery, uint32_t queryCount, WGPUBuffer destination, uint64_t destinationOffset); 1098 WGPU_EXPORT void wgpuCommandEncoderWriteTimestamp(WGPUCommandEncoder commandEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 1099 WGPU_EXPORT void wgpuCommandEncoderReference(WGPUCommandEncoder commandEncoder); 1100 WGPU_EXPORT void wgpuCommandEncoderRelease(WGPUCommandEncoder commandEncoder); 1101 1102 // Methods of ComputePassEncoder 1103 WGPU_EXPORT void wgpuComputePassEncoderBeginPipelineStatisticsQuery(WGPUComputePassEncoder computePassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 1104 WGPU_EXPORT void wgpuComputePassEncoderDispatch(WGPUComputePassEncoder computePassEncoder, uint32_t x, uint32_t y, uint32_t z); 1105 WGPU_EXPORT void wgpuComputePassEncoderDispatchIndirect(WGPUComputePassEncoder computePassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 1106 WGPU_EXPORT void wgpuComputePassEncoderEndPass(WGPUComputePassEncoder computePassEncoder); 1107 WGPU_EXPORT void wgpuComputePassEncoderEndPipelineStatisticsQuery(WGPUComputePassEncoder computePassEncoder); 1108 WGPU_EXPORT void wgpuComputePassEncoderInsertDebugMarker(WGPUComputePassEncoder computePassEncoder, char const * markerLabel); 1109 WGPU_EXPORT void wgpuComputePassEncoderPopDebugGroup(WGPUComputePassEncoder computePassEncoder); 1110 WGPU_EXPORT void wgpuComputePassEncoderPushDebugGroup(WGPUComputePassEncoder computePassEncoder, char const * groupLabel); 1111 WGPU_EXPORT void wgpuComputePassEncoderSetBindGroup(WGPUComputePassEncoder computePassEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets); 1112 WGPU_EXPORT void wgpuComputePassEncoderSetPipeline(WGPUComputePassEncoder computePassEncoder, WGPUComputePipeline pipeline); 1113 WGPU_EXPORT void wgpuComputePassEncoderWriteTimestamp(WGPUComputePassEncoder computePassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 1114 WGPU_EXPORT void wgpuComputePassEncoderReference(WGPUComputePassEncoder computePassEncoder); 1115 WGPU_EXPORT void wgpuComputePassEncoderRelease(WGPUComputePassEncoder computePassEncoder); 1116 1117 // Methods of ComputePipeline 1118 WGPU_EXPORT WGPUBindGroupLayout wgpuComputePipelineGetBindGroupLayout(WGPUComputePipeline computePipeline, uint32_t groupIndex); 1119 WGPU_EXPORT void wgpuComputePipelineReference(WGPUComputePipeline computePipeline); 1120 WGPU_EXPORT void wgpuComputePipelineRelease(WGPUComputePipeline computePipeline); 1121 1122 // Methods of Device 1123 WGPU_EXPORT WGPUBindGroup wgpuDeviceCreateBindGroup(WGPUDevice device, WGPUBindGroupDescriptor const * descriptor); 1124 WGPU_EXPORT WGPUBindGroupLayout wgpuDeviceCreateBindGroupLayout(WGPUDevice device, WGPUBindGroupLayoutDescriptor const * descriptor); 1125 WGPU_EXPORT WGPUBuffer wgpuDeviceCreateBuffer(WGPUDevice device, WGPUBufferDescriptor const * descriptor); 1126 WGPU_EXPORT WGPUCommandEncoder wgpuDeviceCreateCommandEncoder(WGPUDevice device, WGPUCommandEncoderDescriptor const * descriptor); 1127 WGPU_EXPORT WGPUComputePipeline wgpuDeviceCreateComputePipeline(WGPUDevice device, WGPUComputePipelineDescriptor const * descriptor); 1128 WGPU_EXPORT WGPUPipelineLayout wgpuDeviceCreatePipelineLayout(WGPUDevice device, WGPUPipelineLayoutDescriptor const * descriptor); 1129 WGPU_EXPORT WGPUQuerySet wgpuDeviceCreateQuerySet(WGPUDevice device, WGPUQuerySetDescriptor const * descriptor); 1130 WGPU_EXPORT WGPURenderBundleEncoder wgpuDeviceCreateRenderBundleEncoder(WGPUDevice device, WGPURenderBundleEncoderDescriptor const * descriptor); 1131 WGPU_EXPORT WGPURenderPipeline wgpuDeviceCreateRenderPipeline(WGPUDevice device, WGPURenderPipelineDescriptor const * descriptor); 1132 WGPU_EXPORT WGPUSampler wgpuDeviceCreateSampler(WGPUDevice device, WGPUSamplerDescriptor const * descriptor); 1133 WGPU_EXPORT WGPUShaderModule wgpuDeviceCreateShaderModule(WGPUDevice device, WGPUShaderModuleDescriptor const * descriptor); 1134 WGPU_EXPORT WGPUSwapChain wgpuDeviceCreateSwapChain(WGPUDevice device, WGPUSurface surface, WGPUSwapChainDescriptor const * descriptor); 1135 WGPU_EXPORT WGPUTexture wgpuDeviceCreateTexture(WGPUDevice device, WGPUTextureDescriptor const * descriptor); 1136 WGPU_EXPORT WGPUQueue wgpuDeviceGetDefaultQueue(WGPUDevice device); 1137 WGPU_EXPORT bool wgpuDevicePopErrorScope(WGPUDevice device, WGPUErrorCallback callback, void * userdata); 1138 WGPU_EXPORT void wgpuDevicePushErrorScope(WGPUDevice device, WGPUErrorFilter filter); 1139 WGPU_EXPORT void wgpuDeviceSetDeviceLostCallback(WGPUDevice device, WGPUDeviceLostCallback callback, void * userdata); 1140 WGPU_EXPORT void wgpuDeviceSetUncapturedErrorCallback(WGPUDevice device, WGPUErrorCallback callback, void * userdata); 1141 WGPU_EXPORT void wgpuDeviceReference(WGPUDevice device); 1142 WGPU_EXPORT void wgpuDeviceRelease(WGPUDevice device); 1143 1144 // Methods of Fence 1145 WGPU_EXPORT uint64_t wgpuFenceGetCompletedValue(WGPUFence fence); 1146 WGPU_EXPORT void wgpuFenceOnCompletion(WGPUFence fence, uint64_t value, WGPUFenceOnCompletionCallback callback, void * userdata); 1147 WGPU_EXPORT void wgpuFenceReference(WGPUFence fence); 1148 WGPU_EXPORT void wgpuFenceRelease(WGPUFence fence); 1149 1150 // Methods of Instance 1151 WGPU_EXPORT WGPUSurface wgpuInstanceCreateSurface(WGPUInstance instance, WGPUSurfaceDescriptor const * descriptor); 1152 WGPU_EXPORT void wgpuInstanceProcessEvents(WGPUInstance instance); 1153 WGPU_EXPORT void wgpuInstanceRequestAdapter(WGPUInstance instance, WGPURequestAdapterOptions const * options, WGPURequestAdapterCallback callback, void * userdata); 1154 WGPU_EXPORT void wgpuInstanceReference(WGPUInstance instance); 1155 WGPU_EXPORT void wgpuInstanceRelease(WGPUInstance instance); 1156 1157 // Methods of PipelineLayout 1158 WGPU_EXPORT void wgpuPipelineLayoutReference(WGPUPipelineLayout pipelineLayout); 1159 WGPU_EXPORT void wgpuPipelineLayoutRelease(WGPUPipelineLayout pipelineLayout); 1160 1161 // Methods of QuerySet 1162 WGPU_EXPORT void wgpuQuerySetDestroy(WGPUQuerySet querySet); 1163 WGPU_EXPORT void wgpuQuerySetReference(WGPUQuerySet querySet); 1164 WGPU_EXPORT void wgpuQuerySetRelease(WGPUQuerySet querySet); 1165 1166 // Methods of Queue 1167 WGPU_EXPORT WGPUFence wgpuQueueCreateFence(WGPUQueue queue, WGPUFenceDescriptor const * descriptor); 1168 WGPU_EXPORT void wgpuQueueSignal(WGPUQueue queue, WGPUFence fence, uint64_t signalValue); 1169 WGPU_EXPORT void wgpuQueueSubmit(WGPUQueue queue, uint32_t commandCount, WGPUCommandBuffer const * commands); 1170 WGPU_EXPORT void wgpuQueueWriteBuffer(WGPUQueue queue, WGPUBuffer buffer, uint64_t bufferOffset, void const * data, size_t size); 1171 WGPU_EXPORT void wgpuQueueWriteTexture(WGPUQueue queue, WGPUTextureCopyView const * destination, void const * data, size_t dataSize, WGPUTextureDataLayout const * dataLayout, WGPUExtent3D const * writeSize); 1172 WGPU_EXPORT void wgpuQueueReference(WGPUQueue queue); 1173 WGPU_EXPORT void wgpuQueueRelease(WGPUQueue queue); 1174 1175 // Methods of RenderBundle 1176 WGPU_EXPORT void wgpuRenderBundleReference(WGPURenderBundle renderBundle); 1177 WGPU_EXPORT void wgpuRenderBundleRelease(WGPURenderBundle renderBundle); 1178 1179 // Methods of RenderBundleEncoder 1180 WGPU_EXPORT void wgpuRenderBundleEncoderDraw(WGPURenderBundleEncoder renderBundleEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); 1181 WGPU_EXPORT void wgpuRenderBundleEncoderDrawIndexed(WGPURenderBundleEncoder renderBundleEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance); 1182 WGPU_EXPORT void wgpuRenderBundleEncoderDrawIndexedIndirect(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 1183 WGPU_EXPORT void wgpuRenderBundleEncoderDrawIndirect(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 1184 WGPU_EXPORT WGPURenderBundle wgpuRenderBundleEncoderFinish(WGPURenderBundleEncoder renderBundleEncoder, WGPURenderBundleDescriptor const * descriptor); 1185 WGPU_EXPORT void wgpuRenderBundleEncoderInsertDebugMarker(WGPURenderBundleEncoder renderBundleEncoder, char const * markerLabel); 1186 WGPU_EXPORT void wgpuRenderBundleEncoderPopDebugGroup(WGPURenderBundleEncoder renderBundleEncoder); 1187 WGPU_EXPORT void wgpuRenderBundleEncoderPushDebugGroup(WGPURenderBundleEncoder renderBundleEncoder, char const * groupLabel); 1188 WGPU_EXPORT void wgpuRenderBundleEncoderSetBindGroup(WGPURenderBundleEncoder renderBundleEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets); 1189 WGPU_EXPORT void wgpuRenderBundleEncoderSetIndexBuffer(WGPURenderBundleEncoder renderBundleEncoder, WGPUBuffer buffer, uint64_t offset, uint64_t size); 1190 WGPU_EXPORT void wgpuRenderBundleEncoderSetPipeline(WGPURenderBundleEncoder renderBundleEncoder, WGPURenderPipeline pipeline); 1191 WGPU_EXPORT void wgpuRenderBundleEncoderSetVertexBuffer(WGPURenderBundleEncoder renderBundleEncoder, uint32_t slot, WGPUBuffer buffer, uint64_t offset, uint64_t size); 1192 WGPU_EXPORT void wgpuRenderBundleEncoderReference(WGPURenderBundleEncoder renderBundleEncoder); 1193 WGPU_EXPORT void wgpuRenderBundleEncoderRelease(WGPURenderBundleEncoder renderBundleEncoder); 1194 1195 // Methods of RenderPassEncoder 1196 WGPU_EXPORT void wgpuRenderPassEncoderBeginOcclusionQuery(WGPURenderPassEncoder renderPassEncoder, uint32_t queryIndex); 1197 WGPU_EXPORT void wgpuRenderPassEncoderBeginPipelineStatisticsQuery(WGPURenderPassEncoder renderPassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 1198 WGPU_EXPORT void wgpuRenderPassEncoderDraw(WGPURenderPassEncoder renderPassEncoder, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); 1199 WGPU_EXPORT void wgpuRenderPassEncoderDrawIndexed(WGPURenderPassEncoder renderPassEncoder, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t baseVertex, uint32_t firstInstance); 1200 WGPU_EXPORT void wgpuRenderPassEncoderDrawIndexedIndirect(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 1201 WGPU_EXPORT void wgpuRenderPassEncoderDrawIndirect(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer indirectBuffer, uint64_t indirectOffset); 1202 WGPU_EXPORT void wgpuRenderPassEncoderEndOcclusionQuery(WGPURenderPassEncoder renderPassEncoder); 1203 WGPU_EXPORT void wgpuRenderPassEncoderEndPass(WGPURenderPassEncoder renderPassEncoder); 1204 WGPU_EXPORT void wgpuRenderPassEncoderEndPipelineStatisticsQuery(WGPURenderPassEncoder renderPassEncoder); 1205 WGPU_EXPORT void wgpuRenderPassEncoderExecuteBundles(WGPURenderPassEncoder renderPassEncoder, uint32_t bundlesCount, WGPURenderBundle const * bundles); 1206 WGPU_EXPORT void wgpuRenderPassEncoderInsertDebugMarker(WGPURenderPassEncoder renderPassEncoder, char const * markerLabel); 1207 WGPU_EXPORT void wgpuRenderPassEncoderPopDebugGroup(WGPURenderPassEncoder renderPassEncoder); 1208 WGPU_EXPORT void wgpuRenderPassEncoderPushDebugGroup(WGPURenderPassEncoder renderPassEncoder, char const * groupLabel); 1209 WGPU_EXPORT void wgpuRenderPassEncoderSetBindGroup(WGPURenderPassEncoder renderPassEncoder, uint32_t groupIndex, WGPUBindGroup group, uint32_t dynamicOffsetCount, uint32_t const * dynamicOffsets); 1210 WGPU_EXPORT void wgpuRenderPassEncoderSetBlendColor(WGPURenderPassEncoder renderPassEncoder, WGPUColor const * color); 1211 WGPU_EXPORT void wgpuRenderPassEncoderSetIndexBuffer(WGPURenderPassEncoder renderPassEncoder, WGPUBuffer buffer, uint64_t offset, uint64_t size); 1212 WGPU_EXPORT void wgpuRenderPassEncoderSetPipeline(WGPURenderPassEncoder renderPassEncoder, WGPURenderPipeline pipeline); 1213 WGPU_EXPORT void wgpuRenderPassEncoderSetScissorRect(WGPURenderPassEncoder renderPassEncoder, uint32_t x, uint32_t y, uint32_t width, uint32_t height); 1214 WGPU_EXPORT void wgpuRenderPassEncoderSetStencilReference(WGPURenderPassEncoder renderPassEncoder, uint32_t reference); 1215 WGPU_EXPORT void wgpuRenderPassEncoderSetVertexBuffer(WGPURenderPassEncoder renderPassEncoder, uint32_t slot, WGPUBuffer buffer, uint64_t offset, uint64_t size); 1216 WGPU_EXPORT void wgpuRenderPassEncoderSetViewport(WGPURenderPassEncoder renderPassEncoder, float x, float y, float width, float height, float minDepth, float maxDepth); 1217 WGPU_EXPORT void wgpuRenderPassEncoderWriteTimestamp(WGPURenderPassEncoder renderPassEncoder, WGPUQuerySet querySet, uint32_t queryIndex); 1218 WGPU_EXPORT void wgpuRenderPassEncoderReference(WGPURenderPassEncoder renderPassEncoder); 1219 WGPU_EXPORT void wgpuRenderPassEncoderRelease(WGPURenderPassEncoder renderPassEncoder); 1220 1221 // Methods of RenderPipeline 1222 WGPU_EXPORT WGPUBindGroupLayout wgpuRenderPipelineGetBindGroupLayout(WGPURenderPipeline renderPipeline, uint32_t groupIndex); 1223 WGPU_EXPORT void wgpuRenderPipelineReference(WGPURenderPipeline renderPipeline); 1224 WGPU_EXPORT void wgpuRenderPipelineRelease(WGPURenderPipeline renderPipeline); 1225 1226 // Methods of Sampler 1227 WGPU_EXPORT void wgpuSamplerReference(WGPUSampler sampler); 1228 WGPU_EXPORT void wgpuSamplerRelease(WGPUSampler sampler); 1229 1230 // Methods of ShaderModule 1231 WGPU_EXPORT void wgpuShaderModuleReference(WGPUShaderModule shaderModule); 1232 WGPU_EXPORT void wgpuShaderModuleRelease(WGPUShaderModule shaderModule); 1233 1234 // Methods of Surface 1235 WGPU_EXPORT void wgpuSurfaceGetPreferredFormat(WGPUSurface surface, WGPUAdapter adapter, WGPUSurfaceGetPreferredFormatCallback callback, void * userdata); 1236 WGPU_EXPORT void wgpuSurfaceReference(WGPUSurface surface); 1237 WGPU_EXPORT void wgpuSurfaceRelease(WGPUSurface surface); 1238 1239 // Methods of SwapChain 1240 WGPU_EXPORT WGPUTextureView wgpuSwapChainGetCurrentTextureView(WGPUSwapChain swapChain); 1241 WGPU_EXPORT void wgpuSwapChainPresent(WGPUSwapChain swapChain); 1242 WGPU_EXPORT void wgpuSwapChainReference(WGPUSwapChain swapChain); 1243 WGPU_EXPORT void wgpuSwapChainRelease(WGPUSwapChain swapChain); 1244 1245 // Methods of Texture 1246 WGPU_EXPORT WGPUTextureView wgpuTextureCreateView(WGPUTexture texture, WGPUTextureViewDescriptor const * descriptor); 1247 WGPU_EXPORT void wgpuTextureDestroy(WGPUTexture texture); 1248 WGPU_EXPORT void wgpuTextureReference(WGPUTexture texture); 1249 WGPU_EXPORT void wgpuTextureRelease(WGPUTexture texture); 1250 1251 // Methods of TextureView 1252 WGPU_EXPORT void wgpuTextureViewReference(WGPUTextureView textureView); 1253 WGPU_EXPORT void wgpuTextureViewRelease(WGPUTextureView textureView); 1254 1255 #endif // !defined(WGPU_SKIP_DECLARATIONS) 1256 1257 #ifdef __cplusplus 1258 } // extern "C" 1259 #endif 1260 1261 #endif // WEBGPU_H_ 1262