[Bf-blender-cvs] [3c9422ff348] temp-T99136-benchmark-viewport-playback: Play all frames for 3 iterations.
Jeroen Bakker
noreply at git.blender.org
Mon Jun 27 15:05:29 CEST 2022
Commit: 3c9422ff34829ef40ea5e0773bcfac16bad2763e
Author: Jeroen Bakker
Date: Mon Jun 27 15:02:40 2022 +0200
Branches: temp-T99136-benchmark-viewport-playback
https://developer.blender.org/rB3c9422ff34829ef40ea5e0773bcfac16bad2763e
Play all frames for 3 iterations.
===================================================================
M tests/performance/tests/eevee.py
===================================================================
diff --git a/tests/performance/tests/eevee.py b/tests/performance/tests/eevee.py
index 569afd9a7c6..e1da5e423c5 100644
--- a/tests/performance/tests/eevee.py
+++ b/tests/performance/tests/eevee.py
@@ -16,7 +16,7 @@ class RecordStage(enum.Enum):
WARMUP_SECONDS = 3
WARMUP_FRAMES = 10
SHADER_FALLBACK_SECONDS = 60
-RECORD_SECONDS = 10
+RECORD_PLAYBACK_ITER = 3
LOG_KEY = "ANIMATION_PERFORMANCE: "
@@ -37,11 +37,14 @@ def frame_change_handler(scene):
global start_time
global start_record_time
global start_warmup_time
- global num_frames
+ global warmup_frame
global stop_record_time
+ global playback_iteration
if record_stage == RecordStage.INIT:
screen = bpy.context.window_manager.windows[0].screen
+ bpy.context.scene.sync_mode = 'NONE'
+
for area in screen.areas:
if area.type == 'VIEW_3D':
space = area.spaces[0]
@@ -61,25 +64,31 @@ def frame_change_handler(scene):
if shaders_compiled:
start_warmup_time = time.perf_counter()
- num_frames = 0
+ warmup_frame = 0
record_stage = RecordStage.WARMUP
elif record_stage == RecordStage.WARMUP:
- num_frames += 1
- if time.perf_counter() - start_warmup_time > WARMUP_SECONDS and num_frames > WARMUP_FRAMES:
+ warmup_frame += 1
+ if time.perf_counter() - start_warmup_time > WARMUP_SECONDS and warmup_frame > WARMUP_FRAMES:
start_record_time = time.perf_counter()
- num_frames = 0
+ playback_iteration = 0
+ scene = bpy.context.scene
+ scene.frame_set(scene.frame_start)
record_stage = RecordStage.RECORD
elif record_stage == RecordStage.RECORD:
current_time = time.perf_counter()
- num_frames += 1
- if current_time - start_record_time > RECORD_SECONDS:
+ scene = bpy.context.scene
+ if scene.frame_current == scene.frame_end:
+ playback_iteration += 1
+
+ if playback_iteration >= RECORD_PLAYBACK_ITER:
stop_record_time = current_time
record_stage = RecordStage.FINISHED
elif record_stage == RecordStage.FINISHED:
bpy.ops.screen.animation_cancel()
+ num_frames = RECORD_PLAYBACK_ITER * ((scene.frame_end - scene.frame_start) + 1)
elapse_seconds = stop_record_time - start_record_time
avg_frame_time = elapse_seconds / num_frames
fps = 1.0 / avg_frame_time
@@ -111,7 +120,9 @@ else:
result_str = line[len(LOG_KEY):]
result = eval(result_str)
return result
- return {'time': 'UNKNOWN'}
+
+ raise Exception("No playback performance result found in log.")
+
def generate(env):
filepaths = env.find_blend_files('eevee/*')
More information about the Bf-blender-cvs
mailing list