| 245 | } |
| 246 | |
| 247 | clfftStatus FFTRepo::setclKernel( cl_program prog, clfftDirection dir, const cl_kernel& kernel ) |
| 248 | { |
| 249 | scopedLock sLock( lockRepo, _T( "setclKernel" ) ); |
| 250 | |
| 251 | fftKernels & Kernels = mapKernels[ prog ]; |
| 252 | |
| 253 | cl_kernel * pk; |
| 254 | lockRAII ** kernelLock; |
| 255 | |
| 256 | switch (dir) { |
| 257 | case CLFFT_FORWARD: |
| 258 | pk = & Kernels.kernel_fwd; |
| 259 | kernelLock = & Kernels.kernel_fwd_lock; |
| 260 | break; |
| 261 | case CLFFT_BACKWARD: |
| 262 | pk = & Kernels.kernel_back; |
| 263 | kernelLock = & Kernels.kernel_back_lock; |
| 264 | break; |
| 265 | default: |
| 266 | assert (false); |
| 267 | return CLFFT_INVALID_ARG_VALUE; |
| 268 | } |
| 269 | |
| 270 | assert (NULL == *pk); |
| 271 | if (NULL != *pk) |
| 272 | clReleaseKernel( *pk ); |
| 273 | |
| 274 | *pk = kernel; |
| 275 | |
| 276 | if (NULL != *kernelLock) |
| 277 | delete kernelLock; |
| 278 | |
| 279 | *kernelLock = new lockRAII; |
| 280 | |
| 281 | return CLFFT_SUCCESS; |
| 282 | } |
| 283 | |
| 284 | clfftStatus FFTRepo::getclKernel( cl_program prog, clfftDirection dir, cl_kernel& kernel, lockRAII*& kernelLock) |
| 285 | { |