#include "lib_webgpu.h" #include // The initializers below omit fields that are intended to default-initialize to zero. // Ignore Clang warnings about those. #if defined(__clang__) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wmissing-field-initializers" #pragma clang diagnostic ignored "-Wmissing-designated-field-initializers" #endif extern "C" { const char *wgpu_compilation_message_type_to_string(WGPU_COMPILATION_MESSAGE_TYPE type) { return type == WGPU_COMPILATION_MESSAGE_TYPE_WARNING ? "warning" : (type == WGPU_COMPILATION_MESSAGE_TYPE_INFO ? "info" : "error"); } int wgpu_vertex_format_channel_count(WGPU_VERTEX_FORMAT format) { switch(format) { case WGPU_VERTEX_FORMAT_UINT8: case WGPU_VERTEX_FORMAT_SINT8: case WGPU_VERTEX_FORMAT_UNORM8: case WGPU_VERTEX_FORMAT_SNORM8: case WGPU_VERTEX_FORMAT_UINT16: case WGPU_VERTEX_FORMAT_SINT16: case WGPU_VERTEX_FORMAT_UNORM16: case WGPU_VERTEX_FORMAT_SNORM16: case WGPU_VERTEX_FORMAT_FLOAT16: case WGPU_VERTEX_FORMAT_FLOAT32: case WGPU_VERTEX_FORMAT_UINT32: case WGPU_VERTEX_FORMAT_SINT32: return 1; case WGPU_VERTEX_FORMAT_UINT8X2: case WGPU_VERTEX_FORMAT_SINT8X2: case WGPU_VERTEX_FORMAT_UNORM8X2: case WGPU_VERTEX_FORMAT_SNORM8X2: case WGPU_VERTEX_FORMAT_UINT16X2: case WGPU_VERTEX_FORMAT_SINT16X2: case WGPU_VERTEX_FORMAT_UNORM16X2: case WGPU_VERTEX_FORMAT_SNORM16X2: case WGPU_VERTEX_FORMAT_FLOAT16X2: case WGPU_VERTEX_FORMAT_FLOAT32X2: case WGPU_VERTEX_FORMAT_UINT32X2: case WGPU_VERTEX_FORMAT_SINT32X2: return 2; case WGPU_VERTEX_FORMAT_FLOAT32X3: case WGPU_VERTEX_FORMAT_UINT32X3: case WGPU_VERTEX_FORMAT_SINT32X3: return 3; case WGPU_VERTEX_FORMAT_UINT8X4: case WGPU_VERTEX_FORMAT_SINT8X4: case WGPU_VERTEX_FORMAT_UNORM8X4: case WGPU_VERTEX_FORMAT_SNORM8X4: case WGPU_VERTEX_FORMAT_UINT16X4: case WGPU_VERTEX_FORMAT_SINT16X4: case WGPU_VERTEX_FORMAT_UNORM16X4: case WGPU_VERTEX_FORMAT_SNORM16X4: case WGPU_VERTEX_FORMAT_FLOAT16X4: case WGPU_VERTEX_FORMAT_FLOAT32X4: case WGPU_VERTEX_FORMAT_UINT32X4: case WGPU_VERTEX_FORMAT_SINT32X4: case WGPU_VERTEX_FORMAT_UNORM10_10_10_2: case WGPU_VERTEX_FORMAT_UNORM8X4_BGRA: return 4; default: return 0; } } int wgpu_vertex_format_byte_size(WGPU_VERTEX_FORMAT format) { switch(format) { case WGPU_VERTEX_FORMAT_UINT8: case WGPU_VERTEX_FORMAT_SINT8: case WGPU_VERTEX_FORMAT_UNORM8: case WGPU_VERTEX_FORMAT_SNORM8: return 1; case WGPU_VERTEX_FORMAT_UINT8X2: case WGPU_VERTEX_FORMAT_SINT8X2: case WGPU_VERTEX_FORMAT_UNORM8X2: case WGPU_VERTEX_FORMAT_SNORM8X2: case WGPU_VERTEX_FORMAT_UINT16: case WGPU_VERTEX_FORMAT_SINT16: case WGPU_VERTEX_FORMAT_UNORM16: case WGPU_VERTEX_FORMAT_SNORM16: case WGPU_VERTEX_FORMAT_FLOAT16: return 2; case WGPU_VERTEX_FORMAT_UINT8X4: case WGPU_VERTEX_FORMAT_SINT8X4: case WGPU_VERTEX_FORMAT_UNORM8X4: case WGPU_VERTEX_FORMAT_SNORM8X4: case WGPU_VERTEX_FORMAT_UINT16X2: case WGPU_VERTEX_FORMAT_SINT16X2: case WGPU_VERTEX_FORMAT_UNORM16X2: case WGPU_VERTEX_FORMAT_SNORM16X2: case WGPU_VERTEX_FORMAT_FLOAT16X2: case WGPU_VERTEX_FORMAT_FLOAT32: case WGPU_VERTEX_FORMAT_UINT32: case WGPU_VERTEX_FORMAT_SINT32: case WGPU_VERTEX_FORMAT_UNORM10_10_10_2: case WGPU_VERTEX_FORMAT_UNORM8X4_BGRA: return 4; case WGPU_VERTEX_FORMAT_UINT16X4: case WGPU_VERTEX_FORMAT_SINT16X4: case WGPU_VERTEX_FORMAT_UNORM16X4: case WGPU_VERTEX_FORMAT_SNORM16X4: case WGPU_VERTEX_FORMAT_FLOAT16X4: case WGPU_VERTEX_FORMAT_FLOAT32X2: case WGPU_VERTEX_FORMAT_UINT32X2: case WGPU_VERTEX_FORMAT_SINT32X2: return 8; case WGPU_VERTEX_FORMAT_FLOAT32X3: case WGPU_VERTEX_FORMAT_UINT32X3: case WGPU_VERTEX_FORMAT_SINT32X3: return 12; case WGPU_VERTEX_FORMAT_FLOAT32X4: case WGPU_VERTEX_FORMAT_UINT32X4: case WGPU_VERTEX_FORMAT_SINT32X4: return 16; default: return 0; } } WGPU_BOOL wgpu_vertex_format_is_unorm(WGPU_VERTEX_FORMAT format) { return format == WGPU_VERTEX_FORMAT_UNORM10_10_10_2 || format == WGPU_VERTEX_FORMAT_UNORM8X4_BGRA || format == WGPU_VERTEX_FORMAT_UNORM16 || format == WGPU_VERTEX_FORMAT_UNORM16X2 || format == WGPU_VERTEX_FORMAT_UNORM16X4 || format == WGPU_VERTEX_FORMAT_UNORM8 || format == WGPU_VERTEX_FORMAT_UNORM8X2 || format == WGPU_VERTEX_FORMAT_UNORM8X4; } const char *wgpu_vertex_format_to_string(WGPU_VERTEX_FORMAT format) { switch(format) { case WGPU_VERTEX_FORMAT_INVALID: return "WGPU_VERTEX_FORMAT_INVALID"; case WGPU_VERTEX_FORMAT_UINT8: return "WGPU_VERTEX_FORMAT_UINT8"; case WGPU_VERTEX_FORMAT_UINT8X2: return "WGPU_VERTEX_FORMAT_UINT8X2"; case WGPU_VERTEX_FORMAT_UINT8X4: return "WGPU_VERTEX_FORMAT_UINT8X4"; case WGPU_VERTEX_FORMAT_SINT8: return "WGPU_VERTEX_FORMAT_SINT8"; case WGPU_VERTEX_FORMAT_SINT8X2: return "WGPU_VERTEX_FORMAT_SINT8X2"; case WGPU_VERTEX_FORMAT_SINT8X4: return "WGPU_VERTEX_FORMAT_SINT8X4"; case WGPU_VERTEX_FORMAT_UNORM8: return "WGPU_VERTEX_FORMAT_UNORM8"; case WGPU_VERTEX_FORMAT_UNORM8X2: return "WGPU_VERTEX_FORMAT_UNORM8X2"; case WGPU_VERTEX_FORMAT_UNORM8X4: return "WGPU_VERTEX_FORMAT_UNORM8X4"; case WGPU_VERTEX_FORMAT_SNORM8: return "WGPU_VERTEX_FORMAT_SNORM8"; case WGPU_VERTEX_FORMAT_SNORM8X2: return "WGPU_VERTEX_FORMAT_SNORM8X2"; case WGPU_VERTEX_FORMAT_SNORM8X4: return "WGPU_VERTEX_FORMAT_SNORM8X4"; case WGPU_VERTEX_FORMAT_UINT16: return "WGPU_VERTEX_FORMAT_UINT16"; case WGPU_VERTEX_FORMAT_UINT16X2: return "WGPU_VERTEX_FORMAT_UINT16X2"; case WGPU_VERTEX_FORMAT_UINT16X4: return "WGPU_VERTEX_FORMAT_UINT16X4"; case WGPU_VERTEX_FORMAT_SINT16: return "WGPU_VERTEX_FORMAT_SINT16"; case WGPU_VERTEX_FORMAT_SINT16X2: return "WGPU_VERTEX_FORMAT_SINT16X2"; case WGPU_VERTEX_FORMAT_SINT16X4: return "WGPU_VERTEX_FORMAT_SINT16X4"; case WGPU_VERTEX_FORMAT_UNORM16: return "WGPU_VERTEX_FORMAT_UNORM16"; case WGPU_VERTEX_FORMAT_UNORM16X2: return "WGPU_VERTEX_FORMAT_UNORM16X2"; case WGPU_VERTEX_FORMAT_UNORM16X4: return "WGPU_VERTEX_FORMAT_UNORM16X4"; case WGPU_VERTEX_FORMAT_SNORM16: return "WGPU_VERTEX_FORMAT_SNORM16"; case WGPU_VERTEX_FORMAT_SNORM16X2: return "WGPU_VERTEX_FORMAT_SNORM16X2"; case WGPU_VERTEX_FORMAT_SNORM16X4: return "WGPU_VERTEX_FORMAT_SNORM16X4"; case WGPU_VERTEX_FORMAT_FLOAT16: return "WGPU_VERTEX_FORMAT_FLOAT16"; case WGPU_VERTEX_FORMAT_FLOAT16X2: return "WGPU_VERTEX_FORMAT_FLOAT16X2"; case WGPU_VERTEX_FORMAT_FLOAT16X4: return "WGPU_VERTEX_FORMAT_FLOAT16X4"; case WGPU_VERTEX_FORMAT_FLOAT32: return "WGPU_VERTEX_FORMAT_FLOAT32"; case WGPU_VERTEX_FORMAT_FLOAT32X2: return "WGPU_VERTEX_FORMAT_FLOAT32X2"; case WGPU_VERTEX_FORMAT_FLOAT32X3: return "WGPU_VERTEX_FORMAT_FLOAT32X3"; case WGPU_VERTEX_FORMAT_FLOAT32X4: return "WGPU_VERTEX_FORMAT_FLOAT32X4"; case WGPU_VERTEX_FORMAT_UINT32: return "WGPU_VERTEX_FORMAT_UINT32"; case WGPU_VERTEX_FORMAT_UINT32X2: return "WGPU_VERTEX_FORMAT_UINT32X2"; case WGPU_VERTEX_FORMAT_UINT32X3: return "WGPU_VERTEX_FORMAT_UINT32X3"; case WGPU_VERTEX_FORMAT_UINT32X4: return "WGPU_VERTEX_FORMAT_UINT32X4"; case WGPU_VERTEX_FORMAT_SINT32: return "WGPU_VERTEX_FORMAT_SINT32"; case WGPU_VERTEX_FORMAT_SINT32X2: return "WGPU_VERTEX_FORMAT_SINT32X2"; case WGPU_VERTEX_FORMAT_SINT32X3: return "WGPU_VERTEX_FORMAT_SINT32X3"; case WGPU_VERTEX_FORMAT_SINT32X4: return "WGPU_VERTEX_FORMAT_SINT32X4"; case WGPU_VERTEX_FORMAT_UNORM10_10_10_2: return "WGPU_VERTEX_FORMAT_UNORM10_10_10_2"; case WGPU_VERTEX_FORMAT_UNORM8X4_BGRA: return "WGPU_VERTEX_FORMAT_UNORM8X4_BGRA"; default: return ""; } } WGPU_WGSL_ELEMENT_TYPE wgpu_vertex_format_wgsl_element_type(WGPU_VERTEX_FORMAT format) { switch(format) { case WGPU_VERTEX_FORMAT_UINT8: case WGPU_VERTEX_FORMAT_UINT8X2: case WGPU_VERTEX_FORMAT_UINT8X4: case WGPU_VERTEX_FORMAT_UINT16: case WGPU_VERTEX_FORMAT_UINT16X2: case WGPU_VERTEX_FORMAT_UINT16X4: case WGPU_VERTEX_FORMAT_UINT32: case WGPU_VERTEX_FORMAT_UINT32X2: case WGPU_VERTEX_FORMAT_UINT32X3: case WGPU_VERTEX_FORMAT_UINT32X4: return WGPU_WGSL_ELEMENT_TYPE_UINT; case WGPU_VERTEX_FORMAT_SINT8: case WGPU_VERTEX_FORMAT_SINT8X2: case WGPU_VERTEX_FORMAT_SINT8X4: case WGPU_VERTEX_FORMAT_SINT16: case WGPU_VERTEX_FORMAT_SINT16X2: case WGPU_VERTEX_FORMAT_SINT16X4: case WGPU_VERTEX_FORMAT_SINT32: case WGPU_VERTEX_FORMAT_SINT32X2: case WGPU_VERTEX_FORMAT_SINT32X3: case WGPU_VERTEX_FORMAT_SINT32X4: return WGPU_WGSL_ELEMENT_TYPE_SINT; case WGPU_VERTEX_FORMAT_FLOAT16: case WGPU_VERTEX_FORMAT_FLOAT16X2: case WGPU_VERTEX_FORMAT_FLOAT16X4: return WGPU_WGSL_ELEMENT_TYPE_HALF; default: assert(false && "Invalid WGPU_VERTEX_FORMAT passed to wgpu_vertex_format_wgsl_element_type()!"); // Fall though to return a default float data type in release builds. case WGPU_VERTEX_FORMAT_UNORM8: case WGPU_VERTEX_FORMAT_UNORM8X2: case WGPU_VERTEX_FORMAT_UNORM8X4: case WGPU_VERTEX_FORMAT_UNORM16: case WGPU_VERTEX_FORMAT_UNORM16X2: case WGPU_VERTEX_FORMAT_UNORM16X4: case WGPU_VERTEX_FORMAT_UNORM10_10_10_2: case WGPU_VERTEX_FORMAT_UNORM8X4_BGRA: case WGPU_VERTEX_FORMAT_SNORM8: case WGPU_VERTEX_FORMAT_SNORM8X2: case WGPU_VERTEX_FORMAT_SNORM8X4: case WGPU_VERTEX_FORMAT_SNORM16: case WGPU_VERTEX_FORMAT_SNORM16X2: case WGPU_VERTEX_FORMAT_SNORM16X4: case WGPU_VERTEX_FORMAT_FLOAT32: case WGPU_VERTEX_FORMAT_FLOAT32X2: case WGPU_VERTEX_FORMAT_FLOAT32X3: case WGPU_VERTEX_FORMAT_FLOAT32X4: return WGPU_WGSL_ELEMENT_TYPE_FLOAT; } } const WGpuRequestAdapterOptions WGPU_REQUEST_ADAPTER_OPTIONS_DEFAULT_INITIALIZER = { }; const WGpuDeviceDescriptor WGPU_DEVICE_DESCRIPTOR_DEFAULT_INITIALIZER = { }; const WGpuTextureDescriptor WGPU_TEXTURE_DESCRIPTOR_DEFAULT_INITIALIZER = { .height = 1, .depthOrArrayLayers = 1, .mipLevelCount = 1, .sampleCount = 1, .dimension = WGPU_TEXTURE_DIMENSION_2D, .textureBindingViewDimension = WGPU_TEXTURE_VIEW_DIMENSION_INVALID }; const WGpuTextureViewDescriptor WGPU_TEXTURE_VIEW_DESCRIPTOR_DEFAULT_INITIALIZER = { .aspect = WGPU_TEXTURE_ASPECT_ALL, .baseMipLevel = 0, .baseArrayLayer = 0, .swizzle = "rgba" }; const WGpuExternalTextureDescriptor WGPU_EXTERNAL_TEXTURE_DESCRIPTOR_DEFAULT_INITIALIZER = { .colorSpace = HTML_PREDEFINED_COLOR_SPACE_SRGB }; const WGpuSamplerDescriptor WGPU_SAMPLER_DESCRIPTOR_DEFAULT_INITIALIZER = { .addressModeU = WGPU_ADDRESS_MODE_CLAMP_TO_EDGE, .addressModeV = WGPU_ADDRESS_MODE_CLAMP_TO_EDGE, .addressModeW = WGPU_ADDRESS_MODE_CLAMP_TO_EDGE, .magFilter = WGPU_FILTER_MODE_NEAREST, .minFilter = WGPU_FILTER_MODE_NEAREST, .mipmapFilter = WGPU_MIPMAP_FILTER_MODE_NEAREST, .lodMinClamp = 0, .lodMaxClamp = 32, .maxAnisotropy = 1 }; const WGpuBindGroupLayoutEntry WGPU_BUFFER_BINDING_LAYOUT_ENTRY_DEFAULT_INITIALIZER = { }; const WGpuBufferBindingLayout WGPU_BUFFER_BINDING_LAYOUT_DEFAULT_INITIALIZER = { .type = WGPU_BUFFER_BINDING_TYPE_UNIFORM, .hasDynamicOffset = WGPU_FALSE, .minBindingSize = 0 }; const WGpuSamplerBindingLayout WGPU_SAMPLER_BINDING_LAYOUT_DEFAULT_INITIALIZER = { .type = WGPU_SAMPLER_BINDING_TYPE_FILTERING }; const WGpuTextureBindingLayout WGPU_TEXTURE_BINDING_LAYOUT_DEFAULT_INITIALIZER = { .sampleType = WGPU_TEXTURE_SAMPLE_TYPE_FLOAT, .viewDimension = WGPU_TEXTURE_VIEW_DIMENSION_2D, }; const WGpuBindGroupEntry WGPU_BIND_GROUP_ENTRY_DEFAULT_INITIALIZER = { }; const WGpuShaderModuleCompilationHint WGPU_SHADER_MODULE_COMPILATION_HINT_DEFAULT_INITIALIZER = { }; const WGpuShaderModuleDescriptor WGPU_SHADER_MODULE_DESCRIPTOR_DEFAULT_INITIALIZER = { }; const WGpuCommandEncoderDescriptor WGPU_COMMAND_ENCODER_DESCRIPTOR_DEFAULT_INITIALIZER = { }; const WGpuTexelCopyBufferInfo WGPU_TEXEL_COPY_BUFFER_INFO_DEFAULT_INITIALIZER = {}; const WGpuComputePassTimestampWrites WGPU_COMPUTE_PASS_TIMESTAMP_WRITES_DEFAULT_INITIALIZER = { .querySet = 0, .beginningOfPassWriteIndex = -1, .endOfPassWriteIndex = -1 }; const WGpuComputePassDescriptor WGPU_COMPUTE_PASS_DESCRIPTOR_DEFAULT_INITIALIZER = { .timestampWrites = WGPU_COMPUTE_PASS_TIMESTAMP_WRITES_DEFAULT_INITIALIZER }; const WGpuRenderPassDepthStencilAttachment WGPU_RENDER_PASS_DEPTH_STENCIL_ATTACHMENT_DEFAULT_INITIALIZER = { .view = 0, .depthLoadOp = WGPU_LOAD_OP_UNDEFINED, .depthClearValue = (float)WGPU_NAN, .depthStoreOp = WGPU_STORE_OP_UNDEFINED, .depthReadOnly = false, .stencilLoadOp = WGPU_LOAD_OP_UNDEFINED, .stencilClearValue = 0, .stencilStoreOp = WGPU_STORE_OP_UNDEFINED, .stencilReadOnly = false }; const WGpuRenderBundleEncoderDescriptor WGPU_RENDER_BUNDLE_ENCODER_DESCRIPTOR_DEFAULT_INITIALIZER = { .colorFormats = 0, .numColorFormats = 0, .depthStencilFormat = 0, .sampleCount = 1, .depthReadOnly = WGPU_FALSE, .stencilReadOnly = WGPU_FALSE }; const WGpuStorageTextureBindingLayout WGPU_STORAGE_TEXTURE_BINDING_LAYOUT_DEFAULT_INITIALIZER = { .access = WGPU_STORAGE_TEXTURE_ACCESS_WRITE_ONLY, .format = WGPU_TEXTURE_FORMAT_INVALID, .viewDimension = WGPU_TEXTURE_VIEW_DIMENSION_2D }; const WGpuCanvasToneMapping WGPU_CANVAS_TONE_MAPPING_DEFAULT_INITIALIZER = { .mode = WGPU_CANVAS_TONE_MAPPING_MODE_STANDARD }; const WGpuCanvasConfiguration WGPU_CANVAS_CONFIGURATION_DEFAULT_INITIALIZER = { .usage = WGPU_TEXTURE_USAGE_RENDER_ATTACHMENT, .colorSpace = HTML_PREDEFINED_COLOR_SPACE_SRGB, .toneMapping = WGPU_CANVAS_TONE_MAPPING_DEFAULT_INITIALIZER, .alphaMode = WGPU_CANVAS_ALPHA_MODE_OPAQUE, }; const WGpuRenderPassTimestampWrites WGPU_RENDER_PASS_TIMESTAMP_WRITES_DEFAULT_INITIALIZER = { .querySet = 0, .beginningOfPassWriteIndex = -1, .endOfPassWriteIndex = -1 }; const WGpuRenderPassDescriptor WGPU_RENDER_PASS_DESCRIPTOR_DEFAULT_INITIALIZER = { .maxDrawCount = 0, .colorAttachments = 0, .numColorAttachments = 0, .depthStencilAttachment = WGPU_RENDER_PASS_DEPTH_STENCIL_ATTACHMENT_DEFAULT_INITIALIZER, .occlusionQuerySet = 0, .timestampWrites = WGPU_RENDER_PASS_TIMESTAMP_WRITES_DEFAULT_INITIALIZER }; const WGpuColorTargetState WGPU_COLOR_TARGET_STATE_DEFAULT_INITIALIZER = { .blend = WGpuBlendState{ .color = WGpuBlendComponent { .operation = WGPU_BLEND_OPERATION_DISABLED, // Color blending is disabled by default. Set to WGPU_BLEND_OPERATION_ADD to enable. .srcFactor = WGPU_BLEND_FACTOR_SRC, .dstFactor = WGPU_BLEND_FACTOR_ONE_MINUS_SRC }, .alpha = WGpuBlendComponent { .operation = WGPU_BLEND_OPERATION_ADD, // If blending is enabled, default to copying src alpha. (no blend in alpha value) .srcFactor = WGPU_BLEND_FACTOR_ONE, .dstFactor = WGPU_BLEND_FACTOR_ZERO }, }, .writeMask = WGPU_COLOR_WRITE_ALL }; const WGpuRenderPipelineDescriptor WGPU_RENDER_PIPELINE_DESCRIPTOR_DEFAULT_INITIALIZER = { .primitive = WGpuPrimitiveState { .topology = WGPU_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, .frontFace = WGPU_FRONT_FACE_CCW, .cullMode = WGPU_CULL_MODE_NONE }, .depthStencil = WGpuDepthStencilState { .depthCompare = WGPU_COMPARE_FUNCTION_INVALID, .stencilReadMask = 0xFFFFFFFFu, .stencilWriteMask = 0xFFFFFFFFu, .stencilFront = WGpuStencilFaceState { .compare = WGPU_COMPARE_FUNCTION_ALWAYS, .failOp = WGPU_STENCIL_OPERATION_KEEP, .depthFailOp = WGPU_STENCIL_OPERATION_KEEP, .passOp = WGPU_STENCIL_OPERATION_KEEP }, .stencilBack = WGpuStencilFaceState { .compare = WGPU_COMPARE_FUNCTION_ALWAYS, .failOp = WGPU_STENCIL_OPERATION_KEEP, .depthFailOp = WGPU_STENCIL_OPERATION_KEEP, .passOp = WGPU_STENCIL_OPERATION_KEEP }, }, .multisample = WGpuMultisampleState { .count = 1, .mask = 0xFFFFFFFFu, }, }; extern const WGpuExtent3D WGPU_EXTENT_3D_DEFAULT_INITIALIZER = { .height = 1, .depthOrArrayLayers = 1 }; extern const WGpuRenderPassColorAttachment WGPU_RENDER_PASS_COLOR_ATTACHMENT_DEFAULT_INITIALIZER = { .depthSlice = -1, .storeOp = WGPU_STORE_OP_STORE, .loadOp = WGPU_LOAD_OP_LOAD, .clearValue = WGpuColor { .r = 0.0, .g = 0.0, .b = 0.0, .a = 1.0, } }; extern const WGpuCopyExternalImageSourceInfo WGPU_COPY_EXTERNAL_IMAGE_SOURCE_INFO_DEFAULT_INITIALIZER = { .origin = WGpuOrigin2D { .x = 0, .y = 0 } }; extern const WGpuTexelCopyTextureInfo WGPU_TEXEL_COPY_TEXTURE_INFO_DEFAULT_INITIALIZER = { .mipLevel = 0, .origin = WGpuOrigin3D { .x = 0, .y = 0, .z = 0 }, .aspect = WGPU_TEXTURE_ASPECT_ALL }; extern const WGpuCopyExternalImageDestInfo WGPU_COPY_EXTERNAL_IMAGE_DEST_INFO_DEFAULT_INITIALIZER = { .mipLevel = 0, .origin = WGpuOrigin3D { .x = 0, .y = 0, .z = 0 }, .aspect = WGPU_TEXTURE_ASPECT_ALL, .colorSpace = HTML_PREDEFINED_COLOR_SPACE_SRGB, .premultipliedAlpha = WGPU_FALSE }; } // ~extern "C" #if defined(__clang__) #pragma clang diagnostic pop #endif