# Package icyllis.arc3d.engine

package icyllis.arc3d.engine
Engine package provides the common part of Arc3D rendering pipeline and the abstraction layer for different 3D graphics APIs.

- Related Packages
  Package
  Description
  icyllis.arc3d.engine.task
  icyllis.arc3d.engine.tessellate
  icyllis.arc3d.engine.trash
- Class
  Description
  BackendFormat
  Deprecated.
  BackendImage
  Descriptor of 3D API image/texture that can be shared between recording contexts, OpenGL shared contexts and cross-API usage, including its dimension, image view type, and memory allocation.
  BackendRenderTarget
  Deprecated.
  BackendSemaphore
  BaseContextOptions
  BlendInfo
  BlendInfo is an immutable object holding info for setting-up GPU blend states.
  Buffer
  Represents a single device-visible memory region that may be used as mesh buffers and staging buffers.
  Buffer.ResourceKey
  BufferImageCopyData
  Specifies a single region for copying, either from buffer to image, or vice versa
  BufferViewInfo
  Struct that can be passed into bind buffer calls on the `CommandBuffer`.
  Caps
  Represents the capabilities of a 3D API Context.
  Caps.BlendEquationSupport
  Indicates the capabilities of the fixed function blend unit.
  CommandBuffer
  Backend-specific command buffer, executing thread only.
  ComputePipeline
  Pipeline state object used for compute.
  Context
  This class is a public API, except where noted.
  ContextOptions
  Holds the options for creating a `ImmediateContext`, all fields should remain unchanged after creating the context.
  CpuBuffer
  A client-side buffer represents an immutable block of native CPU memory.
  DataUtils
  DepthStencilSettings
  This class defines concrete depth and stencil settings that map directly to the underlying 3D API.
  DepthStencilSettings.Face
  Per-face stencil settings.
  Device
  The `Device` represents a logical GPU device and provides shared context info of the backend 3D API.
  Device.Stats
  DrawableInfo
  DriverBugWorkarounds
  Engine
  Shared constants, enums and utilities for Arc3D Engine.
  Engine.BackendApi
  Possible 3D APIs that may be used by Arc3D Engine.
  Engine.BudgetType
  Budget types.
  Engine.BufferUsageFlags
  Describes the intended usage (type + access) a GPU buffer.
  Engine.DepthStencilFlags
  Indicates whether depth buffer or stencil buffer or both will be used.
  Engine.GLBackendState
  A Context's cache of backend context state can be partially invalidated.
  Engine.ImageCreateFlags
  Engine.ImageType
  Describes image view type.
  Engine.IndexType
  Types used to describe format of indices in arrays.
  Engine.IOType
  Indicates the type of pending IO operations that can be recorded for GPU resources.
  Engine.LoadOp
  Load ops.
  Engine.LoadStoreOps
  Combination of load ops and store ops.
  Engine.PrimitiveType
  Geometric primitives used for drawing.
  Engine.ShaderFlags
  Shader stage flags.
  Engine.StoreOp
  Store ops.
  Engine.SurfaceOrigin
  Image and Surfaces can be stored such that (0, 0) in texture space may correspond to either the upper-left or lower-left content pixel.
  Engine.VertexAttribType
  Types used to describe format of vertices in arrays.
  FlushInfo
  Struct to supply options to flush calls.
  FlushInfo.FinishedCallback
  FlushInfo.SubmittedCallback
  Framebuffer
  FramebufferCache
  FramebufferDesc
  Descriptor to create a framebuffer.
  FramebufferDesc.ColorAttachmentDesc
  FramebufferDesc.DepthStencilAttachmentDesc
  GpuBufferPool
  Deprecated.
  GpuRenderTarget
  Deprecated.
  GpuRenderTarget.ResourceKey
  Scratch key of `GpuRenderTarget`.
  GpuSurface
  Deprecated.
  GraphicsPipeline
  Pipeline state object used for graphics.
  Image
  Represents GPU image resources, which may be 2D or 3D.
  Image.ResourceKey
  Storage key of `Image`, may be compared with `ImageViewProxy`.
  ImageDesc
  Contains backend-specific parameters used to create GPU images, which are: mip level count, sample count, image format, image view type, image create flags, image usage flags, width, height, depth, and array layer count.
  ImageMutableState
  Contains backend-specific mutable state of a GPU image.
  ImageProxyCache
  A factory for creating `SurfaceProxy`-derived objects.
  ImageProxyView
  Surface views contain additional metadata for pipeline operations on surfaces.
  ImageViewDesc
  Descriptor to create image views.
  ImageViewProxy
  The `ImageViewProxy` implements the proxy pattern for `Image`, it targets an `Image` with three instantiation methods: deferred, lazy-callback and wrapped.
  ImageViewProxy.LazyCallbackResult
  ImageViewProxy.LazyInstantiateCallback
  Lazy-callback function.
  ImmediateContext
  Immediate context is used for command list execution and queue submission.
  IResourceKey
  Marker interface for scratch resource keys.
  ISurface
  Defines Surface-hierarchy constants.
  IUniqueKey
  Marker interface for unique resource key, allows for exclusive use of a resource for a use case (AKA "domain").
  Key
  A key loaded with custom data (int array).
  KeyBuilder
  Used to build a packed array as the storage or lookup key of a hash map.
  LinkedListMultimap<K,V>
  Implementation of `Multimap` that uses an `LinkedList` to store the values for a given key.
  ManagedResource
  Base class for operating GPU resources that may be shared by multiple objects, in particular objects that are tracked by a command buffer.
  Mesh
  The interface used to receive geometry buffers from `MeshDrawTarget` for mesh-drawing operations.
  MeshDrawTarget
  Deprecated.
  OpFlushState
  Deprecated.
  OpsRenderPass
  Deprecated.
  PathUtils
  Tessellate paths.
  PipelineDesc
  Abstract class that provides key and full information about a graphics pipeline or a compute pipeline, except for render pass information.
  PipelineDesc.GraphicsPipelineInfo
  PipelineDesc.SamplerInfo
  PipelineDesc.UniformBlockInfo
  PipelineKey
  PriorityQueue<E>
  Similar to `PriorityQueue`, but supports `PriorityQueue.Access`.
  PriorityQueue.Access<E>
  This allows us to store the index into the element itself to improve the performance of inserting or removing elements.
  ProcessorAnalyzer
  QueueManager
  A `QueueManager` represents a GPU queue and manages a pool of command buffers in that queue.
  RecordingContext
  This class is a public API, except where noted.
  RecordingContextOptions
  RecycledResource
  The subclass that supports recycling.
  ReleaseCallback
  Ref-counted object that calls a callback from its destructor.
  RenderPassDesc
  Descriptor to create a render pass.
  RenderPassDesc.ColorAttachmentDesc
  RenderPassDesc.DepthStencilAttachmentDesc
  RenderTargetProxy
  Deferred, lazy-callback or wrapped a render target.
  RenderTask
  Deprecated.
  RenderTaskManager
  Deprecated.
  Resource
  Base class for operating GPU resources that can be kept in the `ResourceCache`.
  ResourceCache
  Manages the lifetime of all `Resource` instances.
  ResourceProvider
  Factory class used to obtain GPU resources with cache.
  Sampler
  Represents GPU sampler objects.
  SamplerDesc
  Represents the filtering and tile modes used to access a texture.
  ShaderCaps
  Shader capabilities for our pipeline builder.
  ShaderVar
  Represents a variable in a shader.
  SharedResourceCache
  Thread-safe class to get or create pipeline state objects (PSO) asynchronously.
  SharedResourceCache.Stats
  SurfaceAllocator
  The `SurfaceAllocator` explicitly distributes `GpuSurface` at flush time.
  SurfaceProxy
  The `SurfaceProxy` implements the proxy pattern for `GpuSurface`, it targets a `GpuSurface` with three instantiation methods: deferred, lazy-callback and wrapped.
  SurfaceProxy.LazyCallbackResult
  SurfaceProxy.LazyInstantiateCallback
  Lazy-callback function.
  SurfaceVisitor
  Swizzle
  Represents a color component mapping.
  TaskManager
  TextureResolveTask
  ThreadSafeCache
  TopologicalSort
  Provides a depth-first-search topological sort algorithm for simple directed acyclic graphs.
  TopologicalSort.Access<T>
  The node access.
  UniformDataManager
  Manages the resources used by a shader program.
  UploadBufferManager
  Allocates staging buffers to update GPU-only buffer and image sub resources.
  VertexInputLayout
  Describes the vertex input state of a graphics pipeline.
  VertexInputLayout.Attribute
  Describes a vertex or instance attribute.
  VertexInputLayout.AttributeSet
  A set of attributes that can iterated.