fix queue selection

This commit is contained in:
Matthew 2025-11-15 19:00:25 +11:00
parent ee6797c69e
commit 9c52d3aa71

View File

@ -2698,45 +2698,32 @@ Init(PlatformHandles platform_handles, u64 permanent_mem, u64 frame_mem)
}
else
{
bool sparse = false, tfer_only = false;
bool sparse = false;
foreach(i, prop; properties)
{
i32 idx = cast(i32)i;
b32 surface_support;
vkGetPhysicalDeviceSurfaceSupportKHR(dev, cast(u32)i, vk.surface, &surface_support);
if(current.gfx_index < 0 && surface_support && prop.queueFlags & G_BIT)
{
current.gfx_index = cast(i32)i;
current.gfx_index = idx;
continue;
}
if(prop.queueFlags & (T_BIT | S_BIT) && !(prop.queueFlags & (G_BIT | C_BIT)))
if(prop.queueFlags & (T_BIT | S_BIT))
{
sparse = true;
tfer_only = true;
current.tfer_index = cast(i32)i;
current.tfer_index = idx;
continue;
}
if(!(sparse && tfer_only) && prop.queueFlags & (T_BIT | S_BIT))
if(!sparse && prop.queueFlags & T_BIT)
{
sparse = true;
current.tfer_index = cast(i32)i;
current.tfer_index = idx;
continue;
}
if(!sparse && !(prop.queueFlags & T_BIT) && prop.queueFlags & C_BIT)
{
tfer_only = true;
current.tfer_index = cast(i32)i;
continue;
}
if(!sparse && !tfer_only && prop.queueFlags & C_BIT)
{
current.tfer_index = cast(i32)i;
}
}
if(current.tfer_index < 0)
@ -2757,7 +2744,7 @@ Init(PlatformHandles platform_handles, u64 permanent_mem, u64 frame_mem)
VkPhysicalDeviceProperties props;
vkGetPhysicalDeviceProperties(dev, &props);
if(VK_API_VERSION_MINOR(props.apiVersion) >= 3)
if(VK_API_VERSION_MINOR(props.apiVersion) >= 2)
{
u32 ext_count;
vkEnumerateDeviceExtensionProperties(dev, null, &ext_count, null);
@ -2788,7 +2775,12 @@ Init(PlatformHandles platform_handles, u64 permanent_mem, u64 frame_mem)
}
}
if((discrete_candidate && !discrete) || !result)
if(discrete_candidate && !discrete)
{
continue;
}
if(!result)
{
continue;
}
@ -2831,11 +2823,6 @@ Init(PlatformHandles platform_handles, u64 permanent_mem, u64 frame_mem)
discrete_candidate = cast(bool)discrete;
candidate = current;
physical_device = dev;
if(discrete_candidate && !candidate.single_queue)
{
continue;
}
}
if(physical_device)