engine_vulkan: Fix allocate more queue as available and add different priorities
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 8m56s

This commit is contained in:
Florian RICHER 2025-05-24 17:02:01 +02:00
parent d10212ac3b
commit 15565d03c1
Signed by: florian.richer
GPG key ID: C73D37CBED7BFC77

View file

@ -50,12 +50,12 @@ pub struct VulkanQueueFamilyIndices {
pub transfer_queue_family_index: VulkanQueueFamilyStatus, pub transfer_queue_family_index: VulkanQueueFamilyStatus,
} }
impl From<VulkanQueueFamilyIndices> for Vec<VulkanQueueFamilyStatus> { impl From<VulkanQueueFamilyIndices> for Vec<(VulkanQueueFamilyStatus, f32)> {
fn from(indices: VulkanQueueFamilyIndices) -> Self { fn from(indices: VulkanQueueFamilyIndices) -> Self {
vec![ vec![
indices.graphics_queue_family_index, (indices.graphics_queue_family_index, 1.0),
indices.compute_queue_family_index, (indices.compute_queue_family_index, 0.5),
indices.transfer_queue_family_index, (indices.transfer_queue_family_index, 0.5),
] ]
} }
} }
@ -64,17 +64,18 @@ impl From<VulkanQueueFamilyIndices> for Vec<QueueCreateInfo> {
fn from(indices: VulkanQueueFamilyIndices) -> Self { fn from(indices: VulkanQueueFamilyIndices) -> Self {
let mut queue_create_infos = HashMap::<u32, QueueCreateInfo>::new(); let mut queue_create_infos = HashMap::<u32, QueueCreateInfo>::new();
let statuses: Vec<VulkanQueueFamilyStatus> = indices.into(); let statuses: Vec<(VulkanQueueFamilyStatus, f32)> = indices.into();
for status in statuses.iter() { for (status, priority) in statuses.iter() {
match status { match status {
VulkanQueueFamilyStatus::Supported(index) => { VulkanQueueFamilyStatus::Supported(index) => {
let entry = queue_create_infos.entry(*index).or_insert(QueueCreateInfo { let entry = queue_create_infos.entry(*index).or_insert(QueueCreateInfo {
queue_family_index: *index, queue_family_index: *index,
queues: Vec::new(),
..Default::default() ..Default::default()
}); });
entry.queues.push(1.0); entry.queues.push(*priority);
} }
_ => {} _ => {}
} }