diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-02-19 16:31:02 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-02-19 16:31:02 +0300 |
commit | 446625c5610577a6a708b7550d93bd760c4fa2d5 (patch) | |
tree | d8dfdbaba6913b0523fe8c63816729a384e38ddb | |
parent | c8b7e7973af3d4675b0076103a727961e8c83ccc (diff) |
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.
-rw-r--r-- | source/blender/draw/DRW_engine.h | 2 | ||||
-rw-r--r-- | source/blender/draw/engines/clay/clay.c | 13 | ||||
-rw-r--r-- | source/blender/draw/intern/DRW_render.h | 2 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 7 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_viewport.c | 12 |
5 files changed, 13 insertions, 23 deletions
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h index f5ac6e4c6c1..8ebd444b3fa 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 314e0c08f66..9766bccd32c 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 83e48a02d1b..1fa3b84effd 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 a834284b193..015d364fc69 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 a189f6770a0..c8e60c089d3 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); |