calculate wether we filter on a per-display basis
Change-Id: I79d80b432b20b3d02428da19add464ac1e2b9378
This commit is contained in:
parent
f33e4b6f13
commit
eba8c688f6
|
@ -397,6 +397,10 @@ void DisplayDevice::updateGeometryTransform() {
|
|||
// Apply the logical translation, scale to physical size, apply the
|
||||
// physical translation and finally rotate to the physical orientation.
|
||||
mGlobalTransform = R * TP * S * TL;
|
||||
|
||||
const uint8_t type = mGlobalTransform.getType();
|
||||
mNeedsFiltering = (!mGlobalTransform.preserveRects() ||
|
||||
(type >= Transform::SCALE));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ public:
|
|||
const Transform& getTransform() const { return mGlobalTransform; }
|
||||
const Rect& getViewport() const { return mViewport; }
|
||||
const Rect& getFrame() const { return mFrame; }
|
||||
bool needsFiltering() const { return mNeedsFiltering; }
|
||||
|
||||
uint32_t getLayerStack() const { return mLayerStack; }
|
||||
int32_t getDisplayType() const { return mType; }
|
||||
|
@ -195,6 +196,7 @@ private:
|
|||
Rect mViewport;
|
||||
Rect mFrame;
|
||||
Transform mGlobalTransform;
|
||||
bool mNeedsFiltering;
|
||||
};
|
||||
|
||||
}; // namespace android
|
||||
|
|
|
@ -344,7 +344,7 @@ void Layer::onDraw(const sp<const DisplayDevice>& hw, const Region& clip) const
|
|||
|
||||
if (!isProtected()) {
|
||||
// TODO: we could be more subtle with isFixedSize()
|
||||
const bool useFiltering = getFiltering() || needsFiltering() || isFixedSize();
|
||||
const bool useFiltering = getFiltering() || needsFiltering(hw) || isFixedSize();
|
||||
|
||||
// Query the texture matrix given our current filtering mode.
|
||||
float textureMatrix[16];
|
||||
|
|
|
@ -87,6 +87,10 @@ void LayerBase::initStates(uint32_t w, uint32_t h, uint32_t flags)
|
|||
mDrawingState = mCurrentState;
|
||||
}
|
||||
|
||||
bool LayerBase::needsFiltering(const sp<const DisplayDevice>& hw) const {
|
||||
return mNeedsFiltering || hw->needsFiltering();
|
||||
}
|
||||
|
||||
void LayerBase::commitTransaction() {
|
||||
mDrawingState = mCurrentState;
|
||||
}
|
||||
|
|
|
@ -197,7 +197,7 @@ public:
|
|||
/**
|
||||
* needsLinearFiltering - true if this surface's state requires filtering
|
||||
*/
|
||||
virtual bool needsFiltering() const { return mNeedsFiltering; }
|
||||
virtual bool needsFiltering(const sp<const DisplayDevice>& hw) const;
|
||||
|
||||
/**
|
||||
* isSecure - true if this surface is secure, that is if it prevents
|
||||
|
|
Loading…
Reference in New Issue