mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 938316. Work around fractional texture resampling issues by switching to NEAREST sampling when we're doing a pixel-aligned compositing operation. r=jrmuizel
--HG-- extra : rebase_source : ec49c8c8993af402a24b57efbaea743d39dcd89c
This commit is contained in:
parent
b31c87b26b
commit
a9af781aaa
@ -174,6 +174,19 @@ public:
|
||||
|
||||
GFX2D_API void NudgeToIntegers();
|
||||
|
||||
bool IsTranslation() const
|
||||
{
|
||||
return FuzzyEqual(_11, 1.0f) && FuzzyEqual(_12, 0.0f) &&
|
||||
FuzzyEqual(_21, 0.0f) && FuzzyEqual(_22, 1.0f);
|
||||
}
|
||||
|
||||
bool IsIntegerTranslation() const
|
||||
{
|
||||
return IsTranslation() &&
|
||||
FuzzyEqual(_31, floorf(_31 + 0.5f)) &&
|
||||
FuzzyEqual(_32, floorf(_32 + 0.5f));
|
||||
}
|
||||
|
||||
private:
|
||||
static bool FuzzyEqual(Float aV1, Float aV2) {
|
||||
// XXX - Check if fabs does the smart thing and just negates the sign bit.
|
||||
@ -217,6 +230,11 @@ public:
|
||||
return Matrix(_11, _12, _21, _22, _41, _42);
|
||||
}
|
||||
|
||||
bool Is2DIntegerTranslation() const
|
||||
{
|
||||
return Is2D() && As2D().IsIntegerTranslation();
|
||||
}
|
||||
|
||||
// Apply a scale to this matrix. This scale will be applied -before- the
|
||||
// existing transformation of the matrix.
|
||||
Matrix4x4 &Scale(Float aX, Float aY, Float aZ)
|
||||
|
@ -1105,11 +1105,25 @@ CompositorOGL::DrawQuad(const Rect& aRect,
|
||||
}
|
||||
|
||||
AutoBindTexture bindSource(source->AsSourceOGL(), LOCAL_GL_TEXTURE0);
|
||||
|
||||
program->SetTextureTransform(source->AsSourceOGL()->GetTextureTransform());
|
||||
|
||||
gfx3DMatrix textureTransform = source->AsSourceOGL()->GetTextureTransform();
|
||||
program->SetTextureTransform(textureTransform);
|
||||
|
||||
GraphicsFilter filter = ThebesFilter(texturedEffect->mFilter);
|
||||
gfxMatrix textureTransform2D;
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
if (filter != GraphicsFilter::FILTER_NEAREST &&
|
||||
aTransform.Is2DIntegerTranslation() &&
|
||||
textureTransform.Is2D(&textureTransform2D) &&
|
||||
textureTransform2D.HasOnlyIntegerTranslation()) {
|
||||
// On Android we encounter small resampling errors in what should be
|
||||
// pixel-aligned compositing operations. This works around them. This
|
||||
// code should not be needed!
|
||||
filter = GraphicsFilter::FILTER_NEAREST;
|
||||
}
|
||||
#endif
|
||||
mGLContext->ApplyFilterToBoundTexture(source->AsSourceOGL()->GetTextureTarget(),
|
||||
ThebesFilter(texturedEffect->mFilter));
|
||||
filter);
|
||||
|
||||
program->SetTextureUnit(0);
|
||||
program->SetLayerOpacity(aOpacity);
|
||||
|
@ -246,24 +246,24 @@ skip-if(B2G) == 243519-1.html 243519-1-ref.html
|
||||
== 243519-2.html 243519-2-ref.html
|
||||
== 243519-3.html 243519-3-ref.html
|
||||
== 243519-4a.html 243519-4-ref.html
|
||||
fails-if(Android) == 243519-4b.html 243519-4-ref.html
|
||||
== 243519-4b.html 243519-4-ref.html
|
||||
== 243519-4c.html 243519-4-ref.html
|
||||
fails-if(Android) == 243519-4d.html 243519-4-ref.html
|
||||
== 243519-4d.html 243519-4-ref.html
|
||||
== 243519-4e.html 243519-4-ref.html
|
||||
fails-if(Android) == 243519-4f.html 243519-4-ref.html
|
||||
== 243519-4f.html 243519-4-ref.html
|
||||
== 243519-5a.html 243519-5-ref.html
|
||||
== 243519-5b.html 243519-5-ref.html
|
||||
fails-if(Android) == 243519-5c.html 243519-5-ref.html
|
||||
fails-if(Android) == 243519-5d.html 243519-5-ref.html
|
||||
== 243519-5c.html 243519-5-ref.html
|
||||
== 243519-5d.html 243519-5-ref.html
|
||||
== 243519-6.html 243519-6-ref.html
|
||||
skip-if(B2G) == 243519-7.html 243519-7-ref.html
|
||||
== 243519-8.svg 243519-8-ref.svg
|
||||
fails-if(Android) == 243519-9a.html 243519-9-ref.html
|
||||
fails-if(Android) == 243519-9b.html 243519-9-ref.html
|
||||
fails-if(Android) == 243519-9c.html 243519-9-ref.html
|
||||
fails-if(Android) == 243519-9d.html 243519-9-ref.html
|
||||
fails-if(Android) == 243519-9e.html 243519-9-ref.html
|
||||
fails-if(Android) == 243519-9f.html 243519-9-ref.html
|
||||
== 243519-9a.html 243519-9-ref.html
|
||||
== 243519-9b.html 243519-9-ref.html
|
||||
== 243519-9c.html 243519-9-ref.html
|
||||
== 243519-9d.html 243519-9-ref.html
|
||||
== 243519-9e.html 243519-9-ref.html
|
||||
== 243519-9f.html 243519-9-ref.html
|
||||
== 244135-1.html 244135-1-ref.html
|
||||
== 244135-2.html 244135-2-ref.html
|
||||
== 244932-1.html 244932-1-ref.html
|
||||
@ -848,7 +848,7 @@ skip-if(B2G) == 402567-4.html 402567-4-ref.html
|
||||
== 402629-1.html 402629-1-ref.html
|
||||
== 402629-2.html 402629-2-ref.html
|
||||
== 402629-3.html 402629-3-ref.html
|
||||
skip-if(B2G) fails-if(Android) == 402807-1.html 402807-1-ref.html
|
||||
skip-if(B2G) == 402807-1.html 402807-1-ref.html
|
||||
== 402940-1.html 402940-1-ref.html
|
||||
== 402940-1b.html 402940-1-ref.html
|
||||
!= 402940-2.html 402940-2-notref.html
|
||||
@ -1127,7 +1127,7 @@ skip-if(B2G) == 430412-1.html 430412-1-ref.html
|
||||
== 431520-1.html 431520-1-ref.html
|
||||
== 431948-1.html 431948-1-ref.html
|
||||
== 433640-1.html 433640-1-ref.html
|
||||
fails-if(Android) == 433700.html 433700-ref.html
|
||||
== 433700.html 433700-ref.html
|
||||
== 436356-1.html 436356-1-ref.html
|
||||
== 436356-2.html 436356-2-ref.html
|
||||
== 438537-1.html 438537-1-ref.html
|
||||
@ -1210,9 +1210,9 @@ skip-if(B2G) == 458296-1d.html 458296-1-ref.html
|
||||
== 458487-1h.html 458487-1-ref.html
|
||||
== 458487-2.html 458487-2-ref.html
|
||||
== 458487-3.html 458487-3-ref.html
|
||||
fails-if(Android) == 458487-4a.html 458487-4-ref.html
|
||||
fails-if(Android) == 458487-4b.html 458487-4-ref.html
|
||||
fails-if(Android) == 458487-4c.html 458487-4-ref.html
|
||||
== 458487-4a.html 458487-4-ref.html
|
||||
== 458487-4b.html 458487-4-ref.html
|
||||
== 458487-4c.html 458487-4-ref.html
|
||||
== 458487-5a.html 458487-5-ref.html
|
||||
== 458487-5b.html 458487-5-ref.html
|
||||
== 459443-1.html 459443-1-ref.html
|
||||
@ -1577,7 +1577,7 @@ skip-if(B2G) == 582476-1.svg 582476-1-ref.svg
|
||||
== 584699-1.html 584699-1-ref.html
|
||||
== 585598-2.xhtml 585598-2-ref.xhtml
|
||||
== 586400-1.html 586400-1-ref.html
|
||||
skip-if(B2G) fuzzy-if(d2d,52,1051) fails-if(Android) fuzzy-if(OSX==10.8,129,1068) == 586683-1.html 586683-1-ref.html
|
||||
skip-if(B2G) fuzzy-if(d2d,52,1051) fuzzy-if(OSX==10.8,129,1068) == 586683-1.html 586683-1-ref.html
|
||||
== 589615-1a.xhtml 589615-1-ref.html
|
||||
== 589615-1b.html 589615-1-ref.html
|
||||
== 589672-1.html 589672-1-ref.html
|
||||
@ -1601,7 +1601,7 @@ skip-if(B2G) == 600803-1.html 600803-1-ref.html
|
||||
== 600974-2.html 600974-1-ref.html
|
||||
== 600974-3.html 600974-1-ref.html
|
||||
== 602200-1.html 602200-1-ref.html
|
||||
fails-if(Android&&AndroidVersion<15) == 602200-2.html 602200-2-ref.html
|
||||
== 602200-2.html 602200-2-ref.html
|
||||
fuzzy-if(Android&&AndroidVersion>=15,8,20) == 602200-3.html 602200-3-ref.html
|
||||
fails-if(Android) == 602200-4.html 602200-4-ref.html
|
||||
== 603423-1.html 603423-1-ref.html
|
||||
@ -1644,7 +1644,7 @@ fuzzy-if(Android&&AndroidVersion>=15,8,300) == 625409-1.html 625409-1-ref.html
|
||||
skip-if(B2G) fails-if(Android) == 632423-1.html 632423-1-ref.html
|
||||
skip-if(Android||B2G) random-if(winWidget) == 632781-verybig.html 632781-ref.html
|
||||
== 632781-normalsize.html 632781-ref.html
|
||||
fails-if(Android) == 633344-1.html 633344-1-ref.html
|
||||
== 633344-1.html 633344-1-ref.html
|
||||
== 634232-1.html 634232-1-ref.html
|
||||
fails-if(Android) == 635302-1.html 635302-1-ref.html
|
||||
skip-if(B2G) random-if(d2d) fails-if(Android) fuzzy-if(winWidget&&!d2d,1,11) == 635373-1.html 635373-1-ref.html
|
||||
@ -1752,7 +1752,7 @@ skip-if(B2G) == 818276-1.html 818276-1-ref.html
|
||||
== 827577-1b.html 827577-1-ref.html
|
||||
== 827799-1.html about:blank
|
||||
== 829958.html 829958-ref.html
|
||||
fails-if(Android&&AndroidVersion<15) == 836844-1.html 836844-1-ref.html
|
||||
== 836844-1.html 836844-1-ref.html
|
||||
== 841192-1.html 841192-1-ref.html
|
||||
== 844178.html 844178-ref.html
|
||||
== 846144-1.html 846144-1-ref.html
|
||||
|
@ -22,8 +22,8 @@ fails-if(Android) == rotatex-perspective-3a.html rotatex-perspective-3-ref.html
|
||||
skip-if(B2G) == preserve3d-4a.html green-rect.html
|
||||
fuzzy-if(Android&&AndroidVersion>=15,4,300) == preserve3d-5a.html preserve3d-5-ref.html
|
||||
== scale3d-z.html scalez-1-ref.html
|
||||
fuzzy-if(winWidget,102,580) fuzzy-if(d2d,143,681) fails-if(Android) fuzzy-if(OSX==10.8,145,752) == scale3d-all.html scale3d-1-ref.html # subpixel AA
|
||||
fuzzy-if(winWidget,102,580) fuzzy-if(d2d,143,681) fails-if(Android) fuzzy-if(OSX==10.8,145,752) == scale3d-all-separate.html scale3d-1-ref.html # subpixel AA
|
||||
fuzzy-if(winWidget,102,580) fuzzy-if(d2d,143,681) fuzzy-if(OSX==10.8,145,752) == scale3d-all.html scale3d-1-ref.html # subpixel AA
|
||||
fuzzy-if(winWidget,102,580) fuzzy-if(d2d,143,681) fuzzy-if(OSX==10.8,145,752) == scale3d-all-separate.html scale3d-1-ref.html # subpixel AA
|
||||
== scale3d-xz.html scale3d-1-ref.html
|
||||
== translatez-1a.html translatez-1-ref.html
|
||||
!= translatez-1b.html translatez-1-ref.html
|
||||
|
Loading…
Reference in New Issue
Block a user