1
/*M///////////////////////////////////////////////////////////////////////////////////////
3
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
5
// By downloading, copying, installing or using the software you agree to this license.
6
// If you do not agree to this license, do not download, install,
7
// copy or use the software.
11
// For Open Source Computer Vision Library
13
// Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
14
// Third party copyrights are property of their respective owners.
16
// Redistribution and use in source and binary forms, with or without modification,
17
// are permitted provided that the following conditions are met:
19
// * Redistribution's of source code must retain the above copyright notice,
20
// this list of conditions and the following disclaimer.
22
// * Redistribution's in binary form must reproduce the above copyright notice,
23
// this list of conditions and the following disclaimer in the documentation
24
// and/or other materials provided with the distribution.
26
// * The name of the copyright holders may not be used to endorse or promote products
27
// derived from this software without specific prior written permission.
29
// This software is provided by the copyright holders and contributors "as is" and
30
// any express or implied warranties, including, but not limited to, the implied
31
// warranties of merchantability and fitness for a particular purpose are disclaimed.
32
// In no event shall the OpenCV Foundation or contributors be liable for any direct,
33
// indirect, incidental, special, exemplary, or consequential damages
34
// (including, but not limited to, procurement of substitute goods or services;
35
// loss of use, data, or profits; or business interruption) however caused
36
// and on any theory of liability, whether in contract, strict liability,
37
// or tort (including negligence or otherwise) arising in any way out of
38
// the use of this software, even if advised of the possibility of such damage.
42
#include "../../precomp.hpp"
46
#include "opencv2/core/opencl/runtime/opencl_core.hpp"
47
#include "opencv2/core/opencl/runtime/opencl_clamdfft.hpp"
52
static void* WinGetProcAddress(const char* name)
54
static HMODULE opencl_module = NULL;
57
opencl_module = GetModuleHandleA("clAmdFft.Runtime.dll");
60
opencl_module = LoadLibraryA("clAmdFft.Runtime.dll");
65
return (void*)GetProcAddress(opencl_module, name);
67
#define CV_CL_GET_PROC_ADDRESS(name) WinGetProcAddress(name)
70
#if defined(__linux__)
74
static void* GetProcAddress (const char* name)
76
static void* h = NULL;
79
h = dlopen("libclAmdFft.Runtime.so", RTLD_LAZY | RTLD_GLOBAL);
84
return dlsym(h, name);
86
#define CV_CL_GET_PROC_ADDRESS(name) GetProcAddress(name)
89
#ifndef CV_CL_GET_PROC_ADDRESS
91
#warning("OPENCV: OpenCL FFT dynamic library loader: check configuration")
93
#pragma message("WARNING: OPENCV: OpenCL FFT dynamic library loader: check configuration")
95
#define CV_CL_GET_PROC_ADDRESS(name) NULL
98
static void* openclamdfft_check_fn(int ID);
100
#include "runtime_common.hpp"
103
// BEGIN OF CUSTOM FUNCTIONS
106
#define CUSTOM_FUNCTION_ID 1000
109
// END OF CUSTOM FUNCTIONS HERE
112
#include "autogenerated/opencl_clamdfft_impl.hpp"
114
static void* openclamdfft_check_fn(int ID)
116
assert(ID >= 0 && ID < (int)(sizeof(openclamdfft_fn)/sizeof(openclamdfft_fn[0])));
117
const struct DynamicFnEntry* e = openclamdfft_fn[ID];
118
void* func = CV_CL_GET_PROC_ADDRESS(e->fnName);
121
throw cv::Exception(cv::Error::OpenCLApiCallError,
122
cv::format("OpenCL AMD FFT function is not available: [%s]", e->fnName),
123
CV_Func, __FILE__, __LINE__);