Skip to content

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
    • Core Internal Objects
      • Adapters
        . prose: adapter
        . internal object definition: adapter
      • Devices
        . prose: device
        . internal object definition: device
    • Optional Capabilities
      • Limits
        . describe limits mechanism, not actual limits
      • Features
        . describe extension mechanism, not actual features
  • Initialization
    . prose describing initialization
    . high-level explanation of limits and extensions
    • Examples
    • navigator.gpu
    • GPU (interface)
      • requestAdapter
    • GPUAdapter
      • requestDevice
        • GPUDeviceDescriptor
    • 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()
  • 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()
    • Textures
      . prose: textures and their uses, with reference to texture views
      . internal object definition: texture
      . GPUTexture
      • Creation
        . createTexture()
        . GPUTextureDescriptor
        • Texture Usage Flags
      • Destruction
        . destroy()
    • Texture Views
      . prose: describe texture views and their uses
      . internal object definition: texture view
      . GPUTextureView
      • Creation
        . createView()
        . GPUTextureViewDescriptor
    • Samplers
      . internal object definition: sampler
      . GPUSampler
      • Creation
        . createSampler()
        . GPUSamplerDescriptor et al
    • Resource Binding
      • Bind Group Layouts
        . internal object definition: bind group layout
        . GPUBindGroupLayout
        • Creation
          . createBindGroupLayout()
          . GPUBindGroupLayoutDescriptor et al
      • Bind Groups
        . internal object definition: bind group
        . GPUBindGroup
        • Creation
          . createBindGroup()
          . GPUBindGroupDescriptor et al
  • Pipelines & Programmability
    • Pipelines
      • Pipeline Layouts
        . internal object definition: pipeline layout
        . GPUPipelineLayout
        • Creation
          . createPipelineLayout()
          . GPUPipelineLayoutDescriptor
      • Pipeline Creation
        . prose: common descriptors for render and compute
        • GPUPipelineDescriptorBase
        • GPUProgrammableStageDescriptor
    • Compute Pipelines
      . internal object definition: compute pipeline
      . GPUComputePipeline
      • Creation
        . createComputePipeline()
        . GPUComputePipelineDescriptor
      • Compute Shaders
    • 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
    • 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
  • 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
    • Compute Passes
      . prose: compute pass encoding
      . (no internal)
      . GPUComputePassEncoder
      • Beginning Compute Passes
        . beginComputePass()
        . GPUComputePassDescriptor
      • Commands
        . prose: see Compute Commands
      • Ending Compute Passes
        . endPass()
    • 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()
    • Render Bundles
      . prose: render bundle encoding
      . internal object definition: render bundle
      . GPURenderBundle
      • Encoding Render Bundles
        . createRenderBundleEncoder()
        . GPURenderBundleEncoderDescriptor
      • Commands
        . prose: see Render Commands
    • 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()
  • Image operations (see Vulkan for example)
  • 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()
    • Swap Chains
      . GPUSwapChain
      • Creation
        . configureSwapChain()
        . GPUSwapChainDescriptor
  • Errors & Debugging
    • Fatal Errors
      . GPUDevice.lost
      . GPUDeviceLostInfo
    • Error Scopes
      . GPUDevice.pushErrorScope()
      . GPUErrorFilter
      . GPUDevice.popErrorScope()
      . GPUError/GPUOutOfMemoryError/GPUValidationError
    • Telemetry
      . GPUDevice.onuncaptureerror
      . GPUUncapturedErrorEvent
      . GPUUncapturedErrorEventInit
  • 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
  • Type Definitions
    . numeric types
    • Colors & Vectors
      . GPUOrigin2D
      . GPUOrigin3D
      . GPUExtent3D
  • Data Formats
    • Vertex Formats
      . bit layouts
      . required extensions
    • Texture Formats
      . bit layouts
    • Texture format capabilities
      . required extensions for different capabilities
Clone this wiki locally