A task queue designed for managing compilation of pipeline state objects for OpenGL ES backend. More...
#include <pipeline_compile_queue_gles.h>
Public Member Functions | |
| ~PipelineCompileQueueGLES () override | |
| PipelineCompileQueueGLES (const PipelineCompileQueueGLES &)=delete | |
| PipelineCompileQueueGLES & | operator= (const PipelineCompileQueueGLES &)=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< PipelineCompileQueueGLES > | 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 OpenGL ES backend.
This subclass uses a fml::TaskRunner as the worker task runner and implements a sequential job processing mechanism to prevent blocking the IO task runner.
Key characteristics:
The sequential processing ensures that pipeline compilation jobs do not overwhelm the task runner, which is particularly important for GLES backend where resource loading patterns differ from Vulkan.
Definition at line 36 of file pipeline_compile_queue_gles.h.
|
overridedefault |
|
delete |
|
static |
Definition at line 13 of file pipeline_compile_queue_gles.cc.
Referenced by impeller::testing::TEST(), impeller::testing::TEST(), 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_gles.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 47 of file pipeline_compile_queue_gles.cc.