[Libreoffice-commits] core.git: Branch 'libreoffice-5-1-4' - opencl/source

Mark Hung marklh9 at gmail.com
Thu Jun 9 12:47:42 UTC 2016


 opencl/source/opencl_device.cxx |   11 ++++++++---
 opencl/source/openclwrapper.cxx |    7 ++++---
 2 files changed, 12 insertions(+), 6 deletions(-)

New commits:
commit 3d8391ee12d235e103f9ec1fbf455999c373703a
Author: Mark Hung <marklh9 at gmail.com>
Date:   Fri May 13 19:58:18 2016 +0800

    Ensure that OpenCL device id returned from getDeviceSelection() is valid.
    
    Possible fix for tdf#100104
    
    Reviewed-on: https://gerrit.libreoffice.org/24959
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Mark Page <aptitude at btconnect.com>
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
    (cherry picked from commit 40b0b9ab7703a165295b008f47df14d2ec076fb1)
    
    Change-Id: I756bb57d471db3d3ca1d9c3733d359c7c16b4e66
    Reviewed-on: https://gerrit.libreoffice.org/25965
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/opencl/source/opencl_device.cxx b/opencl/source/opencl_device.cxx
index 2acecdf2..85fea92 100644
--- a/opencl/source/opencl_device.cxx
+++ b/opencl/source/opencl_device.cxx
@@ -635,10 +635,15 @@ ds_device getDeviceSelection(
         }
 
         /* Final device selection */
-        selectedDevice = aProfile->devices[bestDeviceIdx];
-        bIsDeviceSelected = true;
+        if (bestDeviceIdx >=0 && static_cast< std::vector<ds_device>::size_type> ( bestDeviceIdx ) < aProfile->devices.size() )
+        {
+            selectedDevice = aProfile->devices[bestDeviceIdx];
+            bIsDeviceSelected = true;
 
-        writeDevicesLog(aProfile, sProfilePath, bestDeviceIdx);
+            writeDevicesLog(aProfile, sProfilePath, bestDeviceIdx);
+        } else {
+            selectedDevice.eType = DeviceType::NativeCPU;
+        }
     }
     return selectedDevice;
 }
diff --git a/opencl/source/openclwrapper.cxx b/opencl/source/openclwrapper.cxx
index e488f79..8d57ae4 100644
--- a/opencl/source/openclwrapper.cxx
+++ b/opencl/source/openclwrapper.cxx
@@ -703,9 +703,10 @@ bool switchOpenCLDevice(const OUString* pDevice, bool bAutoSelect, bool bForceEv
         rtl::Bootstrap::expandMacros(url);
         OUString path;
         osl::FileBase::getSystemPathFromFileURL(url,path);
-        ds_device pSelectedDevice = getDeviceSelection(path, bForceEvaluation);
-        pDeviceId = pSelectedDevice.aDeviceID;
-
+        ds_device aSelectedDevice = getDeviceSelection(path, bForceEvaluation);
+        if ( aSelectedDevice.eType != DeviceType::OpenCLDevice)
+            return false;
+        pDeviceId = aSelectedDevice.aDeviceID;
     }
 
     if(gpuEnv.mpDevID == pDeviceId)


More information about the Libreoffice-commits mailing list