Vulkan: Optimize Attribute Change Perf (1/5)
Vulkan: Optimize Attribute Change Perf (1/5)

This patch series optimizes programs that use the pattern:

for (;;) {
  glVertexAttribPointer(...)
  glDraw(...)
}

Change 1: Don't null out pipeline on state change.

This allows us to use the transition table for reduced CPU overhead.
Note that we don't use a transition table for compute pipelines.

In total the patch series reduces test iteration time by 25%. This is
the most significant patch, reducing test time by 20%.

Test: DrawCallPerfBenchmark.Run/vulkan_attrib_change
Bug: angleproject:5045
Bug: b/168493024
Change-Id: I3823bb7d83bc2c66357fc5eb8f5dc3e4e54f6a17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2407340
Commit-Queue: Jamie Madill <7e492b4f1c8458024932de3ba475cbf015424c30@chromium.org>
Reviewed-by: Tim Van Patten <c7814369a8d3d5671c484acc7b3215f1bf4221be@google.com>
Reviewed-by: Shahbaz Youssefi <582eeec4f08a2ccd61e3ef52115e6e7c571582de@chromium.org>

ppy/angle,ppy/angle,ppy/angle,ppy/angle