void CudaModuleScene::initCudaObj(ApexCudaSurfRef& surfRef) { if (getGpuDispatcher()->getCudaContextManager()->supportsArchSM20() == false) { return; } const char* surfRefName = surfRef.getName(); for (int j = 0 ; j < numRegisteredSurfaces ; j++) { if (nvidia::strcmp(surfaceTable[j].surfRefName, surfRefName) == 0) { ApexCudaModule* cudaModule = getCudaModule(surfaceTable[j].modIndex); PX_ASSERT(cudaModule->isValid()); CUsurfref cuSurfRef; CUT_SAFE_CALL(cuModuleGetSurfRef(&cuSurfRef, cudaModule->getCuModule(), surfRefName)); surfRef.init(this, cuSurfRef, cudaModule); break; } } }
SEXP R_auto_cuModuleGetSurfRef(SEXP r_hmod, SEXP r_name) { SEXP r_ans = R_NilValue; CUsurfref pSurfRef; CUmodule hmod = (CUmodule) getRReference(r_hmod); const char * name = CHAR(STRING_ELT(r_name, 0)); CUresult ans; ans = cuModuleGetSurfRef(& pSurfRef, hmod, name); if(ans) return(R_cudaErrorInfo(ans)); r_ans = R_createRef(pSurfRef, "CUsurfref") ; return(r_ans); }
CUsurfref CudaModule::getSurfRef(const std::string& name) { #if (CUDA_VERSION >= 3010) CUsurfref surfRef; checkError( "cuModuleGetSurfRef", cuModuleGetSurfRef(&surfRef, m_module, name.c_str()) ); return surfRef; #else FW_UNREF(name); fail("CudaModule: getSurfRef() requires CUDA 3.1 or later!"); return NULL; #endif }