[Bf-blender-cvs] [5bf60530e5] clay-engine: Added switch to test viewport cache

Clément Foucault noreply at git.blender.org
Sun Jan 29 21:36:54 CET 2017


Commit: 5bf60530e5f1843b613439ea05790412d7f74d41
Author: Clément Foucault
Date:   Fri Jan 27 12:44:41 2017 +0100
Branches: clay-engine
https://developer.blender.org/rB5bf60530e5f1843b613439ea05790412d7f74d41

Added switch to test viewport cache

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

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/editors/space_view3d/view3d_draw.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 ad05cf625f..d58e2406fa 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -26,6 +26,8 @@
 #ifndef __DRW_ENGINE_H__
 #define __DRW_ENGINE_H__
 
+//#define WITH_VIEWPORT_CACHE_TEST
+
 struct DRWPass;
 
 void DRW_engines_init(void);
diff --git a/source/blender/draw/engines/clay/clay.c b/source/blender/draw/engines/clay/clay.c
index f741cb54b9..cf5720b911 100644
--- a/source/blender/draw/engines/clay/clay.c
+++ b/source/blender/draw/engines/clay/clay.c
@@ -577,11 +577,18 @@ static void CLAY_view_draw(RenderEngine *UNUSED(engine), const struct bContext *
 	/* TODO : tag to refresh by the deps graph */
 	/* ideally only refresh when objects are added/removed */
 	/* or render properties / materials change */
-	//static bool once = false;
+#ifdef WITH_VIEWPORT_CACHE_TEST
+	static bool once = false;
+	printf("AA\n");
+#endif
 	if (DRW_viewport_cache_is_dirty()
-		//&& !once
+#ifdef WITH_VIEWPORT_CACHE_TEST
+		&& !once
+#endif
 		) {
-		//once = true;
+#ifdef WITH_VIEWPORT_CACHE_TEST
+		once = true;
+#endif
 		CLAY_create_cache(passes, context);
 	}
 
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 8daf97875b..75f5a124a1 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -50,6 +50,8 @@
 
 #include "RE_engine.h"
 
+//#define WITH_VIEWPORT_CACHE_TEST
+
 struct GPUFrameBuffer;
 struct GPUShader;
 struct GPUTexture;
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index a2ddf07079..0bb651897b 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -446,6 +446,10 @@ static void shgroup_dynamic_batch_from_calls(DRWShadingGroup *shgroup)
 	int nbr = BLI_listbase_count(&shgroup->calls);
 	GLenum type;
 
+#ifdef WITH_VIEWPORT_CACHE_TEST
+	if (shgroup->dyngeom) return;
+#endif
+
 	if (nbr == 0) {
 		if (shgroup->dyngeom) {
 			Batch_discard(shgroup->dyngeom);
@@ -457,7 +461,6 @@ static void shgroup_dynamic_batch_from_calls(DRWShadingGroup *shgroup)
 	/* Gather Data */
 	float *data = MEM_mallocN(sizeof(float) * 3 * nbr , "Object Center Batch data");
 
-	/* TODO do something more generic usable for other things than obj center */
 	for (DRWCall *call = shgroup->calls.first; call; call = call->next, i++) {
 		copy_v3_v3(&data[i*3], call->obmat[3]);
 	}
@@ -506,6 +509,7 @@ void DRW_pass_free(DRWPass *pass)
 	BLI_freelistN(&pass->shgroups);
 }
 
+/* TODO this is slow we should not have to use this (better store shgroup pointer somewhere) */
 DRWShadingGroup *DRW_pass_nth_shgroup_get(DRWPass *pass, int n)
 {
 	int i = 0;
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index c8f0a4e325..f428b2cec4 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2109,7 +2109,7 @@ static void view3d_render_pass(const bContext *C, ARegion *ar)
 	}
 }
 
-static void view3d_draw_view_new(const bContext *C, ARegion *ar, DrawData *draw_data)
+static void view3d_draw_view_new(const bContext *C, ARegion *ar, DrawData *UNUSED(draw_data))
 {
 
 	view3d_draw_setup_view(C, ar);
diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index 015d71ac56..b1964857ab 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -87,8 +87,10 @@ void GPU_viewport_bind(GPUViewport *viewport, const rcti *rect)
 	/* 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);
+#endif
 
 	if (viewport->fbl->default_fb) {
 		if (rect_w != viewport->size[0] || rect_h != viewport->size[1]) {




More information about the Bf-blender-cvs mailing list