summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorI-Jui (Ray) Sung <ray@multicorewareinc.com>2013-10-28 14:34:46 -0500
committerKohei Yoshida <kohei.yoshida@collabora.com>2013-10-29 17:00:28 -0400
commit90336178f2c0b1e69104e41aea497a60c04fed3b (patch)
treee06c0ab2c047c9f8c961c333d6a531742b313056 /sc
parent8243c1f3997b8f796b128fca4869c1e5ac5d7bcb (diff)
Use MD5 in RTL instead of the one from OpenSSL.
Change-Id: I120961da4fd9eb8ddd99e347ed4c266fcb2c7ec6
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/opencl/formulagroupcl.cxx55
1 files changed, 29 insertions, 26 deletions
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 08869803f5d2..d11adc8c42a4 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -30,8 +30,9 @@
#include <iostream>
#include <sstream>
#include <algorithm>
+#define MD5_KERNEL 1
#ifdef MD5_KERNEL
-#include <openssl/md5.h>
+#include <rtl/digest.h>
#endif
#include <memory>
using namespace formula;
@@ -1172,10 +1173,11 @@ public:
if(mKernelSignature.empty()) {
std::stringstream md5s;
// Compute MD5SUM of kernel body to obtain the name
- unsigned char result[MD5_DIGEST_LENGTH];
- MD5(reinterpret_cast<const unsigned char *>
- (mKernelSrc.str().c_str()), mKernelSrc.str().length(), result);
- for(int i=0; i < MD5_DIGEST_LENGTH; i++) {
+ sal_uInt8 result[RTL_DIGEST_LENGTH_MD5];
+ rtlDigestError err = rtl_digest_MD5(
+ mKernelSrc.str().c_str(), mKernelSrc.str().length(), result,
+ RTL_DIGEST_LENGTH_MD5);
+ for(int i=0; i < RTL_DIGEST_LENGTH_MD5; i++) {
md5s << std::hex << (int)result[i];
}
mKernelSignature = md5s.str();
@@ -1188,26 +1190,7 @@ public:
/// Create program, build, and create kerenl
/// TODO cache results based on kernel body hash
/// TODO: abstract OpenCL part out into OpenCL wrapper.
- bool CreateKernel(void)
- {
- cl_int err;
- std::string kname = "DynamicKernel"+mKernelSignature;
- // Compile kernel here!!!
- // Obtain cl context
- KernelEnv kEnv;
- OclCalc::setKernelEnv(&kEnv);
- const char *src = mFullProgramSrc.c_str();
- mpProgram = clCreateProgramWithSource(kEnv.mpkContext, 1,
- &src, NULL, &err);
- if (err != CL_SUCCESS)
- return true;
- err = clBuildProgram(mpProgram, 1,
- OpenclDevice::gpuEnv.mpArryDevsID, "", NULL, NULL);
- if (err != CL_SUCCESS)
- return true;
- mpKernel = clCreateKernel(mpProgram, kname.c_str(), &err);
- return (err != CL_SUCCESS);
- }
+ bool CreateKernel(void);
/// Prepare buffers, marshal them to GPU, and launch the kernel
/// TODO: abstract OpenCL part out into OpenCL wrapper.
void Launch(size_t nr)
@@ -1262,7 +1245,27 @@ DynamicKernel::~DynamicKernel()
clReleaseProgram(mpProgram);
}
}
-
+/// Build code
+bool DynamicKernel::CreateKernel(void)
+{
+ cl_int err;
+ std::string kname = "DynamicKernel"+mKernelSignature;
+ // Compile kernel here!!!
+ // Obtain cl context
+ KernelEnv kEnv;
+ OclCalc::setKernelEnv(&kEnv);
+ const char *src = mFullProgramSrc.c_str();
+ mpProgram = clCreateProgramWithSource(kEnv.mpkContext, 1,
+ &src, NULL, &err);
+ if (err != CL_SUCCESS)
+ return true;
+ err = clBuildProgram(mpProgram, 1,
+ OpenclDevice::gpuEnv.mpArryDevsID, "", NULL, NULL);
+ if (err != CL_SUCCESS)
+ return true;
+ mpKernel = clCreateKernel(mpProgram, kname.c_str(), &err);
+ return (err != CL_SUCCESS);
+}
// Symbol lookup. If there is no such symbol created, allocate one
// kernel with argument with unique name and return so.
// The template argument T must be a subclass of DynamicKernelArgument