[SurfaceFlinger] support EGLImage management in BLAST

This mirrors a performance optimization for BufferQueueLayers where
EGLImages were allocated in onFrameAvailable. Here when buffers are
passed over to SurfaceFlinger in a transaction, an EGLImage is also
created for that buffer.

This is critical for reducing jank when operating in higher refresh
rates, as eglCreateImageKHR can take long enough for frames to miss.

Bug: 133627730
Test: systrace of chrome in landscope orientation caches properly
Change-Id: I2022564fbecace7cadd00c89abdcc358d6323315
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 50fabe3..2781910 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -4122,6 +4122,9 @@
     sp<GraphicBuffer> buffer;
     if (bufferChanged && cacheIdChanged) {
         ClientCache::getInstance().add(s.cachedBuffer, s.buffer);
+        ClientCache::getInstance().registerErasedRecipient(s.cachedBuffer,
+                                                           wp<ClientCache::ErasedRecipient>(layer));
+        getRenderEngine().cacheExternalTextureBuffer(s.buffer);
         buffer = s.buffer;
     } else if (cacheIdChanged) {
         buffer = ClientCache::getInstance().get(s.cachedBuffer);