Beispiel #1
0
        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;
                }
            }
Beispiel #2
0
 void CreateSurface()
 {
     surface = new VkSurface(instance, window);
 }