示例#1
0
文件: cuew.c 项目: pawkoz/dyplom
/* Implementation function. */
int cuewInit(void) {
  /* Library paths. */
#ifdef _WIN32
  /* Expected in c:/windows/system or similar, no path needed. */
  const char *path = "nvcuda.dll";
#elif defined(__APPLE__)
  /* Default installation path. */
  const char *path = "/usr/local/cuda/lib/libcuda.dylib";
#else
  const char *path = "libcuda.so";
#endif
  static int initialized = 0;
  static int result = 0;
  int error, driver_version;

  if (initialized) {
    return result;
  }

  initialized = 1;

  error = atexit(cuewExit);
  if (error) {
    result = CUEW_ERROR_ATEXIT_FAILED;
    return result;
  }

  /* Load library. */
  lib = dynamic_library_open(path);

  if (lib == NULL) {
    result = CUEW_ERROR_OPEN_FAILED;
    return result;
  }

  /* Detect driver version. */
  driver_version = 1000;

  CUDA_LIBRARY_FIND_CHECKED(cuDriverGetVersion);
  if (cuDriverGetVersion) {
    cuDriverGetVersion(&driver_version);
  }

  /* We require version 4.0. */
  if (driver_version < 4000) {
    result = CUEW_ERROR_OPEN_FAILED;
    return result;
  }
  /* Fetch all function pointers. */
  CUDA_LIBRARY_FIND(cuGetErrorString);
  CUDA_LIBRARY_FIND(cuGetErrorName);
  CUDA_LIBRARY_FIND(cuInit);
  CUDA_LIBRARY_FIND(cuDriverGetVersion);
  CUDA_LIBRARY_FIND(cuDeviceGet);
  CUDA_LIBRARY_FIND(cuDeviceGetCount);
  CUDA_LIBRARY_FIND(cuDeviceGetName);
  CUDA_LIBRARY_FIND(cuDeviceTotalMem_v2);
  CUDA_LIBRARY_FIND(cuDeviceGetAttribute);
  CUDA_LIBRARY_FIND(cuDeviceGetProperties);
  CUDA_LIBRARY_FIND(cuDeviceComputeCapability);
  CUDA_LIBRARY_FIND(cuDevicePrimaryCtxRetain);
  CUDA_LIBRARY_FIND(cuDevicePrimaryCtxRelease);
  CUDA_LIBRARY_FIND(cuDevicePrimaryCtxSetFlags);
  CUDA_LIBRARY_FIND(cuDevicePrimaryCtxGetState);
  CUDA_LIBRARY_FIND(cuDevicePrimaryCtxReset);
  CUDA_LIBRARY_FIND(cuCtxCreate_v2);
  CUDA_LIBRARY_FIND(cuCtxDestroy_v2);
  CUDA_LIBRARY_FIND(cuCtxPushCurrent_v2);
  CUDA_LIBRARY_FIND(cuCtxPopCurrent_v2);
  CUDA_LIBRARY_FIND(cuCtxSetCurrent);
  CUDA_LIBRARY_FIND(cuCtxGetCurrent);
  CUDA_LIBRARY_FIND(cuCtxGetDevice);
  CUDA_LIBRARY_FIND(cuCtxGetFlags);
  CUDA_LIBRARY_FIND(cuCtxSynchronize);
  CUDA_LIBRARY_FIND(cuCtxSetLimit);
  CUDA_LIBRARY_FIND(cuCtxGetLimit);
  CUDA_LIBRARY_FIND(cuCtxGetCacheConfig);
  CUDA_LIBRARY_FIND(cuCtxSetCacheConfig);
  CUDA_LIBRARY_FIND(cuCtxGetSharedMemConfig);
  CUDA_LIBRARY_FIND(cuCtxSetSharedMemConfig);
  CUDA_LIBRARY_FIND(cuCtxGetApiVersion);
  CUDA_LIBRARY_FIND(cuCtxGetStreamPriorityRange);
  CUDA_LIBRARY_FIND(cuCtxAttach);
  CUDA_LIBRARY_FIND(cuCtxDetach);
  CUDA_LIBRARY_FIND(cuModuleLoad);
  CUDA_LIBRARY_FIND(cuModuleLoadData);
  CUDA_LIBRARY_FIND(cuModuleLoadDataEx);
  CUDA_LIBRARY_FIND(cuModuleLoadFatBinary);
  CUDA_LIBRARY_FIND(cuModuleUnload);
  CUDA_LIBRARY_FIND(cuModuleGetFunction);
  CUDA_LIBRARY_FIND(cuModuleGetGlobal_v2);
  CUDA_LIBRARY_FIND(cuModuleGetTexRef);
  CUDA_LIBRARY_FIND(cuModuleGetSurfRef);
  CUDA_LIBRARY_FIND(cuLinkCreate_v2);
  CUDA_LIBRARY_FIND(cuLinkAddData_v2);
  CUDA_LIBRARY_FIND(cuLinkAddFile_v2);
  CUDA_LIBRARY_FIND(cuLinkComplete);
  CUDA_LIBRARY_FIND(cuLinkDestroy);
  CUDA_LIBRARY_FIND(cuMemGetInfo_v2);
  CUDA_LIBRARY_FIND(cuMemAlloc_v2);
  CUDA_LIBRARY_FIND(cuMemAllocPitch_v2);
  CUDA_LIBRARY_FIND(cuMemFree_v2);
  CUDA_LIBRARY_FIND(cuMemGetAddressRange_v2);
  CUDA_LIBRARY_FIND(cuMemAllocHost_v2);
  CUDA_LIBRARY_FIND(cuMemFreeHost);
  CUDA_LIBRARY_FIND(cuMemHostAlloc);
  CUDA_LIBRARY_FIND(cuMemHostGetDevicePointer_v2);
  CUDA_LIBRARY_FIND(cuMemHostGetFlags);
  CUDA_LIBRARY_FIND(cuMemAllocManaged);
  CUDA_LIBRARY_FIND(cuDeviceGetByPCIBusId);
  CUDA_LIBRARY_FIND(cuDeviceGetPCIBusId);
  CUDA_LIBRARY_FIND(cuIpcGetEventHandle);
  CUDA_LIBRARY_FIND(cuIpcOpenEventHandle);
  CUDA_LIBRARY_FIND(cuIpcGetMemHandle);
  CUDA_LIBRARY_FIND(cuIpcOpenMemHandle);
  CUDA_LIBRARY_FIND(cuIpcCloseMemHandle);
  CUDA_LIBRARY_FIND(cuMemHostRegister_v2);
  CUDA_LIBRARY_FIND(cuMemHostUnregister);
  CUDA_LIBRARY_FIND(cuMemcpy);
  CUDA_LIBRARY_FIND(cuMemcpyPeer);
  CUDA_LIBRARY_FIND(cuMemcpyHtoD_v2);
  CUDA_LIBRARY_FIND(cuMemcpyDtoH_v2);
  CUDA_LIBRARY_FIND(cuMemcpyDtoD_v2);
  CUDA_LIBRARY_FIND(cuMemcpyDtoA_v2);
  CUDA_LIBRARY_FIND(cuMemcpyAtoD_v2);
  CUDA_LIBRARY_FIND(cuMemcpyHtoA_v2);
  CUDA_LIBRARY_FIND(cuMemcpyAtoH_v2);
  CUDA_LIBRARY_FIND(cuMemcpyAtoA_v2);
  CUDA_LIBRARY_FIND(cuMemcpy2D_v2);
  CUDA_LIBRARY_FIND(cuMemcpy2DUnaligned_v2);
  CUDA_LIBRARY_FIND(cuMemcpy3D_v2);
  CUDA_LIBRARY_FIND(cuMemcpy3DPeer);
  CUDA_LIBRARY_FIND(cuMemcpyAsync);
  CUDA_LIBRARY_FIND(cuMemcpyPeerAsync);
  CUDA_LIBRARY_FIND(cuMemcpyHtoDAsync_v2);
  CUDA_LIBRARY_FIND(cuMemcpyDtoHAsync_v2);
  CUDA_LIBRARY_FIND(cuMemcpyDtoDAsync_v2);
  CUDA_LIBRARY_FIND(cuMemcpyHtoAAsync_v2);
  CUDA_LIBRARY_FIND(cuMemcpyAtoHAsync_v2);
  CUDA_LIBRARY_FIND(cuMemcpy2DAsync_v2);
  CUDA_LIBRARY_FIND(cuMemcpy3DAsync_v2);
  CUDA_LIBRARY_FIND(cuMemcpy3DPeerAsync);
  CUDA_LIBRARY_FIND(cuMemsetD8_v2);
  CUDA_LIBRARY_FIND(cuMemsetD16_v2);
  CUDA_LIBRARY_FIND(cuMemsetD32_v2);
  CUDA_LIBRARY_FIND(cuMemsetD2D8_v2);
  CUDA_LIBRARY_FIND(cuMemsetD2D16_v2);
  CUDA_LIBRARY_FIND(cuMemsetD2D32_v2);
  CUDA_LIBRARY_FIND(cuMemsetD8Async);
  CUDA_LIBRARY_FIND(cuMemsetD16Async);
  CUDA_LIBRARY_FIND(cuMemsetD32Async);
  CUDA_LIBRARY_FIND(cuMemsetD2D8Async);
  CUDA_LIBRARY_FIND(cuMemsetD2D16Async);
  CUDA_LIBRARY_FIND(cuMemsetD2D32Async);
  CUDA_LIBRARY_FIND(cuArrayCreate_v2);
  CUDA_LIBRARY_FIND(cuArrayGetDescriptor_v2);
  CUDA_LIBRARY_FIND(cuArrayDestroy);
  CUDA_LIBRARY_FIND(cuArray3DCreate_v2);
  CUDA_LIBRARY_FIND(cuArray3DGetDescriptor_v2);
  CUDA_LIBRARY_FIND(cuMipmappedArrayCreate);
  CUDA_LIBRARY_FIND(cuMipmappedArrayGetLevel);
  CUDA_LIBRARY_FIND(cuMipmappedArrayDestroy);
  CUDA_LIBRARY_FIND(cuPointerGetAttribute);
  CUDA_LIBRARY_FIND(cuPointerSetAttribute);
  CUDA_LIBRARY_FIND(cuPointerGetAttributes);
  CUDA_LIBRARY_FIND(cuStreamCreate);
  CUDA_LIBRARY_FIND(cuStreamCreateWithPriority);
  CUDA_LIBRARY_FIND(cuStreamGetPriority);
  CUDA_LIBRARY_FIND(cuStreamGetFlags);
  CUDA_LIBRARY_FIND(cuStreamWaitEvent);
  CUDA_LIBRARY_FIND(cuStreamAddCallback);
  CUDA_LIBRARY_FIND(cuStreamAttachMemAsync);
  CUDA_LIBRARY_FIND(cuStreamQuery);
  CUDA_LIBRARY_FIND(cuStreamSynchronize);
  CUDA_LIBRARY_FIND(cuStreamDestroy_v2);
  CUDA_LIBRARY_FIND(cuEventCreate);
  CUDA_LIBRARY_FIND(cuEventRecord);
  CUDA_LIBRARY_FIND(cuEventQuery);
  CUDA_LIBRARY_FIND(cuEventSynchronize);
  CUDA_LIBRARY_FIND(cuEventDestroy_v2);
  CUDA_LIBRARY_FIND(cuEventElapsedTime);
  CUDA_LIBRARY_FIND(cuFuncGetAttribute);
  CUDA_LIBRARY_FIND(cuFuncSetCacheConfig);
  CUDA_LIBRARY_FIND(cuFuncSetSharedMemConfig);
  CUDA_LIBRARY_FIND(cuLaunchKernel);
  CUDA_LIBRARY_FIND(cuFuncSetBlockShape);
  CUDA_LIBRARY_FIND(cuFuncSetSharedSize);
  CUDA_LIBRARY_FIND(cuParamSetSize);
  CUDA_LIBRARY_FIND(cuParamSeti);
  CUDA_LIBRARY_FIND(cuParamSetf);
  CUDA_LIBRARY_FIND(cuParamSetv);
  CUDA_LIBRARY_FIND(cuLaunch);
  CUDA_LIBRARY_FIND(cuLaunchGrid);
  CUDA_LIBRARY_FIND(cuLaunchGridAsync);
  CUDA_LIBRARY_FIND(cuParamSetTexRef);
  CUDA_LIBRARY_FIND(cuOccupancyMaxActiveBlocksPerMultiprocessor);
  CUDA_LIBRARY_FIND(cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags);
  CUDA_LIBRARY_FIND(cuOccupancyMaxPotentialBlockSize);
  CUDA_LIBRARY_FIND(cuOccupancyMaxPotentialBlockSizeWithFlags);
  CUDA_LIBRARY_FIND(cuTexRefSetArray);
  CUDA_LIBRARY_FIND(cuTexRefSetMipmappedArray);
  CUDA_LIBRARY_FIND(cuTexRefSetAddress_v2);
  CUDA_LIBRARY_FIND(cuTexRefSetAddress2D_v3);
  CUDA_LIBRARY_FIND(cuTexRefSetFormat);
  CUDA_LIBRARY_FIND(cuTexRefSetAddressMode);
  CUDA_LIBRARY_FIND(cuTexRefSetFilterMode);
  CUDA_LIBRARY_FIND(cuTexRefSetMipmapFilterMode);
  CUDA_LIBRARY_FIND(cuTexRefSetMipmapLevelBias);
  CUDA_LIBRARY_FIND(cuTexRefSetMipmapLevelClamp);
  CUDA_LIBRARY_FIND(cuTexRefSetMaxAnisotropy);
  CUDA_LIBRARY_FIND(cuTexRefSetFlags);
  CUDA_LIBRARY_FIND(cuTexRefGetAddress_v2);
  CUDA_LIBRARY_FIND(cuTexRefGetArray);
  CUDA_LIBRARY_FIND(cuTexRefGetMipmappedArray);
  CUDA_LIBRARY_FIND(cuTexRefGetAddressMode);
  CUDA_LIBRARY_FIND(cuTexRefGetFilterMode);
  CUDA_LIBRARY_FIND(cuTexRefGetFormat);
  CUDA_LIBRARY_FIND(cuTexRefGetMipmapFilterMode);
  CUDA_LIBRARY_FIND(cuTexRefGetMipmapLevelBias);
  CUDA_LIBRARY_FIND(cuTexRefGetMipmapLevelClamp);
  CUDA_LIBRARY_FIND(cuTexRefGetMaxAnisotropy);
  CUDA_LIBRARY_FIND(cuTexRefGetFlags);
  CUDA_LIBRARY_FIND(cuTexRefCreate);
  CUDA_LIBRARY_FIND(cuTexRefDestroy);
  CUDA_LIBRARY_FIND(cuSurfRefSetArray);
  CUDA_LIBRARY_FIND(cuSurfRefGetArray);
  CUDA_LIBRARY_FIND(cuTexObjectCreate);
  CUDA_LIBRARY_FIND(cuTexObjectDestroy);
  CUDA_LIBRARY_FIND(cuTexObjectGetResourceDesc);
  CUDA_LIBRARY_FIND(cuTexObjectGetTextureDesc);
  CUDA_LIBRARY_FIND(cuTexObjectGetResourceViewDesc);
  CUDA_LIBRARY_FIND(cuSurfObjectCreate);
  CUDA_LIBRARY_FIND(cuSurfObjectDestroy);
  CUDA_LIBRARY_FIND(cuSurfObjectGetResourceDesc);
  CUDA_LIBRARY_FIND(cuDeviceCanAccessPeer);
  CUDA_LIBRARY_FIND(cuCtxEnablePeerAccess);
  CUDA_LIBRARY_FIND(cuCtxDisablePeerAccess);
  CUDA_LIBRARY_FIND(cuGraphicsUnregisterResource);
  CUDA_LIBRARY_FIND(cuGraphicsSubResourceGetMappedArray);
  CUDA_LIBRARY_FIND(cuGraphicsResourceGetMappedMipmappedArray);
  CUDA_LIBRARY_FIND(cuGraphicsResourceGetMappedPointer_v2);
  CUDA_LIBRARY_FIND(cuGraphicsResourceSetMapFlags_v2);
  CUDA_LIBRARY_FIND(cuGraphicsMapResources);
  CUDA_LIBRARY_FIND(cuGraphicsUnmapResources);
  CUDA_LIBRARY_FIND(cuGetExportTable);

  CUDA_LIBRARY_FIND(cuGraphicsGLRegisterBuffer);
  CUDA_LIBRARY_FIND(cuGraphicsGLRegisterImage);
  CUDA_LIBRARY_FIND(cuGLGetDevices_v2);
  CUDA_LIBRARY_FIND(cuGLCtxCreate_v2);
  CUDA_LIBRARY_FIND(cuGLInit);
  CUDA_LIBRARY_FIND(cuGLRegisterBufferObject);
  CUDA_LIBRARY_FIND(cuGLMapBufferObject_v2);
  CUDA_LIBRARY_FIND(cuGLUnmapBufferObject);
  CUDA_LIBRARY_FIND(cuGLUnregisterBufferObject);
  CUDA_LIBRARY_FIND(cuGLSetBufferObjectMapFlags);
  CUDA_LIBRARY_FIND(cuGLMapBufferObjectAsync_v2);
  CUDA_LIBRARY_FIND(cuGLUnmapBufferObjectAsync);


  result = CUEW_SUCCESS;
  return result;
}
示例#2
0
文件: sdlew.c 项目: SDLWrangler/sdlew
/* Implementation function. */
int sdlewInit(void) {
  /* Library paths. */
#ifdef _WIN32
  /* Expected in c:/windows/system or similar, no path needed. */
  const char *path = "SDL.dll";
#elif defined(__APPLE__)
  /* Default installation path. */
  const char *path = "/usr/local/cuda/lib/libSDL.dylib";
#else
  const char *path = "libSDL.so";
#endif
  static int initialized = 0;
  static int result = 0;
  int error;

  if (initialized) {
    return result;
  }

  initialized = 1;

  error = atexit(sdlewExit);
  if (error) {
    result = SDLEW_ERROR_ATEXIT_FAILED;
    return result;
  }

  /* Load library. */
  lib = dynamic_library_open(path);

  if (lib == NULL) {
    result = SDLEW_ERROR_OPEN_FAILED;
    return result;
  }

#ifndef HAVE_MALLOC
  SDL_LIBRARY_FIND(SDL_malloc);
#endif
#ifndef HAVE_CALLOC
  SDL_LIBRARY_FIND(SDL_calloc);
#endif
#ifndef HAVE_REALLOC
  SDL_LIBRARY_FIND(SDL_realloc);
#endif
#ifndef HAVE_FREE
  SDL_LIBRARY_FIND(SDL_free);
#endif
#ifndef HAVE_GETENV
  SDL_LIBRARY_FIND(SDL_getenv);
#endif
#ifndef HAVE_PUTENV
  SDL_LIBRARY_FIND(SDL_putenv);
#endif
#ifndef HAVE_QSORT
  SDL_LIBRARY_FIND(SDL_qsort);
#endif
#ifndef HAVE_MEMSET
  SDL_LIBRARY_FIND(SDL_memset);
#endif
#ifndef HAVE_MEMCPY
  SDL_LIBRARY_FIND(SDL_memcpy);
#endif
  SDL_LIBRARY_FIND(SDL_revcpy);
#ifndef HAVE_MEMCMP
  SDL_LIBRARY_FIND(SDL_memcmp);
#endif
#ifndef HAVE_STRLEN
  SDL_LIBRARY_FIND(SDL_strlen);
#endif
#ifndef HAVE_STRLCPY
  SDL_LIBRARY_FIND(SDL_strlcpy);
#endif
#ifndef HAVE_STRLCAT
  SDL_LIBRARY_FIND(SDL_strlcat);
#endif
#ifndef HAVE_STRDUP
  SDL_LIBRARY_FIND(SDL_strdup);
#endif
#ifndef HAVE__STRREV
  SDL_LIBRARY_FIND(SDL_strrev);
#endif
#ifndef HAVE__STRUPR
  SDL_LIBRARY_FIND(SDL_strupr);
#endif
#ifndef HAVE__STRLWR
  SDL_LIBRARY_FIND(SDL_strlwr);
#endif
#ifndef HAVE_STRCHR
  SDL_LIBRARY_FIND(SDL_strchr);
#endif
#ifndef HAVE_STRRCHR
  SDL_LIBRARY_FIND(SDL_strrchr);
#endif
#ifndef HAVE_STRSTR
  SDL_LIBRARY_FIND(SDL_strstr);
#endif
#ifndef HAVE__LTOA
  SDL_LIBRARY_FIND(SDL_ltoa);
#endif
#ifndef HAVE__ULTOA
  SDL_LIBRARY_FIND(SDL_ultoa);
#endif
#ifndef HAVE_STRTOL
  SDL_LIBRARY_FIND(SDL_strtol);
#endif
#ifndef HAVE_STRTOLL
  SDL_LIBRARY_FIND(SDL_strtoll);
#endif
#ifndef HAVE_STRTOULL
  SDL_LIBRARY_FIND(SDL_strtoull);
#endif
#ifndef HAVE_STRTOD
  SDL_LIBRARY_FIND(SDL_strtod);
#endif
#ifndef HAVE_STRCMP
  SDL_LIBRARY_FIND(SDL_strcmp);
#endif
#ifndef HAVE_STRNCMP
  SDL_LIBRARY_FIND(SDL_strncmp);
#endif
#ifndef HAVE_STRCASECMP
  SDL_LIBRARY_FIND(SDL_strcasecmp);
#endif
#ifndef HAVE_STRNCASECMP
  SDL_LIBRARY_FIND(SDL_strncasecmp);
#endif
#ifndef HAVE_SSCANF
  SDL_LIBRARY_FIND(SDL_sscanf);
#endif
#ifndef HAVE_SNPRINTF
  SDL_LIBRARY_FIND(SDL_snprintf);
#endif
#ifndef HAVE_VSNPRINTF
  SDL_LIBRARY_FIND(SDL_vsnprintf);
#endif
#if !(defined(HAVE_ICONV) && defined(HAVE_ICONV_H))
  SDL_LIBRARY_FIND(SDL_iconv_open);
#endif
#if !(defined(HAVE_ICONV) && defined(HAVE_ICONV_H))
  SDL_LIBRARY_FIND(SDL_iconv_close);
#endif
  SDL_LIBRARY_FIND(SDL_iconv);
  SDL_LIBRARY_FIND(SDL_iconv_string);
  SDL_LIBRARY_FIND(SDL_LoadObject);
  SDL_LIBRARY_FIND(SDL_LoadFunction);
  SDL_LIBRARY_FIND(SDL_UnloadObject);
  SDL_LIBRARY_FIND(SDL_CreateMutex);
  SDL_LIBRARY_FIND(SDL_mutexP);
  SDL_LIBRARY_FIND(SDL_mutexV);
  SDL_LIBRARY_FIND(SDL_DestroyMutex);
  SDL_LIBRARY_FIND(SDL_CreateSemaphore);
  SDL_LIBRARY_FIND(SDL_DestroySemaphore);
  SDL_LIBRARY_FIND(SDL_SemWait);
  SDL_LIBRARY_FIND(SDL_SemTryWait);
  SDL_LIBRARY_FIND(SDL_SemWaitTimeout);
  SDL_LIBRARY_FIND(SDL_SemPost);
  SDL_LIBRARY_FIND(SDL_SemValue);
  SDL_LIBRARY_FIND(SDL_CreateCond);
  SDL_LIBRARY_FIND(SDL_DestroyCond);
  SDL_LIBRARY_FIND(SDL_CondSignal);
  SDL_LIBRARY_FIND(SDL_CondBroadcast);
  SDL_LIBRARY_FIND(SDL_CondWait);
  SDL_LIBRARY_FIND(SDL_CondWaitTimeout);
  SDL_LIBRARY_FIND(SDL_PumpEvents);
  SDL_LIBRARY_FIND(SDL_PeepEvents);
  SDL_LIBRARY_FIND(SDL_PollEvent);
  SDL_LIBRARY_FIND(SDL_WaitEvent);
  SDL_LIBRARY_FIND(SDL_PushEvent);
  SDL_LIBRARY_FIND(SDL_SetEventFilter);
  SDL_LIBRARY_FIND(SDL_GetEventFilter);
  SDL_LIBRARY_FIND(SDL_EventState);
  SDL_LIBRARY_FIND(SDL_GetAppState);
  SDL_LIBRARY_FIND(SDL_GetMouseState);
  SDL_LIBRARY_FIND(SDL_GetRelativeMouseState);
  SDL_LIBRARY_FIND(SDL_WarpMouse);
  SDL_LIBRARY_FIND(SDL_CreateCursor);
  SDL_LIBRARY_FIND(SDL_SetCursor);
  SDL_LIBRARY_FIND(SDL_GetCursor);
  SDL_LIBRARY_FIND(SDL_FreeCursor);
  SDL_LIBRARY_FIND(SDL_ShowCursor);
  SDL_LIBRARY_FIND(SDL_CreateThread);
  SDL_LIBRARY_FIND(SDL_CreateThread);
  SDL_LIBRARY_FIND(SDL_ThreadID);
  SDL_LIBRARY_FIND(SDL_GetThreadID);
  SDL_LIBRARY_FIND(SDL_WaitThread);
  SDL_LIBRARY_FIND(SDL_KillThread);
  SDL_LIBRARY_FIND(SDL_EnableUNICODE);
  SDL_LIBRARY_FIND(SDL_EnableKeyRepeat);
  SDL_LIBRARY_FIND(SDL_GetKeyRepeat);
  SDL_LIBRARY_FIND(SDL_GetKeyState);
  SDL_LIBRARY_FIND(SDL_GetModState);
  SDL_LIBRARY_FIND(SDL_SetModState);
  SDL_LIBRARY_FIND(SDL_GetKeyName);
  SDL_LIBRARY_FIND(SDL_AudioInit);
  SDL_LIBRARY_FIND(SDL_AudioQuit);
  SDL_LIBRARY_FIND(SDL_AudioDriverName);
  SDL_LIBRARY_FIND(SDL_OpenAudio);
  SDL_LIBRARY_FIND(SDL_GetAudioStatus);
  SDL_LIBRARY_FIND(SDL_PauseAudio);
  SDL_LIBRARY_FIND(SDL_LoadWAV_RW);
  SDL_LIBRARY_FIND(SDL_FreeWAV);
  SDL_LIBRARY_FIND(SDL_BuildAudioCVT);
  SDL_LIBRARY_FIND(SDL_ConvertAudio);
  SDL_LIBRARY_FIND(SDL_MixAudio);
  SDL_LIBRARY_FIND(SDL_LockAudio);
  SDL_LIBRARY_FIND(SDL_UnlockAudio);
  SDL_LIBRARY_FIND(SDL_CloseAudio);
  SDL_LIBRARY_FIND(SDL_VideoInit);
  SDL_LIBRARY_FIND(SDL_VideoQuit);
  SDL_LIBRARY_FIND(SDL_VideoDriverName);
  SDL_LIBRARY_FIND(SDL_GetVideoSurface);
  SDL_LIBRARY_FIND(SDL_GetVideoInfo);
  SDL_LIBRARY_FIND(SDL_VideoModeOK);
  SDL_LIBRARY_FIND(SDL_SetVideoMode);
  SDL_LIBRARY_FIND(SDL_UpdateRects);
  SDL_LIBRARY_FIND(SDL_UpdateRect);
  SDL_LIBRARY_FIND(SDL_Flip);
  SDL_LIBRARY_FIND(SDL_SetGamma);
  SDL_LIBRARY_FIND(SDL_SetGammaRamp);
  SDL_LIBRARY_FIND(SDL_GetGammaRamp);
  SDL_LIBRARY_FIND(SDL_SetColors);
  SDL_LIBRARY_FIND(SDL_SetPalette);
  SDL_LIBRARY_FIND(SDL_MapRGB);
  SDL_LIBRARY_FIND(SDL_MapRGBA);
  SDL_LIBRARY_FIND(SDL_GetRGB);
  SDL_LIBRARY_FIND(SDL_GetRGBA);
  SDL_LIBRARY_FIND(SDL_CreateRGBSurface);
  SDL_LIBRARY_FIND(SDL_CreateRGBSurfaceFrom);
  SDL_LIBRARY_FIND(SDL_FreeSurface);
  SDL_LIBRARY_FIND(SDL_LockSurface);
  SDL_LIBRARY_FIND(SDL_UnlockSurface);
  SDL_LIBRARY_FIND(SDL_LoadBMP_RW);
  SDL_LIBRARY_FIND(SDL_SaveBMP_RW);
  SDL_LIBRARY_FIND(SDL_SetColorKey);
  SDL_LIBRARY_FIND(SDL_SetAlpha);
  SDL_LIBRARY_FIND(SDL_SetClipRect);
  SDL_LIBRARY_FIND(SDL_GetClipRect);
  SDL_LIBRARY_FIND(SDL_ConvertSurface);
  SDL_LIBRARY_FIND(SDL_UpperBlit);
  SDL_LIBRARY_FIND(SDL_LowerBlit);
  SDL_LIBRARY_FIND(SDL_FillRect);
  SDL_LIBRARY_FIND(SDL_DisplayFormat);
  SDL_LIBRARY_FIND(SDL_DisplayFormatAlpha);
  SDL_LIBRARY_FIND(SDL_CreateYUVOverlay);
  SDL_LIBRARY_FIND(SDL_LockYUVOverlay);
  SDL_LIBRARY_FIND(SDL_UnlockYUVOverlay);
  SDL_LIBRARY_FIND(SDL_DisplayYUVOverlay);
  SDL_LIBRARY_FIND(SDL_FreeYUVOverlay);
  SDL_LIBRARY_FIND(SDL_GL_LoadLibrary);
  SDL_LIBRARY_FIND(SDL_GL_GetProcAddress);
  SDL_LIBRARY_FIND(SDL_GL_SetAttribute);
  SDL_LIBRARY_FIND(SDL_GL_GetAttribute);
  SDL_LIBRARY_FIND(SDL_GL_SwapBuffers);
  SDL_LIBRARY_FIND(SDL_GL_UpdateRects);
  SDL_LIBRARY_FIND(SDL_GL_Lock);
  SDL_LIBRARY_FIND(SDL_GL_Unlock);
  SDL_LIBRARY_FIND(SDL_WM_SetCaption);
  SDL_LIBRARY_FIND(SDL_WM_GetCaption);
  SDL_LIBRARY_FIND(SDL_WM_SetIcon);
  SDL_LIBRARY_FIND(SDL_WM_IconifyWindow);
  SDL_LIBRARY_FIND(SDL_WM_ToggleFullScreen);
  SDL_LIBRARY_FIND(SDL_WM_GrabInput);
  SDL_LIBRARY_FIND(SDL_SoftStretch);
  SDL_LIBRARY_FIND(SDL_RWFromFile);
  SDL_LIBRARY_FIND(SDL_RWFromFP);
  SDL_LIBRARY_FIND(SDL_RWFromMem);
  SDL_LIBRARY_FIND(SDL_RWFromConstMem);
  SDL_LIBRARY_FIND(SDL_AllocRW);
  SDL_LIBRARY_FIND(SDL_FreeRW);
  SDL_LIBRARY_FIND(SDL_ReadLE16);
  SDL_LIBRARY_FIND(SDL_ReadBE16);
  SDL_LIBRARY_FIND(SDL_ReadLE32);
  SDL_LIBRARY_FIND(SDL_ReadBE32);
  SDL_LIBRARY_FIND(SDL_ReadLE64);
  SDL_LIBRARY_FIND(SDL_ReadBE64);
  SDL_LIBRARY_FIND(SDL_WriteLE16);
  SDL_LIBRARY_FIND(SDL_WriteBE16);
  SDL_LIBRARY_FIND(SDL_WriteLE32);
  SDL_LIBRARY_FIND(SDL_WriteBE32);
  SDL_LIBRARY_FIND(SDL_WriteLE64);
  SDL_LIBRARY_FIND(SDL_WriteBE64);
  SDL_LIBRARY_FIND(SDL_Init);
  SDL_LIBRARY_FIND(SDL_InitSubSystem);
  SDL_LIBRARY_FIND(SDL_QuitSubSystem);
  SDL_LIBRARY_FIND(SDL_WasInit);
  SDL_LIBRARY_FIND(SDL_Quit);
  SDL_LIBRARY_FIND(SDL_Linked_Version);
  SDL_LIBRARY_FIND(SDL_GetTicks);
  SDL_LIBRARY_FIND(SDL_Delay);
  SDL_LIBRARY_FIND(SDL_SetTimer);
  SDL_LIBRARY_FIND(SDL_AddTimer);
  SDL_LIBRARY_FIND(SDL_RemoveTimer);
  SDL_LIBRARY_FIND(SDL_NumJoysticks);
  SDL_LIBRARY_FIND(SDL_JoystickName);
  SDL_LIBRARY_FIND(SDL_JoystickOpen);
  SDL_LIBRARY_FIND(SDL_JoystickOpened);
  SDL_LIBRARY_FIND(SDL_JoystickIndex);
  SDL_LIBRARY_FIND(SDL_JoystickNumAxes);
  SDL_LIBRARY_FIND(SDL_JoystickNumBalls);
  SDL_LIBRARY_FIND(SDL_JoystickNumHats);
  SDL_LIBRARY_FIND(SDL_JoystickNumButtons);
  SDL_LIBRARY_FIND(SDL_JoystickUpdate);
  SDL_LIBRARY_FIND(SDL_JoystickEventState);
  SDL_LIBRARY_FIND(SDL_JoystickGetAxis);
  SDL_LIBRARY_FIND(SDL_JoystickGetHat);
  SDL_LIBRARY_FIND(SDL_JoystickGetBall);
  SDL_LIBRARY_FIND(SDL_JoystickGetButton);
  SDL_LIBRARY_FIND(SDL_JoystickClose);
  SDL_LIBRARY_FIND(SDL_CDNumDrives);
  SDL_LIBRARY_FIND(SDL_CDName);
  SDL_LIBRARY_FIND(SDL_CDOpen);
  SDL_LIBRARY_FIND(SDL_CDStatus);
  SDL_LIBRARY_FIND(SDL_CDPlayTracks);
  SDL_LIBRARY_FIND(SDL_CDPlay);
  SDL_LIBRARY_FIND(SDL_CDPause);
  SDL_LIBRARY_FIND(SDL_CDResume);
  SDL_LIBRARY_FIND(SDL_CDStop);
  SDL_LIBRARY_FIND(SDL_CDEject);
  SDL_LIBRARY_FIND(SDL_CDClose);
  SDL_LIBRARY_FIND(SDL_HasRDTSC);
  SDL_LIBRARY_FIND(SDL_HasMMX);
  SDL_LIBRARY_FIND(SDL_HasMMXExt);
  SDL_LIBRARY_FIND(SDL_Has3DNow);
  SDL_LIBRARY_FIND(SDL_Has3DNowExt);
  SDL_LIBRARY_FIND(SDL_HasSSE);
  SDL_LIBRARY_FIND(SDL_HasSSE2);
  SDL_LIBRARY_FIND(SDL_HasAltiVec);
  SDL_LIBRARY_FIND(SDL_SetError);
  SDL_LIBRARY_FIND(SDL_GetError);
  SDL_LIBRARY_FIND(SDL_ClearError);
  SDL_LIBRARY_FIND(SDL_Error);
  SDL_LIBRARY_FIND(SDL_GetWMInfo);

  result = SDLEW_SUCCESS;

  /* Currently we only support SDL-1.2 only. */
  {
    const SDL_version *version = SDL_Linked_Version();
    if(version->major > 1 || version->minor > 2) {
      result = SDLEW_ERROR_VERSION;
    }
  }


  return result;
}
示例#3
0
CCL_NAMESPACE_BEGIN

/* utility macros */
#define CUDA_LIBRARY_FIND_CHECKED(name) \
	name = (t##name*)dynamic_library_find(lib, #name);

#define CUDA_LIBRARY_FIND(name) \
	name = (t##name*)dynamic_library_find(lib, #name); \
	assert(name);

#define CUDA_LIBRARY_FIND_V2(name) \
	name = (t##name*)dynamic_library_find(lib, #name "_v2"); \
	assert(name);

/* initialization function */

bool cuLibraryInit()
{
	static bool initialized = false;
	static bool result = false;

	if(initialized)
		return result;
	
	initialized = true;

	/* library paths */
#ifdef _WIN32
	/* expected in c:/windows/system or similar, no path needed */
	const char *path = "nvcuda.dll";
#elif defined(__APPLE__)
	/* default installation path */
	const char *path = "/usr/local/cuda/lib/libcuda.dylib";
#else
	const char *path = "libcuda.so";
#endif

	/* load library */
	DynamicLibrary *lib = dynamic_library_open(path);

	if(lib == NULL)
		return false;

	/* detect driver version */
	int driver_version = 1000;

	CUDA_LIBRARY_FIND_CHECKED(cuDriverGetVersion);
	if(cuDriverGetVersion)
		cuDriverGetVersion(&driver_version);

	/* we require version 4.0 */
	if(driver_version < 4000)
		return false;

	/* fetch all function pointers */
	CUDA_LIBRARY_FIND(cuInit);
	CUDA_LIBRARY_FIND(cuDeviceGet);
	CUDA_LIBRARY_FIND(cuDeviceGetCount);
	CUDA_LIBRARY_FIND(cuDeviceGetName);
	CUDA_LIBRARY_FIND(cuDeviceComputeCapability);
	CUDA_LIBRARY_FIND(cuDeviceTotalMem);
	CUDA_LIBRARY_FIND(cuDeviceGetProperties);
	CUDA_LIBRARY_FIND(cuDeviceGetAttribute);
	CUDA_LIBRARY_FIND(cuCtxCreate);
	CUDA_LIBRARY_FIND(cuCtxDestroy);
	CUDA_LIBRARY_FIND(cuCtxAttach);
	CUDA_LIBRARY_FIND(cuCtxDetach);
	CUDA_LIBRARY_FIND(cuCtxPushCurrent);
	CUDA_LIBRARY_FIND(cuCtxPopCurrent);
	CUDA_LIBRARY_FIND(cuCtxGetDevice);
	CUDA_LIBRARY_FIND(cuCtxSynchronize);
	CUDA_LIBRARY_FIND(cuModuleLoad);
	CUDA_LIBRARY_FIND(cuModuleLoadData);
	CUDA_LIBRARY_FIND(cuModuleUnload);
	CUDA_LIBRARY_FIND(cuModuleGetFunction);
	CUDA_LIBRARY_FIND(cuModuleGetGlobal);
	CUDA_LIBRARY_FIND(cuModuleGetTexRef);
	CUDA_LIBRARY_FIND(cuMemGetInfo);
	CUDA_LIBRARY_FIND(cuMemAlloc);
	CUDA_LIBRARY_FIND(cuMemAllocPitch);
	CUDA_LIBRARY_FIND(cuMemFree);
	CUDA_LIBRARY_FIND(cuMemGetAddressRange);
	CUDA_LIBRARY_FIND(cuMemAllocHost);
	CUDA_LIBRARY_FIND(cuMemFreeHost);
	CUDA_LIBRARY_FIND(cuMemHostAlloc);
	CUDA_LIBRARY_FIND(cuMemHostGetDevicePointer);
	CUDA_LIBRARY_FIND(cuMemcpyHtoD);
	CUDA_LIBRARY_FIND(cuMemcpyDtoH);
	CUDA_LIBRARY_FIND(cuMemcpyDtoD);
	CUDA_LIBRARY_FIND(cuMemcpyDtoA);
	CUDA_LIBRARY_FIND(cuMemcpyAtoD);
	CUDA_LIBRARY_FIND(cuMemcpyHtoA);
	CUDA_LIBRARY_FIND(cuMemcpyAtoH);
	CUDA_LIBRARY_FIND(cuMemcpyAtoA);
	CUDA_LIBRARY_FIND(cuMemcpy2D);
	CUDA_LIBRARY_FIND(cuMemcpy2DUnaligned);
	CUDA_LIBRARY_FIND(cuMemcpy3D);
	CUDA_LIBRARY_FIND(cuMemcpyHtoDAsync);
	CUDA_LIBRARY_FIND(cuMemcpyDtoHAsync);
	CUDA_LIBRARY_FIND(cuMemcpyHtoAAsync);
	CUDA_LIBRARY_FIND(cuMemcpyAtoHAsync);
	CUDA_LIBRARY_FIND(cuMemcpy2DAsync);
	CUDA_LIBRARY_FIND(cuMemcpy3DAsync);
	CUDA_LIBRARY_FIND(cuMemsetD8);
	CUDA_LIBRARY_FIND(cuMemsetD16);
	CUDA_LIBRARY_FIND(cuMemsetD32);
	CUDA_LIBRARY_FIND(cuMemsetD2D8);
	CUDA_LIBRARY_FIND(cuMemsetD2D16);
	CUDA_LIBRARY_FIND(cuMemsetD2D32);
	CUDA_LIBRARY_FIND(cuFuncSetBlockShape);
	CUDA_LIBRARY_FIND(cuFuncSetSharedSize);
	CUDA_LIBRARY_FIND(cuFuncGetAttribute);
	CUDA_LIBRARY_FIND(cuArrayCreate);
	CUDA_LIBRARY_FIND(cuArrayGetDescriptor);
	CUDA_LIBRARY_FIND(cuArrayDestroy);
	CUDA_LIBRARY_FIND(cuArray3DCreate);
	CUDA_LIBRARY_FIND(cuArray3DGetDescriptor);
	CUDA_LIBRARY_FIND(cuTexRefCreate);
	CUDA_LIBRARY_FIND(cuTexRefDestroy);
	CUDA_LIBRARY_FIND(cuTexRefSetArray);
	CUDA_LIBRARY_FIND(cuTexRefSetAddress);
	CUDA_LIBRARY_FIND(cuTexRefSetAddress2D);
	CUDA_LIBRARY_FIND(cuTexRefSetFormat);
	CUDA_LIBRARY_FIND(cuTexRefSetAddressMode);
	CUDA_LIBRARY_FIND(cuTexRefSetFilterMode);
	CUDA_LIBRARY_FIND(cuTexRefSetFlags);
	CUDA_LIBRARY_FIND(cuTexRefGetAddress);
	CUDA_LIBRARY_FIND(cuTexRefGetArray);
	CUDA_LIBRARY_FIND(cuTexRefGetAddressMode);
	CUDA_LIBRARY_FIND(cuTexRefGetFilterMode);
	CUDA_LIBRARY_FIND(cuTexRefGetFormat);
	CUDA_LIBRARY_FIND(cuTexRefGetFlags);
	CUDA_LIBRARY_FIND(cuParamSetSize);
	CUDA_LIBRARY_FIND(cuParamSeti);
	CUDA_LIBRARY_FIND(cuParamSetf);
	CUDA_LIBRARY_FIND(cuParamSetv);
	CUDA_LIBRARY_FIND(cuParamSetTexRef);
	CUDA_LIBRARY_FIND(cuLaunch);
	CUDA_LIBRARY_FIND(cuLaunchGrid);
	CUDA_LIBRARY_FIND(cuLaunchGridAsync);
	CUDA_LIBRARY_FIND(cuEventCreate);
	CUDA_LIBRARY_FIND(cuEventRecord);
	CUDA_LIBRARY_FIND(cuEventQuery);
	CUDA_LIBRARY_FIND(cuEventSynchronize);
	CUDA_LIBRARY_FIND(cuEventDestroy);
	CUDA_LIBRARY_FIND(cuEventElapsedTime);
	CUDA_LIBRARY_FIND(cuStreamCreate);
	CUDA_LIBRARY_FIND(cuStreamQuery);
	CUDA_LIBRARY_FIND(cuStreamSynchronize);
	CUDA_LIBRARY_FIND(cuStreamDestroy);

	/* cuda 2.1 */
	CUDA_LIBRARY_FIND(cuModuleLoadDataEx);
	CUDA_LIBRARY_FIND(cuModuleLoadFatBinary);
	CUDA_LIBRARY_FIND(cuGLCtxCreate);
	CUDA_LIBRARY_FIND(cuGraphicsGLRegisterBuffer);
	CUDA_LIBRARY_FIND(cuGraphicsGLRegisterImage);

	/* cuda 2.3 */
	CUDA_LIBRARY_FIND(cuMemHostGetFlags);
	CUDA_LIBRARY_FIND(cuGraphicsGLRegisterBuffer);
	CUDA_LIBRARY_FIND(cuGraphicsGLRegisterImage);

	/* cuda 3.0 */
	CUDA_LIBRARY_FIND(cuMemcpyDtoDAsync);
	CUDA_LIBRARY_FIND(cuFuncSetCacheConfig);
	CUDA_LIBRARY_FIND(cuGraphicsUnregisterResource);
	CUDA_LIBRARY_FIND(cuGraphicsSubResourceGetMappedArray);
	CUDA_LIBRARY_FIND(cuGraphicsResourceGetMappedPointer);
	CUDA_LIBRARY_FIND(cuGraphicsResourceSetMapFlags);
	CUDA_LIBRARY_FIND(cuGraphicsMapResources);
	CUDA_LIBRARY_FIND(cuGraphicsUnmapResources);
	CUDA_LIBRARY_FIND(cuGetExportTable);

	/* cuda 3.1 */
	CUDA_LIBRARY_FIND(cuModuleGetSurfRef);
	CUDA_LIBRARY_FIND(cuSurfRefSetArray);
	CUDA_LIBRARY_FIND(cuSurfRefGetArray);
	CUDA_LIBRARY_FIND(cuCtxSetLimit);
	CUDA_LIBRARY_FIND(cuCtxGetLimit);

	/* functions which changed 3.1 -> 3.2 for 64 bit stuff, the cuda library
	 * has both the old ones for compatibility and new ones with _v2 postfix,
	 * we load the _v2 ones here. */
	CUDA_LIBRARY_FIND_V2(cuDeviceTotalMem);
	CUDA_LIBRARY_FIND_V2(cuCtxCreate);
	CUDA_LIBRARY_FIND_V2(cuModuleGetGlobal);
	CUDA_LIBRARY_FIND_V2(cuMemGetInfo);
	CUDA_LIBRARY_FIND_V2(cuMemAlloc);
	CUDA_LIBRARY_FIND_V2(cuMemAllocPitch);
	CUDA_LIBRARY_FIND_V2(cuMemFree);
	CUDA_LIBRARY_FIND_V2(cuMemGetAddressRange);
	CUDA_LIBRARY_FIND_V2(cuMemAllocHost);
	CUDA_LIBRARY_FIND_V2(cuMemHostGetDevicePointer);
	CUDA_LIBRARY_FIND_V2(cuMemcpyHtoD);
	CUDA_LIBRARY_FIND_V2(cuMemcpyDtoH);
	CUDA_LIBRARY_FIND_V2(cuMemcpyDtoD);
	CUDA_LIBRARY_FIND_V2(cuMemcpyDtoA);
	CUDA_LIBRARY_FIND_V2(cuMemcpyAtoD);
	CUDA_LIBRARY_FIND_V2(cuMemcpyHtoA);
	CUDA_LIBRARY_FIND_V2(cuMemcpyAtoH);
	CUDA_LIBRARY_FIND_V2(cuMemcpyAtoA);
	CUDA_LIBRARY_FIND_V2(cuMemcpyHtoAAsync);
	CUDA_LIBRARY_FIND_V2(cuMemcpyAtoHAsync);
	CUDA_LIBRARY_FIND_V2(cuMemcpy2D);
	CUDA_LIBRARY_FIND_V2(cuMemcpy2DUnaligned);
	CUDA_LIBRARY_FIND_V2(cuMemcpy3D);
	CUDA_LIBRARY_FIND_V2(cuMemcpyHtoDAsync);
	CUDA_LIBRARY_FIND_V2(cuMemcpyDtoHAsync);
	CUDA_LIBRARY_FIND_V2(cuMemcpyDtoDAsync);
	CUDA_LIBRARY_FIND_V2(cuMemcpy2DAsync);
	CUDA_LIBRARY_FIND_V2(cuMemcpy3DAsync);
	CUDA_LIBRARY_FIND_V2(cuMemsetD8);
	CUDA_LIBRARY_FIND_V2(cuMemsetD16);
	CUDA_LIBRARY_FIND_V2(cuMemsetD32);
	CUDA_LIBRARY_FIND_V2(cuMemsetD2D8);
	CUDA_LIBRARY_FIND_V2(cuMemsetD2D16);
	CUDA_LIBRARY_FIND_V2(cuMemsetD2D32);
	CUDA_LIBRARY_FIND_V2(cuArrayCreate);
	CUDA_LIBRARY_FIND_V2(cuArrayGetDescriptor);
	CUDA_LIBRARY_FIND_V2(cuArray3DCreate);
	CUDA_LIBRARY_FIND_V2(cuArray3DGetDescriptor);
	CUDA_LIBRARY_FIND_V2(cuTexRefSetAddress);
	CUDA_LIBRARY_FIND_V2(cuTexRefSetAddress2D);
	CUDA_LIBRARY_FIND_V2(cuTexRefGetAddress);
	CUDA_LIBRARY_FIND_V2(cuGraphicsResourceGetMappedPointer);
	CUDA_LIBRARY_FIND_V2(cuGLCtxCreate);

	/* cuda 4.0 */
	CUDA_LIBRARY_FIND(cuCtxSetCurrent);

	if(cuHavePrecompiledKernels())
		result = true;
#ifndef _WIN32
	else if(cuCompilerPath() != "")
		result = true;
#endif

	return result;
}