From f8b3f0d017d39a94c1607132efb6fafc45e37b47 Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 24 May 2007 17:46:32 +0000 Subject: [PATCH] impose max-collect-vertices and max-collect-indices on limits reported by GSG --- panda/src/pgraph/sceneGraphReducer.cxx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/panda/src/pgraph/sceneGraphReducer.cxx b/panda/src/pgraph/sceneGraphReducer.cxx index cf60eb2ca2..96d2b5a880 100644 --- a/panda/src/pgraph/sceneGraphReducer.cxx +++ b/panda/src/pgraph/sceneGraphReducer.cxx @@ -52,11 +52,13 @@ set_gsg(GraphicsStateGuardianBase *gsg) { _gsg = GraphicsStateGuardianBase::get_default_gsg(); } + int max_vertices = max_collect_vertices; + if (_gsg != (GraphicsStateGuardianBase *)NULL) { - _transformer.set_max_collect_vertices(_gsg->get_max_vertices_per_array()); - } else { - _transformer.set_max_collect_vertices(max_collect_vertices); + max_vertices = min(max_vertices, _gsg->get_max_vertices_per_array()); } + + _transformer.set_max_collect_vertices(max_vertices); } //////////////////////////////////////////////////////////////////// @@ -139,11 +141,12 @@ flatten(PandaNode *root, int combine_siblings_bits) { void SceneGraphReducer:: unify(PandaNode *root) { PStatTimer timer(_unify_collector); + + int max_indices = max_collect_indices; if (_gsg != (GraphicsStateGuardianBase *)NULL) { - r_unify(root, _gsg->get_max_vertices_per_primitive()); - } else { - r_unify(root, max_collect_indices); + max_indices = min(max_indices, _gsg->get_max_vertices_per_primitive()); } + r_unify(root, max_indices); } ////////////////////////////////////////////////////////////////////