fix queue selection
This commit is contained in:
parent
ee6797c69e
commit
9c52d3aa71
41
vulkan.d
41
vulkan.d
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user