NTrace
GPU ray tracing framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
FW::Buffer Class Reference

#include <Buffer.hpp>

Inherits FW::Serializable.

Public Types

enum  Module {
  CPU = 1 << 0, GL = 1 << 1, Cuda = 1 << 2, Module_None = 0,
  Module_All = (1 << 3) - 1
}
 
enum  Hint { Hint_PageLock = 1 << 0, Hint_CudaGL = 1 << 1, Hint_None = 0, Hint_All = (1 << 2) - 1 }
 

Public Member Functions

 Buffer (U32 hints=Hint_None)
 
 Buffer (const void *ptr, S64 size, U32 hints=Hint_None, int align=1)
 
template<class T >
 Buffer (const Array< T > &data, U32 hints=Hint_None, int align=1)
 
template<class T >
 Buffer (const Array< T > &data, int start, int end, U32 hints=Hint_None, int align=1)
 
 Buffer (Buffer &other)
 
virtual ~Buffer (void)
 
void wrapCPU (void *cpuPtr, S64 size)
 
void wrapGL (GLuint glBuffer)
 
void wrapCuda (CUdeviceptr cudaPtr, S64 size)
 
S64 getSize (void) const
 
U32 getHints (void) const
 
int getAlign (void) const
 
void setHintsAndAlign (U32 hints, int align)
 
void setHints (U32 hints)
 
void setAlign (int align)
 
void reset (U32 hints, int align)
 
void reset (U32 hints)
 
void reset (void)
 
void reset (const void *ptr, S64 size, U32 hints, int align)
 
void reset (const void *ptr, S64 size, U32 hints)
 
void reset (const void *ptr, S64 size)
 
void resize (S64 size)
 
void resizeDiscard (S64 size)
 
void free (Module module)
 
void getRange (void *dst, S64 srcOfs, S64 size, bool async=false, CUstream cudaStream=NULL) const
 
void get (void *ptr)
 
template<class T >
void get (Array< T > &data)
 
void setRange (S64 dstOfs, const void *src, S64 size, bool async=false, CUstream cudaStream=NULL)
 
void setRange (S64 dstOfs, Buffer &src, S64 srcOfs, S64 size, bool async=false, CUstream cudaStream=NULL)
 
void set (const void *ptr)
 
void set (const void *ptr, S64 size)
 
void set (Buffer &other)
 
template<class T >
void set (const Array< T > &data)
 
template<class T >
void set (const Array< T > &data, int start, int end)
 
void clearRange (S64 dstOfs, int value, S64 size, bool async=false, CUstream cudaStream=NULL)
 
void clear (int value=0)
 
void setOwner (Module module, bool modify, bool async=false, CUstream cudaStream=NULL, S64 validSize=-1)
 
Module getOwner (void) const
 
void discard (void)
 
const U8getPtr (S64 ofs=0)
 
GLuint getGLBuffer (void)
 
CUdeviceptr getCudaPtr (S64 ofs=0)
 
U8getMutablePtr (S64 ofs=0)
 
GLuint getMutableGLBuffer (void)
 
CUdeviceptr getMutableCudaPtr (S64 ofs=0)
 
U8getMutablePtrDiscard (S64 ofs=0)
 
GLuint getMutableGLBufferDiscard (void)
 
CUdeviceptr getMutableCudaPtrDiscard (S64 ofs=0)
 
Bufferoperator= (Buffer &other)
 
U8 operator[] (S64 idx)
 
virtual void readFromStream (InputStream &s)
 
virtual void writeToStream (OutputStream &s) const
 
- Public Member Functions inherited from FW::Serializable
 Serializable (void)
 
virtual ~Serializable (void)
 

Static Public Member Functions

static void memcpyHtoD (CUdeviceptr dst, const void *src, S64 size, bool async=false, CUstream cudaStream=NULL)
 
static void memcpyDtoH (void *dst, CUdeviceptr src, S64 size, bool async=false, CUstream cudaStream=NULL)
 
static void memcpyDtoD (CUdeviceptr dst, CUdeviceptr src, S64 size, bool async=false, CUstream cudaStream=NULL)
 

Detailed Description

Definition at line 35 of file Buffer.hpp.

Member Enumeration Documentation

Enumerator
Hint_PageLock 
Hint_CudaGL 
Hint_None 
Hint_All 

Definition at line 48 of file Buffer.hpp.

Enumerator
CPU 
GL 
Cuda 
Module_None 
Module_All 

Definition at line 38 of file Buffer.hpp.

Constructor & Destructor Documentation

FW::Buffer::Buffer ( U32  hints = Hint_None)
inlineexplicit

Definition at line 58 of file Buffer.hpp.

FW::Buffer::Buffer ( const void ptr,
S64  size,
U32  hints = Hint_None,
int  align = 1 
)
inlineexplicit

Definition at line 59 of file Buffer.hpp.

template<class T >
FW::Buffer::Buffer ( const Array< T > &  data,
U32  hints = Hint_None,
int  align = 1 
)
inlineexplicit

Definition at line 60 of file Buffer.hpp.

template<class T >
FW::Buffer::Buffer ( const Array< T > &  data,
int  start,
int  end,
U32  hints = Hint_None,
int  align = 1 
)
inlineexplicit

Definition at line 61 of file Buffer.hpp.

FW::Buffer::Buffer ( Buffer other)
inline

Definition at line 62 of file Buffer.hpp.

virtual FW::Buffer::~Buffer ( void  )
inlinevirtual

Definition at line 63 of file Buffer.hpp.

Member Function Documentation

void FW::Buffer::clear ( int  value = 0)
inline

Definition at line 100 of file Buffer.hpp.

void Buffer::clearRange ( S64  dstOfs,
int  value,
S64  size,
bool  async = false,
CUstream  cudaStream = NULL 
)

Definition at line 202 of file Buffer.cpp.

void FW::Buffer::discard ( void  )
inline

Definition at line 104 of file Buffer.hpp.

void Buffer::free ( Module  module)

Definition at line 80 of file Buffer.cpp.

void FW::Buffer::get ( void ptr)
inline

Definition at line 87 of file Buffer.hpp.

template<class T >
void FW::Buffer::get ( Array< T > &  data)
inline

Definition at line 88 of file Buffer.hpp.

int FW::Buffer::getAlign ( void  ) const
inline

Definition at line 71 of file Buffer.hpp.

CUdeviceptr FW::Buffer::getCudaPtr ( S64  ofs = 0)
inline

Definition at line 108 of file Buffer.hpp.

GLuint FW::Buffer::getGLBuffer ( void  )
inline

Definition at line 107 of file Buffer.hpp.

U32 FW::Buffer::getHints ( void  ) const
inline

Definition at line 70 of file Buffer.hpp.

CUdeviceptr FW::Buffer::getMutableCudaPtr ( S64  ofs = 0)
inline

Definition at line 112 of file Buffer.hpp.

CUdeviceptr FW::Buffer::getMutableCudaPtrDiscard ( S64  ofs = 0)
inline

Definition at line 116 of file Buffer.hpp.

GLuint FW::Buffer::getMutableGLBuffer ( void  )
inline

Definition at line 111 of file Buffer.hpp.

GLuint FW::Buffer::getMutableGLBufferDiscard ( void  )
inline

Definition at line 115 of file Buffer.hpp.

U8* FW::Buffer::getMutablePtr ( S64  ofs = 0)
inline

Definition at line 110 of file Buffer.hpp.

U8* FW::Buffer::getMutablePtrDiscard ( S64  ofs = 0)
inline

Definition at line 114 of file Buffer.hpp.

Module FW::Buffer::getOwner ( void  ) const
inline

Definition at line 103 of file Buffer.hpp.

const U8* FW::Buffer::getPtr ( S64  ofs = 0)
inline

Definition at line 106 of file Buffer.hpp.

void Buffer::getRange ( void dst,
S64  srcOfs,
S64  size,
bool  async = false,
CUstream  cudaStream = NULL 
) const

Definition at line 114 of file Buffer.cpp.

S64 FW::Buffer::getSize ( void  ) const
inline

Definition at line 69 of file Buffer.hpp.

static void FW::Buffer::memcpyDtoD ( CUdeviceptr  dst,
CUdeviceptr  src,
S64  size,
bool  async = false,
CUstream  cudaStream = NULL 
)
inlinestatic

Definition at line 126 of file Buffer.hpp.

static void FW::Buffer::memcpyDtoH ( void dst,
CUdeviceptr  src,
S64  size,
bool  async = false,
CUstream  cudaStream = NULL 
)
inlinestatic

Definition at line 125 of file Buffer.hpp.

static void FW::Buffer::memcpyHtoD ( CUdeviceptr  dst,
const void src,
S64  size,
bool  async = false,
CUstream  cudaStream = NULL 
)
inlinestatic

Definition at line 124 of file Buffer.hpp.

Buffer& FW::Buffer::operator= ( Buffer other)
inline

Definition at line 118 of file Buffer.hpp.

U8 FW::Buffer::operator[] ( S64  idx)
inline

Definition at line 119 of file Buffer.hpp.

void Buffer::readFromStream ( InputStream s)
virtual

Implements FW::Serializable.

Definition at line 331 of file Buffer.cpp.

void FW::Buffer::reset ( U32  hints,
int  align 
)
inline

Definition at line 76 of file Buffer.hpp.

void FW::Buffer::reset ( U32  hints)
inline

Definition at line 77 of file Buffer.hpp.

void FW::Buffer::reset ( void  )
inline

Definition at line 78 of file Buffer.hpp.

void FW::Buffer::reset ( const void ptr,
S64  size,
U32  hints,
int  align 
)
inline

Definition at line 79 of file Buffer.hpp.

void FW::Buffer::reset ( const void ptr,
S64  size,
U32  hints 
)
inline

Definition at line 80 of file Buffer.hpp.

void FW::Buffer::reset ( const void ptr,
S64  size 
)
inline

Definition at line 81 of file Buffer.hpp.

void FW::Buffer::resize ( S64  size)
inline

Definition at line 82 of file Buffer.hpp.

void FW::Buffer::resizeDiscard ( S64  size)
inline

Definition at line 83 of file Buffer.hpp.

void FW::Buffer::set ( const void ptr)
inline

Definition at line 92 of file Buffer.hpp.

void FW::Buffer::set ( const void ptr,
S64  size 
)
inline

Definition at line 94 of file Buffer.hpp.

void FW::Buffer::set ( Buffer other)
inline

Definition at line 95 of file Buffer.hpp.

template<class T >
void FW::Buffer::set ( const Array< T > &  data)
inline

Definition at line 96 of file Buffer.hpp.

template<class T >
void FW::Buffer::set ( const Array< T > &  data,
int  start,
int  end 
)
inline

Definition at line 97 of file Buffer.hpp.

void FW::Buffer::setAlign ( int  align)
inline

Definition at line 74 of file Buffer.hpp.

void FW::Buffer::setHints ( U32  hints)
inline

Definition at line 73 of file Buffer.hpp.

void FW::Buffer::setHintsAndAlign ( U32  hints,
int  align 
)
inline

Definition at line 72 of file Buffer.hpp.

void Buffer::setOwner ( Module  module,
bool  modify,
bool  async = false,
CUstream  cudaStream = NULL,
S64  validSize = -1 
)

Definition at line 220 of file Buffer.cpp.

void Buffer::setRange ( S64  dstOfs,
const void src,
S64  size,
bool  async = false,
CUstream  cudaStream = NULL 
)

Definition at line 149 of file Buffer.cpp.

void Buffer::setRange ( S64  dstOfs,
Buffer src,
S64  srcOfs,
S64  size,
bool  async = false,
CUstream  cudaStream = NULL 
)

Definition at line 183 of file Buffer.cpp.

void Buffer::wrapCPU ( void cpuPtr,
S64  size 
)

Definition at line 39 of file Buffer.cpp.

void Buffer::wrapCuda ( CUdeviceptr  cudaPtr,
S64  size 
)

Definition at line 70 of file Buffer.cpp.

void Buffer::wrapGL ( GLuint  glBuffer)

Definition at line 50 of file Buffer.cpp.

void Buffer::writeToStream ( OutputStream s) const
virtual

Implements FW::Serializable.

Definition at line 350 of file Buffer.cpp.


The documentation for this class was generated from the following files: