gKitGL
|
00001 00002 #ifndef _CL_INIT_H 00003 #define _CL_INIT_H 00004 00005 #include <string> 00006 #include <CL/CLPlatform.h> 00007 00008 #include "CLQueue.h" 00009 00010 00011 namespace gk { 00012 00013 //! flags de configuration du contexte openCL 00014 enum 00015 { 00016 CPU_BIT= 1, //!< openCL sur cpu. 00017 GPU_BIT= 2, //!< openCL sur gpu. 00018 GL_BIT= 4, //!< openCL sur le gpu associe au contexte openGL actif. 00019 DEBUG_BIT= 8, //!< compile les kernels en mode debug. 00020 PROFILE_BIT= 16 //!< configure la file de commande par defaut en mode profiling. 00021 }; 00022 00023 extern cl_platform_id ActivePlatform; 00024 inline cl_platform_id platform( ) 00025 { 00026 return ActivePlatform; 00027 } 00028 00029 extern cl_context ActiveContext; 00030 extern unsigned int ActiveContextFlags; 00031 00032 inline cl_context context( ) 00033 { 00034 return ActiveContext; 00035 } 00036 00037 extern cl_device_id ActiveDevice; 00038 inline cl_device_id device( ) 00039 { 00040 return ActiveDevice; 00041 } 00042 00043 class CLQueue; 00044 //! renvoie la file de commande openCL par defaut. 00045 extern CLQueue *ActiveQueue; 00046 //! renvoie l'objet openCL associee a la file de commandes openCL creee par defaut. 00047 inline cl_command_queue queue( ) 00048 { 00049 return ActiveQueue->queue(); 00050 } 00051 00052 extern bool Active; 00053 inline bool isCLInit( ) 00054 { 00055 return Active; 00056 } 00057 00058 //! initialise un contexte et un peripherique openCL. 00059 int CLInit( const unsigned int flags= GPU_BIT ); 00060 //! ferme le contexte openCL. 00061 void CLQuit( void ); 00062 00063 extern std::string ActiveBuildOptions; 00064 //! ajoute une option de compilation commune a tous les kernels compiles. 00065 int CLBuildOptions( const std::string& options ); 00066 00067 class CLQueue; 00068 //! cree une file de commande openCL. 00069 CLQueue *createQueue( ); 00070 00071 } 00072 00073 #endif