blob: 618ec041dd065109216bd138bcce77212cda75b7 [file] [log] [blame]
/*
* Copyright (C) 2017 Apple Inc. All rights reserved.
* Copyright (C) 2017 Yuichiro Kikura (y.kikura@gmail.com)
*
* 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,
JSCustomMarkFunction,
DoNotCheckConstants
] interface WebGPURenderingContext {
// back-reference to the canvas
readonly attribute HTMLCanvasElement canvas;
// Pixel formats
const unsigned int PixelFormatBGRA8Unorm = 80;
const unsigned int PixelFormatDepth32Float = 252;
const unsigned int PixelFormatStencil8 = 253;
const unsigned int PixelFormatInvalid = 0;
// Load actions
const unsigned int LoadActionDontCare = 0;
const unsigned int LoadActionLoad = 1;
const unsigned int LoadActionClear = 2;
// Store actions
const unsigned int StoreActionDontCare = 0;
const unsigned int StoreActionStore = 1;
const unsigned int StoreActionMultisampleResolve = 2;
// Primitive types
const unsigned int PrimitiveTypePoint = 0;
const unsigned int PrimitiveTypeLine = 1;
const unsigned int PrimitiveTypeLineStrip = 2;
const unsigned int PrimitiveTypeTriangle = 3;
const unsigned int PrimitiveTypeTriangleStrip = 4;
// Comparison functions
const unsigned int CompareFunctionNever = 0;
const unsigned int CompareFunctionLess = 1;
const unsigned int CompareFunctionEqual = 2;
const unsigned int CompareFunctionLessEqual = 3;
const unsigned int CompareFunctionGreater = 4;
const unsigned int CompareFunctionNotEqual = 5;
const unsigned int CompareFunctionGreaterEqual = 6;
const unsigned int CompareFunctionAlways = 7;
// Texture Types
const unsigned int TextureType1D = 0;
const unsigned int TextureType1DArray = 1;
const unsigned int TextureType2D = 2;
const unsigned int TextureType2DArray = 3;
const unsigned int TextureType2DMultisample = 4;
const unsigned int TextureTypeCube = 5;
const unsigned int TextureTypeCubeArray = 6;
const unsigned int TextureType3D = 7;
// Storage modes
const unsigned int StorageModeShared = 0;
const unsigned int StorageModeManaged = 1;
const unsigned int StorageModePrivate = 2;
// Usage
const unsigned int TextureUsageUnknown = 0x0000;
const unsigned int TextureUsageShaderRead = 0x0001;
const unsigned int TextureUsageShaderWrite = 0x0002;
const unsigned int TextureUsageRenderTarget = 0x0004;
const unsigned int TextureUsagePixelFormatView = 0x0010;
// Entry points
WebGPULibrary createLibrary(DOMString sourceCode);
WebGPURenderPipelineState? createRenderPipelineState(WebGPURenderPipelineDescriptor descriptor);
WebGPUDepthStencilState? createDepthStencilState(WebGPUDepthStencilDescriptor descriptor);
WebGPUComputePipelineState? createComputePipelineState(WebGPUFunction function);
WebGPUCommandQueue? createCommandQueue();
WebGPUDrawable? nextDrawable();
WebGPUBuffer? createBuffer(ArrayBufferView data);
WebGPUTexture? createTexture(WebGPUTextureDescriptor descriptor);
};