[Bf-blender-cvs] [29c5692eba0] blender2.8: Draw Manager: Fix multiple timer query issued for one pass.

Clément Foucault noreply at git.blender.org
Sun May 7 15:52:01 CEST 2017


Commit: 29c5692eba0cbf48fc54b65d533ab200ee62e922
Author: Clément Foucault
Date:   Sat May 6 17:00:37 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB29c5692eba0cbf48fc54b65d533ab200ee62e922

Draw Manager: Fix multiple timer query issued for one pass.

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

M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 04bf7eea0bd..52bdf05e26a 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1512,8 +1512,6 @@ void DRW_draw_pass(DRWPass *pass)
 	DRW_state_set(pass->state);
 	BLI_listbase_clear(&DST.bound_texs);
 
-	pass->wasdrawn = true;
-
 	/* Init Timer queries */
 	if (pass->timer_queries[0] == 0) {
 		pass->front_idx = 0;
@@ -1532,8 +1530,10 @@ void DRW_draw_pass(DRWPass *pass)
 		pass->front_idx = tmp;
 	}
 
-	/* issue query for the next frame */
-	glBeginQuery(GL_TIME_ELAPSED, pass->timer_queries[pass->back_idx]);
+	if (!pass->wasdrawn) {
+		/* issue query for the next frame */
+		glBeginQuery(GL_TIME_ELAPSED, pass->timer_queries[pass->back_idx]);
+	}
 
 	for (DRWShadingGroup *shgroup = pass->shgroups.first; shgroup; shgroup = shgroup->next) {
 		draw_shgroup(shgroup, pass->state);
@@ -1551,7 +1551,11 @@ void DRW_draw_pass(DRWPass *pass)
 		DST.shader = NULL;
 	}
 
-	glEndQuery(GL_TIME_ELAPSED);
+	if (!pass->wasdrawn) {
+		glEndQuery(GL_TIME_ELAPSED);
+	}
+
+	pass->wasdrawn = true;
 }
 
 void DRW_draw_callbacks_pre_scene(void)




More information about the Bf-blender-cvs mailing list