class Synchronizer
{
private:
+ struct ImageAccess
+ {
+ VkImage image = 0;
+ unsigned aspect;
+ int layer = -1;
+ unsigned current_layout;
+ unsigned pending_layout;
+ };
+
struct BufferAccess
{
VkBuffer buffer = 0;
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