use core::ptr;
use khr_surface;
use libc::{c_char, c_void};
use vk;
pub const VK_KHR_DISPLAY_SPEC_VERSION: u32 = 21;
pub const VK_KHR_DISPLAY_EXTENSION_NAME: &'static [u8; 15] = b"VK_KHR_display\x00";
pub const VK_KHR_DISPLAY_EXTENSION_NAME_STR: &'static str = "VK_KHR_display";
define_non_dispatchable_handle!(
struct VkDisplayKHR;
);
define_non_dispatchable_handle!(
struct VkDisplayModeKHR;
);
vks_bitflags! {
pub struct VkDisplayPlaneAlphaFlagsKHR: u32 {
const VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7fffffff;
const VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001;
const VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002;
const VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004;
const VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008;
}
}
pub type VkDisplayPlaneAlphaFlagBitsKHR = VkDisplayPlaneAlphaFlagsKHR;
vks_bitflags! {
pub struct VkDisplayModeCreateFlagsKHR: u32 {
const VK_DISPLAY_MODE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7fffffff;
}
}
pub type VkDisplayModeCreateFlagBitsKHR = VkDisplayModeCreateFlagsKHR;
vks_bitflags! {
pub struct VkDisplaySurfaceCreateFlagsKHR: u32 {
const VK_DISPLAY_SURFACE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7fffffff;
}
}
pub type VkDisplaySurfaceCreateFlagBitsKHR = VkDisplaySurfaceCreateFlagsKHR;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct VkDisplayPropertiesKHR {
pub display: VkDisplayKHR,
pub displayName: *const c_char,
pub physicalDimensions: vk::VkExtent2D,
pub physicalResolution: vk::VkExtent2D,
pub supportedTransforms: khr_surface::VkSurfaceTransformFlagsKHR,
pub planeReorderPossible: vk::VkBool32,
pub persistentContent: vk::VkBool32,
}
impl Default for VkDisplayPropertiesKHR {
fn default() -> Self {
VkDisplayPropertiesKHR {
display: Default::default(),
displayName: ptr::null(),
physicalDimensions: Default::default(),
physicalResolution: Default::default(),
supportedTransforms: Default::default(),
planeReorderPossible: Default::default(),
persistentContent: Default::default(),
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone, Default)]
pub struct VkDisplayModeParametersKHR {
pub visibleRegion: vk::VkExtent2D,
pub refreshRate: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, Default)]
pub struct VkDisplayModePropertiesKHR {
pub displayMode: VkDisplayModeKHR,
pub parameters: VkDisplayModeParametersKHR,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct VkDisplayModeCreateInfoKHR {
pub sType: vk::VkStructureType,
pub pNext: *const c_void,
pub flags: VkDisplayModeCreateFlagsKHR,
pub parameters: VkDisplayModeParametersKHR,
}
impl Default for VkDisplayModeCreateInfoKHR {
fn default() -> Self {
VkDisplayModeCreateInfoKHR {
sType: vk::VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
pNext: ptr::null(),
flags: Default::default(),
parameters: Default::default(),
}
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone, Default)]
pub struct VkDisplayPlaneCapabilitiesKHR {
pub supportedAlpha: VkDisplayPlaneAlphaFlagsKHR,
pub minSrcPosition: vk::VkOffset2D,
pub maxSrcPosition: vk::VkOffset2D,
pub minSrcExtent: vk::VkExtent2D,
pub maxSrcExtent: vk::VkExtent2D,
pub minDstPosition: vk::VkOffset2D,
pub maxDstPosition: vk::VkOffset2D,
pub minDstExtent: vk::VkExtent2D,
pub maxDstExtent: vk::VkExtent2D,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, Default)]
pub struct VkDisplayPlanePropertiesKHR {
pub currentDisplay: VkDisplayKHR,
pub currentStackIndex: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct VkDisplaySurfaceCreateInfoKHR {
pub sType: vk::VkStructureType,
pub pNext: *const c_void,
pub flags: VkDisplaySurfaceCreateFlagsKHR,
pub displayMode: VkDisplayModeKHR,
pub planeIndex: u32,
pub planeStackIndex: u32,
pub transform: khr_surface::VkSurfaceTransformFlagBitsKHR,
pub globalAlpha: f32,
pub alphaMode: VkDisplayPlaneAlphaFlagBitsKHR,
pub imageExtent: vk::VkExtent2D,
}
impl Default for VkDisplaySurfaceCreateInfoKHR {
fn default() -> Self {
VkDisplaySurfaceCreateInfoKHR {
sType: vk::VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
pNext: ptr::null(),
flags: Default::default(),
displayMode: Default::default(),
planeIndex: Default::default(),
planeStackIndex: Default::default(),
transform: Default::default(),
globalAlpha: Default::default(),
alphaMode: Default::default(),
imageExtent: Default::default(),
}
}
}
pub type PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Option<unsafe extern "system" fn(physicalDevice: vk::VkPhysicalDevice, pPropertyCount: *mut u32, pProperties: *mut VkDisplayPropertiesKHR) -> vk::VkResult>;
pub type PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Option<unsafe extern "system" fn(physicalDevice: vk::VkPhysicalDevice, pPropertyCount: *mut u32, pProperties: *mut VkDisplayPlanePropertiesKHR) -> vk::VkResult>;
pub type PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Option<unsafe extern "system" fn(physicalDevice: vk::VkPhysicalDevice, planeIndex: u32, pDisplayCount: *mut u32, pDisplays: *mut VkDisplayKHR) -> vk::VkResult>;
pub type PFN_vkGetDisplayModePropertiesKHR = Option<unsafe extern "system" fn(physicalDevice: vk::VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: *mut u32, pProperties: *mut VkDisplayModePropertiesKHR) -> vk::VkResult>;
pub type PFN_vkCreateDisplayModeKHR = Option<unsafe extern "system" fn(physicalDevice: vk::VkPhysicalDevice, display: VkDisplayKHR, pCreateInfo: *const VkDisplayModeCreateInfoKHR, pAllocator: *const vk::VkAllocationCallbacks, pMode: *mut VkDisplayModeKHR) -> vk::VkResult>;
pub type PFN_vkGetDisplayPlaneCapabilitiesKHR = Option<unsafe extern "system" fn(physicalDevice: vk::VkPhysicalDevice, mode: VkDisplayModeKHR, planeIndex: u32, pCapabilities: *mut VkDisplayPlaneCapabilitiesKHR) -> vk::VkResult>;
pub type PFN_vkCreateDisplayPlaneSurfaceKHR = Option<unsafe extern "system" fn(instance: vk::VkInstance, pCreateInfo: *const VkDisplaySurfaceCreateInfoKHR, pAllocator: *const vk::VkAllocationCallbacks, pSurface: *mut khr_surface::VkSurfaceKHR) -> vk::VkResult>;
#[cfg(feature = "function_prototypes")]
extern "system" {
pub fn vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice: vk::VkPhysicalDevice, pPropertyCount: *mut u32, pProperties: *mut VkDisplayPropertiesKHR) -> vk::VkResult;
pub fn vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice: vk::VkPhysicalDevice, pPropertyCount: *mut u32, pProperties: *mut VkDisplayPlanePropertiesKHR) -> vk::VkResult;
pub fn vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice: vk::VkPhysicalDevice, planeIndex: u32, pDisplayCount: *mut u32, pDisplays: *mut VkDisplayKHR) -> vk::VkResult;
pub fn vkGetDisplayModePropertiesKHR(physicalDevice: vk::VkPhysicalDevice, display: VkDisplayKHR, pPropertyCount: *mut u32, pProperties: *mut VkDisplayModePropertiesKHR) -> vk::VkResult;
pub fn vkCreateDisplayModeKHR(physicalDevice: vk::VkPhysicalDevice, display: VkDisplayKHR, pCreateInfo: *const VkDisplayModeCreateInfoKHR, pAllocator: *const vk::VkAllocationCallbacks, pMode: *mut VkDisplayModeKHR) -> vk::VkResult;
pub fn vkGetDisplayPlaneCapabilitiesKHR(physicalDevice: vk::VkPhysicalDevice, mode: VkDisplayModeKHR, planeIndex: u32, pCapabilities: *mut VkDisplayPlaneCapabilitiesKHR) -> vk::VkResult;
pub fn vkCreateDisplayPlaneSurfaceKHR(instance: vk::VkInstance, pCreateInfo: *const VkDisplaySurfaceCreateInfoKHR, pAllocator: *const vk::VkAllocationCallbacks, pSurface: *mut khr_surface::VkSurfaceKHR) -> vk::VkResult;
}