X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fsynchronizer.h;h=077274f8200a0fd1fad5417dcde7d92ba9995b4e;hb=c356a20547afae97b412da36e0b0a7d51e879401;hp=ea3d07595e29a97d6583f9472c627469bcfa3912;hpb=644b81d62660bafa702bfd7acedd3a0039aad993;p=libs%2Fgl.git diff --git a/source/backends/vulkan/synchronizer.h b/source/backends/vulkan/synchronizer.h index ea3d0759..077274f8 100644 --- a/source/backends/vulkan/synchronizer.h +++ b/source/backends/vulkan/synchronizer.h @@ -11,6 +11,15 @@ namespace GL { class Synchronizer { private: + struct ImageAccess + { + VkImage image = 0; + unsigned aspect; + int level = -1; + unsigned current_layout; + unsigned pending_layout; + }; + struct BufferAccess { VkBuffer buffer = 0; @@ -22,13 +31,19 @@ private: Device &device; std::vector buffer_accesses; + std::vector image_accesses; public: Synchronizer(Device &); - void access(VkBuffer, std::size_t, std::size_t); + void write_buffer(VkBuffer, std::size_t, std::size_t, bool = false); + void split_image_mipmap(VkImage, unsigned, unsigned); + void change_image_layout(VkImage, unsigned, int, unsigned, bool); void reset(); void barrier(VkCommandBuffer); + +private: + bool is_write_layout(unsigned); }; } // namespace GL