temp hack fix for released-buffer-cache-size on dx8/9

This commit is contained in:
David Rose 2007-10-23 00:38:12 +00:00
parent fd74ea21f5
commit 923ff60d9f
3 changed files with 32 additions and 10 deletions

View File

@ -248,6 +248,11 @@ CLP(GraphicsStateGuardian)(GraphicsPipe *pipe) :
GraphicsStateGuardian(CS_yup_right, pipe)
{
_error_count = 0;
// Hack. Turn on the flag that we turned off at a higher level,
// since we know this works properly in OpenGL, and we want the
// performance benefit it gives us.
_prepared_objects->_support_released_buffer_cache = true;
}
////////////////////////////////////////////////////////////////////

View File

@ -46,6 +46,10 @@ PreparedGraphicsObjects() :
_vertex_buffer_cache_size(0),
_index_buffer_cache_size(0)
{
// GLGSG will turn this flag on. This is a temporary hack to
// disable this feature for DX8/DX9 for now, until we work out the
// fine points of updating the fvf properly.
_support_released_buffer_cache = false;
}
////////////////////////////////////////////////////////////////////
@ -758,11 +762,15 @@ release_vertex_buffer(VertexBufferContext *vbc) {
bool removed = (_prepared_vertex_buffers.erase(vbc) != 0);
nassertv(removed);
cache_unprepared_buffer(vbc, data_size_bytes, usage_hint,
_vertex_buffer_cache,
_vertex_buffer_cache_lru, _vertex_buffer_cache_size,
released_vbuffer_cache_size,
_released_vertex_buffers);
if (_support_released_buffer_cache) {
cache_unprepared_buffer(vbc, data_size_bytes, usage_hint,
_vertex_buffer_cache,
_vertex_buffer_cache_lru, _vertex_buffer_cache_size,
released_vbuffer_cache_size,
_released_vertex_buffers);
} else {
_released_vertex_buffers.insert(vbc);
}
}
////////////////////////////////////////////////////////////////////
@ -983,11 +991,15 @@ release_index_buffer(IndexBufferContext *ibc) {
bool removed = (_prepared_index_buffers.erase(ibc) != 0);
nassertv(removed);
cache_unprepared_buffer(ibc, data_size_bytes, usage_hint,
_index_buffer_cache,
_index_buffer_cache_lru, _index_buffer_cache_size,
released_ibuffer_cache_size,
_released_index_buffers);
if (_support_released_buffer_cache) {
cache_unprepared_buffer(ibc, data_size_bytes, usage_hint,
_index_buffer_cache,
_index_buffer_cache_lru, _index_buffer_cache_size,
released_ibuffer_cache_size,
_released_index_buffers);
} else {
_released_index_buffers.insert(ibc);
}
}
////////////////////////////////////////////////////////////////////

View File

@ -199,6 +199,11 @@ public:
BufferResidencyTracker _vbuffer_residency;
BufferResidencyTracker _ibuffer_residency;
public:
// This is only public as a temporary hack. Don't mess with it
// unless you know what you're doing.
bool _support_released_buffer_cache;
private:
static int _name_index;