xref: /aosp_15_r20/external/OpenCL-CTS/test_conformance/common/vulkan_wrapper/vulkan_wrapper_types.hpp (revision 6467f958c7de8070b317fc65bcb0f6472e388d82)
1 //
2 // Copyright (c) 2022 The Khronos Group Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //    http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #ifndef _vulkan_wrapper_types_hpp_
18 #define _vulkan_wrapper_types_hpp_
19 
20 #include <vulkan/vulkan.h>
21 
22 #define VULKAN_MIN_BUFFER_OFFSET_COPY_ALIGNMENT 4
23 #define VULKAN_REMAINING_MIP_LEVELS VK_REMAINING_MIP_LEVELS
24 #define VULKAN_REMAINING_ARRAY_LAYERS VK_REMAINING_ARRAY_LAYERS
25 
26 class VulkanInstance;
27 class VulkanPhysicalDevice;
28 class VulkanMemoryHeap;
29 class VulkanMemoryType;
30 class VulkanQueueFamily;
31 class VulkanDevice;
32 class VulkanQueue;
33 class VulkanDescriptorSetLayoutBinding;
34 class VulkanDescriptorSetLayout;
35 class VulkanPipelineLayout;
36 class VulkanShaderModule;
37 class VulkanPipeline;
38 class VulkanComputePipeline;
39 class VulkanDescriptorPool;
40 class VulkanDescriptorSet;
41 class VulkanCommandPool;
42 class VulkanCommandBuffer;
43 class VulkanBuffer;
44 class VulkanOffset3D;
45 class VulkanExtent3D;
46 class VulkanImage;
47 class VulkanImage2D;
48 class VulkanImageView;
49 class VulkanDeviceMemory;
50 class VulkanSemaphore;
51 
52 class VulkanPhysicalDeviceList;
53 class VulkanMemoryHeapList;
54 class VulkanMemoryTypeList;
55 class VulkanQueueFamilyList;
56 class VulkanQueueFamilyToQueueCountMap;
57 class VulkanQueueFamilyToQueueListMap;
58 class VulkanQueueList;
59 class VulkanCommandBufferList;
60 class VulkanDescriptorSetLayoutList;
61 class VulkanBufferList;
62 class VulkanImage2DList;
63 class VulkanImageViewList;
64 class VulkanDeviceMemoryList;
65 class VulkanSemaphoreList;
66 
67 enum VulkanQueueFlag
68 {
69     VULKAN_QUEUE_FLAG_GRAPHICS = VK_QUEUE_GRAPHICS_BIT,
70     VULKAN_QUEUE_FLAG_COMPUTE = VK_QUEUE_COMPUTE_BIT,
71     VULKAN_QUEUE_FLAG_TRANSFER = VK_QUEUE_TRANSFER_BIT,
72     VULKAN_QUEUE_FLAG_MASK_ALL = VULKAN_QUEUE_FLAG_GRAPHICS
73         | VULKAN_QUEUE_FLAG_COMPUTE | VULKAN_QUEUE_FLAG_TRANSFER
74 };
75 
76 enum VulkanDescriptorType
77 {
78     VULKAN_DESCRIPTOR_TYPE_SAMPLER = VK_DESCRIPTOR_TYPE_SAMPLER,
79     VULKAN_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER =
80         VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
81     VULKAN_DESCRIPTOR_TYPE_SAMPLED_IMAGE = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
82     VULKAN_DESCRIPTOR_TYPE_STORAGE_IMAGE = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
83     VULKAN_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER =
84         VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
85     VULKAN_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER =
86         VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
87     VULKAN_DESCRIPTOR_TYPE_UNIFORM_BUFFER = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
88     VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
89     VULKAN_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC =
90         VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
91     VULKAN_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC =
92         VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
93     VULKAN_DESCRIPTOR_TYPE_INPUT_ATTACHMENT =
94         VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
95 };
96 
97 enum VulkanShaderStage
98 {
99     VULKAN_SHADER_STAGE_VERTEX = VK_SHADER_STAGE_VERTEX_BIT,
100     VULKAN_SHADER_STAGE_FRAGMENT = VK_SHADER_STAGE_FRAGMENT_BIT,
101     VULKAN_SHADER_STAGE_COMPUTE = VK_SHADER_STAGE_COMPUTE_BIT,
102     VULKAN_SHADER_STAGE_ALL_GRAPHICS = VK_SHADER_STAGE_ALL_GRAPHICS,
103     VULKAN_SHADER_STAGE_ALL = VK_SHADER_STAGE_ALL
104 };
105 
106 enum VulkanPipelineBindPoint
107 {
108     VULKAN_PIPELINE_BIND_POINT_GRAPHICS = VK_PIPELINE_BIND_POINT_GRAPHICS,
109     VULKAN_PIPELINE_BIND_POINT_COMPUTE = VK_PIPELINE_BIND_POINT_COMPUTE
110 };
111 
112 enum VulkanMemoryTypeProperty
113 {
114     VULKAN_MEMORY_TYPE_PROPERTY_NONE = 0,
115     VULKAN_MEMORY_TYPE_PROPERTY_DEVICE_LOCAL =
116         VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
117     VULKAN_MEMORY_TYPE_PROPERTY_HOST_VISIBLE_COHERENT =
118         VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
119         | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
120     VULKAN_MEMORY_TYPE_PROPERTY_HOST_VISIBLE_CACHED =
121         VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
122         | VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
123     VULKAN_MEMORY_TYPE_PROPERTY_HOST_VISIBLE_CACHED_COHERENT =
124         VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT
125         | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
126     VULKAN_MEMORY_TYPE_PROPERTY_DEVICE_LOCAL_HOST_VISIBLE_COHERENT =
127         VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
128         | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
129         | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
130     VULKAN_MEMORY_TYPE_PROPERTY_DEVICE_LOCAL_HOST_VISIBLE_CACHED =
131         VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
132         | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
133         | VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
134     VULKAN_MEMORY_TYPE_PROPERTY_DEVICE_LOCAL_HOST_VISIBLE_CACHED_COHERENT =
135         VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
136         | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
137         | VK_MEMORY_PROPERTY_HOST_CACHED_BIT
138         | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
139 };
140 
141 enum VulkanMemoryHeapFlag
142 {
143     VULKAN_MEMORY_HEAP_FLAG_NONE = 0,
144     VULKAN_MEMORY_HEAP_FLAG_DEVICE_LOCAL = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
145 };
146 
147 enum VulkanExternalMemoryHandleType
148 {
149     VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_NONE = 0,
150     VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD =
151         VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
152     VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_NT =
153         VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
154     VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT =
155         VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
156     VULKAN_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_NT_KMT =
157         VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
158         | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
159 };
160 
161 enum VulkanExternalSemaphoreHandleType
162 {
163     VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NONE = 0,
164     VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD =
165         VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
166     VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_NT =
167         VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
168     VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT =
169         VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
170     VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_NT_KMT =
171         VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
172         | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
173     VULKAN_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD =
174         VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
175 };
176 
177 enum VulkanBufferUsage
178 {
179     VULKAN_BUFFER_USAGE_TRANSFER_SRC = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
180     VULKAN_BUFFER_USAGE_TRANSFER_DST = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
181     VULKAN_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER =
182         VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
183     VULKAN_BUFFER_USAGE_STORAGE_TEXEL_BUFFER =
184         VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
185     VULKAN_BUFFER_USAGE_UNIFORM_BUFFER = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
186     VULKAN_BUFFER_USAGE_STORAGE_BUFFER = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
187     VULKAN_BUFFER_USAGE_INDEX_BUFFER = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
188     VULKAN_BUFFER_USAGE_VERTEX_BUFFER = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
189     VULKAN_BUFFER_USAGE_INDIRECT_BUFFER = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,
190     VULKAN_BUFFER_USAGE_STORAGE_BUFFER_TRANSFER_SRC_DST =
191         VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT
192         | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
193     VULKAN_BUFFER_USAGE_UNIFORM_BUFFER_TRANSFER_SRC_DST =
194         VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT
195         | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
196 };
197 
198 enum VulkanSharingMode
199 {
200     VULKAN_SHARING_MODE_EXCLUSIVE = VK_SHARING_MODE_EXCLUSIVE,
201     VULKAN_SHARING_MODE_CONCURRENT = VK_SHARING_MODE_CONCURRENT
202 };
203 
204 enum VulkanImageType
205 {
206     VULKAN_IMAGE_TYPE_1D = VK_IMAGE_TYPE_1D,
207     VULKAN_IMAGE_TYPE_2D = VK_IMAGE_TYPE_2D,
208     VULKAN_IMAGE_TYPE_3D = VK_IMAGE_TYPE_3D
209 };
210 
211 enum VulkanFormat
212 {
213     VULKAN_FORMAT_UNDEFINED = VK_FORMAT_UNDEFINED,
214     VULKAN_FORMAT_R4G4_UNORM_PACK8 = VK_FORMAT_R4G4_UNORM_PACK8,
215     VULKAN_FORMAT_R4G4B4A4_UNORM_PACK16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
216     VULKAN_FORMAT_B4G4R4A4_UNORM_PACK16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
217     VULKAN_FORMAT_R5G6B5_UNORM_PACK16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
218     VULKAN_FORMAT_B5G6R5_UNORM_PACK16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
219     VULKAN_FORMAT_R5G5B5A1_UNORM_PACK16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
220     VULKAN_FORMAT_B5G5R5A1_UNORM_PACK16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
221     VULKAN_FORMAT_A1R5G5B5_UNORM_PACK16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
222     VULKAN_FORMAT_R8_UNORM = VK_FORMAT_R8_UNORM,
223     VULKAN_FORMAT_R8_SNORM = VK_FORMAT_R8_SNORM,
224     VULKAN_FORMAT_R8_USCALED = VK_FORMAT_R8_USCALED,
225     VULKAN_FORMAT_R8_SSCALED = VK_FORMAT_R8_SSCALED,
226     VULKAN_FORMAT_R8_UINT = VK_FORMAT_R8_UINT,
227     VULKAN_FORMAT_R8_SINT = VK_FORMAT_R8_SINT,
228     VULKAN_FORMAT_R8_SRGB = VK_FORMAT_R8_SRGB,
229     VULKAN_FORMAT_R8G8_SNORM = VK_FORMAT_R8G8_SNORM,
230     VULKAN_FORMAT_R8G8_UNORM = VK_FORMAT_R8G8_UNORM,
231     VULKAN_FORMAT_R8G8_USCALED = VK_FORMAT_R8G8_USCALED,
232     VULKAN_FORMAT_R8G8_SSCALED = VK_FORMAT_R8G8_SSCALED,
233     VULKAN_FORMAT_R8G8_UINT = VK_FORMAT_R8G8_UINT,
234     VULKAN_FORMAT_R8G8_SINT = VK_FORMAT_R8G8_SINT,
235     VULKAN_FORMAT_R8G8_SRGB = VK_FORMAT_R8G8_SRGB,
236     VULKAN_FORMAT_R8G8B8_UNORM = VK_FORMAT_R8G8B8_UNORM,
237     VULKAN_FORMAT_R8G8B8_SNORM = VK_FORMAT_R8G8B8_SNORM,
238     VULKAN_FORMAT_R8G8B8_USCALED = VK_FORMAT_R8G8B8_USCALED,
239     VULKAN_FORMAT_R8G8B8_SSCALED = VK_FORMAT_R8G8B8_SSCALED,
240     VULKAN_FORMAT_R8G8B8_UINT = VK_FORMAT_R8G8B8_UINT,
241     VULKAN_FORMAT_R8G8B8_SINT = VK_FORMAT_R8G8B8_SINT,
242     VULKAN_FORMAT_R8G8B8_SRGB = VK_FORMAT_R8G8B8_SRGB,
243     VULKAN_FORMAT_B8G8R8_UNORM = VK_FORMAT_B8G8R8_UNORM,
244     VULKAN_FORMAT_B8G8R8_SNORM = VK_FORMAT_B8G8R8_SNORM,
245     VULKAN_FORMAT_B8G8R8_USCALED = VK_FORMAT_B8G8R8_USCALED,
246     VULKAN_FORMAT_B8G8R8_SSCALED = VK_FORMAT_B8G8R8_SSCALED,
247     VULKAN_FORMAT_B8G8R8_UINT = VK_FORMAT_B8G8R8_UINT,
248     VULKAN_FORMAT_B8G8R8_SINT = VK_FORMAT_B8G8R8_SINT,
249     VULKAN_FORMAT_B8G8R8_SRGB = VK_FORMAT_B8G8R8_SRGB,
250     VULKAN_FORMAT_R8G8B8A8_UNORM = VK_FORMAT_R8G8B8A8_UNORM,
251     VULKAN_FORMAT_R8G8B8A8_SNORM = VK_FORMAT_R8G8B8A8_SNORM,
252     VULKAN_FORMAT_R8G8B8A8_USCALED = VK_FORMAT_R8G8B8A8_USCALED,
253     VULKAN_FORMAT_R8G8B8A8_SSCALED = VK_FORMAT_R8G8B8A8_SSCALED,
254     VULKAN_FORMAT_R8G8B8A8_UINT = VK_FORMAT_R8G8B8A8_UINT,
255     VULKAN_FORMAT_R8G8B8A8_SINT = VK_FORMAT_R8G8B8A8_SINT,
256     VULKAN_FORMAT_R8G8B8A8_SRGB = VK_FORMAT_R8G8B8A8_SRGB,
257     VULKAN_FORMAT_B8G8R8A8_UNORM = VK_FORMAT_B8G8R8A8_UNORM,
258     VULKAN_FORMAT_B8G8R8A8_SNORM = VK_FORMAT_B8G8R8A8_SNORM,
259     VULKAN_FORMAT_B8G8R8A8_USCALED = VK_FORMAT_B8G8R8A8_USCALED,
260     VULKAN_FORMAT_B8G8R8A8_SSCALED = VK_FORMAT_B8G8R8A8_SSCALED,
261     VULKAN_FORMAT_B8G8R8A8_UINT = VK_FORMAT_B8G8R8A8_UINT,
262     VULKAN_FORMAT_B8G8R8A8_SINT = VK_FORMAT_B8G8R8A8_SINT,
263     VULKAN_FORMAT_B8G8R8A8_SRGB = VK_FORMAT_B8G8R8A8_SRGB,
264     VULKAN_FORMAT_A8B8G8R8_UNORM_PACK32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
265     VULKAN_FORMAT_A8B8G8R8_SNORM_PACK32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
266     VULKAN_FORMAT_A8B8G8R8_USCALED_PACK32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
267     VULKAN_FORMAT_A8B8G8R8_SSCALED_PACK32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
268     VULKAN_FORMAT_A8B8G8R8_UINT_PACK32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
269     VULKAN_FORMAT_A8B8G8R8_SINT_PACK32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
270     VULKAN_FORMAT_A8B8G8R8_SRGB_PACK32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
271     VULKAN_FORMAT_A2R10G10B10_UNORM_PACK32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
272     VULKAN_FORMAT_A2R10G10B10_SNORM_PACK32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
273     VULKAN_FORMAT_A2R10G10B10_USCALED_PACK32 =
274         VK_FORMAT_A2R10G10B10_USCALED_PACK32,
275     VULKAN_FORMAT_A2R10G10B10_SSCALED_PACK32 =
276         VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
277     VULKAN_FORMAT_A2R10G10B10_UINT_PACK32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
278     VULKAN_FORMAT_A2R10G10B10_SINT_PACK32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
279     VULKAN_FORMAT_A2B10G10R10_UNORM_PACK32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
280     VULKAN_FORMAT_A2B10G10R10_SNORM_PACK32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
281     VULKAN_FORMAT_A2B10G10R10_USCALED_PACK32 =
282         VK_FORMAT_A2B10G10R10_USCALED_PACK32,
283     VULKAN_FORMAT_A2B10G10R10_SSCALED_PACK32 =
284         VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
285     VULKAN_FORMAT_A2B10G10R10_UINT_PACK32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
286     VULKAN_FORMAT_A2B10G10R10_SINT_PACK32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
287     VULKAN_FORMAT_R16_UNORM = VK_FORMAT_R16_UNORM,
288     VULKAN_FORMAT_R16_SNORM = VK_FORMAT_R16_SNORM,
289     VULKAN_FORMAT_R16_USCALED = VK_FORMAT_R16_USCALED,
290     VULKAN_FORMAT_R16_SSCALED = VK_FORMAT_R16_SSCALED,
291     VULKAN_FORMAT_R16_UINT = VK_FORMAT_R16_UINT,
292     VULKAN_FORMAT_R16_SINT = VK_FORMAT_R16_SINT,
293     VULKAN_FORMAT_R16_SFLOAT = VK_FORMAT_R16_SFLOAT,
294     VULKAN_FORMAT_R16G16_UNORM = VK_FORMAT_R16G16_UNORM,
295     VULKAN_FORMAT_R16G16_SNORM = VK_FORMAT_R16G16_SNORM,
296     VULKAN_FORMAT_R16G16_USCALED = VK_FORMAT_R16G16_USCALED,
297     VULKAN_FORMAT_R16G16_SSCALED = VK_FORMAT_R16G16_SSCALED,
298     VULKAN_FORMAT_R16G16_UINT = VK_FORMAT_R16G16_UINT,
299     VULKAN_FORMAT_R16G16_SINT = VK_FORMAT_R16G16_SINT,
300     VULKAN_FORMAT_R16G16_SFLOAT = VK_FORMAT_R16G16_SFLOAT,
301     VULKAN_FORMAT_R16G16B16_UNORM = VK_FORMAT_R16G16B16_UNORM,
302     VULKAN_FORMAT_R16G16B16_SNORM = VK_FORMAT_R16G16B16_SNORM,
303     VULKAN_FORMAT_R16G16B16_USCALED = VK_FORMAT_R16G16B16_USCALED,
304     VULKAN_FORMAT_R16G16B16_SSCALED = VK_FORMAT_R16G16B16_SSCALED,
305     VULKAN_FORMAT_R16G16B16_UINT = VK_FORMAT_R16G16B16_UINT,
306     VULKAN_FORMAT_R16G16B16_SINT = VK_FORMAT_R16G16B16_SINT,
307     VULKAN_FORMAT_R16G16B16_SFLOAT = VK_FORMAT_R16G16B16_SFLOAT,
308     VULKAN_FORMAT_R16G16B16A16_UNORM = VK_FORMAT_R16G16B16A16_UNORM,
309     VULKAN_FORMAT_R16G16B16A16_SNORM = VK_FORMAT_R16G16B16A16_SNORM,
310     VULKAN_FORMAT_R16G16B16A16_USCALED = VK_FORMAT_R16G16B16A16_USCALED,
311     VULKAN_FORMAT_R16G16B16A16_SSCALED = VK_FORMAT_R16G16B16A16_SSCALED,
312     VULKAN_FORMAT_R16G16B16A16_UINT = VK_FORMAT_R16G16B16A16_UINT,
313     VULKAN_FORMAT_R16G16B16A16_SINT = VK_FORMAT_R16G16B16A16_SINT,
314     VULKAN_FORMAT_R16G16B16A16_SFLOAT = VK_FORMAT_R16G16B16A16_SFLOAT,
315     VULKAN_FORMAT_R32_UINT = VK_FORMAT_R32_UINT,
316     VULKAN_FORMAT_R32_SINT = VK_FORMAT_R32_SINT,
317     VULKAN_FORMAT_R32_SFLOAT = VK_FORMAT_R32_SFLOAT,
318     VULKAN_FORMAT_R32G32_UINT = VK_FORMAT_R32G32_UINT,
319     VULKAN_FORMAT_R32G32_SINT = VK_FORMAT_R32G32_SINT,
320     VULKAN_FORMAT_R32G32_SFLOAT = VK_FORMAT_R32G32_SFLOAT,
321     VULKAN_FORMAT_R32G32B32_UINT = VK_FORMAT_R32G32B32_UINT,
322     VULKAN_FORMAT_R32G32B32_SINT = VK_FORMAT_R32G32B32_SINT,
323     VULKAN_FORMAT_R32G32B32_SFLOAT = VK_FORMAT_R32G32B32_SFLOAT,
324     VULKAN_FORMAT_R32G32B32A32_UINT = VK_FORMAT_R32G32B32A32_UINT,
325     VULKAN_FORMAT_R32G32B32A32_SINT = VK_FORMAT_R32G32B32A32_SINT,
326     VULKAN_FORMAT_R32G32B32A32_SFLOAT = VK_FORMAT_R32G32B32A32_SFLOAT,
327     VULKAN_FORMAT_R64_UINT = VK_FORMAT_R64_UINT,
328     VULKAN_FORMAT_R64_SINT = VK_FORMAT_R64_SINT,
329     VULKAN_FORMAT_R64_SFLOAT = VK_FORMAT_R64_SFLOAT,
330     VULKAN_FORMAT_R64G64_UINT = VK_FORMAT_R64G64_UINT,
331     VULKAN_FORMAT_R64G64_SINT = VK_FORMAT_R64G64_SINT,
332     VULKAN_FORMAT_R64G64_SFLOAT = VK_FORMAT_R64G64_SFLOAT,
333     VULKAN_FORMAT_R64G64B64_UINT = VK_FORMAT_R64G64B64_UINT,
334     VULKAN_FORMAT_R64G64B64_SINT = VK_FORMAT_R64G64B64_SINT,
335     VULKAN_FORMAT_R64G64B64_SFLOAT = VK_FORMAT_R64G64B64_SFLOAT,
336     VULKAN_FORMAT_R64G64B64A64_UINT = VK_FORMAT_R64G64B64A64_UINT,
337     VULKAN_FORMAT_R64G64B64A64_SINT = VK_FORMAT_R64G64B64A64_SINT,
338     VULKAN_FORMAT_R64G64B64A64_SFLOAT = VK_FORMAT_R64G64B64A64_SFLOAT,
339     VULKAN_FORMAT_B10G11R11_UFLOAT_PACK32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
340     VULKAN_FORMAT_E5B9G9R9_UFLOAT_PACK32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
341     VULKAN_FORMAT_D16_UNORM = VK_FORMAT_D16_UNORM,
342     VULKAN_FORMAT_X8_D24_UNORM_PACK32 = VK_FORMAT_X8_D24_UNORM_PACK32,
343     VULKAN_FORMAT_D32_SFLOAT = VK_FORMAT_D32_SFLOAT,
344     VULKAN_FORMAT_S8_UINT = VK_FORMAT_S8_UINT,
345     VULKAN_FORMAT_D16_UNORM_S8_UINT = VK_FORMAT_D16_UNORM_S8_UINT,
346     VULKAN_FORMAT_D24_UNORM_S8_UINT = VK_FORMAT_D24_UNORM_S8_UINT,
347     VULKAN_FORMAT_D32_SFLOAT_S8_UINT = VK_FORMAT_D32_SFLOAT_S8_UINT,
348     VULKAN_FORMAT_BC1_RGB_UNORM_BLOCK = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
349     VULKAN_FORMAT_BC1_RGB_SRGB_BLOCK = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
350     VULKAN_FORMAT_BC1_RGBA_UNORM_BLOCK = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
351     VULKAN_FORMAT_BC1_RGBA_SRGB_BLOCK = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
352     VULKAN_FORMAT_BC2_UNORM_BLOCK = VK_FORMAT_BC2_UNORM_BLOCK,
353     VULKAN_FORMAT_BC2_SRGB_BLOCK = VK_FORMAT_BC2_SRGB_BLOCK,
354     VULKAN_FORMAT_BC3_UNORM_BLOCK = VK_FORMAT_BC3_UNORM_BLOCK,
355     VULKAN_FORMAT_BC3_SRGB_BLOCK = VK_FORMAT_BC3_SRGB_BLOCK,
356     VULKAN_FORMAT_BC4_UNORM_BLOCK = VK_FORMAT_BC4_UNORM_BLOCK,
357     VULKAN_FORMAT_BC4_SNORM_BLOCK = VK_FORMAT_BC4_SNORM_BLOCK,
358     VULKAN_FORMAT_BC5_UNORM_BLOCK = VK_FORMAT_BC5_UNORM_BLOCK,
359     VULKAN_FORMAT_BC5_SNORM_BLOCK = VK_FORMAT_BC5_SNORM_BLOCK,
360     VULKAN_FORMAT_BC6H_UFLOAT_BLOCK = VK_FORMAT_BC6H_UFLOAT_BLOCK,
361     VULKAN_FORMAT_BC6H_SFLOAT_BLOCK = VK_FORMAT_BC6H_SFLOAT_BLOCK,
362     VULKAN_FORMAT_BC7_UNORM_BLOCK = VK_FORMAT_BC7_UNORM_BLOCK,
363     VULKAN_FORMAT_BC7_SRGB_BLOCK = VK_FORMAT_BC7_SRGB_BLOCK,
364     VULKAN_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
365     VULKAN_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
366     VULKAN_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK =
367         VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
368     VULKAN_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
369     VULKAN_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK =
370         VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
371     VULKAN_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
372     VULKAN_FORMAT_EAC_R11_UNORM_BLOCK = VK_FORMAT_EAC_R11_UNORM_BLOCK,
373     VULKAN_FORMAT_EAC_R11_SNORM_BLOCK = VK_FORMAT_EAC_R11_SNORM_BLOCK,
374     VULKAN_FORMAT_EAC_R11G11_UNORM_BLOCK = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
375     VULKAN_FORMAT_EAC_R11G11_SNORM_BLOCK = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
376     VULKAN_FORMAT_ASTC_4x4_UNORM_BLOCK = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
377     VULKAN_FORMAT_ASTC_4x4_SRGB_BLOCK = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
378     VULKAN_FORMAT_ASTC_5x4_UNORM_BLOCK = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
379     VULKAN_FORMAT_ASTC_5x4_SRGB_BLOCK = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
380     VULKAN_FORMAT_ASTC_5x5_UNORM_BLOCK = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
381     VULKAN_FORMAT_ASTC_5x5_SRGB_BLOCK = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
382     VULKAN_FORMAT_ASTC_6x5_UNORM_BLOCK = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
383     VULKAN_FORMAT_ASTC_6x5_SRGB_BLOCK = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
384     VULKAN_FORMAT_ASTC_6x6_UNORM_BLOCK = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
385     VULKAN_FORMAT_ASTC_6x6_SRGB_BLOCK = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
386     VULKAN_FORMAT_ASTC_8x5_UNORM_BLOCK = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
387     VULKAN_FORMAT_ASTC_8x5_SRGB_BLOCK = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
388     VULKAN_FORMAT_ASTC_8x6_UNORM_BLOCK = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
389     VULKAN_FORMAT_ASTC_8x6_SRGB_BLOCK = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
390     VULKAN_FORMAT_ASTC_8x8_UNORM_BLOCK = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
391     VULKAN_FORMAT_ASTC_8x8_SRGB_BLOCK = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
392     VULKAN_FORMAT_ASTC_10x5_UNORM_BLOCK = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
393     VULKAN_FORMAT_ASTC_10x5_SRGB_BLOCK = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
394     VULKAN_FORMAT_ASTC_10x6_UNORM_BLOCK = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
395     VULKAN_FORMAT_ASTC_10x6_SRGB_BLOCK = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
396     VULKAN_FORMAT_ASTC_10x8_UNORM_BLOCK = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
397     VULKAN_FORMAT_ASTC_10x8_SRGB_BLOCK = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
398     VULKAN_FORMAT_ASTC_10x10_UNORM_BLOCK = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
399     VULKAN_FORMAT_ASTC_10x10_SRGB_BLOCK = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
400     VULKAN_FORMAT_ASTC_12x10_UNORM_BLOCK = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
401     VULKAN_FORMAT_ASTC_12x10_SRGB_BLOCK = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
402     VULKAN_FORMAT_ASTC_12x12_UNORM_BLOCK = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
403     VULKAN_FORMAT_ASTC_12x12_SRGB_BLOCK = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
404 };
405 
406 enum VulkanImageLayout
407 {
408     VULKAN_IMAGE_LAYOUT_UNDEFINED = VK_IMAGE_LAYOUT_UNDEFINED,
409     VULKAN_IMAGE_LAYOUT_GENERAL = VK_IMAGE_LAYOUT_GENERAL,
410     VULKAN_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL =
411         VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
412     VULKAN_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL =
413         VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
414 };
415 
416 enum VulkanImageUsage
417 {
418     VULKAN_IMAGE_USAGE_TRANSFER_SRC = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
419     VULKAN_IMAGE_USAGE_TRANSFER_DST = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
420     VULKAN_IMAGE_USAGE_SAMPLED = VK_IMAGE_USAGE_SAMPLED_BIT,
421     VULKAN_IMAGE_USAGE_STORAGE = VK_IMAGE_USAGE_STORAGE_BIT,
422     VULKAN_IMAGE_USAGE_COLOR_ATTACHMENT = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
423     VULKAN_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT =
424         VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
425     VULKAN_IMAGE_USAGE_TRANSIENT_ATTACHMENT =
426         VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
427     VULKAN_IMAGE_USAGE_INPUT_ATTACHMENT = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
428     VULKAN_IMAGE_USAGE_TRANSFER_SRC_DST =
429         VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT,
430     VULKAN_IMAGE_USAGE_STORAGE_TRANSFER_SRC_DST = VULKAN_IMAGE_USAGE_STORAGE
431         | VULKAN_IMAGE_USAGE_TRANSFER_SRC | VULKAN_IMAGE_USAGE_TRANSFER_DST,
432     VULKAN_IMAGE_USAGE_SAMPLED_STORAGE_TRANSFER_SRC_DST =
433         VK_IMAGE_USAGE_SAMPLED_BIT | VULKAN_IMAGE_USAGE_STORAGE
434         | VULKAN_IMAGE_USAGE_TRANSFER_SRC | VULKAN_IMAGE_USAGE_TRANSFER_DST
435 };
436 
437 enum VulkanImageTiling
438 {
439     VULKAN_IMAGE_TILING_OPTIMAL = VK_IMAGE_TILING_OPTIMAL,
440     VULKAN_IMAGE_TILING_LINEAR = VK_IMAGE_TILING_LINEAR
441 };
442 
443 enum VulkanImageCreateFlag
444 {
445     VULKAN_IMAGE_CREATE_FLAG_NONE = 0,
446     VULKAN_IMAGE_CREATE_FLAG_MUTABLE_FORMAT =
447         VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
448     VULKAN_IMAGE_CREATE_FLAG_CUBE_COMPATIBLE =
449         VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
450     VULKAN_IMAGE_CREATE_FLAG_CUBE_COMPATIBLE_MUTABLE_FORMAT =
451         VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT | VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
452 };
453 
454 enum VulkanImageViewType
455 {
456     VULKAN_IMAGE_VIEW_TYPE_1D = VK_IMAGE_VIEW_TYPE_1D,
457     VULKAN_IMAGE_VIEW_TYPE_2D = VK_IMAGE_VIEW_TYPE_2D,
458     VULKAN_IMAGE_VIEW_TYPE_3D = VK_IMAGE_VIEW_TYPE_3D,
459     VULKAN_IMAGE_VIEW_TYPE_CUBE = VK_IMAGE_VIEW_TYPE_CUBE,
460     VULKAN_IMAGE_VIEW_TYPE_1D_ARRAY = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
461     VULKAN_IMAGE_VIEW_TYPE_2D_ARRAY = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
462     VULKAN_IMAGE_VIEW_TYPE_CUBE_ARRAY = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
463 };
464 
465 #endif // _vulkan_wrapper_types_hpp_
466