|
Beatmup
|
Custom pipeline: a sequence of tasks to be executed as a whole. More...
#include <custom_pipeline.h>
Classes | |
| class | Impl |
| class | PipelineNotReady |
| class | TaskHolder |
| A task within a pipeline. More... | |
Public Member Functions | |
| ~CustomPipeline () | |
| int | getTaskCount () const |
| TaskHolder & | getTask (int) const |
| Retrieves a task by its index. More... | |
| int | getTaskIndex (const TaskHolder &) |
| Retrieves task index if it is in the pipeline; returns -1 otherwise. More... | |
| TaskHolder & | addTask (AbstractTask &) |
| Adds a new task to the end of the pipeline. More... | |
| TaskHolder & | insertTask (AbstractTask &task, const TaskHolder &before) |
| Inserts a task in a specified position of the pipeline before another task. More... | |
| bool | removeTask (const TaskHolder &task) |
| Removes a task from the pipeline. More... | |
| void | measure () |
| Determines pipeline execution mode and required thread count. More... | |
Public Member Functions inherited from Beatmup::Object | |
| virtual | ~Object () |
Protected Member Functions | |
| TaskDeviceRequirement | getUsedDevices () const |
| Communicates devices (CPU and/or GPU) the task is run on. More... | |
| ThreadIndex | getMaxThreads () const |
| Gives the upper limint on the number of threads the task may be performed by. More... | |
| void | beforeProcessing (ThreadIndex threadCount, ProcessingTarget target, GraphicPipeline *gpu) |
| Instruction called before the task is executed. More... | |
| void | afterProcessing (ThreadIndex threadCount, GraphicPipeline *gpu, bool aborted) |
| Instruction called after the task is executed. More... | |
| bool | process (TaskThread &thread) |
| Executes the task on CPU within a given thread. More... | |
| bool | processOnGPU (GraphicPipeline &gpu, TaskThread &thread) |
| Executes the task on GPU. More... | |
| virtual TaskHolder * | createTaskHolder (AbstractTask &task)=0 |
| virtual bool | route (TaskRouter &router)=0 |
| CustomPipeline () | |
Private Attributes | |
| Impl * | impl |
Additional Inherited Members | |
Public Types inherited from Beatmup::AbstractTask | |
| enum class | TaskDeviceRequirement { CPU_ONLY , GPU_OR_CPU , GPU_ONLY } |
| Specifies which device (CPU and/or GPU) is used to run the task. More... | |
Static Public Member Functions inherited from Beatmup::AbstractTask | |
| static ThreadIndex | validThreadCount (int number) |
| Valid thread count from a given integer value. More... | |
Custom pipeline: a sequence of tasks to be executed as a whole.
Acts as an AbstractTask. Built by adding tasks one by one and calling measure() at the end.
Definition at line 32 of file custom_pipeline.h.
|
protected |
Definition at line 243 of file custom_pipeline.cpp.
| CustomPipeline::~CustomPipeline | ( | ) |
Definition at line 247 of file custom_pipeline.cpp.
|
protectedvirtual |
Communicates devices (CPU and/or GPU) the task is run on.
Reimplemented from Beatmup::AbstractTask.
Definition at line 219 of file custom_pipeline.cpp.
|
protectedvirtual |
Gives the upper limint on the number of threads the task may be performed by.
The actual number of threads running a specific task may be less or equal to the returned value, depending on the number of workers in ThreadPool running the task.
Reimplemented from Beatmup::AbstractTask.
Definition at line 223 of file custom_pipeline.cpp.
|
protectedvirtual |
Instruction called before the task is executed.
| threadCount | Number of threads used to perform the task |
| target | Device used to perform the task |
| gpu | A graphic pipeline instance; may be null. |
Reimplemented from Beatmup::AbstractTask.
Definition at line 227 of file custom_pipeline.cpp.
|
protectedvirtual |
Instruction called after the task is executed.
| threadCount | Number of threads used to perform the task |
| gpu | GPU to be used to execute the task; may be null. |
| aborted | true if the task was aborted |
Reimplemented from Beatmup::AbstractTask.
Definition at line 231 of file custom_pipeline.cpp.
|
protectedvirtual |
Executes the task on CPU within a given thread.
Generally called by multiple threads.
| thread | associated task execution context |
true if the execution is finished correctly, false otherwise Implements Beatmup::AbstractTask.
Definition at line 235 of file custom_pipeline.cpp.
|
protectedvirtual |
Executes the task on GPU.
| gpu | graphic pipeline instance |
| thread | associated task execution context |
true if the execution is finished correctly, false otherwise Reimplemented from Beatmup::AbstractTask.
Definition at line 239 of file custom_pipeline.cpp.
|
protectedpure virtual |
Implemented in Beatmup::Multitask.
|
protectedpure virtual |
Implemented in Beatmup::Multitask.
| int CustomPipeline::getTaskCount | ( | ) | const |
| CustomPipeline::TaskHolder & CustomPipeline::getTask | ( | int | index | ) | const |
Retrieves a task by its index.
Definition at line 255 of file custom_pipeline.cpp.
| int CustomPipeline::getTaskIndex | ( | const TaskHolder & | task | ) |
Retrieves task index if it is in the pipeline; returns -1 otherwise.
Definition at line 259 of file custom_pipeline.cpp.
| CustomPipeline::TaskHolder & CustomPipeline::addTask | ( | AbstractTask & | task | ) |
Adds a new task to the end of the pipeline.
Definition at line 263 of file custom_pipeline.cpp.
| CustomPipeline::TaskHolder & CustomPipeline::insertTask | ( | AbstractTask & | task, |
| const TaskHolder & | before | ||
| ) |
Inserts a task in a specified position of the pipeline before another task.
| task | The task to insert |
| before | TaskHolder specifying position of the task that will follow the newly inserted task |
Definition at line 269 of file custom_pipeline.cpp.
| bool CustomPipeline::removeTask | ( | const TaskHolder & | task | ) |
Removes a task from the pipeline.
| task | The task to remove |
true on success, false if this TaskHolder is not in the pipeline. Definition at line 275 of file custom_pipeline.cpp.
| void CustomPipeline::measure | ( | ) |
Determines pipeline execution mode and required thread count.
Definition at line 279 of file custom_pipeline.cpp.
|
private |
Definition at line 37 of file custom_pipeline.h.