Bug 995216 - Compensate for rounding error in DrawSurfaceWithTextureCoords. r=bas

Calculating the source rect in DrawSurfaceWithTextureCoords can introduce
small floating point errors that result in detectable blending errors. Round
to pixels because we know the original values (the visible region) are
pixel-aligned. This is also what CompositorOGL does.
This commit is contained in:
Chris Lord 2014-05-08 11:39:31 +01:00
Родитель 932496b546
Коммит c1faf25e49
1 изменённых файлов: 5 добавлений и 0 удалений

Просмотреть файл

@ -144,6 +144,11 @@ DrawSurfaceWithTextureCoords(DrawTarget *aDest,
aTextureCoords.y * aSource->GetSize().height,
aTextureCoords.width * aSource->GetSize().width,
aTextureCoords.height * aSource->GetSize().height);
// Floating point error can accumulate above and we know our visible region
// is integer-aligned, so round it out.
sourceRect.Round();
// Compute a transform that maps sourceRect to aDestRect.
gfxMatrix transform =
gfxUtils::TransformRectToRect(sourceRect,