~mmach/netext73/mesa_2004

« back to all changes in this revision

Viewing changes to src/gallium/frontends/clover/core/memory.hpp

  • Committer: mmach
  • Date: 2021-03-12 20:48:59 UTC
  • Revision ID: netbit73@gmail.com-20210312204859-i194ujlcu82pq61p
21

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
namespace clover {
36
36
   class memory_obj : public ref_counter, public _cl_mem {
37
37
   protected:
38
 
      memory_obj(clover::context &ctx, cl_mem_flags flags,
 
38
      memory_obj(clover::context &ctx,
 
39
                 std::vector<cl_mem_properties> properties,
 
40
                 cl_mem_flags flags,
39
41
                 size_t size, void *host_ptr);
40
42
 
41
43
      memory_obj(const memory_obj &obj) = delete;
56
58
      virtual void resource_out(command_queue &q) = 0;
57
59
 
58
60
      void destroy_notify(std::function<void ()> f);
 
61
      std::vector<cl_mem_properties> properties() const;
59
62
      cl_mem_flags flags() const;
60
63
      size_t size() const;
61
64
      void *host_ptr() const;
63
66
      const intrusive_ref<clover::context> context;
64
67
 
65
68
   private:
 
69
      std::vector<cl_mem_properties> _properties;
66
70
      cl_mem_flags _flags;
67
71
      size_t _size;
68
72
      void *_host_ptr;
74
78
 
75
79
   class buffer : public memory_obj {
76
80
   protected:
77
 
      buffer(clover::context &ctx, cl_mem_flags flags,
 
81
      buffer(clover::context &ctx,
 
82
             std::vector<cl_mem_properties> properties,
 
83
             cl_mem_flags flags,
78
84
             size_t size, void *host_ptr);
79
85
 
80
86
   public:
83
89
 
84
90
   class root_buffer : public buffer {
85
91
   public:
86
 
      root_buffer(clover::context &ctx, cl_mem_flags flags,
 
92
      root_buffer(clover::context &ctx,
 
93
                  std::vector<cl_mem_properties> properties,
 
94
                  cl_mem_flags flags,
87
95
                  size_t size, void *host_ptr);
88
96
 
89
97
      virtual clover::resource &
124
132
 
125
133
   class image : public memory_obj {
126
134
   protected:
127
 
      image(clover::context &ctx, cl_mem_flags flags,
 
135
      image(clover::context &ctx,
 
136
            std::vector<cl_mem_properties> properties,
 
137
            cl_mem_flags flags,
128
138
            const cl_image_format *format,
129
139
            size_t width, size_t height, size_t depth,
130
140
            size_t row_pitch, size_t slice_pitch, size_t size,
161
171
 
162
172
   class image2d : public image {
163
173
   public:
164
 
      image2d(clover::context &ctx, cl_mem_flags flags,
 
174
      image2d(clover::context &ctx,
 
175
              std::vector<cl_mem_properties> properties,
 
176
              cl_mem_flags flags,
165
177
              const cl_image_format *format, size_t width,
166
178
              size_t height, size_t row_pitch,
167
179
              void *host_ptr);
171
183
 
172
184
   class image3d : public image {
173
185
   public:
174
 
      image3d(clover::context &ctx, cl_mem_flags flags,
 
186
      image3d(clover::context &ctx,
 
187
              std::vector<cl_mem_properties> properties,
 
188
              cl_mem_flags flags,
175
189
              const cl_image_format *format,
176
190
              size_t width, size_t height, size_t depth,
177
191
              size_t row_pitch, size_t slice_pitch,