Panda3D
|
This is a base class for those kinds of SavedContexts that occupy an easily-measured (and substantial) number of bytes in the video card's frame buffer memory or AGP memory. More...
#include "bufferContext.h"
Public Member Functions | |
BufferContext (BufferResidencyTracker *residency) | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. | |
virtual TypeHandle | force_init_type () |
bool | get_active () const |
Returns the active flag associated with this object. | |
int | get_best_parent_from_Set (const std::set< int > &) const |
size_t | get_data_size_bytes () const |
Returns the number of bytes previously reported for the data object. | |
UpdateSeq | get_modified () const |
Returns the UpdateSeq that was recorded the last time mark_loaded() was called. | |
BufferContext * | get_next () const |
This can be used along with BufferContextChain::get_first() to walk through the list of objects stored on a tracker. | |
bool | get_resident () const |
Returns the resident flag associated with this object. | |
virtual TypeHandle | get_type () const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. | |
void | operator delete (void *ptr) |
void | operator delete (void *ptr, void *) |
void | operator delete[] (void *, void *) |
void | operator delete[] (void *ptr) |
void * | operator new (size_t size) |
void * | operator new (size_t size, void *ptr) |
void * | operator new[] (size_t size, void *ptr) |
void * | operator new[] (size_t size) |
virtual void | output (ostream &out) const |
void | set_active (bool flag) |
Changes the active flag associated with this object. | |
void | set_resident (bool flag) |
Changes the resident flag associated with this object. | |
void | update_data_size_bytes (size_t new_data_size_bytes) |
Should be called (usually by a derived class) when the on-card size of this object has changed. | |
void | update_modified (UpdateSeq new_modified) |
Should be called (usually by a derived class) when the modified counter for this object has changed. | |
virtual void | write (ostream &out, int indent_level) const |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. | |
Private Member Functions | |
void | insert_after (LinkedListNode *node) |
Adds a LinkedListNode record after the indicated node in the doubly-linked list. | |
void | insert_before (LinkedListNode *node) |
Adds a LinkedListNode record before the indicated node in the doubly-linked list. | |
bool | is_on_list () const |
Returns true if the node is member of any list, false if it has been removed or never added. | |
void | remove_from_list () |
Removes a LinkedListNode record from the doubly-linked list. | |
void | take_list_from (LinkedListNode *other_root) |
Given that this LinkedListNode represents the root of a list, and the other pointer represents the root of a different list, move all of the nodes (except the root itself) from other_root onto this list. | |
Private Attributes | |
LinkedListNode * | _next |
LinkedListNode * | _prev |
Friends | |
class | BufferContextChain |
class | BufferResidencyTracker |
class | PreparedGraphicsObjects |
This is a base class for those kinds of SavedContexts that occupy an easily-measured (and substantial) number of bytes in the video card's frame buffer memory or AGP memory.
At the present, this includes most of the SavedContext types: VertexBufferContext and IndexBufferContext, as well as TextureContext.
This class provides methods for tracking the video memory utilization, as well as residency of each object, via PStats.
Definition at line 41 of file bufferContext.h.
TypedObject * TypedObject::as_typed_object | ( | ) | [inline, inherited] |
Returns the object, upcast (if necessary) to a TypedObject pointer.
Definition at line 99 of file typedObject.I.
const TypedObject * TypedObject::as_typed_object | ( | ) | const [inline, inherited] |
Returns the object, upcast (if necessary) to a TypedObject pointer.
Definition at line 110 of file typedObject.I.
bool BufferContext::get_active | ( | ) | const [inline] |
Returns the active flag associated with this object.
An object is considered "active" if it was rendered in the current frame.
Definition at line 49 of file bufferContext.I.
Referenced by Texture::get_active().
size_t BufferContext::get_data_size_bytes | ( | ) | const [inline] |
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.
Definition at line 26 of file bufferContext.I.
Referenced by VertexBufferContext::changed_size(), IndexBufferContext::changed_size(), and Texture::get_data_size_bytes().
UpdateSeq BufferContext::get_modified | ( | ) | const [inline] |
Returns the UpdateSeq that was recorded the last time mark_loaded() was called.
Definition at line 37 of file bufferContext.I.
Referenced by IndexBufferContext::was_modified(), and VertexBufferContext::was_modified().
BufferContext * BufferContext::get_next | ( | ) | const [inline] |
This can be used along with BufferContextChain::get_first() to walk through the list of objects stored on a tracker.
Definition at line 110 of file bufferContext.I.
bool BufferContext::get_resident | ( | ) | const [inline] |
Returns the resident flag associated with this object.
An object is considered "resident" if it appears to be resident in texture memory.
Definition at line 61 of file bufferContext.I.
Referenced by Texture::get_resident().
int TypedObject::get_type_index | ( | ) | const [inline, inherited] |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
This is equivalent to get_type().get_index().
Definition at line 52 of file typedObject.I.
References TypeHandle::get_index().
static void BufferContext::init_type | ( | ) | [inline, static] |
This function is declared non-inline to work around a compiler bug in g++ 2.96.
Making it inline seems to cause problems in the optimizer.
Reimplemented from SavedContext.
Reimplemented in DXIndexBufferContext8, DXTextureContext8, DXVertexBufferContext8, DXIndexBufferContext9, DXTextureContext9, DXVertexBufferContext9, IndexBufferContext, TextureContext, VertexBufferContext, and TinyTextureContext.
Definition at line 76 of file bufferContext.h.
References SavedContext::init_type().
Referenced by VertexBufferContext::init_type(), TextureContext::init_type(), and IndexBufferContext::init_type().
bool TypedObject::is_exact_type | ( | TypeHandle | handle | ) | const [inline, inherited] |
Returns true if the current object is the indicated type exactly.
Definition at line 74 of file typedObject.I.
References TypeHandle::get_name().
Referenced by GraphicsStateGuardian::async_reload_texture(), PortalNode::combine_with(), PandaNode::combine_with(), GeomNode::combine_with(), CollisionNode::combine_with(), Character::combine_with(), PGItem::cull_callback(), FactoryParams::get_param_of_type(), CollisionHandlerPusher::handle_entries(), SceneGraphReducer::r_flatten(), ConnectionWriter::send(), FltToEggLevelState::set_transform(), and VirtualFileSystem::unmount().
bool TypedObject::is_of_type | ( | TypeHandle | handle | ) | const [inline, inherited] |
Returns true if the current object is or derives from the indicated type.
Definition at line 63 of file typedObject.I.
References TypeHandle::is_derived_from().
Referenced by EggSliderData::add_back_pointer(), EggJointData::add_back_pointer(), CIntervalManager::add_c_interval(), XFileNode::add_child(), CollisionTraverser::add_collider(), CollisionHandlerPhysical::add_collider(), EggXfmSAnim::add_data(), CharacterJointBundle::add_node(), NonlinearImager::add_screen(), EggGroupNode::apply_first_attribute(), EggGroupNode::apply_last_attribute(), DeferredNodeProperty::apply_to_node(), RecorderController::begin_playback(), NodePath::clear_clip_plane(), EggGroupNode::clear_connected_shading(), NodePath::clear_light(), EggBase::convert_paths(), NodePath::decode_from_bam_stream(), VrpnClient::disconnect_device(), PhysicsManager::do_physics(), GraphicsStateGuardian::fetch_specified_part(), EggRenderState::fill_state(), AnimBundleNode::find_anim_bundle(), EggGroupNode::find_coordsys_entry(), XFile::find_data_object(), Character::find_joint(), EggGroupNode::find_materials(), Character::find_slider(), XFile::find_template(), EggGroupNode::find_textures(), EggMaterialCollection::find_used_materials(), EggTextureCollection::find_used_textures(), EggGroupNode::force_filenames(), EggJointData::force_initial_rest_frame(), WindowFramework::get_aspect_2d(), EggPoolUniquifier::get_category(), EggGroupUniquifier::get_category(), EggGroupNode::get_connected_shading(), PandaFramework::get_mouse(), FactoryParams::get_param_of_type(), EggGroupNode::has_absolute_pathnames(), NodePath::has_clip_plane(), NodePath::has_clip_plane_off(), NodePath::has_light(), PandaFramework::hide_collision_solids(), x11GraphicsWindow::open_window(), eglGraphicsWindow::open_window(), EggNode::parse_egg(), CharacterMaker::part_to_node(), EggGroupNode::post_apply_flat_attribute(), EggBinner::prepare_node(), PortalClipper::prepare_portal(), NodePath::project_texture(), EggMatrixTablePointer::quantize_channels(), ParametricCurveCollection::r_add_curves(), SceneGraphReducer::r_collect_vertex_data(), EggGroupNode::r_load_externals(), EggGroupNode::rebuild_vertex_pools(), EggGroupNode::recompute_polygon_normals(), EggGroupNode::remove_invalid_primitives(), EggGroupNode::remove_unused_vertices(), EggLoader::reparent_decals(), EggMaterialCollection::replace_materials(), EggTextureCollection::replace_textures(), EggGroupNode::resolve_filenames(), EggGroupNode::reverse_vertex_ordering(), NodePath::set_clip_plane(), NodePath::set_clip_plane_off(), NodePath::set_light(), ProjectionScreen::set_projector(), NonlinearImager::set_source_camera(), EggXfmSAnim::set_value(), NonlinearImager::set_viewer_camera(), PandaFramework::show_collision_solids(), BamCache::store(), XFileToEggConverter::strip_nodes(), EggGroupNode::strip_normals(), DataGraphTraverser::traverse(), DataGraphTraverser::traverse_below(), EggGroupNode::triangulate_polygons(), EggGroupNode::unify_attributes(), EggNameUniquifier::uniquify(), NodeCullCallbackData::upcall(), PhysicsCollisionHandler::validate_target(), EggXfmSAnim::write(), EggGroup::write(), EggToDXFLayer::write_3d_face(), and EggToDXFLayer::write_entities().
void BufferContext::set_active | ( | bool | flag | ) | [inline] |
Changes the active flag associated with this object.
An object is considered "active" if it was rendered in the current frame.
Definition at line 73 of file bufferContext.I.
Referenced by DXGraphicsStateGuardian9::apply_index_buffer(), DXGraphicsStateGuardian8::apply_index_buffer(), DXGraphicsStateGuardian9::apply_texture(), DXGraphicsStateGuardian8::apply_texture(), DXGraphicsStateGuardian9::apply_vertex_buffer(), and DXGraphicsStateGuardian8::apply_vertex_buffer().
void BufferContext::set_resident | ( | bool | flag | ) | [inline] |
Changes the resident flag associated with this object.
An object is considered "resident" if it appears to be resident in texture memory.
Definition at line 93 of file bufferContext.I.
Referenced by VertexBufferContext::mark_loaded(), TextureContext::mark_loaded(), IndexBufferContext::mark_loaded(), TextureContext::mark_simple_loaded(), VertexBufferContext::mark_unloaded(), TextureContext::mark_unloaded(), and IndexBufferContext::mark_unloaded().
void BufferContext::update_data_size_bytes | ( | size_t | new_data_size_bytes | ) | [inline] |
Should be called (usually by a derived class) when the on-card size of this object has changed.
Reimplemented in IndexBufferContext, TextureContext, and VertexBufferContext.
Definition at line 125 of file bufferContext.I.
void BufferContext::update_modified | ( | UpdateSeq | new_modified | ) | [inline] |
Should be called (usually by a derived class) when the modified counter for this object has changed.
Definition at line 139 of file bufferContext.I.
Referenced by VertexBufferContext::mark_loaded(), TextureContext::mark_loaded(), IndexBufferContext::mark_loaded(), TextureContext::mark_simple_loaded(), VertexBufferContext::mark_unloaded(), TextureContext::mark_unloaded(), and IndexBufferContext::mark_unloaded().