Răsfoiți Sursa

vulkan_device: Allow creating a device without surface

ReinUsesLisp 5 ani în urmă
părinte
comite
ac1e4734c2
1 a modificat fișierele cu 3 adăugiri și 3 ștergeri
  1. 3 3
      src/video_core/vulkan_common/vulkan_device.cpp

+ 3 - 3
src/video_core/vulkan_common/vulkan_device.cpp

@@ -775,7 +775,7 @@ void Device::SetupFamilies(VkSurfaceKHR surface) {
     std::optional<u32> graphics;
     std::optional<u32> present;
     for (u32 index = 0; index < static_cast<u32>(queue_family_properties.size()); ++index) {
-        if (graphics && present) {
+        if (graphics && (present || !surface)) {
             break;
         }
         const VkQueueFamilyProperties& queue_family = queue_family_properties[index];
@@ -785,7 +785,7 @@ void Device::SetupFamilies(VkSurfaceKHR surface) {
         if (queue_family.queueFlags & VK_QUEUE_GRAPHICS_BIT) {
             graphics = index;
         }
-        if (physical.GetSurfaceSupportKHR(index, surface)) {
+        if (surface && physical.GetSurfaceSupportKHR(index, surface)) {
             present = index;
         }
     }
@@ -793,7 +793,7 @@ void Device::SetupFamilies(VkSurfaceKHR surface) {
         LOG_ERROR(Render_Vulkan, "Device lacks a graphics queue");
         throw vk::Exception(VK_ERROR_FEATURE_NOT_PRESENT);
     }
-    if (!present) {
+    if (surface && !present) {
         LOG_ERROR(Render_Vulkan, "Device lacks a present queue");
         throw vk::Exception(VK_ERROR_FEATURE_NOT_PRESENT);
     }