void bindTextureToArray(const textureReference* tex,
                        cudaArray_const_t array,
                        const cudaChannelFormatDesc* desc) {
    if (Ctx->isCreated() && tex && array && desc) {
        checkCudaError(cudaBindTextureToArray(tex, array, desc));
    }
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
    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 ) );
    }
Exemplo n.º 4
0
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 );
}