Skip to main content

vulkan_headers/vulkan/
vulkan_ohos.rs

1use crate::prelude::*;
2use crate::platform::ohos::*;
3use super::vulkan_core::*;
4
5#[derive(Clone, Copy)]
6#[repr(C)]
7pub struct VkExternalFormatOHOS {
8    pub sType: VkStructureType,
9    pub pNext: *mut c_void,
10    pub externalFormat: u64,
11}
12
13#[derive(Clone, Copy)]
14#[repr(C)]
15pub struct VkImportNativeBufferInfoOHOS {
16    pub sType: VkStructureType,
17    pub pNext: *const c_void,
18    pub buffer: *mut OH_NativeBuffer,
19}
20
21#[derive(Clone, Copy)]
22#[repr(C)]
23pub struct VkMemoryGetNativeBufferInfoOHOS {
24    pub sType: VkStructureType,
25    pub pNext: *const c_void,
26    pub memory: VkDeviceMemory,
27}
28
29#[derive(Clone, Copy)]
30#[repr(C)]
31pub struct VkNativeBufferFormatPropertiesOHOS {
32    pub sType: VkStructureType,
33    pub pNext: *mut c_void,
34    pub format: VkFormat,
35    pub externalFormat: u64,
36    pub formatFeatures: VkFormatFeatureFlags,
37    pub samplerYcbcrConversionComponents: VkComponentMapping,
38    pub suggestedYcbcrModel: VkSamplerYcbcrModelConversion,
39    pub suggestedYcbcrRange: VkSamplerYcbcrRange,
40    pub suggestedXChromaOffset: VkChromaLocation,
41    pub suggestedYChromaOffset: VkChromaLocation,
42}
43
44#[derive(Clone, Copy)]
45#[repr(C)]
46pub struct VkNativeBufferPropertiesOHOS {
47    pub sType: VkStructureType,
48    pub pNext: *mut c_void,
49    pub allocationSize: VkDeviceSize,
50    pub memoryTypeBits: u32,
51}
52
53#[derive(Clone, Copy)]
54#[repr(C)]
55pub struct VkNativeBufferUsageOHOS {
56    pub sType: VkStructureType,
57    pub pNext: *mut c_void,
58    pub OHOSNativeBufferUsage: u64,
59}
60
61#[derive(Clone, Copy)]
62#[repr(C)]
63pub struct VkSurfaceCreateInfoOHOS {
64    pub sType: VkStructureType,
65    pub pNext: *const c_void,
66    pub flags: VkSurfaceCreateFlagsOHOS,
67    pub window: *mut OHNativeWindow,
68}
69
70pub const VK_EXTERNAL_MEMORY_HANDLE_TYPE_OH_NATIVE_BUFFER_BIT_OHOS: VkExternalMemoryHandleTypeFlagBits = 1 << 15;
71pub const VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME: &CStr = c"VK_OHOS_external_memory";
72pub const VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION: u32 = 1;
73pub const VK_OHOS_SURFACE_EXTENSION_NAME: &CStr = c"VK_OHOS_surface";
74pub const VK_OHOS_SURFACE_SPEC_VERSION: u32 = 1;
75pub const VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS: VkStructureType = 1000452005;
76pub const VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS: VkStructureType = 1000452003;
77pub const VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS: VkStructureType = 1000452004;
78pub const VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS: VkStructureType = 1000452002;
79pub const VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS: VkStructureType = 1000452001;
80pub const VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS: VkStructureType = 1000452000;
81pub const VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS: VkStructureType = 1000685000;
82
83unsafe extern "system" {
84    /// Available if built with `prototypes`.
85    #[cfg(any(doc, feature = "prototypes"))]
86    pub fn vkCreateSurfaceOHOS(instance: VkInstance, pCreateInfo: *const VkSurfaceCreateInfoOHOS, pAllocator: *const VkAllocationCallbacks, pSurface: *mut VkSurfaceKHR) -> VkResult;
87
88    /// Available if built with `prototypes`.
89    #[cfg(any(doc, feature = "prototypes"))]
90    pub fn vkGetMemoryNativeBufferOHOS(device: VkDevice, pInfo: *const VkMemoryGetNativeBufferInfoOHOS, pBuffer: *mut *mut OH_NativeBuffer) -> VkResult;
91
92    /// Available if built with `prototypes`.
93    #[cfg(any(doc, feature = "prototypes"))]
94    pub fn vkGetNativeBufferPropertiesOHOS(device: VkDevice, buffer: *const OH_NativeBuffer, pProperties: *mut VkNativeBufferPropertiesOHOS) -> VkResult;
95}
96
97pub type NonNullPFN_vkCreateSurfaceOHOS = unsafe extern "system" fn(instance: VkInstance, pCreateInfo: *const VkSurfaceCreateInfoOHOS, pAllocator: *const VkAllocationCallbacks, pSurface: *mut VkSurfaceKHR) -> VkResult;
98pub type NonNullPFN_vkGetMemoryNativeBufferOHOS = unsafe extern "system" fn(device: VkDevice, pInfo: *const VkMemoryGetNativeBufferInfoOHOS, pBuffer: *mut *mut OH_NativeBuffer) -> VkResult;
99pub type NonNullPFN_vkGetNativeBufferPropertiesOHOS = unsafe extern "system" fn(device: VkDevice, buffer: *const OH_NativeBuffer, pProperties: *mut VkNativeBufferPropertiesOHOS) -> VkResult;
100pub type PFN_vkCreateSurfaceOHOS = Option<NonNullPFN_vkCreateSurfaceOHOS>;
101pub type PFN_vkGetMemoryNativeBufferOHOS = Option<NonNullPFN_vkGetMemoryNativeBufferOHOS>;
102pub type PFN_vkGetNativeBufferPropertiesOHOS = Option<NonNullPFN_vkGetNativeBufferPropertiesOHOS>;
103pub type VkSurfaceCreateFlagsOHOS = VkFlags;