A call to glDrawElements results in a calling depth of up to 4 * glDrawElements * gl::Context::DrawElements * rx::ContextGL::DrawElements * VertexArrayGL::syncDrawState. Each function call has to save/restore a lot of registers which results in a stall in the prologue of rx::ContextGL::DrawElements due to memory bandwidth limitations. The main change is the function gl::Context::DrawElements being inlined to reduce the calling depth by one. In addition the call to ContextGL::syncDrawElementsState is now protected so that it gets called only if it's required. Finally a few small getter functions have been inlined where the calling code was bigger than the actual function. In total this change improves performance of the DrawElementsPerfBenchmark.Run/gl benchmark by 16%. Bug: angleproject:2966 Change-Id: I423d18452f2f5b520ab52850fda2054e1da86991 Reviewed-on: https://chromium-review.googlesource.com/c/1389988Reviewed-by:Jamie Madill <jmadill@chromium.org> Commit-Queue: Markus Tavenrath <matavenrath@nvidia.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| entry_points_egl.cpp | Loading commit data... | |
| entry_points_egl.h | Loading commit data... | |
| entry_points_egl_ext.cpp | Loading commit data... | |
| entry_points_egl_ext.h | Loading commit data... | |
| entry_points_enum_autogen.h | Loading commit data... | |
| entry_points_gles_1_0_autogen.cpp | Loading commit data... | |
| entry_points_gles_1_0_autogen.h | Loading commit data... | |
| entry_points_gles_2_0_autogen.cpp | Loading commit data... | |
| entry_points_gles_2_0_autogen.h | Loading commit data... | |
| entry_points_gles_3_0_autogen.cpp | Loading commit data... | |
| entry_points_gles_3_0_autogen.h | Loading commit data... | |
| entry_points_gles_3_1_autogen.cpp | Loading commit data... | |
| entry_points_gles_3_1_autogen.h | Loading commit data... | |
| entry_points_gles_ext_autogen.cpp | Loading commit data... | |
| entry_points_gles_ext_autogen.h | Loading commit data... | |
| entry_points_utils.h | Loading commit data... | |
| gen_proc_table.py | Loading commit data... | |
| global_state.cpp | Loading commit data... | |
| global_state.h | Loading commit data... | |
| libGLESv2.rc | Loading commit data... | |
| libGLESv2_autogen.cpp | Loading commit data... | |
| libGLESv2_autogen.def | Loading commit data... | |
| proc_table.h | Loading commit data... | |
| proc_table_autogen.cpp | Loading commit data... | |
| proc_table_data.json | Loading commit data... | |
| resource.h | Loading commit data... |