[Bf-blender-cvs] [dd442482191] blender2.8: DRW: Move cache time to GPUViewport for profiling

Clément Foucault noreply at git.blender.org
Sat Mar 17 16:56:41 CET 2018


Commit: dd4424821918f2e12d6e61dd265be11c669efeb0
Author: Clément Foucault
Date:   Sat Mar 17 04:47:26 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBdd4424821918f2e12d6e61dd265be11c669efeb0

DRW: Move cache time to GPUViewport for profiling

This enables us to average this timer over time like the others.

===================================================================

M	source/blender/draw/intern/draw_manager.c
M	source/blender/draw/intern/draw_manager.h
M	source/blender/draw/intern/draw_manager_profiling.c
M	source/blender/gpu/GPU_viewport.h
M	source/blender/gpu/intern/gpu_viewport.c

===================================================================

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 3c21acd3a02..dbcfa02c555 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1143,7 +1143,11 @@ void DRW_draw_render_loop_ex(
 		drw_engines_cache_finish();
 
 		DRW_render_instance_buffer_finish();
-		PROFILE_END_ACCUM(DST.cache_time, stime);
+
+#ifdef USE_PROFILE
+		double *cache_time = GPU_viewport_cache_time_get(DST.viewport);
+		PROFILE_END_UPDATE(*cache_time, stime);
+#endif
 	}
 
 	DRW_stats_begin();
diff --git a/source/blender/draw/intern/draw_manager.h b/source/blender/draw/intern/draw_manager.h
index 6d4eee08ad6..c7e9b3dc08d 100644
--- a/source/blender/draw/intern/draw_manager.h
+++ b/source/blender/draw/intern/draw_manager.h
@@ -52,7 +52,7 @@
 #ifdef USE_PROFILE
 #  include "PIL_time.h"
 
-#  define PROFILE_TIMER_FALLOFF 0.1
+#  define PROFILE_TIMER_FALLOFF 0.04
 
 #  define PROFILE_START(time_start) \
 	double time_start = PIL_check_seconds_timer();
@@ -304,9 +304,6 @@ typedef struct DRWManager {
 
 	bool buffer_finish_called; /* Avoid bad usage of DRW_render_instance_buffer_finish */
 
-	/* Profiling */
-	double cache_time;
-
 	/* View dependant uniforms. */
 	DRWMatrixState original_mat; /* Original rv3d matrices. */
 	int override_mat;            /* Bitflag of which matrices are overriden. */
diff --git a/source/blender/draw/intern/draw_manager_profiling.c b/source/blender/draw/intern/draw_manager_profiling.c
index 8e5f98b5a49..47769b1fb18 100644
--- a/source/blender/draw/intern/draw_manager_profiling.c
+++ b/source/blender/draw/intern/draw_manager_profiling.c
@@ -286,9 +286,10 @@ void DRW_stats_draw(rcti *rect)
 	v += 2;
 
 	u = 0;
+	double *cache_time = GPU_viewport_cache_time_get(DST.viewport);
 	sprintf(col_label, "Cache Time");
 	draw_stat_5row(rect, u++, v, col_label, sizeof(col_label));
-	sprintf(time_to_txt, "%.2fms", DST.cache_time);
+	sprintf(time_to_txt, "%.2fms", *cache_time);
 	draw_stat_5row(rect, u++, v, time_to_txt, sizeof(time_to_txt));
 	v += 2;
 
diff --git a/source/blender/gpu/GPU_viewport.h b/source/blender/gpu/GPU_viewport.h
index b733027b0f3..20d468459e6 100644
--- a/source/blender/gpu/GPU_viewport.h
+++ b/source/blender/gpu/GPU_viewport.h
@@ -83,7 +83,6 @@ typedef struct ViewportEngineData {
 
 	/* Profiling data */
 	double init_time;
-	double cache_time;
 	double render_time;
 	double background_time;
 } ViewportEngineData;
@@ -114,6 +113,9 @@ void *GPU_viewport_texture_list_get(GPUViewport *viewport);
 void  GPU_viewport_size_get(const GPUViewport *viewport, int size[2]);
 void  GPU_viewport_size_set(GPUViewport *viewport, const int size[2]);
 
+/* Profiling */
+double *GPU_viewport_cache_time_get(GPUViewport *viewport);
+
 void GPU_viewport_tag_update(GPUViewport *viewport);
 bool GPU_viewport_do_update(GPUViewport *viewport);
 
diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index d123368f6ff..2ad89bd1345 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -87,6 +87,9 @@ struct GPUViewport {
 	struct DRWInstanceDataList *idatalist; /* Used for rendering data structure. */
 
 	ListBase tex_pool;  /* ViewportTempTexture list : Temporary textures shared across draw engines */
+
+	/* Profiling data */
+	double cache_time;
 };
 
 enum {
@@ -275,6 +278,11 @@ void GPU_viewport_size_set(GPUViewport *viewport, const int size[2])
 	viewport->size[1] = size[1];
 }
 
+double *GPU_viewport_cache_time_get(GPUViewport *viewport)
+{
+	return &viewport->cache_time;
+}
+
 /**
  * Try to find a texture coresponding to params into the texture pool.
  * If no texture was found, create one and add it to the pool.



More information about the Bf-blender-cvs mailing list