diff options
author | I-Jui (Ray) Sung <ray@multicorewareinc.com> | 2013-10-28 14:34:46 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2013-10-29 17:00:28 -0400 |
commit | 90336178f2c0b1e69104e41aea497a60c04fed3b (patch) | |
tree | e06c0ab2c047c9f8c961c333d6a531742b313056 /sc | |
parent | 8243c1f3997b8f796b128fca4869c1e5ac5d7bcb (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.cxx | 55 |
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 |