From adb17cfa1c259465ae520c888ed9dda4db8dc47f Mon Sep 17 00:00:00 2001
From: TheJackiMonster <thejackimonster@gmail.com>
Date: Tue, 19 Jul 2022 15:40:35 +0200
Subject: [PATCH] Adjusted barriers again

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
---
 projects/fire_works/src/main.cpp | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/projects/fire_works/src/main.cpp b/projects/fire_works/src/main.cpp
index 7f96170c..4c252b11 100644
--- a/projects/fire_works/src/main.cpp
+++ b/projects/fire_works/src/main.cpp
@@ -663,6 +663,13 @@ int main(int argc, const char **argv) {
 		
 		auto cmdStream = core.createCommandStream(vkcv::QueueType::Graphics);
 		
+		core.recordBufferMemoryBarrier(cmdStream, eventBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, smokeBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, smokeIndexBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, particleBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, trailBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, pointBuffer.getHandle());
+		
 		uint32_t particleDispatchCount[3];
 		particleDispatchCount[0] = std::ceil(particleBuffer.getCount() / 256.f);
 		particleDispatchCount[1] = 1;
@@ -686,9 +693,7 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
-		core.recordBufferMemoryBarrier(cmdStream, eventBuffer.getHandle());
 		core.recordBufferMemoryBarrier(cmdStream, smokeBuffer.getHandle());
-		core.recordBufferMemoryBarrier(cmdStream, smokeIndexBuffer.getHandle());
 		
 		uint32_t smokeDispatchCount[3];
 		smokeDispatchCount[0] = std::ceil(smokeBuffer.getCount() / 256.f);
@@ -717,7 +722,9 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
+		core.recordBufferMemoryBarrier(cmdStream, particleBuffer.getHandle());
 		core.recordBufferMemoryBarrier(cmdStream, trailBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, pointBuffer.getHandle());
 		
 		uint32_t trailDispatchCount[3];
 		trailDispatchCount[0] = std::ceil(trailBuffer.getCount() / 256.f);
@@ -737,13 +744,12 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
-		core.recordBufferMemoryBarrier(cmdStream, pointBuffer.getHandle());
-		core.recordBufferMemoryBarrier(cmdStream, trailBuffer.getHandle());
-		
 		cameraManager.update(time_values[1]);
 		
 		const auto& camera = cameraManager.getActiveCamera();
 		
+		core.recordBufferMemoryBarrier(cmdStream, particleBuffer.getHandle());
+		
 		draw_particles_t draw_particles {
 			camera.getMVP(),
 			swapchainWidth,
@@ -765,6 +771,8 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
+		core.recordBufferMemoryBarrier(cmdStream, smokeBuffer.getHandle());
+		
 		glm::mat4 smokeMatrices [2];
 		smokeMatrices[0] = camera.getView();
 		smokeMatrices[1] = camera.getProjection();
@@ -784,6 +792,9 @@ int main(int argc, const char **argv) {
 		);
 		core.recordEndDebugLabel(cmdStream);
 		
+		core.recordBufferMemoryBarrier(cmdStream, trailBuffer.getHandle());
+		core.recordBufferMemoryBarrier(cmdStream, pointBuffer.getHandle());
+		
 		core.recordBeginDebugLabel(cmdStream, "Draw trails", { 0.75f, 0.5f, 1.0f, 1.0f });
 		core.recordDrawcallsToCmdStream(
 			cmdStream,
-- 
GitLab