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_2d.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>;
30 using auto_const_t =
typename Base::template auto_const_t<T>;
36 auto_const_t<T>* m_data =
nullptr;
37 size_t m_pitch_bytes = ~0;
38 size_t m_origin_width = 0;
39 size_t m_origin_height = 0;
51 const Extent2D& extent) MUDA_NOEXCEPT
53 m_pitch_bytes(pitch_bytes),
54 m_origin_width(origin_width),
55 m_origin_height(origin_height),
64 const Extent2D& extent) MUDA_NOEXCEPT
65 :
Buffer2DViewBase(data, pitch_bytes, extent.width(), extent.height(), offset, extent)
73 return ConstView{m_data, m_pitch_bytes, m_origin_width, m_origin_height, m_offset, m_extent};
76 operator ConstView()
const MUDA_NOEXCEPT {
return as_const(); }
80 MUDA_GENERIC auto_const_t<T>* data(
size_t x,
size_t y) MUDA_NOEXCEPT;
81 MUDA_GENERIC auto_const_t<T>* data(
size_t flatten_i) MUDA_NOEXCEPT;
82 MUDA_GENERIC auto_const_t<T>* origin_data() MUDA_NOEXCEPT {
return m_data; }
83 MUDA_GENERIC ThisView subview(
Offset2D offset,
Extent2D extent = {}) MUDA_NOEXCEPT;
84 MUDA_GENERIC ThisViewer viewer() MUDA_NOEXCEPT;
88 MUDA_GENERIC
auto extent()
const MUDA_NOEXCEPT {
return m_extent; }
89 MUDA_GENERIC
size_t pitch_bytes()
const MUDA_NOEXCEPT
93 MUDA_GENERIC
auto data(
size_t x,
size_t y)
const MUDA_NOEXCEPT
95 return remove_const(*this).data(x, y);
97 MUDA_GENERIC
auto data(
size_t flatten_i)
const MUDA_NOEXCEPT
99 return remove_const(*this).data(flatten_i);
101 MUDA_GENERIC
auto origin_data()
const MUDA_NOEXCEPT {
return m_data; }
102 MUDA_GENERIC
auto offset()
const MUDA_NOEXCEPT {
return m_offset; }
103 MUDA_GENERIC
auto total_size()
const MUDA_NOEXCEPT
105 return m_extent.width() * m_extent.height();
109 MUDA_GENERIC
CViewer cviewer()
const MUDA_NOEXCEPT;
111 MUDA_GENERIC cudaPitchedPtr cuda_pitched_ptr()
const MUDA_NOEXCEPT;
114 template <
typename T>
129 MUDA_HOST
void copy_to(T* host)
const;
131 MUDA_GENERIC
auto as_const()
const MUDA_NOEXCEPT {
return *
this; }
134 template <
typename T>
169 MUDA_HOST
void fill(
const T& v);
171 MUDA_HOST
void copy_from(
const T* host);
172 MUDA_HOST
void copy_to(T* host)
const 178 template <
typename T>
184 template <
typename T>
191 #include "details/buffer_2d_view.inl" Definition: view_base.h:7
Definition: type_modifier.h:21
Definition: type_modifier.h:27
Definition: buffer_info_accessor.h:6
Definition: buffer_2d_view.h:14
Definition: dense_2d.h:19
Definition: buffer_2d_view.h:115
Definition: buffer_launch.h:36
Definition: buffer_2d_view.h:135