Use UNLIKELY() around GL error message generation. |
||||||
Issue descriptionThis might help performance by ensuring that code to generate GL errors is out-of-line and not loaded into the cache in the common case. Unfortunately I don't think UNLIKELY works on MSVC, though PGO (which we're looking into using) might offer some of the same benefits. There might still be some code bloat caused by error message generation forcing variables to remain alive and in registers later than otherwise.
,
Apr 10 2017
Don't think it needs to fall under the MANGLE project but this is certainly an optimization we could attempt.
,
Apr 10 2017
It might be possible to bake it in the ANGLE_TRY macros, although we need to be careful that it can regress performance of unpredictable branches. I also thought clang had a function attribute to say that calling the function was unlikely, which we could have used on one of Error's constructors. I didn't find it though.
,
Apr 13 2018
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue. Sorry for the inconvenience if the bug really should have been left as Available. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Apr 13 2018
Now that we're on clang everywhere, maybe we should reprioritize this?
,
Apr 14 2018
Yes, this is much more doable now that we're on clang everywhere. ANGLE's error generation is wrapped in a macro so adding it should be easy.
,
Apr 20 2018
The following revision refers to this bug: https://chromium.googlesource.com/angle/angle/+/7b19a49bc53e407cf18e721a809271cbcc422e42 commit 7b19a49bc53e407cf18e721a809271cbcc422e42 Author: Geoff Lang <geofflang@chromium.org> Date: Fri Apr 20 17:06:08 2018 Use LIKELY and UNLIKELY macros to wrap error generation. BUG= 609673 Change-Id: I247f561712e30aa10bad77fabf614501d596915e Reviewed-on: https://chromium-review.googlesource.com/1021995 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org> [modify] https://crrev.com/7b19a49bc53e407cf18e721a809271cbcc422e42/src/libANGLE/Context.cpp [modify] https://crrev.com/7b19a49bc53e407cf18e721a809271cbcc422e42/src/libANGLE/renderer/vulkan/vk_utils.h [modify] https://crrev.com/7b19a49bc53e407cf18e721a809271cbcc422e42/src/libANGLE/Error.h [modify] https://crrev.com/7b19a49bc53e407cf18e721a809271cbcc422e42/src/common/platform.h
,
Apr 20 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/90e886d1638437a1346367e36bbff675a826fe66 commit 90e886d1638437a1346367e36bbff675a826fe66 Author: angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com> Date: Fri Apr 20 23:32:04 2018 Roll src/third_party/angle/ 3ec304dba..5f21df831 (8 commits) https://chromium.googlesource.com/angle/angle.git/+log/3ec304dba28d..5f21df8318e9 $ git log 3ec304dba..5f21df831 --date=short --no-merges --format='%ad %ae %s' 2018-04-18 tobine Roll (1/2) LVL version forward and disable VANGLE 2018-04-19 ynovikov Use EGL_KHR_no_config_context in Android GLES backend, when available 2018-04-20 ynovikov Print more logs 2018-04-10 geofflang Refactor packed enum generation to support EGL enums. 2018-04-20 geofflang Use LIKELY and UNLIKELY macros to wrap error generation. 2018-04-20 jmadill Fix WebGL compat feedback loop null deref. 2018-04-19 tobine Make Mock ICD json file a data_dep of Mock ICD 2018-04-19 lucferron Refactor Texture::syncState to pass down the Context Created with: roll-dep src/third_party/angle BUG= chromium:609673 , chromium:834943 The AutoRoll server is located here: https://angle-chromium-roll.skia.org Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md If the roll is causing failures, please contact the current sheriff, who should be CC'd on the roll, and stop the roller if necessary. CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel TBR=jmadill@chromium.org Change-Id: Ifbfe7a6eec5c1771a9ecf20a9cd31f5070758588 Reviewed-on: https://chromium-review.googlesource.com/1022720 Reviewed-by: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com> Commit-Queue: angle-chromium-autoroll <angle-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#552520} [modify] https://crrev.com/90e886d1638437a1346367e36bbff675a826fe66/DEPS
,
Apr 23 2018
Implemented but didn't see any perf change so I'm not going to peruse using it in any more parts of ANGLE's code for now. |
||||||
►
Sign in to add a comment |
||||||
Comment 1 by vmi...@chromium.org
, Apr 8 2017Status: Available (was: Untriaged)