[Bf-blender-cvs] [446625c561] blender2.8: Clay Engine: Use G.debug_value to test cache performance

Clément Foucault noreply at git.blender.org
Sun Feb 19 14:26:06 CET 2017


Commit: 446625c5610577a6a708b7550d93bd760c4fa2d5
Author: Clément Foucault
Date:   Sun Feb 19 14:31:02 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB446625c5610577a6a708b7550d93bd760c4fa2d5

Clay Engine: Use G.debug_value to test cache performance

Use debug 666 for cache without instance buffer caching.
Use debug 667 for cache with instance buffer caching.

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

M	source/blender/draw/DRW_engine.h
M	source/blender/draw/engines/clay/clay.c
M	source/blender/draw/intern/DRW_render.h
M	source/blender/draw/intern/draw_manager.c
M	source/blender/gpu/intern/gpu_viewport.c

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

diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index f5ac6e4c6c..8ebd444b3f 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -26,8 +26,6 @@
 #ifndef __DRW_ENGINE_H__
 #define __DRW_ENGINE_H__
 
-//#define WITH_VIEWPORT_CACHE_TEST
-
 struct CollectionEngineSettings;
 struct DRWPass;
 struct Material;
diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c
index 314e0c08f6..9766bccd32 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -700,17 +700,8 @@ static void CLAY_view_draw(RenderEngine *UNUSED(engine), const bContext *context
 	/* TODO : tag to refresh by the deps graph */
 	/* ideally only refresh when objects are added/removed */
 	/* or render properties / materials change */
-#ifdef WITH_VIEWPORT_CACHE_TEST
-	static bool once = false;
-#endif
-	if (DRW_viewport_cache_is_dirty()
-#ifdef WITH_VIEWPORT_CACHE_TEST
-		&& !once
-#endif
-		) {
-#ifdef WITH_VIEWPORT_CACHE_TEST
-		once = true;
-#endif
+	if (DRW_viewport_cache_is_dirty()) {
+
 		SceneLayer *sl = CTX_data_scene_layer(context);
 
 		CLAY_cache_init();
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 83e48a02d1..1fa3b84eff 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -52,8 +52,6 @@
 
 #include "RE_engine.h"
 
-//#define WITH_VIEWPORT_CACHE_TEST
-
 struct bContext;
 struct GPUFrameBuffer;
 struct GPUShader;
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index a834284b19..015d364fc6 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -672,9 +672,10 @@ static void shgroup_dynamic_instance(DRWShadingGroup *shgroup)
 
 static void shgroup_dynamic_batch_from_calls(DRWShadingGroup *shgroup)
 {
-#ifdef WITH_VIEWPORT_CACHE_TEST
-	if (shgroup->interface->instance_vbo || shgroup->batch_geom) return;
-#endif
+	if ((shgroup->interface->instance_vbo || shgroup->batch_geom) &&
+		(G.debug_value == 667))
+		return;
+
 	if (shgroup->type == DRW_SHG_INSTANCE) {
 		shgroup_dynamic_instance(shgroup);
 	}
diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index a189f6770a..c8e60c089d 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -38,6 +38,8 @@
 
 #include "DNA_vec_types.h"
 
+#include "BKE_global.h"
+
 #include "GPU_framebuffer.h"
 #include "GPU_glew.h"
 #include "GPU_immediate.h"
@@ -115,11 +117,11 @@ void GPU_viewport_bind(GPUViewport *viewport, const rcti *rect, const char *engi
 	/* add one pixel because of scissor test */
 	int rect_w = BLI_rcti_size_x(rect) + 1, rect_h = BLI_rcti_size_y(rect) + 1;
 
-#ifndef WITH_VIEWPORT_CACHE_TEST
-	/* TODO for testing only, we need proper cache invalidation */
-	GPU_viewport_passes_free(viewport->psl);
-	GPU_viewport_passes_free(viewport->psl_mode);
-#endif
+	if (G.debug_value != 666 && G.debug_value != 667) {
+		/* TODO for testing only, we need proper cache invalidation */
+		GPU_viewport_passes_free(viewport->psl);
+		GPU_viewport_passes_free(viewport->psl_mode);
+	}
 
 	if (!STREQ(engine, viewport->engine_name)) {
 		GPU_viewport_storage_free(viewport->stl);




More information about the Bf-blender-cvs mailing list