private void FindQueueFamilies(PhysicalDevice device, out QueueFamilyIndices indices) { indices = new QueueFamilyIndices(); var families = QuerryQueueFamilyProperties(device); for (int i = 0; i < families.Length; ++i) { ref QueueFamilyProperties queueFamily = ref families[i]; const QueueFlags GraphicsQueueBits = QueueFlags.QueueGraphicsBit | QueueFlags.QueueTransferBit; if ((queueFamily.QueueFlags & GraphicsQueueBits) == GraphicsQueueBits) { indices.GraphicsFamily = (uint)i; } var res = VkSurface.GetPhysicalDeviceSurfaceSupport(device, (uint)i, this.WindowSurface, out var presentSupport); if (res == Result.Success && presentSupport) { indices.PresentFamily = (uint)i; } if (indices.IsComplete()) { break; } }
void CreateSurface() { surface = new VkSurface(instance, window); }