A task queue designed for managing compilation of pipeline state objects for Vulkan backend. More...
#include <pipeline_compile_queue_vulkan.h>
Public Member Functions | |
| ~PipelineCompileQueueVulkan () override | |
| PipelineCompileQueueVulkan (const PipelineCompileQueueVulkan &)=delete | |
| PipelineCompileQueueVulkan & | operator= (const PipelineCompileQueueVulkan &)=delete |
| void | PostJob (const fml::closure &job) override |
| Post a compilation job to the worker task runner. | |
| void | OnJobAdded () override |
| Called by PostJobForDescriptor after a job has been successfully added to the queue. Subclasses must implement this to define their scheduling strategy. | |
Public Member Functions inherited from impeller::PipelineCompileQueue | |
| PipelineCompileQueue ()=default | |
| virtual | ~PipelineCompileQueue () |
| PipelineCompileQueue (const PipelineCompileQueue &)=delete | |
| PipelineCompileQueue & | operator= (const PipelineCompileQueue &)=delete |
| bool | PostJobForDescriptor (const PipelineDescriptor &desc, const fml::closure &job) |
| Post a compile job for the specified descriptor. | |
| void | PerformJobEagerly (const PipelineDescriptor &desc) |
| If the task has not yet been done, perform it eagerly on the calling thread. This can be used in lieu of an idle wait for the task completion on the calling thread. | |
Static Public Member Functions | |
| static std::shared_ptr< PipelineCompileQueueVulkan > | Create (std::shared_ptr< fml::BasicTaskRunner > worker_task_runner) |
Additional Inherited Members | |
Protected Member Functions inherited from impeller::PipelineCompileQueue | |
| void | DoOneJob () |
| Execute one pending compilation job from the queue. | |
| bool | AddJob (const PipelineDescriptor &desc, const fml::closure &job) |
| Add a compilation job to the pending queue for the specified descriptor. | |
| bool | HasPendingJobs () |
| Check if there are any pending compilation jobs in the queue. | |
A task queue designed for managing compilation of pipeline state objects for Vulkan backend.
This subclass uses a fml::BasicTaskRunner as the worker task runner and dispatches compile jobs directly without sequential processing constraints.
Key characteristics:
The Vulkan backend benefits from the parallel nature of pipeline compilation, allowing multiple compile jobs to be processed concurrently through the task runner.
Definition at line 32 of file pipeline_compile_queue_vulkan.h.
|
overridedefault |
|
delete |
|
static |
Definition at line 12 of file pipeline_compile_queue_vulkan.cc.
Referenced by impeller::testing::TEST(), impeller::testing::TEST(), impeller::testing::TEST(), impeller::testing::TEST(), and impeller::testing::TEST().
|
overridevirtual |
Called by PostJobForDescriptor after a job has been successfully added to the queue. Subclasses must implement this to define their scheduling strategy.
The default implementation for duplicate descriptors is to run the job eagerly. Subclasses can override this behavior by checking for duplicates before calling the base class.
Implements impeller::PipelineCompileQueue.
Definition at line 28 of file pipeline_compile_queue_vulkan.cc.
|
delete |
|
overridevirtual |
Post a compilation job to the worker task runner.
This is a pure virtual function that must be implemented by
subclasses. It is responsible for actually dispatching the
job closure to the appropriate task runner for execution.
| [in] | job | The compilation job closure to post |
Implements impeller::PipelineCompileQueue.
Definition at line 37 of file pipeline_compile_queue_vulkan.cc.
Referenced by OnJobAdded().