CsPaint  1.0.1
cspaint_buffer.h
1 
19 #ifndef INCLUDED_CSPAINT_BUFFER_H
20 #define INCLUDED_CSPAINT_BUFFER_H
21 
22 #include <cspaint_fwd.h>
23 
24 #include <vulkan/vulkan.hpp>
25 
26 namespace CsPaint
27 {
28 class buffer
29 {
30  private:
31  public:
32  using handle = std::shared_ptr<buffer>;
33 
34  buffer(device_handle, vk::UniqueBuffer);
35 
36  buffer(const buffer &) = delete;
37  void operator=(const buffer &) = delete;
38 
39  vk::Buffer getBuffer()
40  {
41  return *m_buffer;
42  };
43 
44  vk::DeviceMemory getDeviceMemory()
45  {
46  return *m_memory;
47  };
48 
49  template <typename T, typename Alloc>
50  void store(const std::vector<T, Alloc> &vec)
51  {
52  store(static_cast<const void *>(vec.data()), vec.size() * sizeof(T));
53  };
54 
55  void store(const void *data, uint64_t size);
56 
57  private:
58  device_handle m_device;
59  vk::UniqueBuffer m_buffer;
60  vk::UniqueDeviceMemory m_memory;
61 };
62 }; // namespace CsPaint
63 
64 #endif
void store(const std::vector< T, Alloc > &vec)
Definition: cspaint_buffer.h:50
vk::Buffer getBuffer()
Definition: cspaint_buffer.h:39
vk::DeviceMemory getDeviceMemory()
Definition: cspaint_buffer.h:44
void operator=(const buffer &) = delete
buffer(device_handle, vk::UniqueBuffer)
std::shared_ptr< buffer > handle
Definition: cspaint_buffer.h:32
std::shared_ptr< device > device_handle
Definition: cspaint_fwd.h:45
Definition: cspaint_buffer.h:28
Definition: cspaint_buffer.h:26