diff options
| -rw-r--r-- | libs/renderengine/skia/SkiaGLRenderEngine.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/renderengine/skia/SkiaGLRenderEngine.cpp b/libs/renderengine/skia/SkiaGLRenderEngine.cpp index 07be0b628e..0f7738a283 100644 --- a/libs/renderengine/skia/SkiaGLRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaGLRenderEngine.cpp @@ -550,6 +550,7 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, 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 @@ status_t SkiaGLRenderEngine::drawLayers(const DisplaySettings& display, 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)) { |