1 #ifndef BT_OPENCL_SUPPORT_HPP
\r
2 #define BT_OPENCL_SUPPORT_HPP
\r
7 namespace BTAcceleratedSoftBody
\r
9 class OpenCLSupportHelper
\r
12 cl::Context m_context;
\r
13 std::vector<cl::Device> m_devices;
\r
14 cl::CommandQueue m_queue;
\r
16 OpenCLSupportHelper()
\r
20 virtual ~OpenCLSupportHelper()
\r
24 cl::Device getDevice()
\r
26 return m_devices[0];
\r
29 cl::CommandQueue getCommandQueue()
\r
34 cl::Context getContext()
\r
39 bool InitOpenCLDevice()
\r
43 std::vector<cl::Platform> platforms;
\r
44 err = cl::Platform::get(&platforms);
\r
45 checkErr(platforms.size() != 0 ? CL_SUCCESS : -1, "Platform::get()");
\r
47 std::string platformVendor;
\r
48 platforms[0].getInfo(CL_PLATFORM_VENDOR, &platformVendor);
\r
49 //std::cout << "Platform is by: " << platformVendor << "\n";
\r
51 intptr_t properties[] = {
\r
52 CL_CONTEXT_PLATFORM, (intptr_t)platforms[0](),
\r
55 m_context = cl::Context(
\r
56 CL_DEVICE_TYPE_GPU,
\r
62 if (err != CL_SUCCESS)
\r
64 btAssert( "Context::Context()" );
\r
67 m_devices = m_context.getInfo<CL_CONTEXT_DEVICES>();
\r
68 if( m_devices.size() <= 0 )
\r
70 btAssert( "devices.size() > 0" );
\r
73 m_queue = cl::CommandQueue(m_context, m_devices[0], 0, &err);
\r
74 if (err != CL_SUCCESS)
\r
76 btAssert( "CommandQueue::CommandQueue()");
\r
82 } // namespace BTAcceleratedSoftBody
\r
84 #endif // #ifndef BT_OPENCL_SUPPORT_HPP