void bindTextureToArray(const textureReference* tex, cudaArray_const_t array, const cudaChannelFormatDesc* desc) { if (Ctx->isCreated() && tex && array && desc) { checkCudaError(cudaBindTextureToArray(tex, array, desc)); } }
void CudaImagePyramidHost::bindTexture() { const textureReference* constTexRefPtr=NULL; cudaGetTextureReference(&constTexRefPtr, _texture_name); checkCUDAError("Can't get tex ref for bind TEXTURE_PYRAMID", _name); cudaChannelFormatDesc formatDesc = constTexRefPtr->channelDesc; cudaBindTextureToArray(constTexRefPtr, _storage, &formatDesc); checkCUDAError("Bind error", _name); }
CTfactory( const VolumeGPU<T>& src, U& texRef, const cudaTextureFilterMode fm = cudaFilterModePoint, const cudaTextureAddressMode am = cudaAddressModeClamp, const int norm = false ) : dca_data(NULL) { // Check for valid input if( src.d_data.ptr == NULL ) { std::cerr << __FUNCTION__ << ": Source has no data" << std::endl; abort(); } // Allocate memory cudaChannelFormatDesc cd = cudaCreateChannelDesc<T>(); cudaExtent tmpExtent = ExtentFromDims( src.dims ); CUDA_SAFE_CALL( cudaMalloc3DArray( &(this->dca_data), &cd, tmpExtent ) ); // Do the copy cudaMemcpy3DParms cp = {0}; cp.srcPtr = src.d_data; cp.dstArray = this->dca_data; cp.extent = tmpExtent; cp.kind = cudaMemcpyDeviceToDevice; CUDA_SAFE_CALL( cudaMemcpy3D( &cp ) ); // Bind the texture texRef.normalized = norm; texRef.addressMode[0] = am; texRef.addressMode[1] = am; texRef.addressMode[2] = am; texRef.filterMode = fm; CUDA_SAFE_CALL( cudaBindTextureToArray( texRef, this->dca_data ) ); }
cudaError_t WINAPI wine_cudaBindTextureToArray( const struct textureReference *texref, const struct cudaArray *array, const struct cudaChannelFormatDesc *desc ) { WINE_TRACE("\n"); return cudaBindTextureToArray( texref, array, desc ); }