summaryrefslogtreecommitdiff
path: root/external/skia
AgeCommit message (Collapse)Author
2020-02-10add (Vulkan) blacklisting to SkiaLuboš Luňák
Currently there's nothing blacklisted, but this is the code. And there's not much point in blacklisting CPU-based raster Skia, so check only for Vulkan. Since this requires accessing Vulkan to get the driver info, this commit also reorganizes a bit getting a GrContext when there's no actual window, so that it's usable for the test. Change-Id: I042af0470fb635d8ea471a40837bfcd102d7016f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88205 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-02-01remove outdated TODO from skia externalLuboš Luňák
Change-Id: Ibe17072dd0c1f4b7f76d05a2dac0e2cbf1eb151d
2020-02-01Skia: fix #define MemoryBarrier coming from winnt.h from pchMike Kaganski
... resulting in error message C:/lo/src/build/workdir/UnpackedTarball/skia/src/gpu/gl/GrGLGpu.cpp(3771): error C2039: 'f__faststorefence': is not a member of 'GrGLInterface::Functions' Change-Id: If69c0067abe287dd276c685cde6be3b31a1ce950 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87780 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-01-31update Skia to chrome/m81Luboš Luňák
Change-Id: I62ac293ac5fde3716b2db1421301f3a4aed0bcc9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87763 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-01-17For now, work around Clang 11 -flax-vector-conversion=integer in external/skiaStephan Bergmann
<https://github.com/llvm/llvm-project/commit/ b72a8c65e4e34779b6bc9e466203f553f5294486> "PR17164: Change clang's default behavior from -flax-vector-conversions=all to -flax-vector-conversions=integer" broke the build with > In file included from /data/sbergman/lo-clang/core/workdir/UnpackedTarball/skia/src/core/SkOpts.cpp:43: > /data/sbergman/lo-clang/core/workdir/UnpackedTarball/skia/src/opts/SkRasterPipeline_opts.h:713:26: error: no matching function for call to '_mm_and_ps' > return _mm_or_ps(_mm_and_ps(c, t), _mm_andnot_ps(c, e)); > ^~~~~~~~~~ > /data/sbergman/llvm/inst/lib/clang/11.0.0/include/xmmintrin.h:404:1: note: candidate function not viable: no known conversion from 'sse2::I32' (aka 'V<int32_t>') to '__m128' (vector of 4 'float' values) for 1st argument > _mm_and_ps(__m128 __a, __m128 __b) > ^ etc. We could pass in -flax-vector-conversions=all on the compiler command line for Clang 11, but that option is not understood by older versions, so for now just disable the failing JUMPER_IS_SSE2/JUMPER_IS_SSE41 code paths. Ultimately, the skia code will need to be fixed. Change-Id: If3202789f5f08bb40cf2ad8f6bcef5b5b3e462dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86939 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-01-14fix Skia CPU instruction set support (tdf#129546)Luboš Luňák
It was a mistake to compile the SkOpts.cpp file with the highest CPU set available. I got confused by what SK_CPU_SSE_LEVEL means. That setting is the lowest set supported, so we should leave it at whatever Skia's SkPreConfig.h detects it to be from the actual compiler flags (the ones used for building everything). SkOpts::init() does runtime checks only for sets _lower_ than what SK_CPU_SSE_LEVEL says, so by compiling the file with the highest set all these runtime checks got disabled and it was assumed that the set defined by SK_CPU_SSE_LEVEL is always available. Change-Id: I839370645a9cafbede2d37017b9332cc739fc317 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86682 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-01-06avoid Skia assert on leaked resourcesLuboš Luňák
Change-Id: Ie9d9117c43d19b9391f8e0dee6825076aaa12706 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85582 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-12-29skia: make gcc not crash for x86 buildsThorsten Behrens
Otherwise at least on x86, gcc bails out with an ICE: skia/third_party/skcms/src/Transform_inl.h: In function ‘void baseline::clut(const skcms_A2B*, baseline::F*, baseline::F*, baseline::F*, baseline::F)’: skia/third_party/skcms/src/Transform_inl.h:695:13: note: The ABI for passing parameters with 16-byte alignment has changed in GCC 4.6 static void clut(const skcms_A2B* a2b, F* r, F* g, F* b, F a) { ^~~~ skia/third_party/skcms/skcms.cpp: At global scope: skia/third_party/skcms/skcms.cpp:2613:1: internal compiler error: Segmentation fault } ^ Likely reason: optimizer stumbles over F being non-register-passable, c.f. https://stackoverflow.com/questions/39383193/compiling-legacy-gcc-code-with-avx-vector-warnings Fix is an obvious bandaid, but fixes build for CentOS7 devtoolset-7. I suspect though that non-avx/sse2 builds are not a supported scenario for skia, in the end... Change-Id: Iaff734de8dc8b9a6fbf868c13810074f9667720b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85933 Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2019-12-12external/skia: Further -Werror=deprecated-copy-dtor for Clang 10 trunkStephan Bergmann
...where the warning finds more occurrences than with GCC Change-Id: I12303de8f3b2d3299e847480e556ad03663d5401 Reviewed-on: https://gerrit.libreoffice.org/85040 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-12-12update Skia to chrome/m80Luboš Luňák
Change-Id: I26782c8bd3d8ce34cbf7ce5a00b884436d37cb85 Reviewed-on: https://gerrit.libreoffice.org/84617 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-12-04external/skia: Fix -Werror=deprecated-copy-dtorStephan Bergmann
...happening when LO code includes skia files: > vcl/skia/gdiimpl.cxx: In member function ‘void SkiaSalGraphicsImpl::createOffscreenSurface()’: > vcl/skia/gdiimpl.cxx:246:83: error: implicitly-declared ‘sk_app::VulkanWindowContext::SharedGrContext& sk_app::VulkanWindowContext::SharedGrContext::operator=(const sk_app::VulkanWindowContext::SharedGrContext&)’ is deprecated [-Werror=deprecated-copy-dtor] > 246 | mOffscreenGrContext = sk_app::VulkanWindowContext::getSharedGrContext(); > | ^ > In file included from vcl/inc/skia/gdiimpl.hxx:29, > from vcl/skia/gdiimpl.cxx:20: > workdir/UnpackedTarball/skia/tools/sk_app/VulkanWindowContext.h:35:9: note: because ‘sk_app::VulkanWindowContext::SharedGrContext’ has user-provided ‘sk_app::VulkanWindowContext::SharedGrContext::~SharedGrContext()’ > 35 | ~SharedGrContext() { shared.reset(); checkDestroyShared(); } > | ^ See e9e4eb0736d5582fa37dcad20bf5826c50029249 "Fix some -Werror=deprecated-copy-dtor" for details about -Wdeprecated-copy-dtor. Change-Id: Ic393acff5c4d8e3eaa78b4dfed51626f73e95ed4 Reviewed-on: https://gerrit.libreoffice.org/84425 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-12-03split instrinsics CXXFLAGS per each instruction setLuboš Luňák
The common usage pattern should be having one source file per each instruction set and then one source file compiled with neutral flags that dispatches to the relevant code based on runtime checks. Which means that there can't be any one "correct" flag, otherwise all files would get compiled e.g. with SSE4.2 but then CPUs capable only of SSE2 would crash running that code. Change-Id: I362bf66f672dae4588a48effe3bcd30c34ea75b3 Reviewed-on: https://gerrit.libreoffice.org/84227 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2019-11-29do not explicitly link to libGLXLuboš Luňák
Apparently it doesn't exist on some old distros, and libGL links to libGLX anyway. Change-Id: I71ed5aef9e2309b34f9fed6fd1825c1cdb6b1afb
2019-11-27external/skia: -Werror,-Wdeprecated-copyStephan Bergmann
> In file included from vcl/skia/gdiimpl.cxx:20: > In file included from vcl/inc/skia/gdiimpl.hxx:28: > In file included from workdir/UnpackedTarball/skia/include/core/SkSurface.h:13: > workdir/UnpackedTarball/skia/include/core/SkSurfaceProps.h:66:5: error: definition of implicit copy assignment operator for 'SkSurfaceProps' is deprecated because it has a user-declared copy constructor [-Werror,-Wdeprecated-copy] > SkSurfaceProps(const SkSurfaceProps& other); > ^ > workdir/UnpackedTarball/skia/tools/sk_app/DisplayParams.h:16:8: note: in implicit copy assignment operator for 'SkSurfaceProps' first required here > struct DisplayParams { > ^ > workdir/UnpackedTarball/skia/tools/sk_app/VulkanWindowContext.h:57:24: note: in implicit copy assignment operator for 'sk_app::DisplayParams' first required here > fDisplayParams = params; > ^ with recent Clang 10 trunk, similar to ae71a0adef64b292ab01194817d2d763f7c85433 "Remove some redundantly user-declared copy ctors and assignment ops" Change-Id: I71263d8b3725478afc3a72f6f3ee9d73a277a8fd Reviewed-on: https://gerrit.libreoffice.org/83907 Reviewed-by: Michael Stahl <michael.stahl@cib.de> Tested-by: Michael Stahl <michael.stahl@cib.de>
2019-11-27external/skia: C++20 comparison operator fixStephan Bergmann
Missing const leads to overload resolution ambiguity when a synthesized candidate of operator == for a reversed-argument rewrite conflicts with the actual operator ==, due to the asymmetric const-ness of the implicit object parameter and the RHS parameter: > In file included from workdir/UnpackedTarball/skia/src/shaders/SkLightingShader.cpp:15: > In file included from workdir/UnpackedTarball/skia/src/core/SkReadBuffer.h:13: > In file included from workdir/UnpackedTarball/skia/include/core/SkFont.h:13: > In file included from workdir/UnpackedTarball/skia/include/core/SkTypeface.h:16: > In file included from workdir/UnpackedTarball/skia/include/core/SkString.h:15: > workdir/UnpackedTarball/skia/include/private/SkTArray.h:389:35: error: use of overloaded operator '!=' is ambiguous (with operand types 'SkLights::Light' and 'SkLights::Light') > if (fItemArray[index] != right.fItemArray[index]) { > ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~ > workdir/UnpackedTarball/skia/src/shaders/SkLightingShader.cpp:268:35: note: in instantiation of member function 'SkTArray<SkLights::Light, false>::operator==' requested here > return fDirectionalLights == lightingFP.fDirectionalLights && > ^ > workdir/UnpackedTarball/skia/src/shaders/SkLights.h:90:14: note: candidate function > bool operator!=(const Light& other) { return !(this->operator==(other)); } > ^ > workdir/UnpackedTarball/skia/src/shaders/SkLights.h:83:14: note: candidate function > bool operator==(const Light& other) { > ^ > workdir/UnpackedTarball/skia/src/shaders/SkLights.h:83:14: note: candidate function (with reversed parameter order) Change-Id: I61b28e191b36f84df6920b4143809d1f497b9113 Reviewed-on: https://gerrit.libreoffice.org/83900 Reviewed-by: Michael Stahl <michael.stahl@cib.de> Tested-by: Michael Stahl <michael.stahl@cib.de>
2019-11-27do not require Vulkan devel package for SkiaLuboš Luňák
I don't see why this should use libvulkan.so, using libvulkan.so.1 should do as well, and quite possibly any future libvulkan.so.2 could be binary-incompatible anyway. Change-Id: I46be40da7fbfdcb59c947e6d088820e580cf4c44
2019-11-27patch Skia bug with copying data with different alpha typeLuboš Luňák
https://bugs.chromium.org/p/skia/issues/detail?id=9662 Change-Id: Ic5208c2c817912cddbfae4b86e3b3647306262fb
2019-11-27fix Skia with --enable-pch=fullLuboš Luňák
Change-Id: I6bec47e373c042d1ffb3607bf5dca9dfe2509466
2019-11-27solve the Skia lerp() conflict differentlyLuboš Luňák
New versions of libstdc++ provide lerp() in the global namespace, older ones don't, but it depends on the libstdc++ version and not the c++ version. Since the function is local, just "rename" it. Change-Id: I37896190c620350739fba9b8ce6544f945519244
2019-11-27disable Skia resource leak checking on exitLuboš Luňák
This is normally enabled in Skia debug builds and it asserts if there is a problem, which there is with a number of our unittests that leak something (usually a VirtualDevice). Those are non-trivial to find and don't matter in practice (or if they do they should be fixed for all VCL backends), so just disable the Skia check. Change-Id: I0a0721d8a3f0f961e14513574f4b3cc88ec1e62c
2019-11-27make Skia GPU offscreen surfaces work with unittestsLuboš Luňák
Skia is now patched to be able to create also invalid sk_app::WindowContext that will just initialize the shared GrContext. And always use that GrContext, even for tests, because some tests first create a offscreen surfaces and only later create windows, which before this patch led to mixing GrContext instances. Change-Id: Ic79c0719f98f6ac48527c2ea2a9a9a69412adeff
2019-11-27make Skia VCL backend fall back to raster if vulkan doesn't workLuboš Luňák
Change-Id: Ic446f6f85e5ebc2e50cb51a3ed1e732b8976a193
2019-11-27fix Skia offscreen GPU-backed drawingLuboš Luňák
The previous approach of using multiple GrContext instances apparently does not work, it's not possible to do drawing operations that involve objects using two different GrContext's. So patch Skia to use just one GrContext for our needs. See vcl/skia/README for details. Change-Id: I2bd3d3c618bf7f8ff45b2f37cbd086d2289940aa
2019-11-27make SkiaSalGraphicsImpl use GPU-backed SkSurface also for offscreenLuboš Luňák
Skia's sk_app::WindowContext can create GPU-backed SkSurface only for windows, but we also use virtual devices that are not windows. Fortunately, SkSurface can be created GPU-backed from GrContext* and sk_gpu_test::GrContextFactory seems to provide it easily. It is not completely clear to me what the rules are on mixing SkSurface's with different GrContext* (see the comment in SkiaSalGraphicsImpl::copyBits()), but it seems to work fine. Change-Id: I8110b67c41ab092e0c4b6a0973d6bed8a408c4c1
2019-11-27update Skia fix-shader-locale.patch.1 to the upstream versionLuboš Luňák
Change-Id: Ie8606f30d3f821d7b195aa7978886d529a57bfd2
2019-11-27update Skia PCH after the update to m79Luboš Luňák
Change-Id: I1e18686ac6f501a04d6f56c78c998621d430d721
2019-11-27fix Skia/vulkan with some localesLuboš Luňák
Change-Id: Ie2dcd526efba5631a6956023d864be828c6eb634
2019-11-27update Skia to chrome-m79Luboš Luňák
Change-Id: Ie79f4752c4d0978b816774674bc923e6973289f8
2019-11-27update PCH for SkiaLuboš Luňák
Change-Id: Iece4d90774890576bd3d84ed2218de56def96077
2019-11-27use the same config file for skia build and using itLuboš Luňák
So that the setup is consistent. Change-Id: Ia113c7bf79036e3ec7585263ed70da68e461fbac
2019-11-27initial implementation of Skia drawing on screen in WindowsLuboš Luňák
Change-Id: I1562bd2cfd1862947042bef3343aefd851a65002
2019-11-27build also the tools/sk_app part of SkiaLuboš Luňák
That's basically code that allows intergrating the library with X11 etc. Change-Id: I3f5506ef4ecc334b4e93c4450fb1aa4c53dbfefc
2019-11-27build Skia also on WindowsLuboš Luňák
Change-Id: Ic86aac42745c3241ce14235cc1b4f4adb39eba2d
2019-11-27add PCH to SkiaLuboš Luňák
Change-Id: I0aa96bec7319010ff4749e3ab5c0ceef3dc55766
2019-11-27build also OpenGL and Vulkan support in SkiaLuboš Luňák
Change-Id: I0b42dd0ef4d1e92bcde7c4b64d2fc159e8bebcb1
2019-11-27initial build of the Skia libraryLuboš Luňák
Not quite complete yet, missing e.g. Vulkan sources, and the setup is not completely correct either. Change-Id: I2283bf12f0d226ff8a34554deae5a7bd69045971