graphics_WebGLAquarium performance regression on slower SOCs (35fps -> 22fps) |
||||||
Issue descriptionWhile verifying issue 659438 I noticed that another regression hit webgl aquarium affecting mostly slower SOCs (Intel and ARM alike). ARM(pit): 35fps -> 22fps https://cros-goldeneye.corp.google.com/chromeos/console/listCrosbolt?graphSKU=pit_cpu_pit_4Gb&graphTest=graphics_WebGLAquarium%2Favg_fps_1000_fishes.avg_fps_1000_fishes Intel: 35fps -> 30fps https://cros-goldeneye.corp.google.com/chromeos/console/listCrosbolt?graphSKU=clapper_intel_celeron_n2830_2Gb&graphTest=graphics_WebGLAquarium%2Favg_fps_1000_fishes.avg_fps_1000_fishes This new regression happened either in https://crosland.corp.google.com/log/8934.0.0..8935.0.0 or https://chromium.googlesource.com/chromium/src/+log/56.0.2899.0..56.0.2900.0?pretty=fuller&n=10000 CCing everyone except for Intel folks from previous issue.
,
Nov 1 2016
CMAA is not the reason because ARM has regression. CMAA is applied to only ChromeOS on Intel.
,
Nov 1 2016
Yes.
,
Nov 1 2016
The slowdown is due to zmo's change ( issue 654201 ) https://codereview.chromium.org/2435803004
,
Nov 1 2016
Well that's unfortunate. zmo's change is needed for security reasons. I don't see a slowdown on my Mac laptop. Is this demo really doing lots of buffer allocations which would cause the new clearing path to be taken?
,
Nov 1 2016
,
Nov 1 2016
We profiled this and we're spending all our time in base::StringPrintf. This was quite a large patch and it's not clear whether it can be clearly reverted at this point. I'm redoing the error handling within the patch so it only calls StringPrintf upon error conditions.
,
Nov 2 2016
,
Nov 2 2016
Attached are profiles of the GPU process gathered on macOS before and after the optimization in https://codereview.chromium.org/2468123002 . The cost of base::StringPrintf has been eliminated.
,
Nov 2 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/49f47242e1c13505573e4c469a5f61f7f65f886b commit 49f47242e1c13505573e4c469a5f61f7f65f886b Author: kbr <kbr@chromium.org> Date: Wed Nov 02 19:57:33 2016 Change BufferManager::RequestBufferAccess signatures to avoid sprintfs. Using varargs and va_list eliminates the cost of string construction in the callers. BUG= 661186 , 654201 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Review-Url: https://codereview.chromium.org/2468123002 Cr-Commit-Position: refs/heads/master@{#429375} [modify] https://crrev.com/49f47242e1c13505573e4c469a5f61f7f65f886b/gpu/command_buffer/service/buffer_manager.cc [modify] https://crrev.com/49f47242e1c13505573e4c469a5f61f7f65f886b/gpu/command_buffer/service/buffer_manager.h [modify] https://crrev.com/49f47242e1c13505573e4c469a5f61f7f65f886b/gpu/command_buffer/service/vertex_attrib_manager.cc
,
Nov 2 2016
The above CL should fix the issue; it did in the profiles on my laptop. Please verify.
,
Nov 4 2016
Performance is mostly back. We lost about 0.5-1 fps since the regression, but there was some downwards drift in the last week.
,
Jun 20 2017
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by ihf@chromium.org
, Nov 1 2016Status: Started (was: Available)