Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-03-17 06:47:26 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-03-17 19:02:07 +0300
commitdd4424821918f2e12d6e61dd265be11c669efeb0 (patch)
tree2fbd09d38f55e6a53249e59ab4be2bca022ab86b /source
parent9ed7093aa639f31e9ba5b146d2d88bae942ab424 (diff)
DRW: Move cache time to GPUViewport for profiling
This enables us to average this timer over time like the others.
Diffstat (limited to 'source')
-rw-r--r--source/blender/draw/intern/draw_manager.c6
-rw-r--r--source/blender/draw/intern/draw_manager.h5
-rw-r--r--source/blender/draw/intern/draw_manager_profiling.c3
-rw-r--r--source/blender/gpu/GPU_viewport.h4
-rw-r--r--source/blender/gpu/intern/gpu_viewport.c8
5 files changed, 19 insertions, 7 deletions
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.