diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2016-07-08 22:16:27 +0900 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2016-07-13 21:07:56 +0200 |
commit | e79f63ee76b2c4dd2e47c250e07931433305855c (patch) | |
tree | 8d59c099576d7b1af684794d29a983020ea01ead /vcl | |
parent | c44abe5735f17dcb678748766bf40ccf035642fd (diff) |
opencl: OpenCLZone, detect CL device change and disable CL on crash
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.
Reviewed-on: https://gerrit.libreoffice.org/27064
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
(cherry picked from commit f41eb66302208f384a475fb20c98b6d1b0676cb6)
Change-Id: I1a8b81ee31298731efcf63dc6a476955afc035e9
Reviewed-on: https://gerrit.libreoffice.org/27103
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
(cherry picked from commit e1ef22371613f384cc2f6fc75d022cb01bf92af7)
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/Library_vcl.mk | 1 | ||||
-rw-r--r-- | vcl/source/app/svmain.cxx | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index 7b9ad01f9749..346532fb888e 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -85,6 +85,7 @@ $(eval $(call gb_Library_use_libraries,vcl,\ cppuhelper \ i18nlangtag \ i18nutil \ + $(if $(filter OPENCL,$(BUILD_TYPE)),opencl) \ cppu \ sal \ salhelper \ diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index e6f4be145de0..0de16d9b4fb8 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -82,6 +82,7 @@ #include <cppuhelper/implbase.hxx> #include "uno/current_context.hxx" +#include <opencl/OpenCLZone.hxx> #include "opengl/zone.hxx" #include "opengl/watchdog.hxx" @@ -112,6 +113,10 @@ oslSignalAction SAL_CALL VCLExceptionSignal_impl( void* /*pData*/, oslSignalInfo nVCLException = EXC_SYSTEM; if (OpenGLZone::isInZone()) OpenGLZone::hardDisable(); +#if HAVE_FEATURE_OPENCL + if (OpenCLZone::isInZone()) + OpenCLZone::hardDisable(); +#endif } // RC |