Support bilinear filtering in Skia-RE

Test: Manual. Play video on Reddit.
Bug: 173417370
Change-Id: I024f4ba126bc933d74d56ad4d5750f21faccc907
diff --git a/libs/renderengine/skia/SkiaGLRenderEngine.cpp b/libs/renderengine/skia/SkiaGLRenderEngine.cpp
index 8c5f0e6..aefedb4 100644
--- a/libs/renderengine/skia/SkiaGLRenderEngine.cpp
+++ b/libs/renderengine/skia/SkiaGLRenderEngine.cpp
@@ -550,6 +550,7 @@
     screenTransform.preRotate(toDegrees(display.orientation));
     screenTransform.preTranslate(-clipWidth / 2, -clipHeight / 2);
     screenTransform.preTranslate(-display.clip.left, -display.clip.top);
+    // Traverse all layers.
     for (const auto& layer : layers) {
         const SkMatrix drawTransform = getDrawTransform(layer, screenTransform);
 
@@ -652,7 +653,16 @@
 
             matrix.postConcat(texMatrix);
             matrix.postScale(rotatedBufferWidth, rotatedBufferHeight);
-            sk_sp<SkShader> shader = image->makeShader(matrix);
+            sk_sp<SkShader> shader;
+
+            if (layer->source.buffer.useTextureFiltering) {
+                shader = image->makeShader(SkTileMode::kClamp, SkTileMode::kClamp,
+                                           SkSamplingOptions(
+                                                   {SkSamplingMode::kLinear, SkMipmapMode::kNone}),
+                                           &matrix);
+            } else {
+                shader = image->makeShader(matrix);
+            }
 
             if (mUseColorManagement &&
                 needsToneMapping(layer->sourceDataspace, display.outputDataspace)) {