MUDA
Loading...
Searching...
No Matches
graph_buffer_2d_view.h
1#pragma once
2#include <muda/buffer/buffer_2d_view.h>
3#include <muda/compute_graph/compute_graph_var.h>
4
5namespace muda
6{
7template <typename T>
9{
10 public:
11 static_assert(!std::is_const_v<T>, "T must not be const");
14 using RWView = Buffer2DView<T>;
15
16 protected:
17 friend class ComputeGraph;
18 friend class ComputeGraphVarManager;
19
20 using ComputeGraphVarBase::ComputeGraphVarBase;
21
22 ComputeGraphVar(ComputeGraphVarManager* var_manager, std::string_view name, VarId var_id) MUDA_NOEXCEPT
23 : ComputeGraphVarBase(var_manager, name, var_id)
24 {
25 }
26
28 std::string_view name,
29 VarId var_id,
30 const RWView& init_value) MUDA_NOEXCEPT
31 : ComputeGraphVarBase(var_manager, name, var_id, true),
32 m_value(init_value)
33 {
34 }
35
36 virtual ~ComputeGraphVar() = default;
37
38 public:
39 ROView ceval() const { return _ceval(m_value); }
40 RWView eval() { return _eval(m_value); }
41
42 operator ROView() const { return ceval(); }
43 operator RWView() { return eval(); }
44 auto cviewer() const
45 {
46 return ceval().cviewer().name(this->name().data());
47 };
48 auto viewer() { return eval().viewer().name(this->name().data()); };
49
50 void update(const RWView& view);
51 ComputeGraphVar<VarType>& operator=(const RWView& view);
52
53 private:
54 RWView m_value;
55};
56
57} // namespace muda
58
59#include "details/graph_buffer_2d_view.inl"
Definition buffer_2d_view.h:15
Definition compute_graph.h:38
Definition compute_graph_var.h:17
Definition compute_graph_var.h:90
Definition compute_graph_var_manager.h:15
Definition compute_graph_var_id.h:6