1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
// Copyright (c) 2016 The vulkano developers // Licensed under the Apache License, Version 2.0 // <LICENSE-APACHE or // http://www.apache.org/licenses/LICENSE-2.0> or the MIT // license <LICENSE-MIT or http://opensource.org/licenses/MIT>, // at your option. All files in the project carrying such // notice may not be copied, modified, or distributed except // according to those terms. //! API entry point. //! //! The first thing to do before you start using Vulkan is to create an `Instance` object. //! //! Creating an instance initializes everything and allows you to: //! //! - Enumerate physical devices, ie. all the Vulkan implementations that are available on //! the system. //! - Enumerate monitors. //! - Create surfaces (fullscreen or windowed) which will later be drawn upon. //! //! Enumerating monitors and creating surfaces can only be done if the proper extensions are //! available and have been enabled. It is possible for a machine to support Vulkan without //! support for rendering on a screen. //! //! # Application info //! //! When you create an instance, you have the possibility to pass an `ApplicationInfo` struct. This //! struct contains various information about your application, most notably its name and engine. //! //! Passing such a structure allows for example the driver to let the user configure the driver's //! behavior for your application alone through a control panel. //! //! # Enumerating physical devices //! //! After you have created an instance, the next step is to enumerate the physical devices that //! are available on the system with `PhysicalDevice::enumerate()`. //! //! When choosing which physical device to use, keep in mind that physical devices may or may not //! be able to draw to a certain surface (ie. to a window or a monitor), or may even not be able //! to draw at all. See the `swapchain` module for more information about surfaces. //! //! A physical device can designate a video card, an integrated chip, but also multiple video //! cards working together or a software implementation. Once you have chosen a physical device, //! you can create a `Device` object from it. See the `device` module for more info. //! pub use features::Features; pub use self::extensions::DeviceExtensions; pub use self::extensions::InstanceExtensions; pub use self::instance::Instance; pub use self::instance::InstanceCreationError; pub use self::instance::ApplicationInfo; pub use self::instance::PhysicalDevice; pub use self::instance::PhysicalDevicesIter; pub use self::instance::PhysicalDeviceType; pub use self::instance::QueueFamiliesIter; pub use self::instance::QueueFamily; pub use self::instance::MemoryTypesIter; pub use self::instance::MemoryType; pub use self::instance::MemoryHeapsIter; pub use self::instance::MemoryHeap; pub use self::instance::Limits; pub use self::layers::layers_list; pub use self::layers::LayerProperties; pub use self::layers::LayersIterator; pub use self::loader::LoadingError; pub mod debug; mod extensions; mod instance; mod layers; mod loader;