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
141 lines (131 loc) · 5.53 KB
/
bufferContext.I
File metadata and controls
141 lines (131 loc) · 5.53 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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// Filename: bufferContext.I
// Created by: drose (16Mar06)
//
////////////////////////////////////////////////////////////////////
//
// 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."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// Function: BufferContext::get_data_size_bytes
// Access: Public
// Description: 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;
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::get_modified
// Access: Public
// Description: Returns the UpdateSeq that was recorded the last time
// mark_loaded() was called.
////////////////////////////////////////////////////////////////////
INLINE UpdateSeq BufferContext::
get_modified() const {
return _modified;
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::get_active
// Access: Public
// Description: 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;
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::get_resident
// Access: Public
// Description: 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;
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::set_active
// Access: Public
// Description: 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]);
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::set_resident
// Access: Public
// Description: 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]);
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::get_next
// Access: Public
// Description: 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 != (BufferContextChain *)NULL, NULL);
if ((BufferContextChain *)_next == _owning_chain) {
return NULL;
}
return (BufferContext *)_next;
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::update_data_size_bytes
// Access: Public
// Description: 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 != (BufferContextChain *)NULL) {
_owning_chain->adjust_bytes((int)new_data_size_bytes - (int)_data_size_bytes);
}
_data_size_bytes = new_data_size_bytes;
}
////////////////////////////////////////////////////////////////////
// Function: BufferContext::update_modified
// Access: Public
// Description: 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;
}