[Libreoffice-commits] core.git: 6 commits - include/touch sc/inc sc/Module_sc.mk sc/source soltools/cpp sw/source

Markus Mohrhard markus.mohrhard at googlemail.com
Sun Nov 17 09:55:57 PST 2013


 include/touch/touch.h                   |   66 +++++++++++++++++++-------------
 sc/Module_sc.mk                         |    3 -
 sc/inc/platforminfo.hxx                 |    1 
 sc/source/core/opencl/openclwrapper.cxx |   33 +++++++++++++++-
 soltools/cpp/_include.c                 |    4 +
 soltools/cpp/_macro.c                   |    4 +
 sw/source/core/view/viewsh.cxx          |   21 ++++++++--
 7 files changed, 97 insertions(+), 35 deletions(-)

New commits:
commit 3f0f8d09645e7ab03c8757bca9af2e99731075c0
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sun Nov 17 18:23:25 2013 +0100

    enable opencl-test again on all platforms
    
    we have now a way to disable known bad OpenCL compilers based on vendor
    name and driver version

diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk
index a60506c..7f0515a 100644
--- a/sc/Module_sc.mk
+++ b/sc/Module_sc.mk
@@ -59,8 +59,7 @@ $(eval $(call gb_Module_add_check_targets,sc,\
     CppunitTest_sc_ucalc \
     CppunitTest_sc_filters_test \
     CppunitTest_sc_rangelst_test \
-    $(if $(filter $(OS),MACOSX), \
-        CppunitTest_sc_opencl_test) \
+	CppunitTest_sc_opencl_test) \
 ))
 
 $(eval $(call gb_Module_add_slowcheck_targets,sc, \
commit 8ab21b9c995c0f018055bb3355c3ebdd4deb48ca
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sun Nov 17 18:17:48 2013 +0100

    fix problem with retriving vendor information from opencl devices
    
    Change-Id: Iff9017b64159254c749fc2c3ddc9033d524f9395

diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx
index 8ca70d0..9a056aa 100644
--- a/sc/source/core/opencl/openclwrapper.cxx
+++ b/sc/source/core/opencl/openclwrapper.cxx
@@ -731,7 +731,7 @@ void createDeviceInfo(cl_device_id aDeviceId, OpenclPlatformInfo& rPlatformInfo)
     aDeviceInfo.maName = OUString::createFromAscii(pName);
 
     char pVendor[DEVICE_NAME_LENGTH];
-    nState = clGetDeviceInfo(aDeviceId, CL_DEVICE_VENDOR, DEVICE_NAME_LENGTH, pName, NULL);
+    nState = clGetDeviceInfo(aDeviceId, CL_DEVICE_VENDOR, DEVICE_NAME_LENGTH, pVendor, NULL);
     if(nState != CL_SUCCESS)
         return;
 
commit 91e814f66f5561798902f767d64c4366b376a1d3
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sun Nov 17 18:16:35 2013 +0100

    add a way to blacklist known bad OpenCL compilers
    
    the blacklisted compiler hangs while compiling the opencl-test kernels
    on the @38 tinderbox.
    
    Change-Id: Ice80253a5fbb66eef4bfb4a3efd881fc83c379b4

diff --git a/sc/inc/platforminfo.hxx b/sc/inc/platforminfo.hxx
index 7a48e11..71206e0 100644
--- a/sc/inc/platforminfo.hxx
+++ b/sc/inc/platforminfo.hxx
@@ -23,6 +23,7 @@ struct SC_DLLPUBLIC OpenclDeviceInfo
     void* device;
     OUString maName;
     OUString maVendor;
+    OUString maDriver;
     size_t mnMemory;
     size_t mnComputeUnits;
     size_t mnFrequency;
diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx
index b7e1f91..8ca70d0 100644
--- a/sc/source/core/opencl/openclwrapper.cxx
+++ b/sc/source/core/opencl/openclwrapper.cxx
@@ -698,6 +698,26 @@ int OpenclDevice::getOpenclState()
 
 namespace {
 
+// based on crashes and hanging during kernel compilation
+bool checkForKnownBadCompilers(const OpenclDeviceInfo& rInfo)
+{
+
+    struct {
+        const char* pVendorName; const char* pDriverVersion;
+    } aBadOpenCLCompilers[] = {
+        { "Intel(R) Corporation", "9.17.10.2884" }
+    };
+
+    for(size_t i = 0; i < SAL_N_ELEMENTS(aBadOpenCLCompilers); ++i)
+    {
+        if(rInfo.maVendor == OUString::createFromAscii(aBadOpenCLCompilers[i].pVendorName) &&
+                rInfo.maDriver == OUString::createFromAscii(aBadOpenCLCompilers[i].pDriverVersion))
+            return true;
+    }
+
+    return false;
+}
+
 void createDeviceInfo(cl_device_id aDeviceId, OpenclPlatformInfo& rPlatformInfo)
 {
     OpenclDeviceInfo aDeviceInfo;
@@ -736,6 +756,14 @@ void createDeviceInfo(cl_device_id aDeviceId, OpenclPlatformInfo& rPlatformInfo)
     if(nState != CL_SUCCESS)
         return;
 
+    char pDriver[DEVICE_NAME_LENGTH];
+    nState = clGetDeviceInfo(aDeviceId, CL_DRIVER_VERSION, DEVICE_NAME_LENGTH, pDriver, NULL);
+
+    if(nState != CL_SUCCESS)
+        return;
+
+    aDeviceInfo.maDriver = OUString::createFromAscii(pDriver);
+
     bool bKhrFp64 = false;
     bool bAmdFp64 = false;
     checkDeviceForDoubleSupport(aDeviceId, bKhrFp64, bAmdFp64);
@@ -746,7 +774,8 @@ void createDeviceInfo(cl_device_id aDeviceId, OpenclPlatformInfo& rPlatformInfo)
 
     aDeviceInfo.mnComputeUnits = nComputeUnits;
 
-    rPlatformInfo.maDevices.push_back(aDeviceInfo);
+    if(!checkForKnownBadCompilers(aDeviceInfo))
+        rPlatformInfo.maDevices.push_back(aDeviceInfo);
 }
 
 bool createPlatformInfo(cl_platform_id nPlatformId, OpenclPlatformInfo& rPlatformInfo)
commit 3614d5546034eae34dd0cbf282e058e431ec7295
Author: Tor Lillqvist <tml at collabora.com>
Date:   Sun Nov 17 17:56:51 2013 +0200

    WaE: 'PATH_MAX' : macro redefinition
    
    Change-Id: I153e34d24493bbbebf37422fb6382969153506a8

diff --git a/soltools/cpp/_include.c b/soltools/cpp/_include.c
index 7a9044b..2d4b919 100644
--- a/soltools/cpp/_include.c
+++ b/soltools/cpp/_include.c
@@ -33,7 +33,9 @@
 
 #if defined(__IBMC__) || defined(__EMX__) || defined(_MSC_VER)
 #   include <fcntl.h>
-#   define PATH_MAX _MAX_PATH
+#   ifndef PATH_MAX
+#       define PATH_MAX _MAX_PATH
+#   endif
 #endif
 #include <limits.h>
 
diff --git a/soltools/cpp/_macro.c b/soltools/cpp/_macro.c
index b86af10..bd91141 100644
--- a/soltools/cpp/_macro.c
+++ b/soltools/cpp/_macro.c
@@ -24,7 +24,9 @@
 #include <stdlib.h>
 #include <string.h>
 #if defined(__IBMC__) || defined(__EMX__) || defined(_MSC_VER)
-#   define PATH_MAX _MAX_PATH
+#   ifndef PATH_MAX
+#       define PATH_MAX _MAX_PATH
+#   endif
 #endif
 #include <limits.h>
 
commit 8b60382f524e1e8b19d5e17d3b7b901ec65526cd
Author: Tor Lillqvist <tml at collabora.com>
Date:   Sun Nov 17 14:34:39 2013 +0200

    Make the tiled rendering code compile for Android again
    
    I just ifdeffed out iOS-specific code, no actual Android-specific code
    added. And if at some stage we have need and resources to really make the
    tiled rendering stuff saner and cross-platform, a lot will change of course.
    
    Change-Id: If45d98f301413e26372c611f8ffecf229061174d

diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index eef0286..143ac40 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -17,12 +17,8 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifdef IOS
-
 #include <touch/touch.h>
 
-#endif
-
 #include <com/sun/star/accessibility/XAccessible.hpp>
 #include <sfx2/viewfrm.hxx>
 #include <sfx2/progress.hxx>
@@ -1792,6 +1788,7 @@ void SwViewShell::PaintTile(VirtualDevice &rDevice, int contextWidth, int contex
 extern "C"
 void touch_lo_draw_tile(void *context, int contextWidth, int contextHeight, MLODpxPoint tileDpxPosition, MLODpxSize tileDpxSize)
 {
+#ifdef IOS
     SAL_INFO("sw", "touch_lo_draw_tile(" << contextWidth << ", " << contextHeight << ", (" << tileDpxPosition.x << "," << tileDpxPosition.y << "), " << tileDpxSize.width << "x" << tileDpxSize.height << ")");
     MLORipPoint tileRipPosition = MLORipPointByDpxPoint(tileDpxPosition);
     MLORipSize rileRipSize = MLORipSizeByDpxSize(tileDpxSize);
@@ -1838,10 +1835,18 @@ void touch_lo_draw_tile(void *context, int contextWidth, int contextHeight, MLOD
         aBitmap.ReleaseAccess(readAccess);
     }
     Application::ReleaseSolarMutex();
+#else
+    (void) context;
+    (void) contextWidth;
+    (void) contextHeight;
+    (void) tileDpxPosition;
+    (void) tileDpxSize;
+#endif
 }
 extern "C"
 MLODpxSize touch_lo_get_content_size()
 {
+#ifdef IOS
     SwWrtShell *pViewShell = GetActiveWrtShell();
     if (pViewShell)
     {
@@ -1852,15 +1857,23 @@ MLODpxSize touch_lo_get_content_size()
                                ((MLORip)documentSize.Height()) + HEIGHT_ADDITION);
     }
     return MLODpxSizeByDpxes(0,0);
+#else
+    return MLODpxSize();
+#endif
 }
 
 extern "C"
 MLORipPoint MLORipPointByDpxPoint(MLODpxPoint mloDpxPoint)
 {
+#ifdef IOS
     //MLODpxSize contentSize = touch_lo_get_content_size();
     MLORip x = MLORipByDpx(mloDpxPoint.x /*- (contentSize.width/2.0f)*/);
     MLORip y = MLORipByDpx(mloDpxPoint.y);
     return MLORipPointByRips(x,y);
+#else
+    (void) mloDpxPoint;
+    return MLORipPoint();
+#endif
 }
 
 extern "C"
commit f3a59f58900cbf9827260b8db57c9be8d92b5aa7
Author: Tor Lillqvist <tml at collabora.com>
Date:   Sun Nov 17 14:34:25 2013 +0200

    Make this compile for Android again
    
    Change-Id: I0b476873f76e6dd480868ec4d443718cab36cf24

diff --git a/include/touch/touch.h b/include/touch/touch.h
index 594f962..72647da 100644
--- a/include/touch/touch.h
+++ b/include/touch/touch.h
@@ -28,7 +28,9 @@
 #include <CoreGraphics/CoreGraphics.h>
 #include <postmac.h>
 #else
-#include <basegfx/range/b2ibox.hxx>
+#include <basegfx/range/b1drange.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <basegfx/tuple/b2dtuple.hxx>
 #endif
 
 #ifdef __cplusplus
@@ -86,28 +88,23 @@ typedef enum {
 
 #ifdef IOS
 typedef CGRect MLORect;
-#else
-typedef basegfx::B2IBox MLORect;
-#endif
-
-// MLODip - Device Independent Pixels
-
-typedef long long MLORip;
 typedef CGFloat MLODpx;
 typedef CGPoint MLODpxPoint;
 typedef CGSize MLODpxSize;
 
-CG_INLINE MLODpxPoint
-MLODpxPointByDpxes(MLODpx x, MLODpx y)
-{
-    return CGPointMake(x, y);
-}
+#else
 
-CG_INLINE MLODpxSize
-MLODpxSizeByDpxes(MLODpx width, MLODpx height)
-{
-    return CGSizeMake(width, height);
-}
+// Very much work in progress, just something to make this compile
+typedef basegfx::B2DRange MLORect;
+typedef float MLODpx;
+typedef basegfx::B2DTuple MLODpxPoint;
+typedef basegfx::B1DRange MLODpxSize;
+
+#endif
+
+// MLORip - tens of TWIPs, of questionable usefuless
+
+typedef long long MLORip;
 
 static const MLORip LO_TWIPS_TO_MLO_RIP_RATIO = 10L;
 
@@ -125,31 +122,49 @@ struct MLORipPoint
 };
 typedef struct MLORipPoint MLORipPoint;
 
-CG_INLINE MLODpx
+static inline MLODpx
 MLODpxByRip(MLORip rip)
 {
     return (MLODpx) (rip / LO_TWIPS_TO_MLO_RIP_RATIO);
 }
 
-CG_INLINE MLORip
+static inline MLORip
 MLORipByDpx(MLODpx dpx)
 {
     return (MLORip) (dpx * LO_TWIPS_TO_MLO_RIP_RATIO);
 }
 
-CG_INLINE MLORipSize
+static inline MLODpxPoint
+MLODpxPointByDpxes(MLODpx x, MLODpx y)
+{
+#ifdef IOS
+    return CGPointMake(x, y);
+#else
+    return basegfx::B2DTuple(x, y);
+#endif
+}
+
+#ifdef IOS
+
+static inline MLODpxSize
+MLODpxSizeByDpxes(MLODpx width, MLODpx height)
+{
+    return CGSizeMake(width, height);
+}
+
+static inline MLORipSize
 MLORipSizeByRips(MLORip width, MLORip height)
 {
     MLORipSize ripSize; ripSize.width = width; ripSize.height = height; return ripSize;
 }
 
-CG_INLINE MLORipPoint
+static inline MLORipPoint
 MLORipPointByRips(MLORip x, MLORip y)
 {
     MLORipPoint point; point.x = x; point.y = y; return point;
 }
 
-CG_INLINE MLORipSize
+static inline MLORipSize
 MLORipSizeByDpxSize(MLODpxSize dpxSize)
 {
     MLORipSize ripSize;
@@ -158,7 +173,7 @@ MLORipSizeByDpxSize(MLODpxSize dpxSize)
     return ripSize;
 }
 
-CG_INLINE MLODpxSize
+static inline MLODpxSize
 MLODpxSizeByRips(MLORip width, MLORip height)
 {
     CGFloat fWidth = MLODpxByRip(width);
@@ -166,7 +181,7 @@ MLODpxSizeByRips(MLORip width, MLORip height)
     return CGSizeMake(fWidth, fHeight);
 }
 
-CG_INLINE MLODpxSize
+static inline MLODpxSize
 MLODpxSizeByRipSize(MLORipSize ripSize)
 {
     return MLODpxSizeByRips(ripSize.width, ripSize.height);
@@ -176,6 +191,7 @@ MLORipPoint MLORipPointByDpxPoint(MLODpxPoint mloDpxPoint);
 
 MLODpxPoint MLODpxPointByMLORipPoint(MLORipPoint mloRipPoint);
 
+#endif
 
 // selection
 


More information about the Libreoffice-commits mailing list