diff --git a/include/vkcv/Queues.hpp b/include/vkcv/Queues.hpp
index 9b6cbae005515eb0c5754d8df8b22038eb5a81b0..c1cca7099f2f57adb821e9f1dcbfa01928e01c76 100644
--- a/include/vkcv/Queues.hpp
+++ b/include/vkcv/Queues.hpp
@@ -21,6 +21,7 @@ namespace vkcv {
 	QueueFamilyIndices getQueueFamilyIndices(const vk::PhysicalDevice& physicalDevice, const vk::SurfaceKHR surface);
 
 	// TODO: try to use specialised queues
-	std::vector<vk::DeviceQueueCreateInfo> createDeviceQueueCreateInfo(const QueueFamilyIndices& indices);
+	std::vector<vk::DeviceQueueCreateInfo> createDeviceQueueCreateInfo(const QueueFamilyIndices& indices, 
+		std::vector<float> *outQueuePriorities);
 
 }
diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp
index a8a5a6c140c3ef06dac5e9a4282edb16a978b9da..da17d6ec4409f0ac84dc064934275f4aa90dbeed 100644
--- a/src/vkcv/Core.cpp
+++ b/src/vkcv/Core.cpp
@@ -202,7 +202,8 @@ namespace vkcv
 
 		const vk::SurfaceKHR surface = createSurface(window.getWindow(), instance, physicalDevice);
 		const QueueFamilyIndices queueFamilyIndices = getQueueFamilyIndices(physicalDevice, surface);
-		const std::vector<vk::DeviceQueueCreateInfo> qCreateInfos = createDeviceQueueCreateInfo(queueFamilyIndices);
+		std::vector<float> queuePriorities;
+		const std::vector<vk::DeviceQueueCreateInfo> qCreateInfos = createDeviceQueueCreateInfo(queueFamilyIndices, &queuePriorities);
 
 		vk::DeviceCreateInfo deviceCreateInfo(
 			vk::DeviceCreateFlags(),
diff --git a/src/vkcv/Queues.cpp b/src/vkcv/Queues.cpp
index a0b7967f93574119cee39aa125f2c9ad856f4cb6..36b3a0a0dd93c06942a372cde825fec28299a378 100644
--- a/src/vkcv/Queues.cpp
+++ b/src/vkcv/Queues.cpp
@@ -45,7 +45,8 @@ namespace vkcv {
 		return indices;
 	}
 
-	std::vector<vk::DeviceQueueCreateInfo> createDeviceQueueCreateInfo(const QueueFamilyIndices& indices) {
+	std::vector<vk::DeviceQueueCreateInfo> createDeviceQueueCreateInfo(const QueueFamilyIndices& indices,
+		std::vector<float>* outQueuePriorities) {
 
 		// use set to avoid duplicate queues
 		std::unordered_set<int> familyIndexSet;
@@ -55,12 +56,16 @@ namespace vkcv {
 		familyIndexSet.insert(indices.presentIndex);
 
 		const vk::DeviceQueueCreateFlagBits flags = {};
-		const float priority = 1.f;
 		std::vector<vk::DeviceQueueCreateInfo> createInfos;
 
+		outQueuePriorities->resize(familyIndexSet.size(), 1.f);
+		int priorityIndex = 0;
+
 		for (const auto index : familyIndexSet) {
-			const vk::DeviceQueueCreateInfo graphicsCreateInfo(flags, index, 1, &priority);
+			outQueuePriorities->push_back(1.f);
+			const vk::DeviceQueueCreateInfo graphicsCreateInfo(flags, index, 1, &outQueuePriorities->at(priorityIndex));
 			createInfos.push_back(graphicsCreateInfo);
+			priorityIndex++;
 		}
 		return createInfos;
 	}