summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lucas Dupin <dupin@google.com> 2020-04-30 14:45:23 -0700
committer Lucas Dupin <dupin@google.com> 2020-04-30 14:45:23 -0700
commit19ce655ecf577d2ebb8e0936eb1a987f27ce46ac (patch)
treeba9696d9a4e289b4901e31ed7ce4e53ea4716b3c
parenteeff9de91c28ff8ea69072260b9ed67444b969a1 (diff)
Apply display translation to blurred result
Test: on notched device, hide cutout, swipe down the shade Fixes: 155130038 Change-Id: I216c77d2c6695c8faf8a0502f9d403a76403a2f6
-rw-r--r--libs/renderengine/gl/filters/BlurFilter.cpp6
-rw-r--r--libs/renderengine/gl/filters/BlurFilter.h2
2 files changed, 6 insertions, 2 deletions
diff --git a/libs/renderengine/gl/filters/BlurFilter.cpp b/libs/renderengine/gl/filters/BlurFilter.cpp
index db55d17aec..19f18c0a7f 100644
--- a/libs/renderengine/gl/filters/BlurFilter.cpp
+++ b/libs/renderengine/gl/filters/BlurFilter.cpp
@@ -68,6 +68,8 @@ BlurFilter::BlurFilter(GLESRenderEngine& engine)
status_t BlurFilter::setAsDrawTarget(const DisplaySettings& display, uint32_t radius) {
ATRACE_NAME("BlurFilter::setAsDrawTarget");
mRadius = radius;
+ mDisplayX = display.physicalDisplay.left;
+ mDisplayY = display.physicalDisplay.top;
if (mDisplayWidth < display.physicalDisplay.width() ||
mDisplayHeight < display.physicalDisplay.height()) {
@@ -182,8 +184,8 @@ status_t BlurFilter::render(bool multiPass) {
if (mix >= 1 || multiPass) {
mLastDrawTarget->bindAsReadBuffer();
glBlitFramebuffer(0, 0, mLastDrawTarget->getBufferWidth(),
- mLastDrawTarget->getBufferHeight(), 0, 0, mDisplayWidth, mDisplayHeight,
- GL_COLOR_BUFFER_BIT, GL_LINEAR);
+ mLastDrawTarget->getBufferHeight(), mDisplayX, mDisplayY, mDisplayWidth,
+ mDisplayHeight, GL_COLOR_BUFFER_BIT, GL_LINEAR);
return NO_ERROR;
}
diff --git a/libs/renderengine/gl/filters/BlurFilter.h b/libs/renderengine/gl/filters/BlurFilter.h
index 9d3fc60e48..593a8fd54e 100644
--- a/libs/renderengine/gl/filters/BlurFilter.h
+++ b/libs/renderengine/gl/filters/BlurFilter.h
@@ -68,6 +68,8 @@ private:
GLFramebuffer mPongFbo;
uint32_t mDisplayWidth = 0;
uint32_t mDisplayHeight = 0;
+ uint32_t mDisplayX = 0;
+ uint32_t mDisplayY = 0;
// Buffer holding the final blur pass.
GLFramebuffer* mLastDrawTarget;