Commit fc5ad208 authored by Jinho Bang's avatar Jinho Bang Committed by Commit Bot

WebGPU: Add GPUProgrammablePassEncoder interface

This is a spec match-up with[1]

[1] https://github.com/gpuweb/gpuweb/pull/459

Bug: 877147
Change-Id: I080324cbb083160ae84aa109623e311f24a875cb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1845132Reviewed-by: default avatarCorentin Wallez <cwallez@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Jinho Bang <jinho.bang@samsung.com>
Cr-Commit-Position: refs/heads/master@{#704061}
parent b0be4dc6
......@@ -1015,6 +1015,8 @@ modules_dependency_idl_files =
"webdatabase/window_web_database.idl",
"webgl/webgl2_rendering_context_base.idl",
"webgl/webgl_rendering_context_base.idl",
"webgpu/gpu_programmable_pass_encoder.idl",
"webgpu/gpu_render_encoder_base.idl",
"webgpu/navigator_gpu.idl",
"webmidi/navigator_web_midi.idl",
"webshare/navigator_share.idl",
......
......@@ -7,16 +7,7 @@
[
RuntimeEnabled=WebGPU
] interface GPUComputePassEncoder {
// GPUProgrammablePassEncoder methods
void setBindGroup(unsigned long index,
GPUBindGroup bindGroup,
optional sequence<GPUBufferSize> dynamicOffsets = []);
void pushDebugGroup(DOMString groupLabel);
void popDebugGroup();
void insertDebugMarker(DOMString markerLabel);
void setPipeline(GPUComputePipeline pipeline);
void dispatch(unsigned long x,
optional unsigned long y = 1,
optional unsigned long z = 1);
......@@ -25,3 +16,4 @@
void endPass();
};
GPUComputePassEncoder includes GPUProgrammablePassEncoder;
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://gpuweb.github.io/gpuweb/
[
RuntimeEnabled=WebGPU
] interface mixin GPUProgrammablePassEncoder {
void setBindGroup(unsigned long index, GPUBindGroup bindGroup,
optional sequence<GPUBufferSize> dynamicOffsets = []);
void pushDebugGroup(DOMString groupLabel);
void popDebugGroup();
void insertDebugMarker(DOMString markerLabel);
};
......@@ -7,32 +7,6 @@
[
RuntimeEnabled=WebGPU
] interface GPURenderBundleEncoder {
// GPUProgrammablePassEncoder methods
void setBindGroup(unsigned long index,
GPUBindGroup bindGroup,
optional sequence<GPUBufferSize> dynamicOffsets = []);
void pushDebugGroup(DOMString groupLabel);
void popDebugGroup();
void insertDebugMarker(DOMString markerLabel);
// GPURenderEncoderBase methods
void setPipeline(GPURenderPipeline pipeline);
void setIndexBuffer(GPUBuffer buffer, optional GPUBufferSize offset = 0);
[RaisesException] void setVertexBuffers(unsigned long startSlot,
sequence<GPUBuffer> buffers,
sequence<GPUBufferSize> offsets);
void draw(unsigned long vertexCount, unsigned long instanceCount,
unsigned long firstVertex,
unsigned long firstInstance);
void drawIndexed(unsigned long indexCount, unsigned long instanceCount,
unsigned long firstIndex,
long baseVertex,
unsigned long firstInstance);
void drawIndirect(GPUBuffer indirectBuffer,
GPUBufferSize indirectOffset);
void drawIndexedIndirect(GPUBuffer indirectBuffer,
GPUBufferSize indirectOffset);
// GPURenderBundleEncoder methods
GPURenderBundle finish(optional GPURenderBundleDescriptor descriptor = {});
};
GPURenderBundleEncoder includes GPURenderEncoderBase;
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://gpuweb.github.io/gpuweb/
[
RuntimeEnabled=WebGPU
] interface mixin GPURenderEncoderBase {
void setPipeline(GPURenderPipeline pipeline);
void setIndexBuffer(GPUBuffer buffer, optional GPUBufferSize offset = 0);
[RaisesException] void setVertexBuffers(unsigned long startSlot,
sequence<GPUBuffer> buffers,
sequence<GPUBufferSize> offsets);
void draw(unsigned long vertexCount, unsigned long instanceCount,
unsigned long firstVertex,
unsigned long firstInstance);
void drawIndexed(unsigned long indexCount, unsigned long instanceCount,
unsigned long firstIndex,
long baseVertex,
unsigned long firstInstance);
void drawIndirect(GPUBuffer indirectBuffer,
GPUBufferSize indirectOffset);
void drawIndexedIndirect(GPUBuffer indirectBuffer,
GPUBufferSize indirectOffset);
};
GPURenderEncoderBase includes GPUProgrammablePassEncoder;
......@@ -7,39 +7,17 @@
[
RuntimeEnabled=WebGPU
] interface GPURenderPassEncoder {
// GPUProgrammablePassEncoder methods
void setBindGroup(unsigned long index,
GPUBindGroup bindGroup,
optional sequence<GPUBufferSize> dynamicOffsets = []);
void pushDebugGroup(DOMString groupLabel);
void popDebugGroup();
void insertDebugMarker(DOMString markerLabel);
void setPipeline(GPURenderPipeline pipeline);
[RaisesException] void setBlendColor(GPUColor color);
void setStencilReference(unsigned long reference);
void setViewport(float x, float y,
float width, float height,
float minDepth, float maxDepth);
void setScissorRect(unsigned long x, unsigned long y,
unsigned long width, unsigned long height);
void setIndexBuffer(GPUBuffer buffer, optional GPUBufferSize offset = 0);
[RaisesException] void setVertexBuffers(unsigned long startSlot,
sequence<GPUBuffer> buffers,
sequence<GPUBufferSize> offsets);
void draw(unsigned long vertexCount, unsigned long instanceCount,
unsigned long firstVertex,
unsigned long firstInstance);
void drawIndexed(unsigned long indexCount, unsigned long instanceCount,
unsigned long firstIndex,
long baseVertex,
unsigned long firstInstance);
void drawIndirect(GPUBuffer indirectBuffer,
GPUBufferSize indirectOffset);
void drawIndexedIndirect(GPUBuffer indirectBuffer,
GPUBufferSize indirectOffset);
[RaisesException] void setBlendColor(GPUColor color);
void setStencilReference(unsigned long reference);
void executeBundles(sequence<GPURenderBundle> bundles);
void endPass();
};
GPURenderPassEncoder includes GPURenderEncoderBase;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment