X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fbuffer_backend.h;fp=source%2Fbackends%2Fvulkan%2Fbuffer_backend.h;h=77e83c9b3d4d8221a7b22acbd15cfb6fc3cc43f3;hb=99ca354f18119f82f1adeca100cd665a8f640317;hp=0000000000000000000000000000000000000000;hpb=4cd245dafe6a7ee5c93edca5aee2d146f1155309;p=libs%2Fgl.git diff --git a/source/backends/vulkan/buffer_backend.h b/source/backends/vulkan/buffer_backend.h new file mode 100644 index 00000000..77e83c9b --- /dev/null +++ b/source/backends/vulkan/buffer_backend.h @@ -0,0 +1,44 @@ +#ifndef MSP_GL_BUFFER_BACKEND_H_ +#define MSP_GL_BUFFER_BACKEND_H_ + +#include +#include "handles.h" + +namespace Msp { +namespace GL { + +class Device; + +class VulkanBuffer: public NonCopyable +{ + friend class VulkanPipelineState; + friend class VulkanVertexSetup; + +protected: + Device &device; + VkBuffer handle = 0; + unsigned memory_id = 0; + void *mapped_address = 0; + std::string debug_name; + + VulkanBuffer(); + VulkanBuffer(VulkanBuffer &&); + ~VulkanBuffer(); + + void allocate(); + void sub_data(std::size_t, std::size_t, const void *); + + bool can_map() const; + void *map(); + bool unmap(); + + void set_debug_name(const std::string &); + void set_vulkan_object_name() const; +}; + +using BufferBackend = VulkanBuffer; + +} // namespace GL +} // namespace Msp + +#endif