Add a debug option to turn the "transformation hint" off
transformation hint is disabled with: adb shell service call SurfaceFlinger 1009 i32 1 Change-Id: I9aafe6f280f88ce41569ed69a06dc522b10e3a88
This commit is contained in:
parent
53331da007
commit
a45836466c
|
@ -541,9 +541,9 @@ void Layer::dump(String8& result, char* buffer, size_t SIZE) const
|
|||
snprintf(buffer, SIZE,
|
||||
" "
|
||||
"format=%2d, activeBuffer=[%4ux%4u:%4u,%3X],"
|
||||
" freezeLock=%p, queued-frames=%d\n",
|
||||
" freezeLock=%p, transform-hint=0x%02x, queued-frames=%d\n",
|
||||
mFormat, w0, h0, s0,f0,
|
||||
getFreezeLock().get(), mQueuedFrames);
|
||||
getFreezeLock().get(), getTransformHint(), mQueuedFrames);
|
||||
|
||||
result.append(buffer);
|
||||
|
||||
|
@ -562,6 +562,17 @@ uint32_t Layer::getEffectiveUsage(uint32_t usage) const
|
|||
return usage;
|
||||
}
|
||||
|
||||
uint32_t Layer::getTransformHint() const {
|
||||
uint32_t orientation = 0;
|
||||
if (!mFlinger->mDebugDisableTransformHint) {
|
||||
orientation = getOrientation();
|
||||
if (orientation & Transform::ROT_INVALID) {
|
||||
orientation = 0;
|
||||
}
|
||||
}
|
||||
return orientation;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
@ -89,6 +89,7 @@ private:
|
|||
void onFrameQueued();
|
||||
virtual sp<ISurface> createSurface();
|
||||
uint32_t getEffectiveUsage(uint32_t usage) const;
|
||||
uint32_t getTransformHint() const;
|
||||
bool isCropped() const;
|
||||
static bool getOpacityForFormat(uint32_t format);
|
||||
|
||||
|
|
|
@ -93,6 +93,7 @@ SurfaceFlinger::SurfaceFlinger()
|
|||
mDebugBackground(0),
|
||||
mDebugDDMS(0),
|
||||
mDebugDisableHWC(0),
|
||||
mDebugDisableTransformHint(0),
|
||||
mDebugInSwapBuffers(0),
|
||||
mLastSwapBufferTime(0),
|
||||
mDebugInTransaction(0),
|
||||
|
@ -1689,6 +1690,12 @@ status_t SurfaceFlinger::onTransact(
|
|||
invalidateHwcGeometry();
|
||||
repaintEverything();
|
||||
return NO_ERROR;
|
||||
case 1009: // toggle use of transform hint
|
||||
n = data.readInt32();
|
||||
mDebugDisableTransformHint = n ? 1 : 0;
|
||||
invalidateHwcGeometry();
|
||||
repaintEverything();
|
||||
return NO_ERROR;
|
||||
case 1010: // interrogate.
|
||||
reply->writeInt32(0);
|
||||
reply->writeInt32(0);
|
||||
|
|
|
@ -374,6 +374,7 @@ private:
|
|||
int mDebugBackground;
|
||||
int mDebugDDMS;
|
||||
int mDebugDisableHWC;
|
||||
int mDebugDisableTransformHint;
|
||||
volatile nsecs_t mDebugInSwapBuffers;
|
||||
nsecs_t mLastSwapBufferTime;
|
||||
volatile nsecs_t mDebugInTransaction;
|
||||
|
|
|
@ -57,16 +57,10 @@ status_t SurfaceTextureLayer::queueBuffer(int buf, int64_t timestamp,
|
|||
|
||||
status_t res = SurfaceTexture::queueBuffer(buf, timestamp,
|
||||
outWidth, outHeight, outTransform);
|
||||
|
||||
sp<Layer> layer(mLayer.promote());
|
||||
if (layer != NULL) {
|
||||
uint32_t orientation = layer->getOrientation();
|
||||
if (orientation & Transform::ROT_INVALID) {
|
||||
orientation = 0;
|
||||
}
|
||||
*outTransform = orientation;
|
||||
*outTransform = layer->getTransformHint();
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue