3 #include <cuda_runtime.h> 4 #include <cuda_runtime_api.h> 6 #include <muda/type_traits/type_modifier.h> 7 #include <muda/viewer/dense/dense_3d.h> 8 #include <muda/tools/extent.h> 9 #include <muda/buffer/buffer_info_accessor.h> 10 #include <muda/view/view_base.h> 13 template <
bool IsConst,
typename T>
18 static_assert(!std::is_const_v<T>,
"Ty must be non-const");
26 using ThisViewer = std::conditional_t<IsConst, CViewer, Viewer>;
33 using auto_const_t =
typename Base::template auto_const_t<U>;
36 auto_const_t<T>* m_data =
nullptr;
37 size_t m_pitch_bytes = ~0;
38 size_t m_pitch_bytes_area = ~0;
39 size_t m_origin_width = ~0;
40 size_t m_origin_height = ~0;
50 size_t pitch_bytes_area,
54 const Extent3D& extent) MUDA_NOEXCEPT
56 m_pitch_bytes(pitch_bytes),
57 m_pitch_bytes_area(pitch_bytes_area),
58 m_origin_width(origin_width),
59 m_origin_height(origin_height),
67 size_t pitch_bytes_area,
69 const Extent3D& extent) MUDA_NOEXCEPT
71 data, pitch_bytes, pitch_bytes_area, extent.width(), extent.height(), offset, extent)
79 return ConstView{m_data, m_pitch_bytes, m_pitch_bytes_area, m_offset, m_extent};
82 operator ConstView()
const MUDA_NOEXCEPT {
return as_const(); }
85 MUDA_GENERIC auto_const_t<T>* data(
size_t x,
size_t y,
size_t z) MUDA_NOEXCEPT;
86 MUDA_GENERIC auto_const_t<T>* data(
size_t flatten_i) MUDA_NOEXCEPT;
87 MUDA_GENERIC auto_const_t<T>* origin_data() MUDA_NOEXCEPT {
return m_data; }
88 MUDA_GENERIC ThisView subview(
Offset3D offset,
Extent3D extent = {}) MUDA_NOEXCEPT;
89 MUDA_GENERIC ThisViewer viewer() MUDA_NOEXCEPT;
93 MUDA_GENERIC
auto extent()
const MUDA_NOEXCEPT {
return m_extent; }
94 MUDA_GENERIC
const T* data(
size_t x,
size_t y,
size_t z)
const MUDA_NOEXCEPT;
95 MUDA_GENERIC
const T* data(
size_t flatten_i)
const MUDA_NOEXCEPT;
96 MUDA_GENERIC
const T* origin_data()
const MUDA_NOEXCEPT {
return m_data; }
97 MUDA_GENERIC
auto offset()
const MUDA_NOEXCEPT {
return m_offset; }
98 MUDA_GENERIC
auto pitch_bytes()
const MUDA_NOEXCEPT
100 return m_pitch_bytes;
102 MUDA_GENERIC
auto pitch_bytes_area()
const MUDA_NOEXCEPT
104 return m_pitch_bytes_area;
106 MUDA_GENERIC
size_t total_size()
const MUDA_NOEXCEPT;
108 MUDA_GENERIC
CViewer cviewer()
const MUDA_NOEXCEPT;
109 MUDA_GENERIC cudaPitchedPtr cuda_pitched_ptr()
const MUDA_NOEXCEPT
111 return make_cudaPitchedPtr(remove_const(m_data),
112 remove_const(m_pitch_bytes),
113 m_origin_width *
sizeof(T),
118 template <
typename T>
136 MUDA_HOST
void copy_to(T* host)
const;
138 MUDA_GENERIC
auto as_const()
const MUDA_NOEXCEPT {
return *
this; }
141 template <
typename T>
166 MUDA_HOST
void fill(
const T& v);
168 MUDA_HOST
void copy_from(
const T* host);
169 MUDA_HOST
void copy_to(T* host)
const 175 template <
typename T>
181 template <
typename T>
188 #include "details/buffer_3d_view.inl"
Definition: dense_3d.h:19
Definition: view_base.h:7
Definition: type_modifier.h:21
Definition: type_modifier.h:27
Definition: buffer_3d_view.h:119
Definition: buffer_info_accessor.h:6
Definition: buffer_3d_view.h:14
Definition: buffer_3d_view.h:142
Definition: buffer_launch.h:36