Age | Commit message (Collapse) | Author |
|
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>
|
|
Change-Id: Ibe17072dd0c1f4b7f76d05a2dac0e2cbf1eb151d
|
|
... 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>
|
|
Change-Id: I62ac293ac5fde3716b2db1421301f3a4aed0bcc9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87763
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
<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>
|
|
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>
|
|
Change-Id: Ie9d9117c43d19b9391f8e0dee6825076aaa12706
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85582
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
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>
|
|
...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>
|
|
Change-Id: I26782c8bd3d8ce34cbf7ce5a00b884436d37cb85
Reviewed-on: https://gerrit.libreoffice.org/84617
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
...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>
|
|
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>
|
|
Apparently it doesn't exist on some old distros, and libGL links
to libGLX anyway.
Change-Id: I71ed5aef9e2309b34f9fed6fd1825c1cdb6b1afb
|
|
> 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>
|
|
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>
|
|
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
|
|
https://bugs.chromium.org/p/skia/issues/detail?id=9662
Change-Id: Ic5208c2c817912cddbfae4b86e3b3647306262fb
|
|
Change-Id: I6bec47e373c042d1ffb3607bf5dca9dfe2509466
|
|
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
|
|
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
|
|
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
|
|
Change-Id: Ic446f6f85e5ebc2e50cb51a3ed1e732b8976a193
|
|
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
|
|
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
|
|
Change-Id: Ie8606f30d3f821d7b195aa7978886d529a57bfd2
|
|
Change-Id: I1e18686ac6f501a04d6f56c78c998621d430d721
|
|
Change-Id: Ie2dcd526efba5631a6956023d864be828c6eb634
|
|
Change-Id: Ie79f4752c4d0978b816774674bc923e6973289f8
|
|
Change-Id: Iece4d90774890576bd3d84ed2218de56def96077
|
|
So that the setup is consistent.
Change-Id: Ia113c7bf79036e3ec7585263ed70da68e461fbac
|
|
Change-Id: I1562bd2cfd1862947042bef3343aefd851a65002
|
|
That's basically code that allows intergrating the library with X11 etc.
Change-Id: I3f5506ef4ecc334b4e93c4450fb1aa4c53dbfefc
|
|
Change-Id: Ic86aac42745c3241ce14235cc1b4f4adb39eba2d
|
|
Change-Id: I0aa96bec7319010ff4749e3ab5c0ceef3dc55766
|
|
Change-Id: I0b42dd0ef4d1e92bcde7c4b64d2fc159e8bebcb1
|
|
Not quite complete yet, missing e.g. Vulkan sources, and the setup
is not completely correct either.
Change-Id: I2283bf12f0d226ff8a34554deae5a7bd69045971
|