/*************************************************************************** nvc_texture.h ------------------- W. Michael Brown Utilities for dealing with CUDA Runtime textures __________________________________________________________________________ This file is part of the Geryon Unified Coprocessor Library (UCL) __________________________________________________________________________ begin : Fri Jul 2 2010 copyright : (C) 2010 by W. Michael Brown email : brownw@ornl.gov ***************************************************************************/ /* ----------------------------------------------------------------------- Copyright (2010) Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. This software is distributed under the Simplified BSD License. ----------------------------------------------------------------------- */ #ifndef NVC_TEXTURE #define NVC_TEXTURE #include "nvc_mat.h" namespace ucl_cudart { /// Class storing a texture reference class UCL_Texture { public: UCL_Texture() {} ~UCL_Texture() {} /// Construct with a specified texture reference inline UCL_Texture(textureReference *t) { get_texture(t); } /// Set the texture reference for this object inline void get_texture(textureReference *t) { _tex_ptr=t; } /// Bind a float array where each fetch grabs a vector of length numel template inline void bind_float(mat_typ &vec, const unsigned numel) { #ifdef UCL_DEBUG assert(numel!=0 && numel<5); #endif int bits[4]={0,0,0,0}; for (int i=0; i