21 INLINE PipelineCyclerDummyImpl::
39 INLINE PipelineCyclerDummyImpl::
40 PipelineCyclerDummyImpl(
const PipelineCyclerDummyImpl ©) :
41 _data(copy._data->make_copy()),
42 _pipeline(copy._pipeline),
54 INLINE
void PipelineCyclerDummyImpl::
55 operator = (
const PipelineCyclerDummyImpl ©) {
56 nassertv(_read_count == 0 && _write_count == 0);
57 _data = copy._data->make_copy();
58 _pipeline = copy._pipeline;
66 INLINE PipelineCyclerDummyImpl::
67 ~PipelineCyclerDummyImpl() {
68 nassertv(_read_count == 0 && _write_count == 0 && !_locked);
78 INLINE
void PipelineCyclerDummyImpl::
80 TAU_PROFILE(
"void PipelineCyclerDummyImpl::acquire(Thread *)",
" ", TAU_USER);
91 INLINE
void PipelineCyclerDummyImpl::
93 TAU_PROFILE(
"void PipelineCyclerDummyImpl::release()",
" ", TAU_USER);
112 INLINE
const CycleData *PipelineCyclerDummyImpl::
113 read_unlocked(
Thread *current_thread)
const {
114 TAU_PROFILE(
"const CycleData *PipelineCyclerDummyImpl::read_unlocked()",
" ", TAU_USER);
129 INLINE
const CycleData *PipelineCyclerDummyImpl::
131 TAU_PROFILE(
"const CycleData *PipelineCyclerDummyImpl::read()",
" ", TAU_USER);
134 ((PipelineCyclerDummyImpl *)
this)->_read_count++;
148 INLINE
void PipelineCyclerDummyImpl::
149 increment_read(
const CycleData *pointer)
const {
150 TAU_PROFILE(
"void PipelineCyclerDummyImpl::increment_read(const CycleData *)",
" ", TAU_USER);
153 nassertv(pointer == _data);
154 nassertv(_read_count > 0);
155 ((PipelineCyclerDummyImpl *)
this)->_read_count++;
164 INLINE
void PipelineCyclerDummyImpl::
165 release_read(
const CycleData *pointer)
const {
166 TAU_PROFILE(
"void PipelineCyclerDummyImpl::release_read(const CycleData *)",
" ", TAU_USER);
169 nassertv(pointer == _data);
170 nassertv(_read_count > 0);
171 ((PipelineCyclerDummyImpl *)
this)->_read_count--;
190 INLINE
CycleData *PipelineCyclerDummyImpl::
191 write(
Thread *current_thread) {
192 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::write()",
" ", TAU_USER);
197 nassertr(_read_count == 0, _data);
235 write_upstream(
bool,
Thread *) {
236 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::write_upstream(bool)",
" ", TAU_USER);
250 INLINE
CycleData *PipelineCyclerDummyImpl::
252 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::elevate_read(const CycleData *)",
" ", TAU_USER);
253 release_read(pointer);
254 return write(current_thread);
265 INLINE
CycleData *PipelineCyclerDummyImpl::
266 elevate_read_upstream(
const CycleData *pointer,
bool force_to_0,
Thread *current_thread) {
267 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::elevate_read_upstream(const CycleData *, bool)",
" ", TAU_USER);
268 release_read(pointer);
269 return write_upstream(force_to_0, current_thread);
279 INLINE
void PipelineCyclerDummyImpl::
280 increment_write(
CycleData *pointer)
const {
281 TAU_PROFILE(
"void PipelineCyclerDummyImpl::increment_write(CycleData *)",
" ", TAU_USER);
284 nassertv(pointer == _data);
285 nassertv(_write_count > 0);
286 ((PipelineCyclerDummyImpl *)
this)->_write_count++;
295 INLINE
void PipelineCyclerDummyImpl::
297 TAU_PROFILE(
"void PipelineCyclerDummyImpl::release_write(CycleData *)",
" ", TAU_USER);
298 nassertv(pointer == _data);
299 nassertv(_write_count > 0);
308 INLINE
int PipelineCyclerDummyImpl::
321 INLINE
const CycleData *PipelineCyclerDummyImpl::
322 read_stage_unlocked(
int pipeline_stage)
const {
323 TAU_PROFILE(
"const CycleData *PipelineCyclerDummyImpl::read_stage_unlocked(int)",
" ", TAU_USER);
324 nassertr(pipeline_stage == 0, NULL);
339 INLINE
const CycleData *PipelineCyclerDummyImpl::
340 read_stage(
int pipeline_stage,
Thread *)
const {
341 TAU_PROFILE(
"const CycleData *PipelineCyclerDummyImpl::read_stage(int, Thread *)",
" ", TAU_USER);
344 nassertr(pipeline_stage == 0, NULL);
345 ((PipelineCyclerDummyImpl *)
this)->_read_count++;
358 INLINE
void PipelineCyclerDummyImpl::
359 release_read_stage(
int pipeline_stage,
const CycleData *pointer)
const {
360 TAU_PROFILE(
"void PipelineCyclerDummyImpl::release_read_stage(int, const CycleData *)",
" ", TAU_USER);
363 nassertv(pipeline_stage == 0);
364 nassertv(pointer == _data);
365 nassertv(_read_count > 0);
366 ((PipelineCyclerDummyImpl *)
this)->_read_count--;
379 INLINE
CycleData *PipelineCyclerDummyImpl::
380 write_stage(
int pipeline_stage,
Thread *) {
381 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::write_stage(int)",
" ", TAU_USER);
382 nassertr(pipeline_stage == 0, (
CycleData *)NULL);
397 INLINE
CycleData *PipelineCyclerDummyImpl::
398 write_stage_upstream(
int pipeline_stage,
bool,
Thread *) {
399 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::write_stage_upstream(int)",
" ", TAU_USER);
400 nassertr(pipeline_stage == 0, (
CycleData *)NULL);
414 INLINE
CycleData *PipelineCyclerDummyImpl::
415 elevate_read_stage(
int pipeline_stage,
const CycleData *pointer,
Thread *current_thread) {
416 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::elevate_read_stage(int, CycleData *)",
" ", TAU_USER);
417 nassertr(pipeline_stage == 0, NULL);
418 release_read(pointer);
419 return write(current_thread);
431 INLINE
CycleData *PipelineCyclerDummyImpl::
432 elevate_read_stage_upstream(
int pipeline_stage,
const CycleData *pointer,
433 bool,
Thread *current_thread) {
434 TAU_PROFILE(
"CycleData *PipelineCyclerDummyImpl::elevate_read_stage(int, CycleData *)",
" ", TAU_USER);
435 nassertr(pipeline_stage == 0, NULL);
436 release_read(pointer);
437 return write(current_thread);
446 INLINE
void PipelineCyclerDummyImpl::
447 release_write_stage(
int pipeline_stage,
CycleData *pointer) {
448 TAU_PROFILE(
"void PipelineCyclerDummyImpl::release_write_stage(int, CycleData *)",
" ", TAU_USER);
449 nassertv(pipeline_stage == 0 && pointer == _data);
450 nassertv(_write_count > 0);
461 get_parent_type()
const {
462 return _data->get_parent_type();
475 INLINE
CycleData *PipelineCyclerDummyImpl::
487 INLINE
int PipelineCyclerDummyImpl::
488 get_read_count()
const {
500 INLINE
int PipelineCyclerDummyImpl::
501 get_write_count()
const {
A single page of data maintained by a PipelineCycler.
static Pipeline * get_render_pipeline()
Returns a pointer to the global render pipeline.
This class manages a staged pipeline of data, for instance the render pipeline, so that each stage of...
A thread; that is, a lightweight process.
TypeHandle is the identifier used to differentiate C++ class types.