Commit 0f80ed8670be996436e711d33cb4d7e87a9683e6

Jamie Madill 2017-09-19T00:24:56

Improve speed of iterating dirty textures. We had a performance regression in the Textures benchmark. What the test was doing was iterating over all possible texture state, ensuring the active texture was dirty every frame. This is an attempt to improve on the speed by not doing as much resetting work in State::syncProgramTextures. It introduces an active textures mask to speed iteration over the active texture set. Also makes a refactoring change to Context to make it easier to limit caps to an implementation maxium. The number of active textures is limited to 64 so they easily fit in the bitset mask, with a limit of 32 per shader stage. No mask is currenly kept for compute shaders. With the fix the performance should be about the same as before (which is good, as the test always sets the textures dirty). Test: TexturesBenchmark.Run/gl_8_textures_5_rebind_3_state_8_mips BUG=chromium:765363 BUG=angleproject:1387 Change-Id: I8bcf95be3671195373573f89f406edaba40aa1be Reviewed-on: https://chromium-review.googlesource.com/670279 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Frank Henigman <fjhenigman@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>