[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