浏览代码

re-active Draw:Primitive

David Rose 20 年之前
父节点
当前提交
b37791b9b0

+ 1 - 1
panda/src/display/graphicsStateGuardian.cxx

@@ -75,7 +75,7 @@ PStatCollector GraphicsStateGuardian::_vertices_indexed_tristrip_pcollector("Ver
 PStatCollector GraphicsStateGuardian::_state_pcollector("State changes");
 PStatCollector GraphicsStateGuardian::_state_pcollector("State changes");
 PStatCollector GraphicsStateGuardian::_transform_state_pcollector("State changes:Transforms");
 PStatCollector GraphicsStateGuardian::_transform_state_pcollector("State changes:Transforms");
 PStatCollector GraphicsStateGuardian::_texture_state_pcollector("State changes:Textures");
 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::_clear_pcollector("Draw:Clear");
 PStatCollector GraphicsStateGuardian::_flush_pcollector("Draw:Flush");
 PStatCollector GraphicsStateGuardian::_flush_pcollector("Draw:Flush");
 
 

+ 6 - 0
panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx

@@ -898,6 +898,7 @@ begin_draw_primitives(const Geom *geom, const GeomMunger *munger,
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 void DXGraphicsStateGuardian8::
 draw_triangles(const GeomTriangles *primitive) {
 draw_triangles(const GeomTriangles *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
   _vertices_tri_pcollector.add_level(primitive->get_num_vertices());
   _vertices_tri_pcollector.add_level(primitive->get_num_vertices());
   _primitive_batches_tri_pcollector.add_level(1);
   _primitive_batches_tri_pcollector.add_level(1);
   if (primitive->is_indexed()) {
   if (primitive->is_indexed()) {
@@ -954,6 +955,7 @@ draw_triangles(const GeomTriangles *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 void DXGraphicsStateGuardian8::
 draw_tristrips(const GeomTristrips *primitive) {
 draw_tristrips(const GeomTristrips *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
   if (connect_triangle_strips && _current_fill_mode != RenderModeAttrib::M_wireframe) {
   if (connect_triangle_strips && _current_fill_mode != RenderModeAttrib::M_wireframe) {
     // One long triangle strip, connected by the degenerate vertices
     // One long triangle strip, connected by the degenerate vertices
     // that have already been set up within the primitive.
     // that have already been set up within the primitive.
@@ -1103,6 +1105,7 @@ draw_tristrips(const GeomTristrips *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 void DXGraphicsStateGuardian8::
 draw_trifans(const GeomTrifans *primitive) {
 draw_trifans(const GeomTrifans *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
   CPTA_int ends = primitive->get_ends();
   CPTA_int ends = primitive->get_ends();
   _primitive_batches_trifan_pcollector.add_level(ends.size());
   _primitive_batches_trifan_pcollector.add_level(ends.size());
 
 
@@ -1201,6 +1204,7 @@ draw_trifans(const GeomTrifans *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 void DXGraphicsStateGuardian8::
 draw_lines(const GeomLines *primitive) {
 draw_lines(const GeomLines *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _primitive_batches_other_pcollector.add_level(1);
   _primitive_batches_other_pcollector.add_level(1);
 
 
@@ -1258,6 +1262,7 @@ draw_lines(const GeomLines *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 void DXGraphicsStateGuardian8::
 draw_linestrips(const GeomLinestrips *primitive) {
 draw_linestrips(const GeomLinestrips *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -1267,6 +1272,7 @@ draw_linestrips(const GeomLinestrips *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 void DXGraphicsStateGuardian8::
 draw_points(const GeomPoints *primitive) {
 draw_points(const GeomPoints *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _primitive_batches_other_pcollector.add_level(1);
   _primitive_batches_other_pcollector.add_level(1);
 
 

+ 6 - 0
panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx

@@ -1373,6 +1373,7 @@ data = _vertex_data -> get_array (first_index);
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian9::
 void DXGraphicsStateGuardian9::
 draw_triangles(const GeomTriangles *primitive) {
 draw_triangles(const GeomTriangles *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 
 
 //  DBG_SH5 dxgsg9_cat.debug ( ) << "draw_triangles 1\n"; DBG_E
 //  DBG_SH5 dxgsg9_cat.debug ( ) << "draw_triangles 1\n"; DBG_E
 
 
@@ -1444,6 +1445,7 @@ draw_triangles(const GeomTriangles *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian9::
 void DXGraphicsStateGuardian9::
 draw_tristrips(const GeomTristrips *primitive) {
 draw_tristrips(const GeomTristrips *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 
 
   DBG_SH5 dxgsg9_cat.debug ( ) << "draw_tristrips\n"; DBG_E
   DBG_SH5 dxgsg9_cat.debug ( ) << "draw_tristrips\n"; DBG_E
 
 
@@ -1605,6 +1607,7 @@ draw_tristrips(const GeomTristrips *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian9::
 void DXGraphicsStateGuardian9::
 draw_trifans(const GeomTrifans *primitive) {
 draw_trifans(const GeomTrifans *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 
 
   DBG_SH5 dxgsg9_cat.debug ( ) << "draw_trifans\n"; DBG_E
   DBG_SH5 dxgsg9_cat.debug ( ) << "draw_trifans\n"; DBG_E
 
 
@@ -1706,6 +1709,7 @@ draw_trifans(const GeomTrifans *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian9::
 void DXGraphicsStateGuardian9::
 draw_lines(const GeomLines *primitive) {
 draw_lines(const GeomLines *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _primitive_batches_other_pcollector.add_level(1);
   _primitive_batches_other_pcollector.add_level(1);
 
 
@@ -1764,6 +1768,7 @@ draw_lines(const GeomLines *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian9::
 void DXGraphicsStateGuardian9::
 draw_linestrips(const GeomLinestrips *primitive) {
 draw_linestrips(const GeomLinestrips *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -1773,6 +1778,7 @@ draw_linestrips(const GeomLinestrips *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian9::
 void DXGraphicsStateGuardian9::
 draw_points(const GeomPoints *primitive) {
 draw_points(const GeomPoints *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _vertices_other_pcollector.add_level(primitive->get_num_vertices());
   _primitive_batches_other_pcollector.add_level(1);
   _primitive_batches_other_pcollector.add_level(1);
 
 

+ 7 - 0
panda/src/glstuff/glGraphicsStateGuardian_src.cxx

@@ -1642,6 +1642,8 @@ disable_standard_vertex_arrays()
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 draw_triangles(const GeomTriangles *primitive) {
 draw_triangles(const GeomTriangles *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
+
 #ifndef NDEBUG
 #ifndef NDEBUG
   if (GLCAT.is_spam()) {
   if (GLCAT.is_spam()) {
     GLCAT.spam() << "draw_triangles: " << *primitive << "\n";
     GLCAT.spam() << "draw_triangles: " << *primitive << "\n";
@@ -1684,6 +1686,7 @@ draw_triangles(const GeomTriangles *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 draw_tristrips(const GeomTristrips *primitive) {
 draw_tristrips(const GeomTristrips *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 
 
   report_my_gl_errors();
   report_my_gl_errors();
 
 
@@ -1766,6 +1769,7 @@ draw_tristrips(const GeomTristrips *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 draw_trifans(const GeomTrifans *primitive) {
 draw_trifans(const GeomTrifans *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 #ifndef NDEBUG
 #ifndef NDEBUG
   if (GLCAT.is_spam()) {
   if (GLCAT.is_spam()) {
     GLCAT.spam() << "draw_trifans: " << *primitive << "\n";
     GLCAT.spam() << "draw_trifans: " << *primitive << "\n";
@@ -1822,6 +1826,7 @@ draw_trifans(const GeomTrifans *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 draw_lines(const GeomLines *primitive) {
 draw_lines(const GeomLines *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 #ifndef NDEBUG
 #ifndef NDEBUG
   if (GLCAT.is_spam()) {
   if (GLCAT.is_spam()) {
     GLCAT.spam() << "draw_lines: " << *primitive << "\n";
     GLCAT.spam() << "draw_lines: " << *primitive << "\n";
@@ -1862,6 +1867,7 @@ draw_lines(const GeomLines *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 draw_linestrips(const GeomLinestrips *primitive) {
 draw_linestrips(const GeomLinestrips *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 #ifndef NDEBUG
 #ifndef NDEBUG
   if (GLCAT.is_spam()) {
   if (GLCAT.is_spam()) {
     GLCAT.spam() << "draw_linestrips: " << *primitive << "\n";
     GLCAT.spam() << "draw_linestrips: " << *primitive << "\n";
@@ -1877,6 +1883,7 @@ draw_linestrips(const GeomLinestrips *primitive) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 draw_points(const GeomPoints *primitive) {
 draw_points(const GeomPoints *primitive) {
+  PStatTimer timer(_draw_primitive_pcollector);
 #ifndef NDEBUG
 #ifndef NDEBUG
   if (GLCAT.is_spam()) {
   if (GLCAT.is_spam()) {
     GLCAT.spam() << "draw_points: " << *primitive << "\n";
     GLCAT.spam() << "draw_points: " << *primitive << "\n";

+ 3 - 0
panda/src/gobj/geom.cxx

@@ -28,6 +28,8 @@
 #include "boundingSphere.h"
 #include "boundingSphere.h"
 
 
 UpdateSeq Geom::_next_modified;
 UpdateSeq Geom::_next_modified;
+PStatCollector Geom::_draw_primitive_setup_pcollector("Draw:Primitive:Setup");
+
 TypeHandle Geom::_type_handle;
 TypeHandle Geom::_type_handle;
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -1090,6 +1092,7 @@ check_will_be_valid(const GeomVertexData *vertex_data) const {
 void Geom::
 void Geom::
 do_draw(GraphicsStateGuardianBase *gsg, const GeomMunger *munger,
 do_draw(GraphicsStateGuardianBase *gsg, const GeomMunger *munger,
 	const GeomVertexData *vertex_data, const Geom::CData *cdata) const {
 	const GeomVertexData *vertex_data, const Geom::CData *cdata) const {
+  PStatTimer timer(_draw_primitive_setup_pcollector);
   if (gsg->begin_draw_primitives(this, munger, vertex_data)) {
   if (gsg->begin_draw_primitives(this, munger, vertex_data)) {
     Primitives::const_iterator pi;
     Primitives::const_iterator pi;
     for (pi = cdata->_primitives.begin(); 
     for (pi = cdata->_primitives.begin(); 

+ 2 - 0
panda/src/gobj/geom.h

@@ -38,6 +38,7 @@
 #include "indirectLess.h"
 #include "indirectLess.h"
 #include "pset.h"
 #include "pset.h"
 #include "boundingVolume.h"
 #include "boundingVolume.h"
+#include "pStatCollector.h"
 
 
 class GeomContext;
 class GeomContext;
 class PreparedGraphicsObjects;
 class PreparedGraphicsObjects;
@@ -256,6 +257,7 @@ private:
   Contexts _contexts;
   Contexts _contexts;
 
 
   static UpdateSeq _next_modified;
   static UpdateSeq _next_modified;
+  static PStatCollector _draw_primitive_setup_pcollector;
 
 
 public:
 public:
   static void register_with_read_factory();
   static void register_with_read_factory();