Reland gpu: Add disk caching for skia generated shaders in OOP-R.

This reverts commit f9395d77ab8feb15a222dc8e2b3608ac6db22302.

Use the GrContextOptions::PersistentCache API provided by skia to
persist shaders generated internally by skia for OOP raster to disk.
This requires using a special client id to namespace these shaders,
similar to the one used by the InProcessCommandBuffer for viz.

While the shaders for different sources are stored seperately on disk,
they are finally merged into a single memory cache in the GPU process. In
order to maintain a seperate cache for skia generated shaders, this also
plumbs the client id for a loaded shader to the GPU process.

TBR=tsepez@chromium.org

Bug: 854416,840559, 865138
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
Change-Id: I65544ccaff96c3154a822dbc2500468fbcac8a0b
Reviewed-on: https://chromium-review.googlesource.com/1142829
Commit-Queue: Khushal <khushalsagar@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576742}
30 files changed