Merge "libgui: Fix CPU rendering on Surface"
This commit is contained in:
commit
e647dddebb
@ -298,12 +298,12 @@ private:
|
||||
sp<GraphicBuffer> mPostedBuffer;
|
||||
bool mConnectedToCpu;
|
||||
|
||||
// In the lock/unlock context, this reflects the region that the producer
|
||||
// wished to update and whether the Surface was able to copy the previous
|
||||
// buffer back to allow a partial update.
|
||||
// When a CPU producer is attached, this reflects the region that the
|
||||
// producer wished to update as well as whether the Surface was able to copy
|
||||
// the previous buffer back to allow a partial update.
|
||||
//
|
||||
// In the dequeue/queue context, this reflects the surface damage (the
|
||||
// damage since the last frame) passed in by the producer.
|
||||
// When a non-CPU producer is attached, this reflects the surface damage
|
||||
// (the change since the previous frame) passed in by the producer.
|
||||
Region mDirtyRegion;
|
||||
};
|
||||
|
||||
|
@ -322,7 +322,7 @@ int Surface::queueBuffer(android_native_buffer_t* buffer, int fenceFd) {
|
||||
mDataSpace, crop, mScalingMode, mTransform ^ mStickyTransform,
|
||||
mSwapIntervalZero, fence, mStickyTransform);
|
||||
|
||||
if (mDirtyRegion.bounds() == Rect::INVALID_RECT) {
|
||||
if (mConnectedToCpu || mDirtyRegion.bounds() == Rect::INVALID_RECT) {
|
||||
input.setSurfaceDamage(Region::INVALID_REGION);
|
||||
} else {
|
||||
// The surface damage was specified using the OpenGL ES convention of
|
||||
@ -356,8 +356,10 @@ int Surface::queueBuffer(android_native_buffer_t* buffer, int fenceFd) {
|
||||
|
||||
mConsumerRunningBehind = (numPendingBuffers >= 2);
|
||||
|
||||
if (!mConnectedToCpu) {
|
||||
// Clear surface damage back to full-buffer
|
||||
mDirtyRegion = Region::INVALID_REGION;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
@ -844,7 +846,7 @@ void Surface::setSurfaceDamage(android_native_rect_t* rects, size_t numRects) {
|
||||
ALOGV("Surface::setSurfaceDamage");
|
||||
Mutex::Autolock lock(mMutex);
|
||||
|
||||
if (numRects == 0) {
|
||||
if (mConnectedToCpu || numRects == 0) {
|
||||
mDirtyRegion = Region::INVALID_REGION;
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user