diff --git a/vulkan.d b/vulkan.d index 4327a65..8fe1411 100644 --- a/vulkan.d +++ b/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)