Commit f44a6fd2a6db7a72de0ebdce00a751f28171d80f

Cody Northrop 2021-11-18T20:15:31

GLES1: Hard code integer values in the ubershader This CL continues the process of removing uniform values from the GLES1 ubershader to increase speed on mobile platforms. The first phase removed bools 2091451e. We've identified integers (enums) as providing the biggest bang for buck to optimize speed while having acceptable program generation. Allowing floats as well proved too much specialization. Many GLES1 conformance tests would grind to a halt while providing little to no benefit to app traces. This CL does the following: * Create a GLES1ShaderState class that contains hashable data * Populate it with all states influencing ubershader generation * Hash the class to perform the lookup of existing programs Frame times on Android ARM with locked GPU clocks: Trace Before After dr_driving: 4.2986 -> 0.8155 sonic_the_hedgehog: 2.8223 -> 0.6254 summoners_war: 15.9810 -> 2.3937 wordscapes: 7.6167 -> 1.1496 zillow: 2.9368 -> 1.9318 Test: end2end, perftests, gles1_conformance Bug: angleproject:6644 Change-Id: I060280e282d7b514d3e410c4f8c5e09659e85d3b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3280355 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Lingfeng Yang <lfy@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>