temp hack fix for released-buffer-cache-size on dx8/9
This commit is contained in:
parent
fd74ea21f5
commit
923ff60d9f
|
|
@ -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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue