21 template<
class CycleDataType>
31 template<
class CycleDataType>
41 template<
class CycleDataType>
51 template<
class CycleDataType>
54 PipelineCyclerBase::operator = (copy);
60 template<
class CycleDataType>
69 template<
class CycleDataType>
78 template<
class CycleDataType>
87 template<
class CycleDataType>
96 template<
class CycleDataType>
105 template<
class CycleDataType>
115 template<
class CycleDataType>
124 template<
class CycleDataType>
133 template<
class CycleDataType>
143 template<
class CycleDataType>
146 bool force_to_0,
Thread *current_thread) {
153 template<
class CycleDataType>
162 template<
class CycleDataType>
175 template<
class CycleDataType>
181 #else // !DO_PIPELINING 188 template<
class CycleDataType>
198 template<
class CycleDataType>
201 _typed_data(std::move(initial_data)),
209 template<
class CycleDataType>
213 _typed_data(copy._typed_data)
220 template<
class CycleDataType>
223 _typed_data = copy._typed_data;
229 template<
class CycleDataType>
238 template<
class CycleDataType>
247 template<
class CycleDataType>
256 template<
class CycleDataType>
265 template<
class CycleDataType>
274 template<
class CycleDataType>
283 template<
class CycleDataType>
292 template<
class CycleDataType>
301 template<
class CycleDataType>
310 template<
class CycleDataType>
319 template<
class CycleDataType>
328 template<
class CycleDataType>
340 template<
class CycleDataType>
343 return (CycleDataType *)&_typed_data;
347 #endif // DO_PIPELINING CycleData * write_stage(int pipeline_stage, Thread *current_thread)
Returns a pointer suitable for writing to the nth stage of the pipeline.
CycleData * write_upstream(bool force_to_0, Thread *current_thread)
This special variant on write() will automatically propagate changes back to upstream pipeline stages...
This class maintains different copies of a page of data between stages of the graphics pipeline (or a...
const CycleData * read_stage(int pipeline_stage, Thread *current_thread) const
Returns a const CycleData pointer, filled with the data for the indicated pipeline stage.
CycleDataType * elevate_read(const CycleDataType *pointer, Thread *current_thread)
See PipelineCyclerBase::elevate_read().
This is the trivial, non-threaded implementation of PipelineCyclerBase.
CycleDataType * cheat() const
Returns a pointer without counting it.
CycleDataType * elevate_read_stage_upstream(int pipeline_stage, const CycleDataType *pointer, bool force_to_0, Thread *current_thread)
See PipelineCyclerBase::elevate_read_stage_upstream().
const CycleDataType * read_stage(int pipeline_stage, Thread *current_thread) const
See PipelineCyclerBase::read_stage().
CycleDataType * elevate_read_stage(int pipeline_stage, const CycleDataType *pointer, Thread *current_thread)
See PipelineCyclerBase::elevate_read_stage().
CycleData * elevate_read_stage(int pipeline_stage, const CycleData *pointer, Thread *current_thread)
Elevates a currently-held read pointer into a write pointer.
CycleData * write(Thread *current_thread)
Returns a non-const CycleData pointer, filled with a unique copy of the data for the current stage of...
const CycleData * read_stage_unlocked(int pipeline_stage) const
Returns a const CycleData pointer, filled with the data for the indicated stage of the pipeline.
CycleData * write_stage_upstream(int pipeline_stage, bool force_to_0, Thread *current_thread)
Returns a pointer suitable for writing to the nth stage of the pipeline.
CycleDataType * write_stage_upstream(int pipeline_stage, bool force_to_0, Thread *current_thread)
See PipelineCyclerBase::write_stage_upstream().
CycleData * elevate_read(const CycleData *pointer, Thread *current_thread)
Elevates a currently-held read pointer into a write pointer.
CycleDataType * write_stage(int pipeline_stage, Thread *current_thread)
See PipelineCyclerBase::write_stage().
This class manages a staged pipeline of data, for instance the render pipeline, so that each stage of...
CycleDataType * write(Thread *current_thread)
See PipelineCyclerBase::write().
CycleDataType * elevate_read_upstream(const CycleDataType *pointer, bool force_to_0, Thread *current_thread)
See PipelineCyclerBase::elevate_read_upstream().
const CycleDataType * read_unlocked(Thread *current_thread) const
See PipelineCyclerBase::read_unlocked().
CycleData * cheat() const
Returns a pointer without counting it.
A thread; that is, a lightweight process.
const CycleData * read(Thread *current_thread) const
Returns a const CycleData pointer, filled with the data for the current stage of the pipeline as seen...
const CycleDataType * read_stage_unlocked(int pipeline_stage) const
See PipelineCyclerBase::read_stage_unlocked().
CycleDataType * write_upstream(bool force_to_0, Thread *current_thread)
See PipelineCyclerBase::write_upstream().
CycleData * elevate_read_stage_upstream(int pipeline_stage, const CycleData *pointer, bool force_to_0, Thread *current_thread)
Elevates a currently-held read pointer into a write pointer.
const CycleDataType * read(Thread *current_thread) const
See PipelineCyclerBase::read().
CycleData * elevate_read_upstream(const CycleData *pointer, bool force_to_0, Thread *current_thread)
Elevates a currently-held read pointer into a write pointer, like elevate_read(), but also propagates...
const CycleData * read_unlocked(Thread *current_thread) const
Returns a const CycleData pointer, filled with the data for the current stage of the pipeline as seen...