这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 34 additions & 13 deletions spec/index.bs
Original file line number Diff line number Diff line change
Expand Up @@ -621,8 +621,6 @@ Command Recording {#command-recording}

<script type=idl>
interface GPUProgrammablePassEncoder : GPUObjectBase {
void endPass();

// Allowed in both compute and render passes
void setBindGroup(u32 index, GPUBindGroup bindGroup, optional sequence<u64> dynamicOffsets);

Expand All @@ -632,17 +630,8 @@ interface GPUProgrammablePassEncoder : GPUObjectBase {
void insertDebugMarker(DOMString markerLabel);
};

interface GPURenderPassEncoder : GPUProgrammablePassEncoder {
interface GPURenderEncoderBase : GPUProgrammablePassEncoder {
void setPipeline(GPURenderPipeline pipeline);
void setBlendColor(GPUColor color);
void setStencilReference(u32 reference);

// The default viewport is (0.0, 0.0, w, h, 0.0, 1.0), where w and h are the dimensions of back buffer
void setViewport(float x, float y, float width, float height, float minDepth, float maxDepth);

// The default scissor rectangle is (0, 0, w, h), where w and h are the dimensions of back buffer.
// Width and height must be greater than 0. Otherwise, an error will be generated.
void setScissorRect(u32 x, u32 y, u32 width, u32 height);

void setIndexBuffer(GPUBuffer buffer, u64 offset);
void setVertexBuffers(u32 startSlot, sequence<GPUBuffer> buffers, sequence<u64> offsets);
Expand All @@ -653,15 +642,46 @@ interface GPURenderPassEncoder : GPUProgrammablePassEncoder {
// Base instance must be set to zero inside the indirect buffer
void drawIndirect(GPUBuffer indirectBuffer, u64 indirectOffset);
void drawIndexedIndirect(GPUBuffer indirectBuffer, u64 indirectOffset);
};

// TODO add missing commands
interface GPURenderPassEncoder : GPURenderEncoderBase {
// The default viewport is (0.0, 0.0, w, h, 0.0, 1.0), where w and h are the dimensions of back buffer
void setViewport(float x, float y, float width, float height, float minDepth, float maxDepth);

// The default scissor rectangle is (0, 0, w, h), where w and h are the dimensions of back buffer.
// Width and height must be greater than 0. Otherwise, an error will be generated.
void setScissorRect(u32 x, u32 y, u32 width, u32 height);

void setBlendColor(GPUColor color);
void setStencilReference(u32 reference);

void executeBundles(sequence<GPURenderBundle> bundles);
void endPass();
};

dictionary GPURenderBundleDescriptor : GPUObjectDescriptorBase {
};

interface GPURenderBundle : GPUObjectBase {
};

interface GPURenderBundleEncoder : GPURenderEncoderBase {
GPURenderBundle finish(optional GPURenderBundleDescriptor descriptor);
};

dictionary GPURenderBundleEncoderDescriptor : GPUObjectDescriptorBase {
required sequence<GPUTextureFormat> colorFormats;
GPUTextureFormat? depthStencilFormat;
u32 sampleCount = 1;
};

interface GPUComputePassEncoder : GPUProgrammablePassEncoder {
void setPipeline(GPUComputePipeline pipeline);
void dispatch(u32 x, optional u32 y = 1, optional u32 z = 1);
void dispatchIndirect(GPUBuffer indirectBuffer, u64 indirectOffset);

void endPass();

// TODO add missing commands
};

Expand Down Expand Up @@ -858,6 +878,7 @@ interface GPUDevice : EventTarget {
GPURenderPipeline createRenderPipeline(GPURenderPipelineDescriptor descriptor);

GPUCommandEncoder createCommandEncoder(optional GPUCommandEncoderDescriptor descriptor);
GPURenderBundleEncoder createRenderBundleEncoder(GPURenderBundleEncoderDescriptor descriptor);

GPUQueue getQueue();
};
Expand Down