]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/vulkan/synchronizer.h
Implement textures and samplers for Vulkan
[libs/gl.git] / source / backends / vulkan / synchronizer.h
index ea3d07595e29a97d6583f9472c627469bcfa3912..48699540f32b302fb8b376abd3993a2947d60848 100644 (file)
@@ -11,6 +11,15 @@ namespace GL {
 class Synchronizer
 {
 private:
+       struct ImageAccess
+       {
+               VkImage image = 0;
+               unsigned aspect;
+               int layer = -1;
+               unsigned current_layout;
+               unsigned pending_layout;
+       };
+
        struct BufferAccess
        {
                VkBuffer buffer = 0;
@@ -22,13 +31,18 @@ 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 access(VkImage, unsigned, int, unsigned, bool);
        void reset();
        void barrier(VkCommandBuffer);
+
+private:
+       bool is_write_layout(unsigned);
 };
 
 } // namespace GL