/*
 * Copyright (C) 2017 Apple Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUPixelFormat {
    "BGRA8Unorm"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPULoadAction {
    "dontcare",
    "load",
    "clear"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUStoreAction {
    "dontcare",
    "store",
    "multisampleresolve"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUPrimitiveType {
    "point",
    "line",
    "linestrip",
    "triangle",
    "trianglestrip"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUFunctionType {
    "fragment",
    "vertex"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUStencilOperation {
    "keep",
    "zero",
    "replace",
    "incrementclamp",
    "decrementclamp",
    "invert",
    "incrementwrap",
    "decrementwrap"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUStatus {
    "notenqueued",
    "enqueued",
    "committed",
    "scheduled",
    "completed",
    "error"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUSamplerAddressMode {
    "clamptoedge",
    "mirrorclamptoedge",
    "repeat",
    "mirrorrepeat",
    "clamptozero"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUSamplerMinMagFilter {
    "nearest",
    "linear"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUSamplerMipFilter {
    "notmipmapped",
    "nearest",
    "linear"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUCullMode {
    "none",
    "front",
    "back"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUIndexType {
    "uint16",
    "uint32"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUVisibilityResultMode {
    "disabled",
    "boolean",
    "counting"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUWinding {
    "clockwise",
    "counterclockwise"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUDepthClipMode {
    "clip",
    "clamp"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUTriangleFillMode {
    "fill",
    "lines"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUCPUCacheMode {
    "defaultcache",
    "writecombined"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUStorageMode {
    "shared",
    "managed",
    "private"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUResourceOptions {
    "cpucachemodedefaultcache",
    "cpucachemodewritecombined",
    "storagemodeshared",
    "storagemodemanaged",
    "storagemodeprivate",
    "optioncpucachemodedefaultcache",
    "optioncpucachemodewritecombined"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUTextureUsage {
    "unknown",
    "shaderread",
    "shaderwrite",
    "rendertarget",
    "pixelformatview"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUBlendOperation {
    "add",
    "subtract",
    "reversesubtract",
    "min",
    "max"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUBlendFactor {
    "zero",
    "one",
    "sourcecolor",
    "oneminussourcecolor",
    "sourcealpha",
    "oneminussourcealpha",
    "destinationcolor",
    "oneminusdestinationcolor",
    "destinationalpha",
    "oneminusdestinationalpha",
    "sourcealphasaturated",
    "blendcolor",
    "oneminusblendcolor",
    "blendalpha",
    "oneminusblendalpha"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUColorWriteMask {
    "none",
    "red",
    "green",
    "blue",
    "alpha",
    "all"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUMultisampleDepthResolveFilter {
    "sample0",
    "min",
    "max"
};

[
    Conditional=WEBGPU,
    EnabledAtRuntime=WebGPU
] enum WebGPUFeatureSet {
    "level1",
    "level2"
};
