From 723a9bf2575e53202af0e19772e1a8f0758475f7 Mon Sep 17 00:00:00 2001 From: David Rose Date: Wed, 6 Jun 2007 04:09:12 +0000 Subject: [PATCH] remove vertex-data-allow-reread --- panda/src/gobj/config_gobj.cxx | 11 ------ panda/src/gobj/config_gobj.h | 1 - panda/src/gobj/geomVertexArrayData.cxx | 5 --- panda/src/gobj/vertexDataBuffer.I | 28 -------------- panda/src/gobj/vertexDataBuffer.cxx | 53 +++----------------------- panda/src/gobj/vertexDataBuffer.h | 4 -- 6 files changed, 5 insertions(+), 97 deletions(-) diff --git a/panda/src/gobj/config_gobj.cxx b/panda/src/gobj/config_gobj.cxx index bd23a8ce1c..090f592238 100644 --- a/panda/src/gobj/config_gobj.cxx +++ b/panda/src/gobj/config_gobj.cxx @@ -299,17 +299,6 @@ ConfigVariableInt vertex_data_small_size "is deemed too small to pay the overhead of paging it in and out, " "and it is permanently retained resident.")); -ConfigVariableBool vertex_data_allow_reread -("vertex-data-allow-reread", false, - PRC_DESC("Set this true to allow a GeomVertexArrayData to re-read itself " - "from the original bam file it was read from, if it is evicted " - "and needs to be reloaded. This avoids the need to write the " - "data to the page file, but it requires that bam files are not " - "modified during program execution. Set it false to prevent " - "this, so that the vertex data will need to be written to a " - "page file when it is evicted. Note that this is not fully " - "compatible with vertex-data-threaded-paging.")); - ConfigVariableBool vertex_data_threaded_paging ("vertex-data-threaded-paging", true, PRC_DESC("When this is true (and Panda has been compiled with thread " diff --git a/panda/src/gobj/config_gobj.h b/panda/src/gobj/config_gobj.h index 68065d974f..0d5aebd53b 100644 --- a/panda/src/gobj/config_gobj.h +++ b/panda/src/gobj/config_gobj.h @@ -74,7 +74,6 @@ extern EXPCL_PANDA ConfigVariableDouble default_keystone; extern EXPCL_PANDA ConfigVariableFilename vertex_save_file_directory; extern EXPCL_PANDA ConfigVariableString vertex_save_file_prefix; extern EXPCL_PANDA ConfigVariableInt vertex_data_small_size; -extern EXPCL_PANDA ConfigVariableBool vertex_data_allow_reread; extern EXPCL_PANDA ConfigVariableBool vertex_data_threaded_paging; #endif diff --git a/panda/src/gobj/geomVertexArrayData.cxx b/panda/src/gobj/geomVertexArrayData.cxx index ff188bab0d..c9bdce73f7 100644 --- a/panda/src/gobj/geomVertexArrayData.cxx +++ b/panda/src/gobj/geomVertexArrayData.cxx @@ -604,10 +604,6 @@ fillin(DatagramIterator &scan, BamReader *manager, void *extra_data) { size_t size = scan.get_uint32(); _buffer.unclean_realloc(size); - if (vertex_data_allow_reread) { - streampos source_pos = manager->get_file_pos() + (streampos)scan.get_current_index() - (streampos)scan.get_datagram().get_length(); - _buffer.set_file(manager->get_file(), source_pos); - } const unsigned char *source_data = (const unsigned char *)scan.get_datagram().get_data(); @@ -617,7 +613,6 @@ fillin(DatagramIterator &scan, BamReader *manager, void *extra_data) { if (manager->get_file_endian() != BE_native) { // For non-native endian files, we have to convert the data. - _buffer.set_file(NULL, 0); if (array_data->_array_format == (GeomVertexArrayFormat *)NULL) { // But we can't do that until we've completed the _array_format diff --git a/panda/src/gobj/vertexDataBuffer.I b/panda/src/gobj/vertexDataBuffer.I index 05ebe704a5..83e7d8bf56 100644 --- a/panda/src/gobj/vertexDataBuffer.I +++ b/panda/src/gobj/vertexDataBuffer.I @@ -66,8 +66,6 @@ operator = (const VertexDataBuffer ©) { do_unclean_realloc(copy.get_size()); memcpy(_resident_data, copy.get_read_pointer(true), _size); - _source_file = copy._source_file; - _source_pos = copy._source_pos; } //////////////////////////////////////////////////////////////////// @@ -101,10 +99,6 @@ get_read_pointer(bool force) const { // pointer, which will force its page to resident status. return _block->get_pointer(force); } - if (_resident_data == (unsigned char *)NULL && !_source_file.is_null()) { - // If we need to re-read the original source, do so. - ((VertexDataBuffer *)this)->do_page_in(); - } return _resident_data; } @@ -122,7 +116,6 @@ get_write_pointer() { _resident_data == (unsigned char *)NULL) { do_page_in(); } - _source_file.clear(); return _resident_data; } @@ -213,27 +206,6 @@ swap(VertexDataBuffer &other) { other._block = block; } -//////////////////////////////////////////////////////////////////// -// Function: VertexDataBuffer::set_file -// Access: Public -// Description: Stores a reference to a byte location on an on-disk -// file from which a copy of the data can be retrieved -// if necessary. -// -// If this is non-NULL, the data will not be written to -// the page file; instead, the specified file will be -// re-opened and re-read if necessary. -// -// If this is set to NULL, the data will be paged out -// and in normally. -//////////////////////////////////////////////////////////////////// -INLINE void VertexDataBuffer:: -set_file(VirtualFile *source_file, streampos source_pos) { - MutexHolder holder(_lock); - _source_file = source_file; - _source_pos = source_pos; -} - //////////////////////////////////////////////////////////////////// // Function: VertexDataBuffer::do_unclean_realloc // Access: Private diff --git a/panda/src/gobj/vertexDataBuffer.cxx b/panda/src/gobj/vertexDataBuffer.cxx index ced0008a5d..719e576e8c 100644 --- a/panda/src/gobj/vertexDataBuffer.cxx +++ b/panda/src/gobj/vertexDataBuffer.cxx @@ -35,8 +35,6 @@ TypeHandle VertexDataBuffer::_type_handle; void VertexDataBuffer:: do_clean_realloc(size_t size) { if (size != _size) { - _source_file.clear(); - if (size == 0) { // If we're going to size 0, we don't necessarily need to page // in first. But if we're paged out, discard the page. @@ -90,15 +88,11 @@ do_page_out(VertexDataBook &book) { } nassertv(_resident_data != (unsigned char *)NULL); - if (_source_file == (VirtualFile *)NULL) { - // We only need to allocate a block if we don't have a source - // file. - _block = book.alloc(_size); - nassertv(_block != (VertexDataBlock *)NULL); - unsigned char *pointer = _block->get_pointer(true); - nassertv(pointer != (unsigned char *)NULL); - memcpy(pointer, _resident_data, _size); - } + _block = book.alloc(_size); + nassertv(_block != (VertexDataBlock *)NULL); + unsigned char *pointer = _block->get_pointer(true); + nassertv(pointer != (unsigned char *)NULL); + memcpy(pointer, _resident_data, _size); free(_resident_data); _resident_data = NULL; @@ -116,43 +110,6 @@ do_page_out(VertexDataBook &book) { //////////////////////////////////////////////////////////////////// void VertexDataBuffer:: do_page_in() { - if (_source_file != (VirtualFile *)NULL && _resident_data == (unsigned char *)NULL) { - // Re-read the data from its original source. - PStatTimer timer(_vdata_reread_pcollector); - - _resident_data = (unsigned char *)malloc(_size); - nassertv(_resident_data != (unsigned char *)NULL); - get_class_type().inc_memory_usage(TypeHandle::MC_array, _size); - - istream *in = _source_file->open_read_file(true); - if (in == (istream *)NULL) { - gobj_cat.error() - << "Error reopening " << _source_file->get_filename() - << " to reread vertex data.\n"; - } else { - if (gobj_cat.is_debug()) { - gobj_cat.debug() - << "rereading " << _size << " bytes from " - << _source_file->get_filename() << ", position " - << _source_pos << "\n"; - } - - in->seekg(_source_pos); - - in->read((char *)_resident_data, _size); - if (in->fail() || in->eof()) { - gobj_cat.error() - << "Error rereading " << _size << " bytes from " - << _source_file->get_filename() << ", position " - << _source_pos << "\n"; - } - - VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr(); - vfs->close_read_file(in); - } - return; - } - if (_block == (VertexDataBlock *)NULL) { // We're already paged in. return; diff --git a/panda/src/gobj/vertexDataBuffer.h b/panda/src/gobj/vertexDataBuffer.h index 0eed0eccb9..eb5d271749 100644 --- a/panda/src/gobj/vertexDataBuffer.h +++ b/panda/src/gobj/vertexDataBuffer.h @@ -80,8 +80,6 @@ public: INLINE void swap(VertexDataBuffer &other); - INLINE void set_file(VirtualFile *source_file, streampos source_pos); - private: void do_clean_realloc(size_t size); INLINE void do_unclean_realloc(size_t size); @@ -92,8 +90,6 @@ private: unsigned char *_resident_data; size_t _size; PT(VertexDataBlock) _block; - PT(VirtualFile) _source_file; - streampos _source_pos; Mutex _lock; static PStatCollector _vdata_reread_pcollector;