#include <context_mtl.h>
Public Member Functions | |
| ~ContextMTL () override | |
| BackendType | GetBackendType () const override |
| Get the graphics backend of an Impeller context. More... | |
| id< MTLDevice > | GetMTLDevice () const |
| std::string | DescribeGpuModel () const override |
| bool | IsValid () const override |
| Determines if a context is valid. If the caller ever receives an invalid context, they must discard it and construct a new context. There is no recovery mechanism to repair a bad context. More... | |
| std::shared_ptr< Allocator > | GetResourceAllocator () const override |
| Returns the allocator used to create textures and buffers on the device. More... | |
| std::shared_ptr< ShaderLibrary > | GetShaderLibrary () const override |
| Returns the library of shaders used to specify the programmable stages of a pipeline. More... | |
| std::shared_ptr< SamplerLibrary > | GetSamplerLibrary () const override |
| Returns the library of combined image samplers used in shaders. More... | |
| std::shared_ptr< PipelineLibrary > | GetPipelineLibrary () const override |
| Returns the library of pipelines used by render or compute commands. More... | |
| std::shared_ptr< CommandBuffer > | CreateCommandBuffer () const override |
| Create a new command buffer. Command buffers can be used to encode graphics, blit, or compute commands to be submitted to the device. More... | |
| const std::shared_ptr< const Capabilities > & | GetCapabilities () const override |
Get the capabilities of Impeller context. All optionally supported feature of the platform, client-rendering API, and device can be queried using the Capabilities. More... | |
| bool | UpdateOffscreenLayerPixelFormat (PixelFormat format) override |
| void | Shutdown () override |
| Force all pending asynchronous work to finish. This is achieved by deleting all owned concurrent message loops. More... | |
| id< MTLCommandBuffer > | CreateMTLCommandBuffer (const std::string &label) const |
| const std::shared_ptr< fml::ConcurrentTaskRunner > | GetWorkerTaskRunner () const |
| std::shared_ptr< const fml::SyncSwitch > | GetIsGpuDisabledSyncSwitch () const |
Public Member Functions inherited from impeller::Context | |
| virtual | ~Context () |
| Destroys an Impeller context. More... | |
| virtual void | SetSyncPresentation (bool value) |
| Force the Vulkan presentation (submitKHR) to be performed on the raster task runner. More... | |
| Pool< HostBuffer > & | GetHostBufferPool () const |
| Accessor for a pool of HostBuffers. More... | |
Static Public Member Functions | |
| static std::shared_ptr< ContextMTL > | Create (const std::vector< std::string > &shader_library_paths, std::shared_ptr< const fml::SyncSwitch > is_gpu_disabled_sync_switch) |
| static std::shared_ptr< ContextMTL > | Create (const std::vector< std::shared_ptr< fml::Mapping >> &shader_libraries_data, std::shared_ptr< const fml::SyncSwitch > is_gpu_disabled_sync_switch, const std::string &label) |
| static std::shared_ptr< ContextMTL > | Create (id< MTLDevice > device, id< MTLCommandQueue > command_queue, const std::vector< std::shared_ptr< fml::Mapping >> &shader_libraries_data, std::shared_ptr< const fml::SyncSwitch > is_gpu_disabled_sync_switch, const std::string &label) |
Static Public Member Functions inherited from impeller::BackendCast< ContextMTL, Context > | |
| static ContextMTL & | Cast (Context &base) |
| static const ContextMTL & | Cast (const Context &base) |
| static ContextMTL * | Cast (Context *base) |
| static const ContextMTL * | Cast (const Context *base) |
Additional Inherited Members | |
Public Types inherited from impeller::Context | |
| enum | BackendType { BackendType::kMetal, BackendType::kOpenGLES, BackendType::kVulkan } |
Public Attributes inherited from impeller::Context | |
| CaptureContext | capture |
Protected Member Functions inherited from impeller::Context | |
| Context () | |
Definition at line 32 of file context_mtl.h.
|
overridedefault |
|
static |
Definition at line 248 of file context_mtl.mm.
References impeller::CreateMetalCommandQueue(), impeller::CreateMetalDevice(), and impeller::MTLShaderLibraryFromFileData().
|
static |
Definition at line 229 of file context_mtl.mm.
References impeller::CreateMetalCommandQueue(), impeller::CreateMetalDevice(), and impeller::MTLShaderLibraryFromFilePaths().
Referenced by impeller::PlaygroundImplMTL::PlaygroundImplMTL().
|
static |
|
overridevirtual |
Create a new command buffer. Command buffers can be used to encode graphics, blit, or compute commands to be submitted to the device.
A command buffer can only be used on a single thread. Multi-threaded render, blit, or compute passes must create a new command buffer on each thread.
Implements impeller::Context.
Definition at line 319 of file context_mtl.mm.
| id< MTLCommandBuffer > impeller::ContextMTL::CreateMTLCommandBuffer | ( | const std::string & | label | ) | const |
|
overridevirtual |
Implements impeller::Context.
Definition at line 294 of file context_mtl.mm.
|
overridevirtual |
Get the graphics backend of an Impeller context.
This is useful for cases where a renderer needs to track and
lookup backend-specific resources, like shaders or uniform
layout information.
It's not recommended to use this as a substitute for
per-backend capability checking. Instead, check for specific
capabilities via `GetCapabilities()`.
Context. Implements impeller::Context.
Definition at line 289 of file context_mtl.mm.
|
overridevirtual |
Get the capabilities of Impeller context. All optionally supported feature of the platform, client-rendering API, and device can be queried using the Capabilities.
nullptr for a valid context. Implements impeller::Context.
Definition at line 360 of file context_mtl.mm.
| std::shared_ptr< const fml::SyncSwitch > impeller::ContextMTL::GetIsGpuDisabledSyncSwitch | ( | ) | const |
Definition at line 333 of file context_mtl.mm.
| id< MTLDevice > impeller::ContextMTL::GetMTLDevice | ( | ) | const |
Definition at line 356 of file context_mtl.mm.
Referenced by impeller::PlaygroundImplMTL::PlaygroundImplMTL().
|
overridevirtual |
Returns the library of pipelines used by render or compute commands.
nullptr for a valid context. Implements impeller::Context.
Definition at line 309 of file context_mtl.mm.
|
overridevirtual |
Returns the allocator used to create textures and buffers on the device.
nullptr for a valid context. Implements impeller::Context.
Definition at line 352 of file context_mtl.mm.
|
overridevirtual |
Returns the library of combined image samplers used in shaders.
nullptr for a valid context. Implements impeller::Context.
Definition at line 314 of file context_mtl.mm.
|
overridevirtual |
Returns the library of shaders used to specify the programmable stages of a pipeline.
nullptr for a valid context. Implements impeller::Context.
Definition at line 304 of file context_mtl.mm.
| const std::shared_ptr< fml::ConcurrentTaskRunner > impeller::ContextMTL::GetWorkerTaskRunner | ( | ) | const |
Definition at line 329 of file context_mtl.mm.
|
overridevirtual |
Determines if a context is valid. If the caller ever receives an invalid context, they must discard it and construct a new context. There is no recovery mechanism to repair a bad context.
It is convention in Impeller to never return an invalid context from a call that returns an pointer to a context. The call implementation performs validity checks itself and return a null context instead of a pointer to an invalid context.
How a context goes invalid is backend specific. It could happen due to device loss, or any other unrecoverable error.
Implements impeller::Context.
Definition at line 299 of file context_mtl.mm.
|
overridevirtual |
Force all pending asynchronous work to finish. This is achieved by deleting all owned concurrent message loops.
Implements impeller::Context.
Definition at line 324 of file context_mtl.mm.
|
overridevirtual |
Reimplemented from impeller::Context.
Definition at line 365 of file context_mtl.mm.
References impeller::InferMetalCapabilities().