From b222ed4cc3aab7590cd028e0d19668680f93818f Mon Sep 17 00:00:00 2001 From: Simon Detheridge Date: Sat, 21 Feb 2015 13:32:15 +0000 Subject: [PATCH] Update osx ambiguous-call fix to support the varying-precision mechanism --- Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp | 2 +- Source/EmberCL/OpenCLWrapper.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp b/Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp index b27e7eb..4217047 100644 --- a/Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp +++ b/Source/EmberCL/FinalAccumOpenCLKernelCreator.cpp @@ -377,7 +377,7 @@ string FinalAccumOpenCLKernelCreator::CreateGammaCorrectionFunctionString(boo os << "\n" - " correctedChannels[rgbi] = (" << dataType << ")clamp(a, 0.0f, 255.0f);\n" + " correctedChannels[rgbi] = (" << dataType << ")clamp(a, T(0.0), T(255.0));\n" " }\n" "\n"; diff --git a/Source/EmberCL/OpenCLWrapper.cpp b/Source/EmberCL/OpenCLWrapper.cpp index 1576c7b..e1cf8ce 100644 --- a/Source/EmberCL/OpenCLWrapper.cpp +++ b/Source/EmberCL/OpenCLWrapper.cpp @@ -1221,10 +1221,13 @@ bool OpenCLWrapper::CreateSPK(const string& name, const string& program, const s { if (m_Init) { + std::string precisionDef(doublePrecision ? "#define T(v) (double)(v)\n" : "#define T(v) (float)(v)\n"); + std::string p(precisionDef + program); + cl_int err; spk.m_Name = name; - spk.m_Source = cl::Program::Sources(1, std::make_pair(program.c_str(), program.length() + 1)); + spk.m_Source = cl::Program::Sources(1, std::make_pair(p.c_str(), p.length() + 1)); spk.m_Program = cl::Program(m_Context, spk.m_Source); if (doublePrecision)