1#ifndef VULKAN_SCREEN_H_
2#define VULKAN_SCREEN_H_ 1
3
4/*
5** Copyright 2015-2024 The Khronos Group Inc.
6**
7** SPDX-License-Identifier: Apache-2.0
8*/
9
10/*
11** This header is generated from the Khronos Vulkan XML API Registry.
12**
13*/
14
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20
21
22// VK_QNX_screen_surface is a preprocessor guard. Do not pass it to API calls.
23#define VK_QNX_screen_surface 1
24#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1
25#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface"
26typedef VkFlags VkScreenSurfaceCreateFlagsQNX;
27typedef struct VkScreenSurfaceCreateInfoQNX {
28    VkStructureType                  sType;
29    const void*                      pNext;
30    VkScreenSurfaceCreateFlagsQNX    flags;
31    struct _screen_context*          context;
32    struct _screen_window*           window;
33} VkScreenSurfaceCreateInfoQNX;
34
35typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
36typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window);
37
38#ifndef VK_NO_PROTOTYPES
39VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX(
40    VkInstance                                  instance,
41    const VkScreenSurfaceCreateInfoQNX*         pCreateInfo,
42    const VkAllocationCallbacks*                pAllocator,
43    VkSurfaceKHR*                               pSurface);
44
45VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX(
46    VkPhysicalDevice                            physicalDevice,
47    uint32_t                                    queueFamilyIndex,
48    struct _screen_window*                      window);
49#endif
50
51
52// VK_QNX_external_memory_screen_buffer is a preprocessor guard. Do not pass it to API calls.
53#define VK_QNX_external_memory_screen_buffer 1
54#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION 1
55#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME "VK_QNX_external_memory_screen_buffer"
56typedef struct VkScreenBufferPropertiesQNX {
57    VkStructureType    sType;
58    void*              pNext;
59    VkDeviceSize       allocationSize;
60    uint32_t           memoryTypeBits;
61} VkScreenBufferPropertiesQNX;
62
63typedef struct VkScreenBufferFormatPropertiesQNX {
64    VkStructureType                  sType;
65    void*                            pNext;
66    VkFormat                         format;
67    uint64_t                         externalFormat;
68    uint64_t                         screenUsage;
69    VkFormatFeatureFlags             formatFeatures;
70    VkComponentMapping               samplerYcbcrConversionComponents;
71    VkSamplerYcbcrModelConversion    suggestedYcbcrModel;
72    VkSamplerYcbcrRange              suggestedYcbcrRange;
73    VkChromaLocation                 suggestedXChromaOffset;
74    VkChromaLocation                 suggestedYChromaOffset;
75} VkScreenBufferFormatPropertiesQNX;
76
77typedef struct VkImportScreenBufferInfoQNX {
78    VkStructureType           sType;
79    const void*               pNext;
80    struct _screen_buffer*    buffer;
81} VkImportScreenBufferInfoQNX;
82
83typedef struct VkExternalFormatQNX {
84    VkStructureType    sType;
85    void*              pNext;
86    uint64_t           externalFormat;
87} VkExternalFormatQNX;
88
89typedef struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX {
90    VkStructureType    sType;
91    void*              pNext;
92    VkBool32           screenBufferImport;
93} VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
94
95typedef VkResult (VKAPI_PTR *PFN_vkGetScreenBufferPropertiesQNX)(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties);
96
97#ifndef VK_NO_PROTOTYPES
98VKAPI_ATTR VkResult VKAPI_CALL vkGetScreenBufferPropertiesQNX(
99    VkDevice                                    device,
100    const struct _screen_buffer*                buffer,
101    VkScreenBufferPropertiesQNX*                pProperties);
102#endif
103
104#ifdef __cplusplus
105}
106#endif
107
108#endif
109