-
Notifications
You must be signed in to change notification settings - Fork 304
Table of Contents
Dzmitry Malyshau edited this page Feb 21, 2021
·
15 revisions
This page aims to track the big picture of what sections the specification is missing.
A bullet is a section header (appears in the spec's table of contents).
A .
is an item that should appear in the section body.
- Introduction
. basic description - Security Considerations
- CPU-Based Undefined Behavior
- GPU-Based Undefined Behavior
- Out-of-Bounds Access in Shaders
- Invalid Data
- Driver Bugs
- Timing Attacks
- Denial of Service
- Fingerprinting
- (anything missing?)
- Fundamentals
- Conventions
- Dot Syntax
- Internal Objects
- WebGPU Interfaces
- Object Descriptors
- Invalid Internal Objects & Contagious Invalidity
- Coordinate Systems
. (just an overview; details are throughout the spec) - Fixed-point data conversions (see Vulkan for example) - coordinate with WGSL
- Programming Model
- Timelines
. describes the kinds of timelines we have in the programming model - Memory Model
. describes the major types of memory WebGPU operates on under the hood and what guarantees we provide on their state - Multi-Threading
- Resource Usages
- Synchronization
- Timelines
- Core Internal Objects
- Adapters
. prose: adapter
. internal object definition: adapter - Devices
. prose: device
. internal object definition: device
- Adapters
- Optional Capabilities
- Limits
. describe limits mechanism, not actual limits - Features
. describe extension mechanism, not actual features
- Limits
- Conventions
- Initialization
. prose describing initialization
. high-level explanation of limits and extensions- Examples
- navigator.gpu
- GPU (interface)
- requestAdapter
- GPUAdapter
- requestDevice
- GPUDeviceDescriptor
- requestDevice
- GPUDevice
- GPUExtensionName
. (shouldn’t provide definitions for the extension names, those should be in the Extensions section at the bottom) - GPULimits
. list and describe limits
- Queues
. internal object definition: queue
. GPUQueue
. device.defaultQueue- Queue Operations
- submit()
- writeBuffer()
- writeTexture()
- copyImageBitmapToTexture()
. GPUImageBitmapCopyView - onSubmittedWorkDone()
- Queue Operations
- Resources
- Buffers
. prose: buffers
. internal object definition: buffer
. internal object definition: content-timeline buffer state tracker
. GPUBuffer- Creation
. createBuffer()
. GPUBufferDescriptor- Buffer Usage Flags
- Destruction
. destroy() - Mapping
. mapAsync()
. getMappedRange()
. unmap()
- Creation
- Textures
. prose: textures and their uses, with reference to texture views
. internal object definition: texture
. GPUTexture- Creation
. createTexture()
. GPUTextureDescriptor- Texture Usage Flags
- Destruction
. destroy()
- Creation
- Texture Views
. prose: describe texture views and their uses
. internal object definition: texture view
. GPUTextureView- Creation
. createView()
. GPUTextureViewDescriptor
- Creation
- Samplers
. internal object definition: sampler
. GPUSampler- Creation
. createSampler()
. GPUSamplerDescriptor et al
- Creation
- Resource Binding
- Bind Group Layouts
. internal object definition: bind group layout
. GPUBindGroupLayout- Creation
. createBindGroupLayout()
. GPUBindGroupLayoutDescriptor et al
- Creation
- Bind Groups
. internal object definition: bind group
. GPUBindGroup- Creation
. createBindGroup()
. GPUBindGroupDescriptor et al
- Creation
- Bind Group Layouts
- Buffers
- Pipelines & Programmability
- Pipelines
- Pipeline Layouts
. internal object definition: pipeline layout
. GPUPipelineLayout- Creation
. createPipelineLayout()
. GPUPipelineLayoutDescriptor
- Creation
- Pipeline Creation
. prose: common descriptors for render and compute- GPUPipelineDescriptorBase
- GPUProgrammableStageDescriptor
- Pipeline Layouts
- Compute Pipelines
. internal object definition: compute pipeline
. GPUComputePipeline- Creation
. createComputePipeline()
. GPUComputePipelineDescriptor - Compute Shaders
- Creation
- Render Pipelines
. internal object definition: render pipeline
. GPURenderPipeline- Creation
. createRenderPipeline()
. GPURenderPipelineDescriptor - Stages
- Vertex Fetch
. vertexState - Vertex Shader
. vertexStage - Primitive Assembly
. primitiveTopology - Rasterization
. rasterizationState - Fragment Shader
. fragmentStage - Stencil & Depth
. depthStencilState - Color State
. colorStates
- Vertex Fetch
- Creation
- Shaders
. prose: about WGSL- Security
. describe what we do in order to execute shaders securely - Shader Modules
. internal object definition: shader module
. GPUShaderModule- Creation
. createShaderModule()
. GPUShaderModuleDescriptor
- Creation
- Security
- Pipelines
- Command Buffers & Encoding
- Command Buffers
. prose: command buffers and how encoding works- Command Buffers
. internal object definition: command buffer
. GPUCommandBuffer
. finish()
. GPUCommandBufferDescriptor - Command Encoders
. (no internal)
. GPUCommandEncoder
. createCommandEncoder()
. GPUCommandEncoderDescriptor - Non-Pass Commands
. prose: see Non-Pass Commands - Programmable Passes
. prose: ...
. GPUProgrammablePassEncoder
- Command Buffers
- Compute Passes
. prose: compute pass encoding
. (no internal)
. GPUComputePassEncoder- Beginning Compute Passes
. beginComputePass()
. GPUComputePassDescriptor - Commands
. prose: see Compute Commands - Ending Compute Passes
. endPass()
- Beginning Compute Passes
- Render Passes
. prose: render pass encoding
. (no internal)
. GPURenderPassEncoder- Beginning Render Passes
. beginRenderPass()
. GPURenderPassDescriptor- Color Attachments
- Depth/Stencil Attachments
- Load & Store Operations
- Commands
. prose: see Render Pass Commands and Render Commands - Ending Render Passes
. endPass()
- Beginning Render Passes
- Render Bundles
. prose: render bundle encoding
. internal object definition: render bundle
. GPURenderBundle- Encoding Render Bundles
. createRenderBundleEncoder()
. GPURenderBundleEncoderDescriptor - Commands
. prose: see Render Commands
- Encoding Render Bundles
- Commands
- Non-Pass Commands: Copy
- GPUTextureDataLayout
- GPUBufferCopyView
- GPUTextureCopyView
- copyBufferToBuffer()
- copyBufferToTexture()
- copyTextureToBuffer()
- copyTextureToTexture()
- Non-Pass Commands: Debug
- pushDebugGroup()
- popDebugGroup()
- insertDebugMarker()
- Programmable Pass Commands
- pushDebugGroup()
- popDebugGroup()
- insertDebugMarker()
- setBindGroup()
- Compute Pass Commands
- setPipeline()
- dispatch()
- dispatchIndirect()
- Render Pass Commands
- setViewport()
- setScissorRect()
- setBlendColor()
- setStencilReference()
- executeBundles()
- Render Commands
. GPURenderEncoderBase- setPipeline()
- setIndexBuffer()
- setVertexBuffer()
- draw()
- drawIndexed()
- drawIndirect()
- drawIndexedIndirect()
- Non-Pass Commands: Copy
- Command Buffers
- Image operations (see Vulkan for example)
- Texel Input Operations - https://github.com/gpuweb/gpuweb/issues/1116
- Texel Output Operations
- Texel Coordinates
. (normalized/integer)
- Rasterization (see Vulkan)
- Rasterization Order
- Multisampling
- Barycentric Interpolation
- Line Segments
- Triangles
- Fragment Operations (see Vulkan)
- Framebuffer
- Blending
- Device-Generated Commands (see Vulkan)
- Canvas Rendering & Swap Chains
- Canvas Context
. GPUCanvasContext
. getSwapChainPreferredFormat()- Creation
. prose: canvas.getContext()
- Creation
- Swap Chains
. GPUSwapChain- Creation
. configureSwapChain()
. GPUSwapChainDescriptor
- Creation
- Canvas Context
- Errors & Debugging
- Fatal Errors
. GPUDevice.lost
. GPUDeviceLostInfo - Error Scopes
. GPUDevice.pushErrorScope()
. GPUErrorFilter
. GPUDevice.popErrorScope()
. GPUError/GPUOutOfMemoryError/GPUValidationError - Telemetry
. GPUDevice.onuncaptureerror
. GPUUncapturedErrorEvent
. GPUUncapturedErrorEventInit
- Fatal Errors
- Features
- Short section for each extension (most extension text should be inline)
. define GPUFeatureName enum member
. point to parts added to the rest of the spec
- Short section for each extension (most extension text should be inline)
- Type Definitions
. numeric types- Colors & Vectors
. GPUOrigin2D
. GPUOrigin3D
. GPUExtent3D
- Colors & Vectors
- Data Formats
- Vertex Formats
. bit layouts
. required extensions - Texture Formats
. bit layouts - Texture format capabilities
. required extensions for different capabilities
- Vertex Formats