From 71d66bc3cfaf6ff17bc734b6ede99ef245d89dcb Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Mon, 19 Jul 2021 15:20:01 +0200
Subject: [PATCH] [#100] This is getting out of hands!

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 .../include/vkcv/upscaling/FSRUpscaling.hpp   |  3 ++-
 .../src/vkcv/upscaling/FSRUpscaling.cpp       | 22 ++++++++++---------
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/modules/upscaling/include/vkcv/upscaling/FSRUpscaling.hpp b/modules/upscaling/include/vkcv/upscaling/FSRUpscaling.hpp
index 955eb805..50f6eda3 100644
--- a/modules/upscaling/include/vkcv/upscaling/FSRUpscaling.hpp
+++ b/modules/upscaling/include/vkcv/upscaling/FSRUpscaling.hpp
@@ -36,7 +36,8 @@ namespace vkcv::upscaling {
 		DescriptorSetHandle m_easuDescriptorSet;
 		DescriptorSetHandle m_rcasDescriptorSet;
 		
-		Buffer<FSRConstants> m_constants;
+		Buffer<FSRConstants> m_easuConstants;
+		Buffer<FSRConstants> m_rcasConstants;
 		ImageHandle m_intermediateImage;
 		SamplerHandle m_sampler;
 		
diff --git a/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp b/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp
index 366e8561..44be1052 100644
--- a/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp
+++ b/modules/upscaling/src/vkcv/upscaling/FSRUpscaling.cpp
@@ -142,8 +142,12 @@ namespace vkcv::upscaling {
 	m_rcasPipeline(),
 	m_easuDescriptorSet(m_core.createDescriptorSet(getDescriptorBindings())),
 	m_rcasDescriptorSet(m_core.createDescriptorSet(getDescriptorBindings())),
-	m_constants(m_core.createBuffer<FSRConstants>(
-			BufferType::UNIFORM,2,
+	m_easuConstants(m_core.createBuffer<FSRConstants>(
+			BufferType::UNIFORM,1,
+			BufferMemoryType::HOST_VISIBLE
+	)),
+	m_rcasConstants(m_core.createBuffer<FSRConstants>(
+			BufferType::UNIFORM,1,
 			BufferMemoryType::HOST_VISIBLE
 	)),
 	m_intermediateImage(),
@@ -193,8 +197,7 @@ namespace vkcv::upscaling {
 			
 			DescriptorWrites writes;
 			writes.uniformBufferWrites.emplace_back(
-					0, m_constants.getHandle(),
-					true, 0, sizeof(FSRConstants)
+					0, m_easuConstants.getHandle(),true
 			);
 			
 			writes.samplerWrites.emplace_back(3, m_sampler);
@@ -215,8 +218,7 @@ namespace vkcv::upscaling {
 			
 			DescriptorWrites writes;
 			writes.uniformBufferWrites.emplace_back(
-					0, m_constants.getHandle(),
-					true, sizeof(FSRConstants), sizeof(FSRConstants)
+					0, m_rcasConstants.getHandle(),true
 			);
 			
 			writes.samplerWrites.emplace_back(3, m_sampler);
@@ -264,7 +266,7 @@ namespace vkcv::upscaling {
 			
 			consts.Sample[0] = (((m_hdr) && (!rcasEnabled)) ? 1 : 0);
 			
-			m_constants.fill(&consts, 1, 0);
+			m_easuConstants.fill(&consts);
 		}
 		
 		static const uint32_t threadGroupWorkRegionDim = 16;
@@ -274,7 +276,7 @@ namespace vkcv::upscaling {
 		dispatch[1] = (outputHeight + (threadGroupWorkRegionDim - 1)) / threadGroupWorkRegionDim;
 		dispatch[2] = 1;
 		
-		m_core.recordBufferMemoryBarrier(cmdStream, m_constants.getHandle());
+		m_core.recordBufferMemoryBarrier(cmdStream, m_easuConstants.getHandle());
 		
 		if (rcasEnabled) {
 			{
@@ -308,10 +310,10 @@ namespace vkcv::upscaling {
 				FsrRcasCon(consts.Const0, (1.0f - m_sharpness) * 2.0f);
 				consts.Sample[0] = (m_hdr ? 1 : 0);
 				
-				m_constants.fill(&consts, 1, 1);
+				m_rcasConstants.fill(&consts);
 			}
 			
-			m_core.recordBufferMemoryBarrier(cmdStream, m_constants.getHandle());
+			m_core.recordBufferMemoryBarrier(cmdStream, m_rcasConstants.getHandle());
 			m_core.prepareImageForSampling(cmdStream, m_intermediateImage);
 			
 			m_core.recordComputeDispatchToCmdStream(
-- 
GitLab