diff --git a/dist/index.d.ts b/dist/index.d.ts index 3ed49dbe..41f36c51 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -261,7 +261,10 @@ type GPUStencilOperation = | "increment-wrap" | "decrement-wrap"; type GPUStorageTextureAccess = - "write-only"; + + | "write-only" + | "read-only" + | "read-write"; type GPUStoreOp = | "store" diff --git a/generated/index.d.ts b/generated/index.d.ts index 58502c0e..6856d09c 100644 --- a/generated/index.d.ts +++ b/generated/index.d.ts @@ -22,15 +22,6 @@ type GPUExtent3D = | GPUExtent3DDict; type GPUFlagsConstant = number; -type GPUImageCopyExternalImageSource = - - | ImageBitmap - | ImageData - | HTMLImageElement - | HTMLVideoElement - | VideoFrame - | HTMLCanvasElement - | OffscreenCanvas; type GPUIndex32 = number; type GPUIntegerCoordinate = @@ -207,7 +198,10 @@ type GPUStencilOperation = | "increment-wrap" | "decrement-wrap"; type GPUStorageTextureAccess = - "write-only"; + + | "write-only" + | "read-only" + | "read-write"; type GPUStoreOp = | "store" @@ -767,134 +761,6 @@ interface GPUFragmentState targets: Array; } -interface GPUImageCopyBuffer - extends GPUImageDataLayout { - /** - * A buffer which either contains image data to be copied or will store the image data being - * copied, depending on the method it is being passed to. - */ - buffer: GPUBuffer; -} - -interface GPUImageCopyExternalImage { - /** - * The source of the image copy. The copy source data is captured at the moment that - * {@link GPUQueue#copyExternalImageToTexture} is issued. Source size is defined by source - * type, given by this table: - * - * - * - * - * - * - * - * - * - * - * - * - *
Source type - * Width - * Height - *
{@link ImageBitmap} - * {@link ImageBitmap#width|ImageBitmap.width} - * {@link ImageBitmap#height|ImageBitmap.height} - *
{@link HTMLVideoElement} - * video/intrinsic width|intrinsic width of the frame - * video/intrinsic height|intrinsic height of the frame - *
{@link VideoFrame} - * {@link VideoFrame#codedWidth|VideoFrame.codedWidth} - * {@link VideoFrame#codedHeight|VideoFrame.codedHeight} - *
{@link HTMLCanvasElement} - * {@link HTMLCanvasElement#width|HTMLCanvasElement.width} - * {@link HTMLCanvasElement#height|HTMLCanvasElement.height} - *
{@link OffscreenCanvas} - * {@link OffscreenCanvas#width|OffscreenCanvas.width} - * {@link OffscreenCanvas#height|OffscreenCanvas.height} - *
- */ - source: GPUImageCopyExternalImageSource; - /** - * Defines the origin of the copy - the minimum (top-left) corner of the source sub-region to copy from. - * Together with `copySize`, defines the full copy sub-region. - */ - origin?: GPUOrigin2D; - /** - * Describes whether the source image is vertically flipped, or not. - * If this option is set to `true`, the copy is flipped vertically: the bottom row of the source - * region is copied into the first row of the destination region, and so on. - * The {@link GPUImageCopyExternalImage#origin} option is still relative to the top-left corner - * of the source image, increasing downward. - */ - flipY?: boolean; -} - -interface GPUImageCopyTexture { - /** - * Texture to copy to/from. - */ - texture: GPUTexture; - /** - * Mip-map level of the {@link GPUImageCopyTexture#texture} to copy to/from. - */ - mipLevel?: GPUIntegerCoordinate; - /** - * Defines the origin of the copy - the minimum corner of the texture sub-region to copy to/from. - * Together with `copySize`, defines the full copy sub-region. - */ - origin?: GPUOrigin3D; - /** - * Defines which aspects of the {@link GPUImageCopyTexture#texture} to copy to/from. - */ - aspect?: GPUTextureAspect; -} - -interface GPUImageCopyTextureTagged - extends GPUImageCopyTexture { - /** - * Describes the color space and encoding used to encode data into the destination texture. - * This [[#color-space-conversions|may result]] in values outside of the range [0, 1] - * being written to the target texture, if its format can represent them. - * Otherwise, the results are clamped to the target texture format's range. - * Note: - * If {@link GPUImageCopyTextureTagged#colorSpace} matches the source image, - * conversion may not be necessary. See [[#color-space-conversion-elision]]. - */ - colorSpace?: PredefinedColorSpace; - /** - * Describes whether the data written into the texture should have its RGB channels - * premultiplied by the alpha channel, or not. - * If this option is set to `true` and the {@link GPUImageCopyExternalImage#source} is also - * premultiplied, the source RGB values must be preserved even if they exceed their - * corresponding alpha values. - * Note: - * If {@link GPUImageCopyTextureTagged#premultipliedAlpha} matches the source image, - * conversion may not be necessary. See [[#color-space-conversion-elision]]. - */ - premultipliedAlpha?: boolean; -} - -interface GPUImageDataLayout { - /** - * The offset, in bytes, from the beginning of the image data source (such as a - * {@link GPUImageCopyBuffer#buffer|GPUImageCopyBuffer.buffer}) to the start of the image data - * within that source. - */ - offset?: GPUSize64; - /** - * The stride, in bytes, between the beginning of each block row and the subsequent block row. - * Required if there are multiple block rows (i.e. the copy height or depth is more than one block). - */ - bytesPerRow?: GPUSize32; - /** - * Number of block rows per single image of the texture. - * {@link GPUImageDataLayout#rowsPerImage} × - * {@link GPUImageDataLayout#bytesPerRow} is the stride, in bytes, between the beginning of each image of data and the subsequent image. - * Required if there are multiple images (i.e. the copy depth is more than one). - */ - rowsPerImage?: GPUSize32; -} - interface GPUMultisampleState { /** * Number of samples per pixel. This {@link GPURenderPipeline} will be compatible only @@ -1104,6 +970,11 @@ interface GPURenderPassColorAttachment { * color attachment. */ view: GPUTextureView; + /** + * Indicates the depth slice index of {@link GPUTextureViewDimension#"3d"} {@link GPURenderPassColorAttachment#view} + * that will be output to for this color attachment. + */ + depthSlice?: GPUIntegerCoordinate; /** * A {@link GPUTextureView} describing the texture subresource that will receive the resolved * output for this color attachment if {@link GPURenderPassColorAttachment#view} is @@ -1341,6 +1212,7 @@ interface GPUSamplerDescriptor } interface GPUShaderModuleCompilationHint { + entryPoint: string; /** * A {@link GPUPipelineLayout} that the {@link GPUShaderModule} may be used with in a future * {@link GPUDevice#createComputePipeline()} or {@link GPUDevice#createRenderPipeline} call. @@ -1368,23 +1240,29 @@ interface GPUShaderModuleDescriptor */ sourceMap?: any; /** - * If defined maps an entry point name from the shader to a {@link GPUShaderModuleCompilationHint}. - * No validation is performed with any of these {@link GPUShaderModuleCompilationHint}. - * Implementations should use any information present in the {@link GPUShaderModuleCompilationHint} + * A list of {@link GPUShaderModuleCompilationHint}s. + * Any hint provided by an application **should** contain information about one entry point of + * a pipeline that will eventually be created from the entry point. + * Implementations **should** use any information present in the {@link GPUShaderModuleCompilationHint} * to perform as much compilation as is possible within {@link GPUDevice#createShaderModule}. - * Entry point names follow the rules defined in WGSL identifier comparison. - * Note: Supplying information in {@link GPUShaderModuleDescriptor#hints} does not have any - * observable effect, other than performance. Because a single shader module can hold + * Aside from type-checking, these hints are not validated in any way. + *
+ * Supplying information in {@link GPUShaderModuleDescriptor#compilationHints} does not have any + * observable effect, other than performance. It may be detrimental to performance to + * provide hints for pipelines that never end up being created. + * Because a single shader module can hold * multiple entry points, and multiple pipelines can be created from a single shader * module, it can be more performant for an implementation to do as much compilation as * possible once in {@link GPUDevice#createShaderModule} rather than multiple times in - * the multiple calls to {@link GPUDevice#createComputePipeline} / + * the multiple calls to {@link GPUDevice#createComputePipeline} or * {@link GPUDevice#createRenderPipeline}. + *
+ * Note: + * Hints are not validated in an observable way, but user agents **may** surface identifiable + * errors (like unknown entry point names or incompatible pipeline layouts) to developers, + * for example in the browser developer console. */ - hints?: Record< - string, - GPUShaderModuleCompilationHint - >; + compilationHints?: Array; } interface GPUStencilFaceState { @@ -1413,9 +1291,6 @@ interface GPUStencilFaceState { interface GPUStorageTextureBindingLayout { /** * The access mode for this binding, indicating readability and writability. - * Note: - * There is currently only one access mode, {@link GPUStorageTextureAccess#"write-only"}, - * but this will expand in the future. */ access?: GPUStorageTextureAccess; /** @@ -1476,8 +1351,7 @@ interface GPUTextureDescriptor * Specifies what view {@link GPUTextureViewDescriptor#format} values will be allowed when calling * {@link GPUTexture#createView} on this texture (in addition to the texture's actual * {@link GPUTextureDescriptor#format}). - *
- * Note: + *
* Adding a format to this list may have a significant performance impact, so it is best * to avoid adding formats unnecessarily. * The actual performance impact is highly dependent on the target system; developers must @@ -2051,17 +1925,6 @@ interface GPUCommandEncoder offset?: GPUSize64, size?: GPUSize64 ): undefined; - /** - * Writes a timestamp value into a querySet when all previous commands have completed executing. - * Note: Timestamp query values are written in nanoseconds, but how the value is determined is - * implementation-defined and may not increase monotonically. See [[#timestamp]] for details. - * @param querySet - The query set that will store the timestamp values. - * @param queryIndex - The index of the query in the query set. - */ - writeTimestamp( - querySet: GPUQuerySet, - queryIndex: GPUSize32 - ): undefined; /** * Resolves query results from a {@link GPUQuerySet} out into a range of a {@link GPUBuffer}. * querySet: @@ -2116,7 +1979,7 @@ interface GPUCompilationMessage { * Note: The {@link GPUCompilationMessage#message} should follow the best practices for language * and direction information. This includes making use of any future standards which may * emerge regarding the reporting of string language and direction metadata. - *

Editorial: + *

Editorial note: * At the time of this writing, no language/direction recommendation is available that provides * compatibility and consistency with legacy APIs, but when there is, adopt it formally. */ @@ -2436,7 +2299,7 @@ interface GPUError { * Note: The {@link GPUError#message} should follow the best practices for language and * direction information. This includes making use of any future standards which may emerge * regarding the reporting of string language and direction metadata. - *

Editorial: + *

Editorial note: * At the time of this writing, no language/direction recommendation is available that provides * compatibility and consistency with legacy APIs, but when there is, adopt it formally. */ diff --git a/gpuweb b/gpuweb index be0515f3..56a0db16 160000 --- a/gpuweb +++ b/gpuweb @@ -1 +1 @@ -Subproject commit be0515f355e1ba9cf2f3c79f4c03d9eced802948 +Subproject commit 56a0db1669c7e4fe1d45e476e7800e4953f04bf9