22 #ifndef __optix_sizet_h__
23 #define __optix_sizet_h__
26 #include <sys/types.h>
32 # define RT_SIZET_INLINE inline
35 # define RT_SIZET_INLINE __inline
37 # define RT_SIZET_INLINE static inline
45 #if defined(__x86_64) || defined(AMD64) || defined(_M_AMD64)
52 typedef struct __align__(16) size_t2 {
54 RT_HOSTDEVICE size_t2() { }
55 RT_HOSTDEVICE
explicit size_t2(
size_t s ) { x = y = s; }
56 RT_HOSTDEVICE size_t2( uint2 u ) { x = u.x; y = u.y; }
61 typedef struct size_t3 {
63 RT_HOSTDEVICE size_t3() { }
64 RT_HOSTDEVICE
explicit size_t3(
size_t s ) { x = y = z = s; }
65 RT_HOSTDEVICE size_t3( uint3 u ) { x = u.x; y = u.y; z = u.z; }
71 typedef struct __align__(16) size_t4 {
73 RT_HOSTDEVICE size_t4() { }
74 RT_HOSTDEVICE
explicit size_t4(
size_t s ) { x = y = z = w = s; }
75 RT_HOSTDEVICE size_t4( uint4 u ) { x = u.x; y = u.y; z = u.z; w = u.w; }
80 RT_SIZET_INLINE RT_HOSTDEVICE size_t2 make_size_t2(
size_t x,
size_t y ) {
86 RT_SIZET_INLINE RT_HOSTDEVICE size_t3 make_size_t3(
size_t x,
size_t y,
size_t z ) {
93 RT_SIZET_INLINE RT_HOSTDEVICE size_t4 make_size_t4(
size_t x,
size_t y,
size_t z,
size_t w ) {
104 RT_SIZET_INLINE RT_HOSTDEVICE size_t4 make_size_t4(
unsigned int s)
106 return make_size_t4(s, s, s, s);
108 RT_SIZET_INLINE RT_HOSTDEVICE size_t3 make_size_t3(
unsigned int s)
110 return make_size_t3(s, s, s);
112 RT_SIZET_INLINE RT_HOSTDEVICE size_t2 make_size_t2(
unsigned int s)
114 return make_size_t2(s, s);
116 RT_SIZET_INLINE RT_HOSTDEVICE size_t3 make_size_t3(size_t4 st)
118 return make_size_t3(st.x, st.y, st.z);
120 RT_SIZET_INLINE RT_HOSTDEVICE size_t2 make_size_t2(size_t4 st)
122 return make_size_t2(st.x, st.y);
124 RT_SIZET_INLINE RT_HOSTDEVICE
size_t make_size_t(size_t4 v0)
126 return (
size_t) v0.x;
129 RT_SIZET_INLINE RT_HOSTDEVICE size_t4 make_size_t4(uint4 s)
131 return make_size_t4(s.x, s.y, s.z, s.w);
134 RT_SIZET_INLINE RT_HOSTDEVICE float2 make_float2(size_t2 st)
144 typedef uint1 size_t1;
145 typedef uint2 size_t2;
146 typedef uint3 size_t3;
147 typedef uint4 size_t4;
148 #define make_size_t4 make_uint4
149 #define make_size_t3 make_uint3
150 #define make_size_t2 make_uint2
151 #define make_size_t1 make_uint1
158 #undef RT_SIZET_INLINE
OptiX public API declarations.