diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2021-04-08 18:32:46 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2021-04-12 15:04:59 +0200 |
commit | f0ef4e6b83f5ad3b916c42682561b86ddd485f0d (patch) | |
tree | 16c51ead021de6d4ff21b668b031f788f34e34ee /vcl/skia | |
parent | 7ef44142086670160756705368339a989828653a (diff) |
update Skia to chrome/m91
Change-Id: I82050e9695b9aa49c33ee16d345bb64595b00bbc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113978
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'vcl/skia')
-rw-r--r-- | vcl/skia/gdiimpl.cxx | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx index be31e0ee649a..828b7959244b 100644 --- a/vcl/skia/gdiimpl.cxx +++ b/vcl/skia/gdiimpl.cxx @@ -1434,7 +1434,14 @@ void SkiaSalGraphicsImpl::invert(basegfx::B2DPolygon const& rPoly, SalInvert eFl // with SkBlendMode::kDifference(?) and surfaces wider than 1024 pixels, resulting // in drawing errors. Work that around by fetching the relevant part of the surface // and drawing using CPU. - bool intelHack = (isGPU() && getVendor() == DriverBlocklist::VendorIntel && !mXorMode); + bool rasterHack = (isGPU() && getVendor() == DriverBlocklist::VendorIntel && !mXorMode); +#if defined LINUX + // With the chrome/m91 Skia version BackendTest::testDrawInvertTrackFrameWithRectangle() + // also has a problem with SkBlendMode::kDifference on AMD/Linux, leading to crashes or even + // driver instability. Also work around by drawing using CPU. + if (isGPU() && getVendor() == DriverBlocklist::VendorAMD && !mXorMode) + rasterHack = true; +#endif SkPath aPath; addPolygonToPath(rPoly, aPath); aPath.setFillType(SkPathFillType::kEvenOdd); @@ -1454,7 +1461,7 @@ void SkiaSalGraphicsImpl::invert(basegfx::B2DPolygon const& rPoly, SalInvert eFl aPaint.setPathEffect(SkDashPathEffect::Make(intervals, SK_ARRAY_COUNT(intervals), 0)); aPaint.setColor(SkColorSetARGB(255, 255, 255, 255)); aPaint.setBlendMode(SkBlendMode::kDifference); - if (!intelHack) + if (!rasterHack) getDrawCanvas()->drawPath(aPath, aPaint); else { @@ -1505,7 +1512,7 @@ void SkiaSalGraphicsImpl::invert(basegfx::B2DPolygon const& rPoly, SalInvert eFl aPaint.setShader( aBitmap.makeShader(SkTileMode::kRepeat, SkTileMode::kRepeat, SkSamplingOptions())); } - if (!intelHack) + if (!rasterHack) getDrawCanvas()->drawPath(aPath, aPaint); else { |