зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1251612 - Sanitize layer transforms before computing stddev. r=botond
Depends on D86017 Differential Revision: https://phabricator.services.mozilla.com/D86018
This commit is contained in:
Родитель
a76f7ee9a1
Коммит
65de9cd97f
|
@ -63,6 +63,24 @@ Point LayerTransforms::GetStdDev() {
|
|||
return stdDev;
|
||||
}
|
||||
|
||||
bool LayerTransforms::Sanitize() {
|
||||
// Remove leading and trailing zeros to isolate the composites that actually
|
||||
// changed the transform
|
||||
for (size_t i = 1; i < mTransforms.Length(); i++) {
|
||||
if (mTransforms[i] != mTransforms[i - 1]) {
|
||||
mTransforms.RemoveElementsAt(0, i - 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (size_t i = mTransforms.Length() - 1; i > 0; i--) {
|
||||
if (mTransforms[i - 1] != mTransforms[i]) {
|
||||
mTransforms.SetLength(i + 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return !mTransforms.IsEmpty();
|
||||
}
|
||||
|
||||
LayerTransformRecorder::~LayerTransformRecorder() { Reset(); }
|
||||
|
||||
void LayerTransformRecorder::RecordTransform(Layer* aLayer,
|
||||
|
@ -96,7 +114,7 @@ void LayerTransformRecorder::Reset() { mFrameTransforms.clear(); }
|
|||
float LayerTransformRecorder::CalculateFrameUniformity(uintptr_t aLayer) {
|
||||
LayerTransforms* layerTransform = GetLayerTransforms(aLayer);
|
||||
float yUniformity = -1;
|
||||
if (!layerTransform->mTransforms.IsEmpty()) {
|
||||
if (layerTransform->Sanitize()) {
|
||||
Point stdDev = layerTransform->GetStdDev();
|
||||
yUniformity = stdDev.y;
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ struct LayerTransforms {
|
|||
|
||||
gfx::Point GetAverage();
|
||||
gfx::Point GetStdDev();
|
||||
bool Sanitize();
|
||||
|
||||
// 60 fps * 5 seconds worth of data
|
||||
AutoTArray<gfx::Point, 300> mTransforms;
|
||||
|
|
Загрузка…
Ссылка в новой задаче