]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/synchronizer.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / backends / vulkan / synchronizer.h
index ea3d07595e29a97d6583f9472c627469bcfa3912..32a4d9793e303125a76e841aff368276ab791541 100644 (file)
@@ -8,9 +8,20 @@
 namespace Msp {
 namespace GL {
 
+class VulkanCommandRecorder;
+
 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 +33,19 @@ private:
 
        Device &device;
        std::vector<BufferAccess> buffer_accesses;
+       std::vector<ImageAccess> 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);
+       void barrier(const VulkanCommandRecorder &);
+
+private:
+       bool is_write_layout(unsigned);
 };
 
 } // namespace GL