Age | Commit message (Collapse) | Author |
|
Change-Id: I0507dd797cd5a35e0ae14f4b69ee4e172d08a71a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105681
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
|
|
To be used also by Skia code to detect problems with Vulkan drivers.
The watchdog does not handle OpenCL because neither did the original
code, but also because OpenCLZone::hardDisable() called from it
would deadlock on SolarMutex for some reason.
Change-Id: I483d8cb0b11a4e1e65c564f4e4c29ab68843ff71
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88008
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
The side effect is intentional here.
Change-Id: I05d166bb312ea3a97905607c5effccf1e8d8eef7
Reviewed-on: https://gerrit.libreoffice.org/79668
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Recent GCC 10 trunk in C++20 mode reports issues like
> include/opencl/OpenCLZone.hxx:27:9: error: ‘++’ expression of ‘volatile’-qualified type is deprecated [-Werror=volatile]
> 27 | gnEnterCount++;
> | ^~~~~~~~~~~~
But unlike in the case of ec17c8ec5256386b0197a8ffe5d7cad3e7d70f8f
"-Werror=volatile in OpenGLZone",
* it looks like there are no multi-threading issues here, and the counters are
just accessed (via OpenCLZone::isInZone) from the VCLExceptionSignal_impl
signal handler in addition to being modified (via OpenCLZone RAII objects)
from mainline code; and
* from the usage pattern of gnEnterCount and gnLeaveCount it appears that they
can be combined into a single counter.
(f41eb66302208f384a475fb20c98b6d1b0676cb6 "opencl: OpenCLZone, detect CL
device change and disable CL on crash" presumably modelled OpenCLZone naively
after OpenGLZone, without simplifying it where possible.) One minor advantage
of having two monotonically increasing counters is that when they overflow,
the implementation of isInZone (comparing them for equality) still gives
~useful results (assuming that a false "match" of non-overflown gnEnterCount
against overflown gnLeaveCount is highly unlikely). But instances of
OpenCLZone RAII objects are presumably never nested very deeply (if at all),
so that the newly added "TODO: overflow" comment (which would even cause UB if
std::sig_atomic_t is signed) is probably of no practical concern.
Change-Id: I92e1f2c46ca996a0a86bacabcda2accba5eb6298
Reviewed-on: https://gerrit.libreoffice.org/79106
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Add a flag to the OpenCLZone indicating whether we are performing the
first-start OpenCL functionality verification, so that if we run into
a crash that is caught by the VCL VCLExceptionSignal_impl() handler,
we terminate the process with the EXITHELPER_NORMAL_RESTART
status after first having disabled OpenCL use. The wrapper process will
then restart soffice.bin. This is for Windows only so far.
This matches what we do if OpenGL fails early during start of
LibreOffice.
Change-Id: Ibb9bf3a86b7521bf16728de2a118ad4323be674b
Reviewed-on: https://gerrit.libreoffice.org/28086
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
|
|
Change-Id: I42d2d6a12d49fc60c625dc2d230f70d05cf67673
|
|
Guard OpenCL calls with OpenCLZone, so if a OpenCL call crashes we
detect this and disable OpenCL so next time the user doesn't encounter
the crash at the same calculation because he has a broken OpenCL
drivers. Similar has been implemented for OpenGL with good results.
Additionaly we persistently remember a known good OpenCL device ID and
driver version so we can match this and perform calculation tests when
they change. This is to ensure that the selected OpenCL device performs
as we expect. In this commit the calculation tests aren't included yet.
Remove complex static initializer in opencl wrapper library.
Change-Id: I1a8b81ee31298731efcf63dc6a476955afc035e9
Reviewed-on: https://gerrit.libreoffice.org/27064
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
|