forked from panda3d/panda3d
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbufferContext.I
More file actions
122 lines (112 loc) · 3.36 KB
/
bufferContext.I
File metadata and controls
122 lines (112 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file bufferContext.I
* @author drose
* @date 2006-03-16
*/
/**
* Returns the associated object.
*/
INLINE TypedWritableReferenceCount *BufferContext::
get_object() const {
return _object;
}
/**
* Returns the number of bytes previously reported for the data object. This
* is used to track changes in the data object's allocated size; if it changes
* from this, we need to create a new buffer. This is also used to track
* memory utilization in PStats.
*/
INLINE size_t BufferContext::
get_data_size_bytes() const {
return _data_size_bytes;
}
/**
* Returns the UpdateSeq that was recorded the last time mark_loaded() was
* called.
*/
INLINE UpdateSeq BufferContext::
get_modified() const {
return _modified;
}
/**
* Returns the active flag associated with this object. An object is
* considered "active" if it was rendered in the current frame.
*/
INLINE bool BufferContext::
get_active() const {
return (_residency_state & BufferResidencyTracker::S_active) != 0;
}
/**
* Returns the resident flag associated with this object. An object is
* considered "resident" if it appears to be resident in texture memory.
*/
INLINE bool BufferContext::
get_resident() const {
return (_residency_state & BufferResidencyTracker::S_resident) != 0;
}
/**
* Changes the active flag associated with this object. An object is
* considered "active" if it was rendered in the current frame.
*/
INLINE void BufferContext::
set_active(bool flag) {
if (flag) {
_residency_state |= BufferResidencyTracker::S_active;
// Assume that rendering the object automatically makes it resident.
_residency_state |= BufferResidencyTracker::S_resident;
} else {
_residency_state &= ~BufferResidencyTracker::S_active;
}
set_owning_chain(&_residency->_chains[_residency_state]);
}
/**
* Changes the resident flag associated with this object. An object is
* considered "resident" if it appears to be resident in texture memory.
*/
INLINE void BufferContext::
set_resident(bool flag) {
if (flag) {
_residency_state |= BufferResidencyTracker::S_resident;
} else {
_residency_state &= ~BufferResidencyTracker::S_resident;
}
set_owning_chain(&_residency->_chains[_residency_state]);
}
/**
* This can be used along with BufferContextChain::get_first() to walk through
* the list of objects stored on a tracker.
*/
INLINE BufferContext *BufferContext::
get_next() const {
nassertr(_owning_chain != nullptr, nullptr);
if ((BufferContextChain *)_next == _owning_chain) {
return nullptr;
}
return (BufferContext *)_next;
}
/**
* Should be called (usually by a derived class) when the on-card size of this
* object has changed.
*/
INLINE void BufferContext::
update_data_size_bytes(size_t new_data_size_bytes) {
if (_owning_chain != nullptr) {
_owning_chain->adjust_bytes((int)new_data_size_bytes - (int)_data_size_bytes);
}
_data_size_bytes = new_data_size_bytes;
}
/**
* Should be called (usually by a derived class) when the modified counter for
* this object has changed.
*/
INLINE void BufferContext::
update_modified(UpdateSeq new_modified) {
_modified = new_modified;
}