offapi/UnoApi_offapi.mk | 7 + offapi/com/sun/star/sheet/opencl/OpenCLDevice.idl | 37 +++++++ offapi/com/sun/star/sheet/opencl/OpenCLPlatform.idl | 33 ++++++ offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl | 52 +++++++++++ sc/inc/docuno.hxx | 25 +++++ sc/inc/formulagroup.hxx | 1 sc/source/core/opencl/formulagroupcl.cxx | 5 + sc/source/core/opencl/openclwrapper.cxx | 39 ++++++++ sc/source/core/opencl/openclwrapper.hxx | 2 sc/source/core/tool/formulagroup.cxx | 33 ++++++ sc/source/ui/unoobj/docuno.cxx | 85 +++++++++++++++++- 11 files changed, 317 insertions(+), 2 deletions(-)
New commits: commit 4e736a8b8ce4d69c5be924b77bb07bd19b1e4d73 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sat Nov 23 20:02:26 2013 +0100 add API to retrieve all available OpenCL platforms and devices Change-Id: I2475961ae315ee7193ca2cedd5943b663bfee7a0 diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk index e7c52f2..a1ad831 100755 --- a/offapi/UnoApi_offapi.mk +++ b/offapi/UnoApi_offapi.mk @@ -3327,6 +3327,8 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/security,\ )) $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/sheet/opencl,\ + OpenCLDevice \ + OpenCLPlatform \ XOpenCLSelection \ )) diff --git a/offapi/com/sun/star/sheet/opencl/OpenCLDevice.idl b/offapi/com/sun/star/sheet/opencl/OpenCLDevice.idl new file mode 100644 index 0000000..7cf795f --- /dev/null +++ b/offapi/com/sun/star/sheet/opencl/OpenCLDevice.idl @@ -0,0 +1,37 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef __com_sun_star_sheet_opencl_OpenCLDevice_idl__ +#define __com_sun_star_sheet_opencl_OpenCLDevice_idl__ + +module com { module sun { module star { module sheet { module opencl { + +struct OpenCLDevice +{ + /** + * The name of the device as returned by OpenCL + */ + string Name; + + /** + * The vendor of the device as returned by OpenCL + */ + string Vendor; + + /** + * The driver version as returned by OpenCL + */ + string Driver; +}; + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/sheet/opencl/OpenCLPlatform.idl b/offapi/com/sun/star/sheet/opencl/OpenCLPlatform.idl new file mode 100644 index 0000000..bb8a683 --- /dev/null +++ b/offapi/com/sun/star/sheet/opencl/OpenCLPlatform.idl @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef __com_sun_star_sheet_opencl_OpenCLPlatform_idl__ +#define __com_sun_star_sheet_opencl_OpenCLPlatform_idl__ + +#include <com/sun/star/sheet/opencl/OpenCLDevice.idl> + +module com { module sun { module star { module sheet { module opencl { + +struct OpenCLPlatform +{ + /** + * The name of the platform as returned by OpenCL + */ + string Name; + + string Vendor; + + sequence< OpenCLDevice > Devices; +}; + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl b/offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl index c6e18cf..26ab328 100644 --- a/offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl +++ b/offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl @@ -7,6 +7,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include <com/sun/star/sheet/opencl/OpenCLPlatform.idl> + module com { module sun { module star { module sheet { module opencl { interface XOpenCLSelection : com::sun::star::uno::XInterface @@ -38,6 +40,11 @@ interface XOpenCLSelection : com::sun::star::uno::XInterface */ long getDeviceID(); + /** + * lists all OpenCL devices and platforms + */ + sequence< OpenCLPlatform > getOpenCLPlatforms(); + }; }; }; }; }; }; diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx index a3b7680..1228afe 100644 --- a/sc/inc/docuno.hxx +++ b/sc/inc/docuno.hxx @@ -46,6 +46,7 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/sheet/XCellRangesAccess.hpp> #include <com/sun/star/sheet/opencl/XOpenCLSelection.hpp> +#include <com/sun/star/sheet/opencl/OpenCLPlatform.hpp> #include <com/sun/star/util/XChangesNotifier.hpp> #include <cppuhelper/implbase2.hxx> #include <cppuhelper/implbase3.hxx> @@ -333,6 +334,10 @@ public: virtual sal_Int32 SAL_CALL getDeviceID() throw(::com::sun::star::uno::RuntimeException); + + virtual com::sun::star::uno::Sequence< com::sun::star::sheet::opencl::OpenCLPlatform > + SAL_CALL getOpenCLPlatforms() + throw(::com::sun::star::uno::RuntimeException); }; diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx index 24459c6..54d997d 100644 --- a/sc/source/core/opencl/openclwrapper.cxx +++ b/sc/source/core/opencl/openclwrapper.cxx @@ -997,6 +997,10 @@ bool switchOpenclDevice(const OUString* pDevice, bool bAutoSelect) void getOpenCLDeviceInfo(size_t& rDeviceId, size_t& rPlatformId) { + int status = clewInit(OPENCL_DLL_NAME); + if (status < 0) + return; + cl_device_id id = OpenclDevice::gpuEnv.mpDevID; findDeviceInfoFromDeviceId(id, rDeviceId, rPlatformId); } diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx index 372e8fc..c225820 100644 --- a/sc/source/core/tool/formulagroup.cxx +++ b/sc/source/core/tool/formulagroup.cxx @@ -660,7 +660,7 @@ void FormulaGroupInterpreter::getOpenCLDeviceInfo(sal_Int32& rDeviceId, sal_Int3 rDeviceId = -1; rPlatformId = -1; bool bOpenCLEnabled = ScInterpreter::GetGlobalConfig().mbOpenCLEnabled; - if(bOpenCLEnabled) + if(!bOpenCLEnabled) return; #if HAVE_FEATURE_OPENCL diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index c1671c6..b78f8b8 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -477,6 +477,7 @@ uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType ) SC_QUERYINTERFACE( lang::XMultiServiceFactory ) SC_QUERYINTERFACE( lang::XServiceInfo ) SC_QUERYINTERFACE( util::XChangesNotifier ) + SC_QUERYINTERFACE( sheet::opencl::XOpenCLSelection ) uno::Any aRet(SfxBaseModel::queryInterface( rType )); if ( !aRet.hasValue() @@ -529,7 +530,7 @@ uno::Sequence<uno::Type> SAL_CALL ScModelObj::getTypes() throw(uno::RuntimeExcep long nAggLen = aAggTypes.getLength(); const uno::Type* pAggPtr = aAggTypes.getConstArray(); - const long nThisLen = 15; + const long nThisLen = 16; aTypes.realloc( nParentLen + nAggLen + nThisLen ); uno::Type* pPtr = aTypes.getArray(); pPtr[nParentLen + 0] = getCppuType((const uno::Reference<sheet::XSpreadsheetDocument>*)0); @@ -547,6 +548,7 @@ uno::Sequence<uno::Type> SAL_CALL ScModelObj::getTypes() throw(uno::RuntimeExcep pPtr[nParentLen +12] = getCppuType((const uno::Reference<lang::XMultiServiceFactory>*)0); pPtr[nParentLen +13] = getCppuType((const uno::Reference<lang::XServiceInfo>*)0); pPtr[nParentLen +14] = getCppuType((const uno::Reference<util::XChangesNotifier>*)0); + pPtr[nParentLen +15] = getCppuType((const uno::Reference<sheet::opencl::XOpenCLSelection>*)0); long i; for (i=0; i<nParentLen; i++) @@ -2341,6 +2343,31 @@ sal_Int32 ScModelObj::getDeviceID() return nDeviceId; } +uno::Sequence< sheet::opencl::OpenCLPlatform > ScModelObj::getOpenCLPlatforms() + throw (uno::RuntimeException) +{ + std::vector<sc::OpenclPlatformInfo> aPlatformInfo; + sc::FormulaGroupInterpreter::fillOpenCLInfo(aPlatformInfo); + + uno::Sequence<sheet::opencl::OpenCLPlatform> aRet(aPlatformInfo.size()); + for(size_t i = 0; i < aPlatformInfo.size(); ++i) + { + aRet[i].Name = aPlatformInfo[i].maName; + aRet[i].Vendor = aPlatformInfo[i].maVendor; + + aRet[i].Devices.realloc(aPlatformInfo[i].maDevices.size()); + for(size_t j = 0; j < aPlatformInfo[i].maDevices.size(); ++j) + { + const sc::OpenclDeviceInfo& rDevice = aPlatformInfo[i].maDevices[j]; + aRet[i].Devices[j].Name = rDevice.maName; + aRet[i].Devices[j].Vendor = rDevice.maVendor; + aRet[i].Devices[j].Driver = rDevice.maDriver; + } + } + + return aRet; +} + //------------------------------------------------------------------------ commit 6c71102545beccd0a4f8ec8ee7123d3c63e1b09d Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Fri Nov 22 20:27:48 2013 +0100 provide UNO API for OpenCL selection Change-Id: If5eb71e9298cefdac3dda98cb1ff67fe913ad3c3 diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk index f75da685..e7c52f2 100755 --- a/offapi/UnoApi_offapi.mk +++ b/offapi/UnoApi_offapi.mk @@ -3325,6 +3325,11 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/security,\ XSanExtension \ XSerialNumberAdapter \ )) + +$(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/sheet/opencl,\ + XOpenCLSelection \ +)) + $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/sheet,\ ActivationEvent \ AddressConvention \ diff --git a/offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl b/offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl new file mode 100644 index 0000000..c6e18cf --- /dev/null +++ b/offapi/com/sun/star/sheet/opencl/XOpenCLSelection.idl @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +module com { module sun { module star { module sheet { module opencl { + +interface XOpenCLSelection : com::sun::star::uno::XInterface +{ + + /** + * Returns true if calculation with OpenCL is enabled + */ + boolean isOpenCLEnabled(); + + /** + * Enables or disables OpenCL + */ + void enableOpenCL( [in] boolean enable ); + + /** + * Set the OpenCL device with the platform ID and device ID + * Uses the ID of the platform and the device + */ + void selectOpenCLDevice( [in] long platform, [in] long device ); + + /** + * returns the platform id of the currently selected device + */ + long getPlatformID(); + + /** + * returns the device id of the currently selected device + */ + long getDeviceID(); + +}; + +}; }; }; }; }; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx index 9be1ee2..a3b7680 100644 --- a/sc/inc/docuno.hxx +++ b/sc/inc/docuno.hxx @@ -45,6 +45,7 @@ #include <com/sun/star/sheet/XSheetAnnotations.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/sheet/XCellRangesAccess.hpp> +#include <com/sun/star/sheet/opencl/XOpenCLSelection.hpp> #include <com/sun/star/util/XChangesNotifier.hpp> #include <cppuhelper/implbase2.hxx> #include <cppuhelper/implbase3.hxx> @@ -81,7 +82,8 @@ class SC_DLLPUBLIC ScModelObj : public SfxBaseModel, public com::sun::star::beans::XPropertySet, public SvxFmMSFactory, ///< derived from XMultiServiceFactory public com::sun::star::lang::XServiceInfo, - public ::com::sun::star::util::XChangesNotifier + public ::com::sun::star::util::XChangesNotifier, + public com::sun::star::sheet::opencl::XOpenCLSelection { private: SfxItemPropertySet aPropSet; @@ -315,6 +317,22 @@ public: virtual void SAL_CALL removeChangesListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XChangesListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); + + // XOpenCLSelection + virtual sal_Bool SAL_CALL isOpenCLEnabled() + throw(::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL enableOpenCL(sal_Bool bEnable) + throw(::com::sun::star::uno::RuntimeException); + + virtual void SAL_CALL selectOpenCLDevice( sal_Int32 platform, sal_Int32 device ) + throw(::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getPlatformID() + throw(::com::sun::star::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getDeviceID() + throw(::com::sun::star::uno::RuntimeException); }; diff --git a/sc/inc/formulagroup.hxx b/sc/inc/formulagroup.hxx index 9f8d09c..17f00d1 100644 --- a/sc/inc/formulagroup.hxx +++ b/sc/inc/formulagroup.hxx @@ -97,6 +97,7 @@ class SC_DLLPUBLIC FormulaGroupInterpreter static void fillOpenCLInfo(std::vector<OpenclPlatformInfo>& rPlatforms); static bool switchOpenCLDevice(const OUString& rDeviceId, bool bAutoSelect); static void enableOpenCL(bool bEnable); + static void getOpenCLDeviceInfo(sal_Int32& rDeviceId, sal_Int32& rPlatformId); virtual ScMatrixRef inverseMatrix(const ScMatrix& rMat) = 0; virtual CompiledFormula* createCompiledFormula(ScDocument& rDoc, diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx index bee159b..8e4c5be 100644 --- a/sc/source/core/opencl/formulagroupcl.cxx +++ b/sc/source/core/opencl/formulagroupcl.cxx @@ -2894,6 +2894,11 @@ SAL_DLLPUBLIC_EXPORT bool SAL_CALL switchOpenClDevice( return sc::opencl::switchOpenclDevice(pDeviceId, bAutoSelect); } +SAL_DLLPUBLIC_EXPORT void SAL_CALL getOpenCLDeviceInfo(size_t* pDeviceId, size_t* pPlatformId) +{ + sc::opencl::getOpenCLDeviceInfo(*pDeviceId, *pPlatformId); +} + } // extern "C" /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx index 8127b74..24459c6 100644 --- a/sc/source/core/opencl/openclwrapper.cxx +++ b/sc/source/core/opencl/openclwrapper.cxx @@ -889,6 +889,35 @@ cl_device_id findDeviceIdByDeviceString(const OUString& rString, const std::vect return NULL; } +void findDeviceInfoFromDeviceId(cl_device_id aDeviceId, size_t& rDeviceId, size_t& rPlatformId) +{ + cl_platform_id platformId; + cl_int nState = clGetDeviceInfo(aDeviceId, CL_DEVICE_PLATFORM, + sizeof(platformId), &platformId, NULL); + + if(nState != CL_SUCCESS) + return; + + const std::vector<OpenclPlatformInfo>& rPlatforms = fillOpenCLInfo(); + for(size_t i = 0; i < rPlatforms.size(); ++i) + { + cl_platform_id platId = static_cast<cl_platform_id>(rPlatforms[i].platform); + if(platId != platformId) + continue; + + for(size_t j = 0; j < rPlatforms[i].maDevices.size(); ++j) + { + cl_device_id id = static_cast<cl_device_id>(rPlatforms[i].maDevices[j].device); + if(id == aDeviceId) + { + rDeviceId = j; + rPlatformId = i; + return; + } + } + } +} + } bool switchOpenclDevice(const OUString* pDevice, bool bAutoSelect) @@ -966,6 +995,12 @@ bool switchOpenclDevice(const OUString* pDevice, bool bAutoSelect) return !OpenclDevice::initOpenclRunEnv(0); } +void getOpenCLDeviceInfo(size_t& rDeviceId, size_t& rPlatformId) +{ + cl_device_id id = OpenclDevice::gpuEnv.mpDevID; + findDeviceInfoFromDeviceId(id, rDeviceId, rPlatformId); +} + }} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/core/opencl/openclwrapper.hxx b/sc/source/core/opencl/openclwrapper.hxx index 0dfe24c..073ce1a 100644 --- a/sc/source/core/opencl/openclwrapper.hxx +++ b/sc/source/core/opencl/openclwrapper.hxx @@ -185,6 +185,8 @@ const std::vector<OpenclPlatformInfo>& fillOpenCLInfo(); */ bool switchOpenclDevice(const OUString* pDeviceId, bool bAutoSelect); +void getOpenCLDeviceInfo(size_t& rDeviceId, size_t& rPlatformId); + }} #endif diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx index f3ec3e0..372e8fc 100644 --- a/sc/source/core/tool/formulagroup.cxx +++ b/sc/source/core/tool/formulagroup.cxx @@ -33,6 +33,7 @@ extern "C" size_t getOpenCLPlatformCount(void); extern "C" void fillOpenCLInfo(sc::OpenclPlatformInfo*, size_t); extern "C" bool switchOpenClDevice(const OUString*, bool); extern "C" sc::FormulaGroupInterpreter* createFormulaGroupOpenCLInterpreter(); +extern "C" void getOpenCLDeviceInfo(size_t*, size_t*); #endif @@ -504,6 +505,7 @@ typedef FormulaGroupInterpreter* (*__createFormulaGroupOpenCLInterpreter)(void); typedef size_t (*__getOpenCLPlatformCount)(void); typedef void (*__fillOpenCLInfo)(OpenclPlatformInfo*, size_t); typedef bool (*__switchOpenClDevice)(const OUString*, bool); +typedef void (*__getOpenCLDeviceInfo)(size_t*, size_t*); #endif @@ -653,6 +655,37 @@ bool FormulaGroupInterpreter::switchOpenCLDevice(const OUString& rDeviceId, bool return false; } +void FormulaGroupInterpreter::getOpenCLDeviceInfo(sal_Int32& rDeviceId, sal_Int32& rPlatformId) +{ + rDeviceId = -1; + rPlatformId = -1; + bool bOpenCLEnabled = ScInterpreter::GetGlobalConfig().mbOpenCLEnabled; + if(bOpenCLEnabled) + return; + +#if HAVE_FEATURE_OPENCL + + size_t aDeviceId = -1; + size_t aPlatformId = -1; + +#ifndef DISABLE_DYNLOADING + osl::Module* pModule = getOpenCLModule(); + if (!pModule) + return; + + oslGenericFunction fn = pModule->getFunctionSymbol("getOpenCLDeviceInfo"); + if (!fn) + return; + + reinterpret_cast<__getOpenCLDeviceInfo>(fn)(&aDeviceId, &aPlatformId); +#else + getOpenCLDeviceInfo(&aDeviceId, &aPlatformId); +#endif + rDeviceId = aDeviceId; + rPlatformId = aPlatformId; +#endif +} + void FormulaGroupInterpreter::enableOpenCL(bool bEnable) { ScCalcConfig aConfig = ScInterpreter::GetGlobalConfig(); diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index a1312aa..c1671c6 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -92,6 +92,9 @@ #include "sheetevents.hxx" #include "sc.hrc" #include "scresid.hxx" +#include "platforminfo.hxx" +#include "interpre.hxx" +#include "formulagroup.hxx" using namespace com::sun::star; @@ -2286,6 +2289,59 @@ void ScModelObj::HandleCalculateEvents() } } +// XOpenCLSelection + +sal_Bool ScModelObj::isOpenCLEnabled() + throw (uno::RuntimeException) +{ + return ScInterpreter::GetGlobalConfig().mbOpenCLEnabled; +} + +void ScModelObj::enableOpenCL(sal_Bool bEnable) + throw (uno::RuntimeException) +{ + ScCalcConfig aConfig = ScInterpreter::GetGlobalConfig(); + aConfig.mbOpenCLEnabled = bEnable; + ScInterpreter::SetGlobalConfig(aConfig); +} + +void ScModelObj::selectOpenCLDevice( sal_Int32 nPlatform, sal_Int32 nDevice ) + throw (uno::RuntimeException) +{ + if(nPlatform < 0 || nDevice < 0) + throw uno::RuntimeException(); + + std::vector<sc::OpenclPlatformInfo> aPlatformInfo; + sc::FormulaGroupInterpreter::fillOpenCLInfo(aPlatformInfo); + if(size_t(nPlatform) >= aPlatformInfo.size()) + throw uno::RuntimeException(); + + if(size_t(nDevice) >= aPlatformInfo[nPlatform].maDevices.size()) + throw uno::RuntimeException(); + + OUString aDeviceString = aPlatformInfo[nPlatform].maVendor + " " + aPlatformInfo[nPlatform].maDevices[nDevice].maName; + sc::FormulaGroupInterpreter::switchOpenCLDevice(aDeviceString, false); +} + +sal_Int32 ScModelObj::getPlatformID() + throw (uno::RuntimeException) +{ + sal_Int32 nPlatformId; + sal_Int32 nDeviceId; + sc::FormulaGroupInterpreter::getOpenCLDeviceInfo(nDeviceId, nPlatformId); + return nPlatformId; +} + +sal_Int32 ScModelObj::getDeviceID() + throw (uno::RuntimeException) +{ + sal_Int32 nPlatformId; + sal_Int32 nDeviceId; + sc::FormulaGroupInterpreter::getOpenCLDeviceInfo(nDeviceId, nPlatformId); + return nDeviceId; +} + + //------------------------------------------------------------------------ ScDrawPagesObj::ScDrawPagesObj(ScDocShell* pDocSh) : _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits