From b37791b9b0534e2fa810379264b84a0ba3fea8bc Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 2 Mar 2006 00:18:50 +0000 Subject: [PATCH] re-active Draw:Primitive --- panda/src/display/graphicsStateGuardian.cxx | 2 +- panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx | 6 ++++++ panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx | 6 ++++++ panda/src/glstuff/glGraphicsStateGuardian_src.cxx | 7 +++++++ panda/src/gobj/geom.cxx | 3 +++ panda/src/gobj/geom.h | 2 ++ 6 files changed, 25 insertions(+), 1 deletion(-) diff --git a/panda/src/display/graphicsStateGuardian.cxx b/panda/src/display/graphicsStateGuardian.cxx index 0c42f80ba2..3586f308d9 100644 --- a/panda/src/display/graphicsStateGuardian.cxx +++ b/panda/src/display/graphicsStateGuardian.cxx @@ -75,7 +75,7 @@ PStatCollector GraphicsStateGuardian::_vertices_indexed_tristrip_pcollector("Ver PStatCollector GraphicsStateGuardian::_state_pcollector("State changes"); PStatCollector GraphicsStateGuardian::_transform_state_pcollector("State changes:Transforms"); PStatCollector GraphicsStateGuardian::_texture_state_pcollector("State changes:Textures"); -PStatCollector GraphicsStateGuardian::_draw_primitive_pcollector("Draw:Primitive"); +PStatCollector GraphicsStateGuardian::_draw_primitive_pcollector("Draw:Primitive:Draw"); PStatCollector GraphicsStateGuardian::_clear_pcollector("Draw:Clear"); PStatCollector GraphicsStateGuardian::_flush_pcollector("Draw:Flush"); diff --git a/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx b/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx index e5aaee410f..41d6d679b2 100644 --- a/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx +++ b/panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx @@ -898,6 +898,7 @@ begin_draw_primitives(const Geom *geom, const GeomMunger *munger, //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian8:: draw_triangles(const GeomTriangles *primitive) { + PStatTimer timer(_draw_primitive_pcollector); _vertices_tri_pcollector.add_level(primitive->get_num_vertices()); _primitive_batches_tri_pcollector.add_level(1); if (primitive->is_indexed()) { @@ -954,6 +955,7 @@ draw_triangles(const GeomTriangles *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian8:: draw_tristrips(const GeomTristrips *primitive) { + PStatTimer timer(_draw_primitive_pcollector); if (connect_triangle_strips && _current_fill_mode != RenderModeAttrib::M_wireframe) { // One long triangle strip, connected by the degenerate vertices // that have already been set up within the primitive. @@ -1103,6 +1105,7 @@ draw_tristrips(const GeomTristrips *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian8:: draw_trifans(const GeomTrifans *primitive) { + PStatTimer timer(_draw_primitive_pcollector); CPTA_int ends = primitive->get_ends(); _primitive_batches_trifan_pcollector.add_level(ends.size()); @@ -1201,6 +1204,7 @@ draw_trifans(const GeomTrifans *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian8:: draw_lines(const GeomLines *primitive) { + PStatTimer timer(_draw_primitive_pcollector); _vertices_other_pcollector.add_level(primitive->get_num_vertices()); _primitive_batches_other_pcollector.add_level(1); @@ -1258,6 +1262,7 @@ draw_lines(const GeomLines *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian8:: draw_linestrips(const GeomLinestrips *primitive) { + PStatTimer timer(_draw_primitive_pcollector); } //////////////////////////////////////////////////////////////////// @@ -1267,6 +1272,7 @@ draw_linestrips(const GeomLinestrips *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian8:: draw_points(const GeomPoints *primitive) { + PStatTimer timer(_draw_primitive_pcollector); _vertices_other_pcollector.add_level(primitive->get_num_vertices()); _primitive_batches_other_pcollector.add_level(1); diff --git a/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx b/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx index 3bf2c2ad5e..c8ab7574cb 100755 --- a/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx +++ b/panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx @@ -1373,6 +1373,7 @@ data = _vertex_data -> get_array (first_index); //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian9:: draw_triangles(const GeomTriangles *primitive) { + PStatTimer timer(_draw_primitive_pcollector); // DBG_SH5 dxgsg9_cat.debug ( ) << "draw_triangles 1\n"; DBG_E @@ -1444,6 +1445,7 @@ draw_triangles(const GeomTriangles *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian9:: draw_tristrips(const GeomTristrips *primitive) { + PStatTimer timer(_draw_primitive_pcollector); DBG_SH5 dxgsg9_cat.debug ( ) << "draw_tristrips\n"; DBG_E @@ -1605,6 +1607,7 @@ draw_tristrips(const GeomTristrips *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian9:: draw_trifans(const GeomTrifans *primitive) { + PStatTimer timer(_draw_primitive_pcollector); DBG_SH5 dxgsg9_cat.debug ( ) << "draw_trifans\n"; DBG_E @@ -1706,6 +1709,7 @@ draw_trifans(const GeomTrifans *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian9:: draw_lines(const GeomLines *primitive) { + PStatTimer timer(_draw_primitive_pcollector); _vertices_other_pcollector.add_level(primitive->get_num_vertices()); _primitive_batches_other_pcollector.add_level(1); @@ -1764,6 +1768,7 @@ draw_lines(const GeomLines *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian9:: draw_linestrips(const GeomLinestrips *primitive) { + PStatTimer timer(_draw_primitive_pcollector); } //////////////////////////////////////////////////////////////////// @@ -1773,6 +1778,7 @@ draw_linestrips(const GeomLinestrips *primitive) { //////////////////////////////////////////////////////////////////// void DXGraphicsStateGuardian9:: draw_points(const GeomPoints *primitive) { + PStatTimer timer(_draw_primitive_pcollector); _vertices_other_pcollector.add_level(primitive->get_num_vertices()); _primitive_batches_other_pcollector.add_level(1); diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index abe1d8ece8..a1128695d5 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -1642,6 +1642,8 @@ disable_standard_vertex_arrays() //////////////////////////////////////////////////////////////////// void CLP(GraphicsStateGuardian):: draw_triangles(const GeomTriangles *primitive) { + PStatTimer timer(_draw_primitive_pcollector); + #ifndef NDEBUG if (GLCAT.is_spam()) { GLCAT.spam() << "draw_triangles: " << *primitive << "\n"; @@ -1684,6 +1686,7 @@ draw_triangles(const GeomTriangles *primitive) { //////////////////////////////////////////////////////////////////// void CLP(GraphicsStateGuardian):: draw_tristrips(const GeomTristrips *primitive) { + PStatTimer timer(_draw_primitive_pcollector); report_my_gl_errors(); @@ -1766,6 +1769,7 @@ draw_tristrips(const GeomTristrips *primitive) { //////////////////////////////////////////////////////////////////// void CLP(GraphicsStateGuardian):: draw_trifans(const GeomTrifans *primitive) { + PStatTimer timer(_draw_primitive_pcollector); #ifndef NDEBUG if (GLCAT.is_spam()) { GLCAT.spam() << "draw_trifans: " << *primitive << "\n"; @@ -1822,6 +1826,7 @@ draw_trifans(const GeomTrifans *primitive) { //////////////////////////////////////////////////////////////////// void CLP(GraphicsStateGuardian):: draw_lines(const GeomLines *primitive) { + PStatTimer timer(_draw_primitive_pcollector); #ifndef NDEBUG if (GLCAT.is_spam()) { GLCAT.spam() << "draw_lines: " << *primitive << "\n"; @@ -1862,6 +1867,7 @@ draw_lines(const GeomLines *primitive) { //////////////////////////////////////////////////////////////////// void CLP(GraphicsStateGuardian):: draw_linestrips(const GeomLinestrips *primitive) { + PStatTimer timer(_draw_primitive_pcollector); #ifndef NDEBUG if (GLCAT.is_spam()) { GLCAT.spam() << "draw_linestrips: " << *primitive << "\n"; @@ -1877,6 +1883,7 @@ draw_linestrips(const GeomLinestrips *primitive) { //////////////////////////////////////////////////////////////////// void CLP(GraphicsStateGuardian):: draw_points(const GeomPoints *primitive) { + PStatTimer timer(_draw_primitive_pcollector); #ifndef NDEBUG if (GLCAT.is_spam()) { GLCAT.spam() << "draw_points: " << *primitive << "\n"; diff --git a/panda/src/gobj/geom.cxx b/panda/src/gobj/geom.cxx index 60bf9e10f7..652136a65c 100644 --- a/panda/src/gobj/geom.cxx +++ b/panda/src/gobj/geom.cxx @@ -28,6 +28,8 @@ #include "boundingSphere.h" UpdateSeq Geom::_next_modified; +PStatCollector Geom::_draw_primitive_setup_pcollector("Draw:Primitive:Setup"); + TypeHandle Geom::_type_handle; //////////////////////////////////////////////////////////////////// @@ -1090,6 +1092,7 @@ check_will_be_valid(const GeomVertexData *vertex_data) const { void Geom:: do_draw(GraphicsStateGuardianBase *gsg, const GeomMunger *munger, const GeomVertexData *vertex_data, const Geom::CData *cdata) const { + PStatTimer timer(_draw_primitive_setup_pcollector); if (gsg->begin_draw_primitives(this, munger, vertex_data)) { Primitives::const_iterator pi; for (pi = cdata->_primitives.begin(); diff --git a/panda/src/gobj/geom.h b/panda/src/gobj/geom.h index 0bd0e6c29b..df1cdc09b7 100644 --- a/panda/src/gobj/geom.h +++ b/panda/src/gobj/geom.h @@ -38,6 +38,7 @@ #include "indirectLess.h" #include "pset.h" #include "boundingVolume.h" +#include "pStatCollector.h" class GeomContext; class PreparedGraphicsObjects; @@ -256,6 +257,7 @@ private: Contexts _contexts; static UpdateSeq _next_modified; + static PStatCollector _draw_primitive_setup_pcollector; public: static void register_with_read_factory();