2 ** Copyright (c) 2015-2024 The Khronos Group Inc.
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
8 ** http://www.apache.org/licenses/LICENSE-2.0
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.
18 ** This header is generated from the Khronos Vulkan XML API Registry.
25 #include "function_declarations.h"
30 static VKAPI_ATTR VkResult VKAPI_CALL
CreateInstance(
31 const VkInstanceCreateInfo
* pCreateInfo
,
32 const VkAllocationCallbacks
* pAllocator
,
33 VkInstance
* pInstance
)
36 // TODO: If loader ver <=4 ICD must fail with VK_ERROR_INCOMPATIBLE_DRIVER for all vkCreateInstance calls with
37 // apiVersion set to > Vulkan 1.0 because the loader is still at interface version <= 4. Otherwise, the
38 // ICD should behave as normal.
39 if (loader_interface_version
<= 4) {
40 return VK_ERROR_INCOMPATIBLE_DRIVER
;
42 *pInstance
= (VkInstance
)CreateDispObjHandle();
43 for (auto& physical_device
: physical_device_map
[*pInstance
])
44 physical_device
= (VkPhysicalDevice
)CreateDispObjHandle();
45 // TODO: If emulating specific device caps, will need to add intelligence here
49 static VKAPI_ATTR
void VKAPI_CALL
DestroyInstance(
51 const VkAllocationCallbacks
* pAllocator
)
55 for (const auto physical_device
: physical_device_map
.at(instance
)) {
56 display_map
.erase(physical_device
);
57 DestroyDispObjHandle((void*)physical_device
);
59 physical_device_map
.erase(instance
);
60 DestroyDispObjHandle((void*)instance
);
64 static VKAPI_ATTR VkResult VKAPI_CALL
EnumeratePhysicalDevices(
66 uint32_t* pPhysicalDeviceCount
,
67 VkPhysicalDevice
* pPhysicalDevices
)
69 VkResult result_code
= VK_SUCCESS
;
70 if (pPhysicalDevices
) {
71 const auto return_count
= (std::min
)(*pPhysicalDeviceCount
, icd_physical_device_count
);
72 for (uint32_t i
= 0; i
< return_count
; ++i
) pPhysicalDevices
[i
] = physical_device_map
.at(instance
)[i
];
73 if (return_count
< icd_physical_device_count
) result_code
= VK_INCOMPLETE
;
74 *pPhysicalDeviceCount
= return_count
;
76 *pPhysicalDeviceCount
= icd_physical_device_count
;
81 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceFeatures(
82 VkPhysicalDevice physicalDevice
,
83 VkPhysicalDeviceFeatures
* pFeatures
)
85 uint32_t num_bools
= sizeof(VkPhysicalDeviceFeatures
) / sizeof(VkBool32
);
86 VkBool32
*bool_array
= &pFeatures
->robustBufferAccess
;
87 SetBoolArrayTrue(bool_array
, num_bools
);
90 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceFormatProperties(
91 VkPhysicalDevice physicalDevice
,
93 VkFormatProperties
* pFormatProperties
)
95 if (VK_FORMAT_UNDEFINED
== format
) {
96 *pFormatProperties
= { 0x0, 0x0, 0x0 };
98 // Default to a color format, skip DS bit
99 *pFormatProperties
= { 0x00FFFDFF, 0x00FFFDFF, 0x00FFFDFF };
101 case VK_FORMAT_D16_UNORM
:
102 case VK_FORMAT_X8_D24_UNORM_PACK32
:
103 case VK_FORMAT_D32_SFLOAT
:
104 case VK_FORMAT_S8_UINT
:
105 case VK_FORMAT_D16_UNORM_S8_UINT
:
106 case VK_FORMAT_D24_UNORM_S8_UINT
:
107 case VK_FORMAT_D32_SFLOAT_S8_UINT
:
108 // Don't set color bits for DS formats
109 *pFormatProperties
= { 0x00FFFE7F, 0x00FFFE7F, 0x00FFFE7F };
111 case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
:
112 case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
:
113 case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM
:
114 case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
:
115 case VK_FORMAT_G8_B8R8_2PLANE_444_UNORM
:
116 // Set decode/encode bits for these formats
117 *pFormatProperties
= { 0x1EFFFDFF, 0x1EFFFDFF, 0x00FFFDFF };
125 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceImageFormatProperties(
126 VkPhysicalDevice physicalDevice
,
129 VkImageTiling tiling
,
130 VkImageUsageFlags usage
,
131 VkImageCreateFlags flags
,
132 VkImageFormatProperties
* pImageFormatProperties
)
134 // A hardcoded unsupported format
135 if (format
== VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
) {
136 return VK_ERROR_FORMAT_NOT_SUPPORTED
;
139 // TODO: Just hard-coding some values for now
140 // TODO: If tiling is linear, limit the mips, levels, & sample count
141 if (VK_IMAGE_TILING_LINEAR
== tiling
) {
142 *pImageFormatProperties
= { { 4096, 4096, 256 }, 1, 1, VK_SAMPLE_COUNT_1_BIT
, 4294967296 };
144 // We hard-code support for all sample counts except 64 bits.
145 *pImageFormatProperties
= { { 4096, 4096, 256 }, 12, 256, 0x7F & ~VK_SAMPLE_COUNT_64_BIT
, 4294967296 };
150 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceProperties(
151 VkPhysicalDevice physicalDevice
,
152 VkPhysicalDeviceProperties
* pProperties
)
154 pProperties
->apiVersion
= VK_HEADER_VERSION_COMPLETE
;
155 pProperties
->driverVersion
= 1;
156 pProperties
->vendorID
= 0xba5eba11;
157 pProperties
->deviceID
= 0xf005ba11;
158 pProperties
->deviceType
= VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU
;
159 //std::string devName = "Vulkan Mock Device";
160 strcpy(pProperties
->deviceName
, "Vulkan Mock Device");
161 pProperties
->pipelineCacheUUID
[0] = 18;
162 pProperties
->limits
= SetLimits(&pProperties
->limits
);
163 pProperties
->sparseProperties
= { VK_TRUE
, VK_TRUE
, VK_TRUE
, VK_TRUE
, VK_TRUE
};
166 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceQueueFamilyProperties(
167 VkPhysicalDevice physicalDevice
,
168 uint32_t* pQueueFamilyPropertyCount
,
169 VkQueueFamilyProperties
* pQueueFamilyProperties
)
171 if (pQueueFamilyProperties
) {
172 std::vector
<VkQueueFamilyProperties2KHR
> props2(*pQueueFamilyPropertyCount
, {
173 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR
});
174 GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice
, pQueueFamilyPropertyCount
, props2
.data());
175 for (uint32_t i
= 0; i
< *pQueueFamilyPropertyCount
; ++i
) {
176 pQueueFamilyProperties
[i
] = props2
[i
].queueFamilyProperties
;
179 GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice
, pQueueFamilyPropertyCount
, nullptr);
183 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceMemoryProperties(
184 VkPhysicalDevice physicalDevice
,
185 VkPhysicalDeviceMemoryProperties
* pMemoryProperties
)
187 pMemoryProperties
->memoryTypeCount
= 6;
188 // Host visible Coherent
189 pMemoryProperties
->memoryTypes
[0].propertyFlags
= VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
| VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
;
190 pMemoryProperties
->memoryTypes
[0].heapIndex
= 0;
191 // Host visible Cached
192 pMemoryProperties
->memoryTypes
[1].propertyFlags
= VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
| VK_MEMORY_PROPERTY_HOST_CACHED_BIT
;
193 pMemoryProperties
->memoryTypes
[1].heapIndex
= 0;
194 // Device local and Host visible
195 pMemoryProperties
->memoryTypes
[2].propertyFlags
= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
| VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
| VK_MEMORY_PROPERTY_HOST_CACHED_BIT
| VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
;
196 pMemoryProperties
->memoryTypes
[2].heapIndex
= 1;
197 // Device local lazily
198 pMemoryProperties
->memoryTypes
[3].propertyFlags
= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
| VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
;
199 pMemoryProperties
->memoryTypes
[3].heapIndex
= 1;
200 // Device local protected
201 pMemoryProperties
->memoryTypes
[4].propertyFlags
= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
| VK_MEMORY_PROPERTY_PROTECTED_BIT
;
202 pMemoryProperties
->memoryTypes
[4].heapIndex
= 1;
204 pMemoryProperties
->memoryTypes
[5].propertyFlags
= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
;
205 pMemoryProperties
->memoryTypes
[5].heapIndex
= 1;
206 pMemoryProperties
->memoryHeapCount
= 2;
207 pMemoryProperties
->memoryHeaps
[0].flags
= VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
;
208 pMemoryProperties
->memoryHeaps
[0].size
= 8000000000;
209 pMemoryProperties
->memoryHeaps
[1].flags
= VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
;
210 pMemoryProperties
->memoryHeaps
[1].size
= 8000000000;
213 static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
GetInstanceProcAddr(
218 if (!negotiate_loader_icd_interface_called
) {
219 loader_interface_version
= 0;
221 const auto &item
= name_to_funcptr_map
.find(pName
);
222 if (item
!= name_to_funcptr_map
.end()) {
223 return reinterpret_cast<PFN_vkVoidFunction
>(item
->second
);
225 // Mock should intercept all functions so if we get here just return null
229 static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
GetDeviceProcAddr(
234 return GetInstanceProcAddr(nullptr, pName
);
237 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDevice(
238 VkPhysicalDevice physicalDevice
,
239 const VkDeviceCreateInfo
* pCreateInfo
,
240 const VkAllocationCallbacks
* pAllocator
,
244 *pDevice
= (VkDevice
)CreateDispObjHandle();
245 // TODO: If emulating specific device caps, will need to add intelligence here
249 static VKAPI_ATTR
void VKAPI_CALL
DestroyDevice(
251 const VkAllocationCallbacks
* pAllocator
)
254 unique_lock_t
lock(global_lock
);
255 // First destroy sub-device objects
257 for (auto queue_family_map_pair
: queue_map
[device
]) {
258 for (auto index_queue_pair
: queue_map
[device
][queue_family_map_pair
.first
]) {
259 DestroyDispObjHandle((void*)index_queue_pair
.second
);
263 for (auto& cp
: command_pool_map
[device
]) {
264 for (auto& cb
: command_pool_buffer_map
[cp
]) {
265 DestroyDispObjHandle((void*) cb
);
267 command_pool_buffer_map
.erase(cp
);
269 command_pool_map
[device
].clear();
271 queue_map
.erase(device
);
272 buffer_map
.erase(device
);
273 image_memory_size_map
.erase(device
);
274 // Now destroy device
275 DestroyDispObjHandle((void*)device
);
276 // TODO: If emulating specific device caps, will need to add intelligence here
279 static VKAPI_ATTR VkResult VKAPI_CALL
EnumerateInstanceExtensionProperties(
280 const char* pLayerName
,
281 uint32_t* pPropertyCount
,
282 VkExtensionProperties
* pProperties
)
285 // If requesting number of extensions, return that
288 *pPropertyCount
= (uint32_t)instance_extension_map
.size();
291 for (const auto &name_ver_pair
: instance_extension_map
) {
292 if (i
== *pPropertyCount
) {
295 std::strncpy(pProperties
[i
].extensionName
, name_ver_pair
.first
.c_str(), sizeof(pProperties
[i
].extensionName
));
296 pProperties
[i
].extensionName
[sizeof(pProperties
[i
].extensionName
) - 1] = 0;
297 pProperties
[i
].specVersion
= name_ver_pair
.second
;
300 if (i
!= instance_extension_map
.size()) {
301 return VK_INCOMPLETE
;
305 // If requesting extension properties, fill in data struct for number of extensions
309 static VKAPI_ATTR VkResult VKAPI_CALL
EnumerateDeviceExtensionProperties(
310 VkPhysicalDevice physicalDevice
,
311 const char* pLayerName
,
312 uint32_t* pPropertyCount
,
313 VkExtensionProperties
* pProperties
)
316 // If requesting number of extensions, return that
319 *pPropertyCount
= (uint32_t)device_extension_map
.size();
322 for (const auto &name_ver_pair
: device_extension_map
) {
323 if (i
== *pPropertyCount
) {
326 std::strncpy(pProperties
[i
].extensionName
, name_ver_pair
.first
.c_str(), sizeof(pProperties
[i
].extensionName
));
327 pProperties
[i
].extensionName
[sizeof(pProperties
[i
].extensionName
) - 1] = 0;
328 pProperties
[i
].specVersion
= name_ver_pair
.second
;
331 if (i
!= device_extension_map
.size()) {
332 return VK_INCOMPLETE
;
336 // If requesting extension properties, fill in data struct for number of extensions
340 static VKAPI_ATTR VkResult VKAPI_CALL
EnumerateInstanceLayerProperties(
341 uint32_t* pPropertyCount
,
342 VkLayerProperties
* pProperties
)
348 static VKAPI_ATTR VkResult VKAPI_CALL
EnumerateDeviceLayerProperties(
349 VkPhysicalDevice physicalDevice
,
350 uint32_t* pPropertyCount
,
351 VkLayerProperties
* pProperties
)
357 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceQueue(
359 uint32_t queueFamilyIndex
,
363 unique_lock_t
lock(global_lock
);
364 auto queue
= queue_map
[device
][queueFamilyIndex
][queueIndex
];
368 *pQueue
= queue_map
[device
][queueFamilyIndex
][queueIndex
] = (VkQueue
)CreateDispObjHandle();
370 // TODO: If emulating specific device caps, will need to add intelligence here
374 static VKAPI_ATTR VkResult VKAPI_CALL
QueueSubmit(
376 uint32_t submitCount
,
377 const VkSubmitInfo
* pSubmits
,
380 // Special way to cause DEVICE_LOST
381 // Picked VkExportFenceCreateInfo because needed some struct that wouldn't get cleared by validation Safe Struct
382 // ... TODO - It would be MUCH nicer to have a layer or other setting control when this occured
383 // For now this is used to allow Validation Layers test reacting to device losts
384 if (submitCount
> 0 && pSubmits
) {
385 auto pNext
= reinterpret_cast<const VkBaseInStructure
*>(pSubmits
[0].pNext
);
386 if (pNext
&& pNext
->sType
== VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
&& pNext
->pNext
== nullptr) {
387 return VK_ERROR_DEVICE_LOST
;
393 static VKAPI_ATTR VkResult VKAPI_CALL
QueueWaitIdle(
396 //Not a CREATE or DESTROY function
400 static VKAPI_ATTR VkResult VKAPI_CALL
DeviceWaitIdle(
403 //Not a CREATE or DESTROY function
407 static VKAPI_ATTR VkResult VKAPI_CALL
AllocateMemory(
409 const VkMemoryAllocateInfo
* pAllocateInfo
,
410 const VkAllocationCallbacks
* pAllocator
,
411 VkDeviceMemory
* pMemory
)
413 unique_lock_t
lock(global_lock
);
414 allocated_memory_size_map
[(VkDeviceMemory
)global_unique_handle
] = pAllocateInfo
->allocationSize
;
415 *pMemory
= (VkDeviceMemory
)global_unique_handle
++;
419 static VKAPI_ATTR
void VKAPI_CALL
FreeMemory(
421 VkDeviceMemory memory
,
422 const VkAllocationCallbacks
* pAllocator
)
425 UnmapMemory(device
, memory
);
426 unique_lock_t
lock(global_lock
);
427 allocated_memory_size_map
.erase(memory
);
430 static VKAPI_ATTR VkResult VKAPI_CALL
MapMemory(
432 VkDeviceMemory memory
,
435 VkMemoryMapFlags flags
,
438 unique_lock_t
lock(global_lock
);
439 if (VK_WHOLE_SIZE
== size
) {
440 if (allocated_memory_size_map
.count(memory
) != 0)
441 size
= allocated_memory_size_map
[memory
] - offset
;
445 void* map_addr
= malloc((size_t)size
);
446 mapped_memory_map
[memory
].push_back(map_addr
);
451 static VKAPI_ATTR
void VKAPI_CALL
UnmapMemory(
453 VkDeviceMemory memory
)
455 unique_lock_t
lock(global_lock
);
456 for (auto map_addr
: mapped_memory_map
[memory
]) {
459 mapped_memory_map
.erase(memory
);
462 static VKAPI_ATTR VkResult VKAPI_CALL
FlushMappedMemoryRanges(
464 uint32_t memoryRangeCount
,
465 const VkMappedMemoryRange
* pMemoryRanges
)
467 //Not a CREATE or DESTROY function
471 static VKAPI_ATTR VkResult VKAPI_CALL
InvalidateMappedMemoryRanges(
473 uint32_t memoryRangeCount
,
474 const VkMappedMemoryRange
* pMemoryRanges
)
476 //Not a CREATE or DESTROY function
480 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceMemoryCommitment(
482 VkDeviceMemory memory
,
483 VkDeviceSize
* pCommittedMemoryInBytes
)
485 //Not a CREATE or DESTROY function
488 static VKAPI_ATTR VkResult VKAPI_CALL
BindBufferMemory(
491 VkDeviceMemory memory
,
492 VkDeviceSize memoryOffset
)
494 //Not a CREATE or DESTROY function
498 static VKAPI_ATTR VkResult VKAPI_CALL
BindImageMemory(
501 VkDeviceMemory memory
,
502 VkDeviceSize memoryOffset
)
504 //Not a CREATE or DESTROY function
508 static VKAPI_ATTR
void VKAPI_CALL
GetBufferMemoryRequirements(
511 VkMemoryRequirements
* pMemoryRequirements
)
513 // TODO: Just hard-coding reqs for now
514 pMemoryRequirements
->size
= 4096;
515 pMemoryRequirements
->alignment
= 1;
516 pMemoryRequirements
->memoryTypeBits
= 0xFFFF;
517 // Return a better size based on the buffer size from the create info.
518 unique_lock_t
lock(global_lock
);
519 auto d_iter
= buffer_map
.find(device
);
520 if (d_iter
!= buffer_map
.end()) {
521 auto iter
= d_iter
->second
.find(buffer
);
522 if (iter
!= d_iter
->second
.end()) {
523 pMemoryRequirements
->size
= ((iter
->second
.size
+ 4095) / 4096) * 4096;
528 static VKAPI_ATTR
void VKAPI_CALL
GetImageMemoryRequirements(
531 VkMemoryRequirements
* pMemoryRequirements
)
533 pMemoryRequirements
->size
= 0;
534 pMemoryRequirements
->alignment
= 1;
536 unique_lock_t
lock(global_lock
);
537 auto d_iter
= image_memory_size_map
.find(device
);
538 if(d_iter
!= image_memory_size_map
.end()){
539 auto iter
= d_iter
->second
.find(image
);
540 if (iter
!= d_iter
->second
.end()) {
541 pMemoryRequirements
->size
= iter
->second
;
544 // Here we hard-code that the memory type at index 3 doesn't support this image.
545 pMemoryRequirements
->memoryTypeBits
= 0xFFFF & ~(0x1 << 3);
548 static VKAPI_ATTR
void VKAPI_CALL
GetImageSparseMemoryRequirements(
551 uint32_t* pSparseMemoryRequirementCount
,
552 VkSparseImageMemoryRequirements
* pSparseMemoryRequirements
)
554 if (!pSparseMemoryRequirements
) {
555 *pSparseMemoryRequirementCount
= 1;
558 pSparseMemoryRequirements
->imageMipTailFirstLod
= 0;
559 pSparseMemoryRequirements
->imageMipTailSize
= 8;
560 pSparseMemoryRequirements
->imageMipTailOffset
= 0;
561 pSparseMemoryRequirements
->imageMipTailStride
= 4;
562 pSparseMemoryRequirements
->formatProperties
.imageGranularity
= {4, 4, 4};
563 pSparseMemoryRequirements
->formatProperties
.flags
= VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT
;
564 // Would need to track the VkImage to know format for better value here
565 pSparseMemoryRequirements
->formatProperties
.aspectMask
= VK_IMAGE_ASPECT_COLOR_BIT
| VK_IMAGE_ASPECT_DEPTH_BIT
| VK_IMAGE_ASPECT_STENCIL_BIT
| VK_IMAGE_ASPECT_METADATA_BIT
;
570 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceSparseImageFormatProperties(
571 VkPhysicalDevice physicalDevice
,
574 VkSampleCountFlagBits samples
,
575 VkImageUsageFlags usage
,
576 VkImageTiling tiling
,
577 uint32_t* pPropertyCount
,
578 VkSparseImageFormatProperties
* pProperties
)
584 pProperties
->imageGranularity
= {4, 4, 4};
585 pProperties
->flags
= VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT
;
587 case VK_FORMAT_D16_UNORM
:
588 case VK_FORMAT_D32_SFLOAT
:
589 pProperties
->aspectMask
= VK_IMAGE_ASPECT_DEPTH_BIT
;
591 case VK_FORMAT_S8_UINT
:
592 pProperties
->aspectMask
= VK_IMAGE_ASPECT_STENCIL_BIT
;
594 case VK_FORMAT_X8_D24_UNORM_PACK32
:
595 case VK_FORMAT_D16_UNORM_S8_UINT
:
596 case VK_FORMAT_D24_UNORM_S8_UINT
:
597 case VK_FORMAT_D32_SFLOAT_S8_UINT
:
598 pProperties
->aspectMask
= VK_IMAGE_ASPECT_DEPTH_BIT
| VK_IMAGE_ASPECT_STENCIL_BIT
;
601 pProperties
->aspectMask
= VK_IMAGE_ASPECT_COLOR_BIT
;
607 static VKAPI_ATTR VkResult VKAPI_CALL
QueueBindSparse(
609 uint32_t bindInfoCount
,
610 const VkBindSparseInfo
* pBindInfo
,
613 //Not a CREATE or DESTROY function
617 static VKAPI_ATTR VkResult VKAPI_CALL
CreateFence(
619 const VkFenceCreateInfo
* pCreateInfo
,
620 const VkAllocationCallbacks
* pAllocator
,
623 unique_lock_t
lock(global_lock
);
624 *pFence
= (VkFence
)global_unique_handle
++;
628 static VKAPI_ATTR
void VKAPI_CALL
DestroyFence(
631 const VkAllocationCallbacks
* pAllocator
)
636 static VKAPI_ATTR VkResult VKAPI_CALL
ResetFences(
639 const VkFence
* pFences
)
641 //Not a CREATE or DESTROY function
645 static VKAPI_ATTR VkResult VKAPI_CALL
GetFenceStatus(
649 //Not a CREATE or DESTROY function
653 static VKAPI_ATTR VkResult VKAPI_CALL
WaitForFences(
656 const VkFence
* pFences
,
660 //Not a CREATE or DESTROY function
664 static VKAPI_ATTR VkResult VKAPI_CALL
CreateSemaphore(
666 const VkSemaphoreCreateInfo
* pCreateInfo
,
667 const VkAllocationCallbacks
* pAllocator
,
668 VkSemaphore
* pSemaphore
)
670 unique_lock_t
lock(global_lock
);
671 *pSemaphore
= (VkSemaphore
)global_unique_handle
++;
675 static VKAPI_ATTR
void VKAPI_CALL
DestroySemaphore(
677 VkSemaphore semaphore
,
678 const VkAllocationCallbacks
* pAllocator
)
683 static VKAPI_ATTR VkResult VKAPI_CALL
CreateEvent(
685 const VkEventCreateInfo
* pCreateInfo
,
686 const VkAllocationCallbacks
* pAllocator
,
689 unique_lock_t
lock(global_lock
);
690 *pEvent
= (VkEvent
)global_unique_handle
++;
694 static VKAPI_ATTR
void VKAPI_CALL
DestroyEvent(
697 const VkAllocationCallbacks
* pAllocator
)
702 static VKAPI_ATTR VkResult VKAPI_CALL
GetEventStatus(
706 //Not a CREATE or DESTROY function
710 static VKAPI_ATTR VkResult VKAPI_CALL
SetEvent(
714 //Not a CREATE or DESTROY function
718 static VKAPI_ATTR VkResult VKAPI_CALL
ResetEvent(
722 //Not a CREATE or DESTROY function
726 static VKAPI_ATTR VkResult VKAPI_CALL
CreateQueryPool(
728 const VkQueryPoolCreateInfo
* pCreateInfo
,
729 const VkAllocationCallbacks
* pAllocator
,
730 VkQueryPool
* pQueryPool
)
732 unique_lock_t
lock(global_lock
);
733 *pQueryPool
= (VkQueryPool
)global_unique_handle
++;
737 static VKAPI_ATTR
void VKAPI_CALL
DestroyQueryPool(
739 VkQueryPool queryPool
,
740 const VkAllocationCallbacks
* pAllocator
)
745 static VKAPI_ATTR VkResult VKAPI_CALL
GetQueryPoolResults(
747 VkQueryPool queryPool
,
753 VkQueryResultFlags flags
)
755 //Not a CREATE or DESTROY function
759 static VKAPI_ATTR VkResult VKAPI_CALL
CreateBuffer(
761 const VkBufferCreateInfo
* pCreateInfo
,
762 const VkAllocationCallbacks
* pAllocator
,
765 unique_lock_t
lock(global_lock
);
766 *pBuffer
= (VkBuffer
)global_unique_handle
++;
767 buffer_map
[device
][*pBuffer
] = {
769 current_available_address
771 current_available_address
+= pCreateInfo
->size
;
772 // Always align to next 64-bit pointer
773 const uint64_t alignment
= current_available_address
% 64;
774 if (alignment
!= 0) {
775 current_available_address
+= (64 - alignment
);
780 static VKAPI_ATTR
void VKAPI_CALL
DestroyBuffer(
783 const VkAllocationCallbacks
* pAllocator
)
785 unique_lock_t
lock(global_lock
);
786 buffer_map
[device
].erase(buffer
);
789 static VKAPI_ATTR VkResult VKAPI_CALL
CreateBufferView(
791 const VkBufferViewCreateInfo
* pCreateInfo
,
792 const VkAllocationCallbacks
* pAllocator
,
795 unique_lock_t
lock(global_lock
);
796 *pView
= (VkBufferView
)global_unique_handle
++;
800 static VKAPI_ATTR
void VKAPI_CALL
DestroyBufferView(
802 VkBufferView bufferView
,
803 const VkAllocationCallbacks
* pAllocator
)
808 static VKAPI_ATTR VkResult VKAPI_CALL
CreateImage(
810 const VkImageCreateInfo
* pCreateInfo
,
811 const VkAllocationCallbacks
* pAllocator
,
814 unique_lock_t
lock(global_lock
);
815 *pImage
= (VkImage
)global_unique_handle
++;
816 image_memory_size_map
[device
][*pImage
] = GetImageSizeFromCreateInfo(pCreateInfo
);
820 static VKAPI_ATTR
void VKAPI_CALL
DestroyImage(
823 const VkAllocationCallbacks
* pAllocator
)
825 unique_lock_t
lock(global_lock
);
826 image_memory_size_map
[device
].erase(image
);
829 static VKAPI_ATTR
void VKAPI_CALL
GetImageSubresourceLayout(
832 const VkImageSubresource
* pSubresource
,
833 VkSubresourceLayout
* pLayout
)
835 // Need safe values. Callers are computing memory offsets from pLayout, with no return code to flag failure.
836 *pLayout
= VkSubresourceLayout(); // Default constructor zero values.
839 static VKAPI_ATTR VkResult VKAPI_CALL
CreateImageView(
841 const VkImageViewCreateInfo
* pCreateInfo
,
842 const VkAllocationCallbacks
* pAllocator
,
845 unique_lock_t
lock(global_lock
);
846 *pView
= (VkImageView
)global_unique_handle
++;
850 static VKAPI_ATTR
void VKAPI_CALL
DestroyImageView(
852 VkImageView imageView
,
853 const VkAllocationCallbacks
* pAllocator
)
858 static VKAPI_ATTR VkResult VKAPI_CALL
CreateShaderModule(
860 const VkShaderModuleCreateInfo
* pCreateInfo
,
861 const VkAllocationCallbacks
* pAllocator
,
862 VkShaderModule
* pShaderModule
)
864 unique_lock_t
lock(global_lock
);
865 *pShaderModule
= (VkShaderModule
)global_unique_handle
++;
869 static VKAPI_ATTR
void VKAPI_CALL
DestroyShaderModule(
871 VkShaderModule shaderModule
,
872 const VkAllocationCallbacks
* pAllocator
)
877 static VKAPI_ATTR VkResult VKAPI_CALL
CreatePipelineCache(
879 const VkPipelineCacheCreateInfo
* pCreateInfo
,
880 const VkAllocationCallbacks
* pAllocator
,
881 VkPipelineCache
* pPipelineCache
)
883 unique_lock_t
lock(global_lock
);
884 *pPipelineCache
= (VkPipelineCache
)global_unique_handle
++;
888 static VKAPI_ATTR
void VKAPI_CALL
DestroyPipelineCache(
890 VkPipelineCache pipelineCache
,
891 const VkAllocationCallbacks
* pAllocator
)
896 static VKAPI_ATTR VkResult VKAPI_CALL
GetPipelineCacheData(
898 VkPipelineCache pipelineCache
,
902 //Not a CREATE or DESTROY function
906 static VKAPI_ATTR VkResult VKAPI_CALL
MergePipelineCaches(
908 VkPipelineCache dstCache
,
909 uint32_t srcCacheCount
,
910 const VkPipelineCache
* pSrcCaches
)
912 //Not a CREATE or DESTROY function
916 static VKAPI_ATTR VkResult VKAPI_CALL
CreateGraphicsPipelines(
918 VkPipelineCache pipelineCache
,
919 uint32_t createInfoCount
,
920 const VkGraphicsPipelineCreateInfo
* pCreateInfos
,
921 const VkAllocationCallbacks
* pAllocator
,
922 VkPipeline
* pPipelines
)
924 unique_lock_t
lock(global_lock
);
925 for (uint32_t i
= 0; i
< createInfoCount
; ++i
) {
926 pPipelines
[i
] = (VkPipeline
)global_unique_handle
++;
931 static VKAPI_ATTR VkResult VKAPI_CALL
CreateComputePipelines(
933 VkPipelineCache pipelineCache
,
934 uint32_t createInfoCount
,
935 const VkComputePipelineCreateInfo
* pCreateInfos
,
936 const VkAllocationCallbacks
* pAllocator
,
937 VkPipeline
* pPipelines
)
939 unique_lock_t
lock(global_lock
);
940 for (uint32_t i
= 0; i
< createInfoCount
; ++i
) {
941 pPipelines
[i
] = (VkPipeline
)global_unique_handle
++;
946 static VKAPI_ATTR
void VKAPI_CALL
DestroyPipeline(
949 const VkAllocationCallbacks
* pAllocator
)
954 static VKAPI_ATTR VkResult VKAPI_CALL
CreatePipelineLayout(
956 const VkPipelineLayoutCreateInfo
* pCreateInfo
,
957 const VkAllocationCallbacks
* pAllocator
,
958 VkPipelineLayout
* pPipelineLayout
)
960 unique_lock_t
lock(global_lock
);
961 *pPipelineLayout
= (VkPipelineLayout
)global_unique_handle
++;
965 static VKAPI_ATTR
void VKAPI_CALL
DestroyPipelineLayout(
967 VkPipelineLayout pipelineLayout
,
968 const VkAllocationCallbacks
* pAllocator
)
973 static VKAPI_ATTR VkResult VKAPI_CALL
CreateSampler(
975 const VkSamplerCreateInfo
* pCreateInfo
,
976 const VkAllocationCallbacks
* pAllocator
,
979 unique_lock_t
lock(global_lock
);
980 *pSampler
= (VkSampler
)global_unique_handle
++;
984 static VKAPI_ATTR
void VKAPI_CALL
DestroySampler(
987 const VkAllocationCallbacks
* pAllocator
)
992 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDescriptorSetLayout(
994 const VkDescriptorSetLayoutCreateInfo
* pCreateInfo
,
995 const VkAllocationCallbacks
* pAllocator
,
996 VkDescriptorSetLayout
* pSetLayout
)
998 unique_lock_t
lock(global_lock
);
999 *pSetLayout
= (VkDescriptorSetLayout
)global_unique_handle
++;
1003 static VKAPI_ATTR
void VKAPI_CALL
DestroyDescriptorSetLayout(
1005 VkDescriptorSetLayout descriptorSetLayout
,
1006 const VkAllocationCallbacks
* pAllocator
)
1011 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDescriptorPool(
1013 const VkDescriptorPoolCreateInfo
* pCreateInfo
,
1014 const VkAllocationCallbacks
* pAllocator
,
1015 VkDescriptorPool
* pDescriptorPool
)
1017 unique_lock_t
lock(global_lock
);
1018 *pDescriptorPool
= (VkDescriptorPool
)global_unique_handle
++;
1022 static VKAPI_ATTR
void VKAPI_CALL
DestroyDescriptorPool(
1024 VkDescriptorPool descriptorPool
,
1025 const VkAllocationCallbacks
* pAllocator
)
1030 static VKAPI_ATTR VkResult VKAPI_CALL
ResetDescriptorPool(
1032 VkDescriptorPool descriptorPool
,
1033 VkDescriptorPoolResetFlags flags
)
1035 //Not a CREATE or DESTROY function
1039 static VKAPI_ATTR VkResult VKAPI_CALL
AllocateDescriptorSets(
1041 const VkDescriptorSetAllocateInfo
* pAllocateInfo
,
1042 VkDescriptorSet
* pDescriptorSets
)
1044 unique_lock_t
lock(global_lock
);
1045 for (uint32_t i
= 0; i
< pAllocateInfo
->descriptorSetCount
; ++i
) {
1046 pDescriptorSets
[i
] = (VkDescriptorSet
)global_unique_handle
++;
1051 static VKAPI_ATTR VkResult VKAPI_CALL
FreeDescriptorSets(
1053 VkDescriptorPool descriptorPool
,
1054 uint32_t descriptorSetCount
,
1055 const VkDescriptorSet
* pDescriptorSets
)
1061 static VKAPI_ATTR
void VKAPI_CALL
UpdateDescriptorSets(
1063 uint32_t descriptorWriteCount
,
1064 const VkWriteDescriptorSet
* pDescriptorWrites
,
1065 uint32_t descriptorCopyCount
,
1066 const VkCopyDescriptorSet
* pDescriptorCopies
)
1068 //Not a CREATE or DESTROY function
1071 static VKAPI_ATTR VkResult VKAPI_CALL
CreateFramebuffer(
1073 const VkFramebufferCreateInfo
* pCreateInfo
,
1074 const VkAllocationCallbacks
* pAllocator
,
1075 VkFramebuffer
* pFramebuffer
)
1077 unique_lock_t
lock(global_lock
);
1078 *pFramebuffer
= (VkFramebuffer
)global_unique_handle
++;
1082 static VKAPI_ATTR
void VKAPI_CALL
DestroyFramebuffer(
1084 VkFramebuffer framebuffer
,
1085 const VkAllocationCallbacks
* pAllocator
)
1090 static VKAPI_ATTR VkResult VKAPI_CALL
CreateRenderPass(
1092 const VkRenderPassCreateInfo
* pCreateInfo
,
1093 const VkAllocationCallbacks
* pAllocator
,
1094 VkRenderPass
* pRenderPass
)
1096 unique_lock_t
lock(global_lock
);
1097 *pRenderPass
= (VkRenderPass
)global_unique_handle
++;
1101 static VKAPI_ATTR
void VKAPI_CALL
DestroyRenderPass(
1103 VkRenderPass renderPass
,
1104 const VkAllocationCallbacks
* pAllocator
)
1109 static VKAPI_ATTR
void VKAPI_CALL
GetRenderAreaGranularity(
1111 VkRenderPass renderPass
,
1112 VkExtent2D
* pGranularity
)
1114 pGranularity
->width
= 1;
1115 pGranularity
->height
= 1;
1118 static VKAPI_ATTR VkResult VKAPI_CALL
CreateCommandPool(
1120 const VkCommandPoolCreateInfo
* pCreateInfo
,
1121 const VkAllocationCallbacks
* pAllocator
,
1122 VkCommandPool
* pCommandPool
)
1124 unique_lock_t
lock(global_lock
);
1125 *pCommandPool
= (VkCommandPool
)global_unique_handle
++;
1126 command_pool_map
[device
].insert(*pCommandPool
);
1130 static VKAPI_ATTR
void VKAPI_CALL
DestroyCommandPool(
1132 VkCommandPool commandPool
,
1133 const VkAllocationCallbacks
* pAllocator
)
1136 // destroy command buffers for this pool
1137 unique_lock_t
lock(global_lock
);
1138 auto it
= command_pool_buffer_map
.find(commandPool
);
1139 if (it
!= command_pool_buffer_map
.end()) {
1140 for (auto& cb
: it
->second
) {
1141 DestroyDispObjHandle((void*) cb
);
1143 command_pool_buffer_map
.erase(it
);
1145 command_pool_map
[device
].erase(commandPool
);
1148 static VKAPI_ATTR VkResult VKAPI_CALL
ResetCommandPool(
1150 VkCommandPool commandPool
,
1151 VkCommandPoolResetFlags flags
)
1153 //Not a CREATE or DESTROY function
1157 static VKAPI_ATTR VkResult VKAPI_CALL
AllocateCommandBuffers(
1159 const VkCommandBufferAllocateInfo
* pAllocateInfo
,
1160 VkCommandBuffer
* pCommandBuffers
)
1163 unique_lock_t
lock(global_lock
);
1164 for (uint32_t i
= 0; i
< pAllocateInfo
->commandBufferCount
; ++i
) {
1165 pCommandBuffers
[i
] = (VkCommandBuffer
)CreateDispObjHandle();
1166 command_pool_buffer_map
[pAllocateInfo
->commandPool
].push_back(pCommandBuffers
[i
]);
1171 static VKAPI_ATTR
void VKAPI_CALL
FreeCommandBuffers(
1173 VkCommandPool commandPool
,
1174 uint32_t commandBufferCount
,
1175 const VkCommandBuffer
* pCommandBuffers
)
1178 unique_lock_t
lock(global_lock
);
1179 for (auto i
= 0u; i
< commandBufferCount
; ++i
) {
1180 if (!pCommandBuffers
[i
]) {
1184 for (auto& pair
: command_pool_buffer_map
) {
1185 auto& cbs
= pair
.second
;
1186 auto it
= std::find(cbs
.begin(), cbs
.end(), pCommandBuffers
[i
]);
1187 if (it
!= cbs
.end()) {
1192 DestroyDispObjHandle((void*) pCommandBuffers
[i
]);
1196 static VKAPI_ATTR VkResult VKAPI_CALL
BeginCommandBuffer(
1197 VkCommandBuffer commandBuffer
,
1198 const VkCommandBufferBeginInfo
* pBeginInfo
)
1200 //Not a CREATE or DESTROY function
1204 static VKAPI_ATTR VkResult VKAPI_CALL
EndCommandBuffer(
1205 VkCommandBuffer commandBuffer
)
1207 //Not a CREATE or DESTROY function
1211 static VKAPI_ATTR VkResult VKAPI_CALL
ResetCommandBuffer(
1212 VkCommandBuffer commandBuffer
,
1213 VkCommandBufferResetFlags flags
)
1215 //Not a CREATE or DESTROY function
1219 static VKAPI_ATTR
void VKAPI_CALL
CmdBindPipeline(
1220 VkCommandBuffer commandBuffer
,
1221 VkPipelineBindPoint pipelineBindPoint
,
1222 VkPipeline pipeline
)
1224 //Not a CREATE or DESTROY function
1227 static VKAPI_ATTR
void VKAPI_CALL
CmdSetViewport(
1228 VkCommandBuffer commandBuffer
,
1229 uint32_t firstViewport
,
1230 uint32_t viewportCount
,
1231 const VkViewport
* pViewports
)
1233 //Not a CREATE or DESTROY function
1236 static VKAPI_ATTR
void VKAPI_CALL
CmdSetScissor(
1237 VkCommandBuffer commandBuffer
,
1238 uint32_t firstScissor
,
1239 uint32_t scissorCount
,
1240 const VkRect2D
* pScissors
)
1242 //Not a CREATE or DESTROY function
1245 static VKAPI_ATTR
void VKAPI_CALL
CmdSetLineWidth(
1246 VkCommandBuffer commandBuffer
,
1249 //Not a CREATE or DESTROY function
1252 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthBias(
1253 VkCommandBuffer commandBuffer
,
1254 float depthBiasConstantFactor
,
1255 float depthBiasClamp
,
1256 float depthBiasSlopeFactor
)
1258 //Not a CREATE or DESTROY function
1261 static VKAPI_ATTR
void VKAPI_CALL
CmdSetBlendConstants(
1262 VkCommandBuffer commandBuffer
,
1263 const float blendConstants
[4])
1265 //Not a CREATE or DESTROY function
1268 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthBounds(
1269 VkCommandBuffer commandBuffer
,
1270 float minDepthBounds
,
1271 float maxDepthBounds
)
1273 //Not a CREATE or DESTROY function
1276 static VKAPI_ATTR
void VKAPI_CALL
CmdSetStencilCompareMask(
1277 VkCommandBuffer commandBuffer
,
1278 VkStencilFaceFlags faceMask
,
1279 uint32_t compareMask
)
1281 //Not a CREATE or DESTROY function
1284 static VKAPI_ATTR
void VKAPI_CALL
CmdSetStencilWriteMask(
1285 VkCommandBuffer commandBuffer
,
1286 VkStencilFaceFlags faceMask
,
1289 //Not a CREATE or DESTROY function
1292 static VKAPI_ATTR
void VKAPI_CALL
CmdSetStencilReference(
1293 VkCommandBuffer commandBuffer
,
1294 VkStencilFaceFlags faceMask
,
1297 //Not a CREATE or DESTROY function
1300 static VKAPI_ATTR
void VKAPI_CALL
CmdBindDescriptorSets(
1301 VkCommandBuffer commandBuffer
,
1302 VkPipelineBindPoint pipelineBindPoint
,
1303 VkPipelineLayout layout
,
1305 uint32_t descriptorSetCount
,
1306 const VkDescriptorSet
* pDescriptorSets
,
1307 uint32_t dynamicOffsetCount
,
1308 const uint32_t* pDynamicOffsets
)
1310 //Not a CREATE or DESTROY function
1313 static VKAPI_ATTR
void VKAPI_CALL
CmdBindIndexBuffer(
1314 VkCommandBuffer commandBuffer
,
1316 VkDeviceSize offset
,
1317 VkIndexType indexType
)
1319 //Not a CREATE or DESTROY function
1322 static VKAPI_ATTR
void VKAPI_CALL
CmdBindVertexBuffers(
1323 VkCommandBuffer commandBuffer
,
1324 uint32_t firstBinding
,
1325 uint32_t bindingCount
,
1326 const VkBuffer
* pBuffers
,
1327 const VkDeviceSize
* pOffsets
)
1329 //Not a CREATE or DESTROY function
1332 static VKAPI_ATTR
void VKAPI_CALL
CmdDraw(
1333 VkCommandBuffer commandBuffer
,
1334 uint32_t vertexCount
,
1335 uint32_t instanceCount
,
1336 uint32_t firstVertex
,
1337 uint32_t firstInstance
)
1339 //Not a CREATE or DESTROY function
1342 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndexed(
1343 VkCommandBuffer commandBuffer
,
1344 uint32_t indexCount
,
1345 uint32_t instanceCount
,
1346 uint32_t firstIndex
,
1347 int32_t vertexOffset
,
1348 uint32_t firstInstance
)
1350 //Not a CREATE or DESTROY function
1353 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndirect(
1354 VkCommandBuffer commandBuffer
,
1356 VkDeviceSize offset
,
1360 //Not a CREATE or DESTROY function
1363 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndexedIndirect(
1364 VkCommandBuffer commandBuffer
,
1366 VkDeviceSize offset
,
1370 //Not a CREATE or DESTROY function
1373 static VKAPI_ATTR
void VKAPI_CALL
CmdDispatch(
1374 VkCommandBuffer commandBuffer
,
1375 uint32_t groupCountX
,
1376 uint32_t groupCountY
,
1377 uint32_t groupCountZ
)
1379 //Not a CREATE or DESTROY function
1382 static VKAPI_ATTR
void VKAPI_CALL
CmdDispatchIndirect(
1383 VkCommandBuffer commandBuffer
,
1385 VkDeviceSize offset
)
1387 //Not a CREATE or DESTROY function
1390 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyBuffer(
1391 VkCommandBuffer commandBuffer
,
1394 uint32_t regionCount
,
1395 const VkBufferCopy
* pRegions
)
1397 //Not a CREATE or DESTROY function
1400 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyImage(
1401 VkCommandBuffer commandBuffer
,
1403 VkImageLayout srcImageLayout
,
1405 VkImageLayout dstImageLayout
,
1406 uint32_t regionCount
,
1407 const VkImageCopy
* pRegions
)
1409 //Not a CREATE or DESTROY function
1412 static VKAPI_ATTR
void VKAPI_CALL
CmdBlitImage(
1413 VkCommandBuffer commandBuffer
,
1415 VkImageLayout srcImageLayout
,
1417 VkImageLayout dstImageLayout
,
1418 uint32_t regionCount
,
1419 const VkImageBlit
* pRegions
,
1422 //Not a CREATE or DESTROY function
1425 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyBufferToImage(
1426 VkCommandBuffer commandBuffer
,
1429 VkImageLayout dstImageLayout
,
1430 uint32_t regionCount
,
1431 const VkBufferImageCopy
* pRegions
)
1433 //Not a CREATE or DESTROY function
1436 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyImageToBuffer(
1437 VkCommandBuffer commandBuffer
,
1439 VkImageLayout srcImageLayout
,
1441 uint32_t regionCount
,
1442 const VkBufferImageCopy
* pRegions
)
1444 //Not a CREATE or DESTROY function
1447 static VKAPI_ATTR
void VKAPI_CALL
CmdUpdateBuffer(
1448 VkCommandBuffer commandBuffer
,
1450 VkDeviceSize dstOffset
,
1451 VkDeviceSize dataSize
,
1454 //Not a CREATE or DESTROY function
1457 static VKAPI_ATTR
void VKAPI_CALL
CmdFillBuffer(
1458 VkCommandBuffer commandBuffer
,
1460 VkDeviceSize dstOffset
,
1464 //Not a CREATE or DESTROY function
1467 static VKAPI_ATTR
void VKAPI_CALL
CmdClearColorImage(
1468 VkCommandBuffer commandBuffer
,
1470 VkImageLayout imageLayout
,
1471 const VkClearColorValue
* pColor
,
1472 uint32_t rangeCount
,
1473 const VkImageSubresourceRange
* pRanges
)
1475 //Not a CREATE or DESTROY function
1478 static VKAPI_ATTR
void VKAPI_CALL
CmdClearDepthStencilImage(
1479 VkCommandBuffer commandBuffer
,
1481 VkImageLayout imageLayout
,
1482 const VkClearDepthStencilValue
* pDepthStencil
,
1483 uint32_t rangeCount
,
1484 const VkImageSubresourceRange
* pRanges
)
1486 //Not a CREATE or DESTROY function
1489 static VKAPI_ATTR
void VKAPI_CALL
CmdClearAttachments(
1490 VkCommandBuffer commandBuffer
,
1491 uint32_t attachmentCount
,
1492 const VkClearAttachment
* pAttachments
,
1494 const VkClearRect
* pRects
)
1496 //Not a CREATE or DESTROY function
1499 static VKAPI_ATTR
void VKAPI_CALL
CmdResolveImage(
1500 VkCommandBuffer commandBuffer
,
1502 VkImageLayout srcImageLayout
,
1504 VkImageLayout dstImageLayout
,
1505 uint32_t regionCount
,
1506 const VkImageResolve
* pRegions
)
1508 //Not a CREATE or DESTROY function
1511 static VKAPI_ATTR
void VKAPI_CALL
CmdSetEvent(
1512 VkCommandBuffer commandBuffer
,
1514 VkPipelineStageFlags stageMask
)
1516 //Not a CREATE or DESTROY function
1519 static VKAPI_ATTR
void VKAPI_CALL
CmdResetEvent(
1520 VkCommandBuffer commandBuffer
,
1522 VkPipelineStageFlags stageMask
)
1524 //Not a CREATE or DESTROY function
1527 static VKAPI_ATTR
void VKAPI_CALL
CmdWaitEvents(
1528 VkCommandBuffer commandBuffer
,
1529 uint32_t eventCount
,
1530 const VkEvent
* pEvents
,
1531 VkPipelineStageFlags srcStageMask
,
1532 VkPipelineStageFlags dstStageMask
,
1533 uint32_t memoryBarrierCount
,
1534 const VkMemoryBarrier
* pMemoryBarriers
,
1535 uint32_t bufferMemoryBarrierCount
,
1536 const VkBufferMemoryBarrier
* pBufferMemoryBarriers
,
1537 uint32_t imageMemoryBarrierCount
,
1538 const VkImageMemoryBarrier
* pImageMemoryBarriers
)
1540 //Not a CREATE or DESTROY function
1543 static VKAPI_ATTR
void VKAPI_CALL
CmdPipelineBarrier(
1544 VkCommandBuffer commandBuffer
,
1545 VkPipelineStageFlags srcStageMask
,
1546 VkPipelineStageFlags dstStageMask
,
1547 VkDependencyFlags dependencyFlags
,
1548 uint32_t memoryBarrierCount
,
1549 const VkMemoryBarrier
* pMemoryBarriers
,
1550 uint32_t bufferMemoryBarrierCount
,
1551 const VkBufferMemoryBarrier
* pBufferMemoryBarriers
,
1552 uint32_t imageMemoryBarrierCount
,
1553 const VkImageMemoryBarrier
* pImageMemoryBarriers
)
1555 //Not a CREATE or DESTROY function
1558 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginQuery(
1559 VkCommandBuffer commandBuffer
,
1560 VkQueryPool queryPool
,
1562 VkQueryControlFlags flags
)
1564 //Not a CREATE or DESTROY function
1567 static VKAPI_ATTR
void VKAPI_CALL
CmdEndQuery(
1568 VkCommandBuffer commandBuffer
,
1569 VkQueryPool queryPool
,
1572 //Not a CREATE or DESTROY function
1575 static VKAPI_ATTR
void VKAPI_CALL
CmdResetQueryPool(
1576 VkCommandBuffer commandBuffer
,
1577 VkQueryPool queryPool
,
1578 uint32_t firstQuery
,
1579 uint32_t queryCount
)
1581 //Not a CREATE or DESTROY function
1584 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteTimestamp(
1585 VkCommandBuffer commandBuffer
,
1586 VkPipelineStageFlagBits pipelineStage
,
1587 VkQueryPool queryPool
,
1590 //Not a CREATE or DESTROY function
1593 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyQueryPoolResults(
1594 VkCommandBuffer commandBuffer
,
1595 VkQueryPool queryPool
,
1596 uint32_t firstQuery
,
1597 uint32_t queryCount
,
1599 VkDeviceSize dstOffset
,
1600 VkDeviceSize stride
,
1601 VkQueryResultFlags flags
)
1603 //Not a CREATE or DESTROY function
1606 static VKAPI_ATTR
void VKAPI_CALL
CmdPushConstants(
1607 VkCommandBuffer commandBuffer
,
1608 VkPipelineLayout layout
,
1609 VkShaderStageFlags stageFlags
,
1612 const void* pValues
)
1614 //Not a CREATE or DESTROY function
1617 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginRenderPass(
1618 VkCommandBuffer commandBuffer
,
1619 const VkRenderPassBeginInfo
* pRenderPassBegin
,
1620 VkSubpassContents contents
)
1622 //Not a CREATE or DESTROY function
1625 static VKAPI_ATTR
void VKAPI_CALL
CmdNextSubpass(
1626 VkCommandBuffer commandBuffer
,
1627 VkSubpassContents contents
)
1629 //Not a CREATE or DESTROY function
1632 static VKAPI_ATTR
void VKAPI_CALL
CmdEndRenderPass(
1633 VkCommandBuffer commandBuffer
)
1635 //Not a CREATE or DESTROY function
1638 static VKAPI_ATTR
void VKAPI_CALL
CmdExecuteCommands(
1639 VkCommandBuffer commandBuffer
,
1640 uint32_t commandBufferCount
,
1641 const VkCommandBuffer
* pCommandBuffers
)
1643 //Not a CREATE or DESTROY function
1647 static VKAPI_ATTR VkResult VKAPI_CALL
EnumerateInstanceVersion(
1648 uint32_t* pApiVersion
)
1651 *pApiVersion
= VK_HEADER_VERSION_COMPLETE
;
1655 static VKAPI_ATTR VkResult VKAPI_CALL
BindBufferMemory2(
1657 uint32_t bindInfoCount
,
1658 const VkBindBufferMemoryInfo
* pBindInfos
)
1660 //Not a CREATE or DESTROY function
1664 static VKAPI_ATTR VkResult VKAPI_CALL
BindImageMemory2(
1666 uint32_t bindInfoCount
,
1667 const VkBindImageMemoryInfo
* pBindInfos
)
1669 //Not a CREATE or DESTROY function
1673 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceGroupPeerMemoryFeatures(
1676 uint32_t localDeviceIndex
,
1677 uint32_t remoteDeviceIndex
,
1678 VkPeerMemoryFeatureFlags
* pPeerMemoryFeatures
)
1680 //Not a CREATE or DESTROY function
1683 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDeviceMask(
1684 VkCommandBuffer commandBuffer
,
1685 uint32_t deviceMask
)
1687 //Not a CREATE or DESTROY function
1690 static VKAPI_ATTR
void VKAPI_CALL
CmdDispatchBase(
1691 VkCommandBuffer commandBuffer
,
1692 uint32_t baseGroupX
,
1693 uint32_t baseGroupY
,
1694 uint32_t baseGroupZ
,
1695 uint32_t groupCountX
,
1696 uint32_t groupCountY
,
1697 uint32_t groupCountZ
)
1699 //Not a CREATE or DESTROY function
1702 static VKAPI_ATTR VkResult VKAPI_CALL
EnumeratePhysicalDeviceGroups(
1703 VkInstance instance
,
1704 uint32_t* pPhysicalDeviceGroupCount
,
1705 VkPhysicalDeviceGroupProperties
* pPhysicalDeviceGroupProperties
)
1707 return EnumeratePhysicalDeviceGroupsKHR(instance
, pPhysicalDeviceGroupCount
, pPhysicalDeviceGroupProperties
);
1710 static VKAPI_ATTR
void VKAPI_CALL
GetImageMemoryRequirements2(
1712 const VkImageMemoryRequirementsInfo2
* pInfo
,
1713 VkMemoryRequirements2
* pMemoryRequirements
)
1715 GetImageMemoryRequirements2KHR(device
, pInfo
, pMemoryRequirements
);
1718 static VKAPI_ATTR
void VKAPI_CALL
GetBufferMemoryRequirements2(
1720 const VkBufferMemoryRequirementsInfo2
* pInfo
,
1721 VkMemoryRequirements2
* pMemoryRequirements
)
1723 GetBufferMemoryRequirements2KHR(device
, pInfo
, pMemoryRequirements
);
1726 static VKAPI_ATTR
void VKAPI_CALL
GetImageSparseMemoryRequirements2(
1728 const VkImageSparseMemoryRequirementsInfo2
* pInfo
,
1729 uint32_t* pSparseMemoryRequirementCount
,
1730 VkSparseImageMemoryRequirements2
* pSparseMemoryRequirements
)
1732 GetImageSparseMemoryRequirements2KHR(device
, pInfo
, pSparseMemoryRequirementCount
, pSparseMemoryRequirements
);
1735 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceFeatures2(
1736 VkPhysicalDevice physicalDevice
,
1737 VkPhysicalDeviceFeatures2
* pFeatures
)
1739 GetPhysicalDeviceFeatures2KHR(physicalDevice
, pFeatures
);
1742 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceProperties2(
1743 VkPhysicalDevice physicalDevice
,
1744 VkPhysicalDeviceProperties2
* pProperties
)
1746 GetPhysicalDeviceProperties2KHR(physicalDevice
, pProperties
);
1749 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceFormatProperties2(
1750 VkPhysicalDevice physicalDevice
,
1752 VkFormatProperties2
* pFormatProperties
)
1754 GetPhysicalDeviceFormatProperties2KHR(physicalDevice
, format
, pFormatProperties
);
1757 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceImageFormatProperties2(
1758 VkPhysicalDevice physicalDevice
,
1759 const VkPhysicalDeviceImageFormatInfo2
* pImageFormatInfo
,
1760 VkImageFormatProperties2
* pImageFormatProperties
)
1762 return GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice
, pImageFormatInfo
, pImageFormatProperties
);
1765 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceQueueFamilyProperties2(
1766 VkPhysicalDevice physicalDevice
,
1767 uint32_t* pQueueFamilyPropertyCount
,
1768 VkQueueFamilyProperties2
* pQueueFamilyProperties
)
1770 GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice
, pQueueFamilyPropertyCount
, pQueueFamilyProperties
);
1773 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceMemoryProperties2(
1774 VkPhysicalDevice physicalDevice
,
1775 VkPhysicalDeviceMemoryProperties2
* pMemoryProperties
)
1777 GetPhysicalDeviceMemoryProperties2KHR(physicalDevice
, pMemoryProperties
);
1780 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceSparseImageFormatProperties2(
1781 VkPhysicalDevice physicalDevice
,
1782 const VkPhysicalDeviceSparseImageFormatInfo2
* pFormatInfo
,
1783 uint32_t* pPropertyCount
,
1784 VkSparseImageFormatProperties2
* pProperties
)
1786 GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice
, pFormatInfo
, pPropertyCount
, pProperties
);
1789 static VKAPI_ATTR
void VKAPI_CALL
TrimCommandPool(
1791 VkCommandPool commandPool
,
1792 VkCommandPoolTrimFlags flags
)
1794 //Not a CREATE or DESTROY function
1797 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceQueue2(
1799 const VkDeviceQueueInfo2
* pQueueInfo
,
1802 GetDeviceQueue(device
, pQueueInfo
->queueFamilyIndex
, pQueueInfo
->queueIndex
, pQueue
);
1803 // TODO: Add further support for GetDeviceQueue2 features
1806 static VKAPI_ATTR VkResult VKAPI_CALL
CreateSamplerYcbcrConversion(
1808 const VkSamplerYcbcrConversionCreateInfo
* pCreateInfo
,
1809 const VkAllocationCallbacks
* pAllocator
,
1810 VkSamplerYcbcrConversion
* pYcbcrConversion
)
1812 unique_lock_t
lock(global_lock
);
1813 *pYcbcrConversion
= (VkSamplerYcbcrConversion
)global_unique_handle
++;
1817 static VKAPI_ATTR
void VKAPI_CALL
DestroySamplerYcbcrConversion(
1819 VkSamplerYcbcrConversion ycbcrConversion
,
1820 const VkAllocationCallbacks
* pAllocator
)
1825 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDescriptorUpdateTemplate(
1827 const VkDescriptorUpdateTemplateCreateInfo
* pCreateInfo
,
1828 const VkAllocationCallbacks
* pAllocator
,
1829 VkDescriptorUpdateTemplate
* pDescriptorUpdateTemplate
)
1831 unique_lock_t
lock(global_lock
);
1832 *pDescriptorUpdateTemplate
= (VkDescriptorUpdateTemplate
)global_unique_handle
++;
1836 static VKAPI_ATTR
void VKAPI_CALL
DestroyDescriptorUpdateTemplate(
1838 VkDescriptorUpdateTemplate descriptorUpdateTemplate
,
1839 const VkAllocationCallbacks
* pAllocator
)
1844 static VKAPI_ATTR
void VKAPI_CALL
UpdateDescriptorSetWithTemplate(
1846 VkDescriptorSet descriptorSet
,
1847 VkDescriptorUpdateTemplate descriptorUpdateTemplate
,
1850 //Not a CREATE or DESTROY function
1853 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceExternalBufferProperties(
1854 VkPhysicalDevice physicalDevice
,
1855 const VkPhysicalDeviceExternalBufferInfo
* pExternalBufferInfo
,
1856 VkExternalBufferProperties
* pExternalBufferProperties
)
1858 constexpr VkExternalMemoryHandleTypeFlags supported_flags
= 0x1FF;
1859 if (pExternalBufferInfo
->handleType
& VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
) {
1860 // Can't have dedicated memory with AHB
1861 pExternalBufferProperties
->externalMemoryProperties
.externalMemoryFeatures
= VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
| VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
;
1862 pExternalBufferProperties
->externalMemoryProperties
.exportFromImportedHandleTypes
= pExternalBufferInfo
->handleType
;
1863 pExternalBufferProperties
->externalMemoryProperties
.compatibleHandleTypes
= pExternalBufferInfo
->handleType
;
1864 } else if (pExternalBufferInfo
->handleType
& supported_flags
) {
1865 pExternalBufferProperties
->externalMemoryProperties
.externalMemoryFeatures
= 0x7;
1866 pExternalBufferProperties
->externalMemoryProperties
.exportFromImportedHandleTypes
= supported_flags
;
1867 pExternalBufferProperties
->externalMemoryProperties
.compatibleHandleTypes
= supported_flags
;
1869 pExternalBufferProperties
->externalMemoryProperties
.externalMemoryFeatures
= 0;
1870 pExternalBufferProperties
->externalMemoryProperties
.exportFromImportedHandleTypes
= 0;
1871 // According to spec, handle type is always compatible with itself. Even if export/import
1872 // not supported, it's important to properly implement self-compatibility property since
1873 // application's control flow can rely on this.
1874 pExternalBufferProperties
->externalMemoryProperties
.compatibleHandleTypes
= pExternalBufferInfo
->handleType
;
1878 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceExternalFenceProperties(
1879 VkPhysicalDevice physicalDevice
,
1880 const VkPhysicalDeviceExternalFenceInfo
* pExternalFenceInfo
,
1881 VkExternalFenceProperties
* pExternalFenceProperties
)
1883 // Hard-code support for all handle types and features
1884 pExternalFenceProperties
->exportFromImportedHandleTypes
= 0xF;
1885 pExternalFenceProperties
->compatibleHandleTypes
= 0xF;
1886 pExternalFenceProperties
->externalFenceFeatures
= 0x3;
1889 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceExternalSemaphoreProperties(
1890 VkPhysicalDevice physicalDevice
,
1891 const VkPhysicalDeviceExternalSemaphoreInfo
* pExternalSemaphoreInfo
,
1892 VkExternalSemaphoreProperties
* pExternalSemaphoreProperties
)
1894 // Hard code support for all handle types and features
1895 pExternalSemaphoreProperties
->exportFromImportedHandleTypes
= 0x1F;
1896 pExternalSemaphoreProperties
->compatibleHandleTypes
= 0x1F;
1897 pExternalSemaphoreProperties
->externalSemaphoreFeatures
= 0x3;
1900 static VKAPI_ATTR
void VKAPI_CALL
GetDescriptorSetLayoutSupport(
1902 const VkDescriptorSetLayoutCreateInfo
* pCreateInfo
,
1903 VkDescriptorSetLayoutSupport
* pSupport
)
1906 pSupport
->supported
= VK_TRUE
;
1911 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndirectCount(
1912 VkCommandBuffer commandBuffer
,
1914 VkDeviceSize offset
,
1915 VkBuffer countBuffer
,
1916 VkDeviceSize countBufferOffset
,
1917 uint32_t maxDrawCount
,
1920 //Not a CREATE or DESTROY function
1923 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndexedIndirectCount(
1924 VkCommandBuffer commandBuffer
,
1926 VkDeviceSize offset
,
1927 VkBuffer countBuffer
,
1928 VkDeviceSize countBufferOffset
,
1929 uint32_t maxDrawCount
,
1932 //Not a CREATE or DESTROY function
1935 static VKAPI_ATTR VkResult VKAPI_CALL
CreateRenderPass2(
1937 const VkRenderPassCreateInfo2
* pCreateInfo
,
1938 const VkAllocationCallbacks
* pAllocator
,
1939 VkRenderPass
* pRenderPass
)
1941 unique_lock_t
lock(global_lock
);
1942 *pRenderPass
= (VkRenderPass
)global_unique_handle
++;
1946 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginRenderPass2(
1947 VkCommandBuffer commandBuffer
,
1948 const VkRenderPassBeginInfo
* pRenderPassBegin
,
1949 const VkSubpassBeginInfo
* pSubpassBeginInfo
)
1951 //Not a CREATE or DESTROY function
1954 static VKAPI_ATTR
void VKAPI_CALL
CmdNextSubpass2(
1955 VkCommandBuffer commandBuffer
,
1956 const VkSubpassBeginInfo
* pSubpassBeginInfo
,
1957 const VkSubpassEndInfo
* pSubpassEndInfo
)
1959 //Not a CREATE or DESTROY function
1962 static VKAPI_ATTR
void VKAPI_CALL
CmdEndRenderPass2(
1963 VkCommandBuffer commandBuffer
,
1964 const VkSubpassEndInfo
* pSubpassEndInfo
)
1966 //Not a CREATE or DESTROY function
1969 static VKAPI_ATTR
void VKAPI_CALL
ResetQueryPool(
1971 VkQueryPool queryPool
,
1972 uint32_t firstQuery
,
1973 uint32_t queryCount
)
1975 //Not a CREATE or DESTROY function
1978 static VKAPI_ATTR VkResult VKAPI_CALL
GetSemaphoreCounterValue(
1980 VkSemaphore semaphore
,
1983 //Not a CREATE or DESTROY function
1987 static VKAPI_ATTR VkResult VKAPI_CALL
WaitSemaphores(
1989 const VkSemaphoreWaitInfo
* pWaitInfo
,
1992 //Not a CREATE or DESTROY function
1996 static VKAPI_ATTR VkResult VKAPI_CALL
SignalSemaphore(
1998 const VkSemaphoreSignalInfo
* pSignalInfo
)
2000 //Not a CREATE or DESTROY function
2004 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL
GetBufferDeviceAddress(
2006 const VkBufferDeviceAddressInfo
* pInfo
)
2008 VkDeviceAddress address
= 0;
2009 auto d_iter
= buffer_map
.find(device
);
2010 if (d_iter
!= buffer_map
.end()) {
2011 auto iter
= d_iter
->second
.find(pInfo
->buffer
);
2012 if (iter
!= d_iter
->second
.end()) {
2013 address
= iter
->second
.address
;
2019 static VKAPI_ATTR
uint64_t VKAPI_CALL
GetBufferOpaqueCaptureAddress(
2021 const VkBufferDeviceAddressInfo
* pInfo
)
2023 //Not a CREATE or DESTROY function
2027 static VKAPI_ATTR
uint64_t VKAPI_CALL
GetDeviceMemoryOpaqueCaptureAddress(
2029 const VkDeviceMemoryOpaqueCaptureAddressInfo
* pInfo
)
2031 //Not a CREATE or DESTROY function
2036 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceToolProperties(
2037 VkPhysicalDevice physicalDevice
,
2038 uint32_t* pToolCount
,
2039 VkPhysicalDeviceToolProperties
* pToolProperties
)
2041 //Not a CREATE or DESTROY function
2045 static VKAPI_ATTR VkResult VKAPI_CALL
CreatePrivateDataSlot(
2047 const VkPrivateDataSlotCreateInfo
* pCreateInfo
,
2048 const VkAllocationCallbacks
* pAllocator
,
2049 VkPrivateDataSlot
* pPrivateDataSlot
)
2051 unique_lock_t
lock(global_lock
);
2052 *pPrivateDataSlot
= (VkPrivateDataSlot
)global_unique_handle
++;
2056 static VKAPI_ATTR
void VKAPI_CALL
DestroyPrivateDataSlot(
2058 VkPrivateDataSlot privateDataSlot
,
2059 const VkAllocationCallbacks
* pAllocator
)
2064 static VKAPI_ATTR VkResult VKAPI_CALL
SetPrivateData(
2066 VkObjectType objectType
,
2067 uint64_t objectHandle
,
2068 VkPrivateDataSlot privateDataSlot
,
2071 //Not a CREATE or DESTROY function
2075 static VKAPI_ATTR
void VKAPI_CALL
GetPrivateData(
2077 VkObjectType objectType
,
2078 uint64_t objectHandle
,
2079 VkPrivateDataSlot privateDataSlot
,
2082 //Not a CREATE or DESTROY function
2085 static VKAPI_ATTR
void VKAPI_CALL
CmdSetEvent2(
2086 VkCommandBuffer commandBuffer
,
2088 const VkDependencyInfo
* pDependencyInfo
)
2090 //Not a CREATE or DESTROY function
2093 static VKAPI_ATTR
void VKAPI_CALL
CmdResetEvent2(
2094 VkCommandBuffer commandBuffer
,
2096 VkPipelineStageFlags2 stageMask
)
2098 //Not a CREATE or DESTROY function
2101 static VKAPI_ATTR
void VKAPI_CALL
CmdWaitEvents2(
2102 VkCommandBuffer commandBuffer
,
2103 uint32_t eventCount
,
2104 const VkEvent
* pEvents
,
2105 const VkDependencyInfo
* pDependencyInfos
)
2107 //Not a CREATE or DESTROY function
2110 static VKAPI_ATTR
void VKAPI_CALL
CmdPipelineBarrier2(
2111 VkCommandBuffer commandBuffer
,
2112 const VkDependencyInfo
* pDependencyInfo
)
2114 //Not a CREATE or DESTROY function
2117 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteTimestamp2(
2118 VkCommandBuffer commandBuffer
,
2119 VkPipelineStageFlags2 stage
,
2120 VkQueryPool queryPool
,
2123 //Not a CREATE or DESTROY function
2126 static VKAPI_ATTR VkResult VKAPI_CALL
QueueSubmit2(
2128 uint32_t submitCount
,
2129 const VkSubmitInfo2
* pSubmits
,
2132 //Not a CREATE or DESTROY function
2136 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyBuffer2(
2137 VkCommandBuffer commandBuffer
,
2138 const VkCopyBufferInfo2
* pCopyBufferInfo
)
2140 //Not a CREATE or DESTROY function
2143 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyImage2(
2144 VkCommandBuffer commandBuffer
,
2145 const VkCopyImageInfo2
* pCopyImageInfo
)
2147 //Not a CREATE or DESTROY function
2150 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyBufferToImage2(
2151 VkCommandBuffer commandBuffer
,
2152 const VkCopyBufferToImageInfo2
* pCopyBufferToImageInfo
)
2154 //Not a CREATE or DESTROY function
2157 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyImageToBuffer2(
2158 VkCommandBuffer commandBuffer
,
2159 const VkCopyImageToBufferInfo2
* pCopyImageToBufferInfo
)
2161 //Not a CREATE or DESTROY function
2164 static VKAPI_ATTR
void VKAPI_CALL
CmdBlitImage2(
2165 VkCommandBuffer commandBuffer
,
2166 const VkBlitImageInfo2
* pBlitImageInfo
)
2168 //Not a CREATE or DESTROY function
2171 static VKAPI_ATTR
void VKAPI_CALL
CmdResolveImage2(
2172 VkCommandBuffer commandBuffer
,
2173 const VkResolveImageInfo2
* pResolveImageInfo
)
2175 //Not a CREATE or DESTROY function
2178 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginRendering(
2179 VkCommandBuffer commandBuffer
,
2180 const VkRenderingInfo
* pRenderingInfo
)
2182 //Not a CREATE or DESTROY function
2185 static VKAPI_ATTR
void VKAPI_CALL
CmdEndRendering(
2186 VkCommandBuffer commandBuffer
)
2188 //Not a CREATE or DESTROY function
2191 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCullMode(
2192 VkCommandBuffer commandBuffer
,
2193 VkCullModeFlags cullMode
)
2195 //Not a CREATE or DESTROY function
2198 static VKAPI_ATTR
void VKAPI_CALL
CmdSetFrontFace(
2199 VkCommandBuffer commandBuffer
,
2200 VkFrontFace frontFace
)
2202 //Not a CREATE or DESTROY function
2205 static VKAPI_ATTR
void VKAPI_CALL
CmdSetPrimitiveTopology(
2206 VkCommandBuffer commandBuffer
,
2207 VkPrimitiveTopology primitiveTopology
)
2209 //Not a CREATE or DESTROY function
2212 static VKAPI_ATTR
void VKAPI_CALL
CmdSetViewportWithCount(
2213 VkCommandBuffer commandBuffer
,
2214 uint32_t viewportCount
,
2215 const VkViewport
* pViewports
)
2217 //Not a CREATE or DESTROY function
2220 static VKAPI_ATTR
void VKAPI_CALL
CmdSetScissorWithCount(
2221 VkCommandBuffer commandBuffer
,
2222 uint32_t scissorCount
,
2223 const VkRect2D
* pScissors
)
2225 //Not a CREATE or DESTROY function
2228 static VKAPI_ATTR
void VKAPI_CALL
CmdBindVertexBuffers2(
2229 VkCommandBuffer commandBuffer
,
2230 uint32_t firstBinding
,
2231 uint32_t bindingCount
,
2232 const VkBuffer
* pBuffers
,
2233 const VkDeviceSize
* pOffsets
,
2234 const VkDeviceSize
* pSizes
,
2235 const VkDeviceSize
* pStrides
)
2237 //Not a CREATE or DESTROY function
2240 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthTestEnable(
2241 VkCommandBuffer commandBuffer
,
2242 VkBool32 depthTestEnable
)
2244 //Not a CREATE or DESTROY function
2247 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthWriteEnable(
2248 VkCommandBuffer commandBuffer
,
2249 VkBool32 depthWriteEnable
)
2251 //Not a CREATE or DESTROY function
2254 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthCompareOp(
2255 VkCommandBuffer commandBuffer
,
2256 VkCompareOp depthCompareOp
)
2258 //Not a CREATE or DESTROY function
2261 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthBoundsTestEnable(
2262 VkCommandBuffer commandBuffer
,
2263 VkBool32 depthBoundsTestEnable
)
2265 //Not a CREATE or DESTROY function
2268 static VKAPI_ATTR
void VKAPI_CALL
CmdSetStencilTestEnable(
2269 VkCommandBuffer commandBuffer
,
2270 VkBool32 stencilTestEnable
)
2272 //Not a CREATE or DESTROY function
2275 static VKAPI_ATTR
void VKAPI_CALL
CmdSetStencilOp(
2276 VkCommandBuffer commandBuffer
,
2277 VkStencilFaceFlags faceMask
,
2280 VkStencilOp depthFailOp
,
2281 VkCompareOp compareOp
)
2283 //Not a CREATE or DESTROY function
2286 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRasterizerDiscardEnable(
2287 VkCommandBuffer commandBuffer
,
2288 VkBool32 rasterizerDiscardEnable
)
2290 //Not a CREATE or DESTROY function
2293 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthBiasEnable(
2294 VkCommandBuffer commandBuffer
,
2295 VkBool32 depthBiasEnable
)
2297 //Not a CREATE or DESTROY function
2300 static VKAPI_ATTR
void VKAPI_CALL
CmdSetPrimitiveRestartEnable(
2301 VkCommandBuffer commandBuffer
,
2302 VkBool32 primitiveRestartEnable
)
2304 //Not a CREATE or DESTROY function
2307 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceBufferMemoryRequirements(
2309 const VkDeviceBufferMemoryRequirements
* pInfo
,
2310 VkMemoryRequirements2
* pMemoryRequirements
)
2312 // TODO: Just hard-coding reqs for now
2313 pMemoryRequirements
->memoryRequirements
.alignment
= 1;
2314 pMemoryRequirements
->memoryRequirements
.memoryTypeBits
= 0xFFFF;
2316 // Return a size based on the buffer size from the create info.
2317 pMemoryRequirements
->memoryRequirements
.size
= ((pInfo
->pCreateInfo
->size
+ 4095) / 4096) * 4096;
2320 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceImageMemoryRequirements(
2322 const VkDeviceImageMemoryRequirements
* pInfo
,
2323 VkMemoryRequirements2
* pMemoryRequirements
)
2325 pMemoryRequirements
->memoryRequirements
.size
= GetImageSizeFromCreateInfo(pInfo
->pCreateInfo
);
2326 pMemoryRequirements
->memoryRequirements
.alignment
= 1;
2327 // Here we hard-code that the memory type at index 3 doesn't support this image.
2328 pMemoryRequirements
->memoryRequirements
.memoryTypeBits
= 0xFFFF & ~(0x1 << 3);
2331 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceImageSparseMemoryRequirements(
2333 const VkDeviceImageMemoryRequirements
* pInfo
,
2334 uint32_t* pSparseMemoryRequirementCount
,
2335 VkSparseImageMemoryRequirements2
* pSparseMemoryRequirements
)
2337 //Not a CREATE or DESTROY function
2341 static VKAPI_ATTR
void VKAPI_CALL
DestroySurfaceKHR(
2342 VkInstance instance
,
2343 VkSurfaceKHR surface
,
2344 const VkAllocationCallbacks
* pAllocator
)
2349 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfaceSupportKHR(
2350 VkPhysicalDevice physicalDevice
,
2351 uint32_t queueFamilyIndex
,
2352 VkSurfaceKHR surface
,
2353 VkBool32
* pSupported
)
2355 // Currently say that all surface/queue combos are supported
2356 *pSupported
= VK_TRUE
;
2360 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfaceCapabilitiesKHR(
2361 VkPhysicalDevice physicalDevice
,
2362 VkSurfaceKHR surface
,
2363 VkSurfaceCapabilitiesKHR
* pSurfaceCapabilities
)
2365 // In general just say max supported is available for requested surface
2366 pSurfaceCapabilities
->minImageCount
= 1;
2367 pSurfaceCapabilities
->maxImageCount
= 0;
2368 pSurfaceCapabilities
->currentExtent
.width
= 0xFFFFFFFF;
2369 pSurfaceCapabilities
->currentExtent
.height
= 0xFFFFFFFF;
2370 pSurfaceCapabilities
->minImageExtent
.width
= 1;
2371 pSurfaceCapabilities
->minImageExtent
.height
= 1;
2372 pSurfaceCapabilities
->maxImageExtent
.width
= 0xFFFF;
2373 pSurfaceCapabilities
->maxImageExtent
.height
= 0xFFFF;
2374 pSurfaceCapabilities
->maxImageArrayLayers
= 128;
2375 pSurfaceCapabilities
->supportedTransforms
= VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
|
2376 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
|
2377 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
|
2378 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
|
2379 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR
|
2380 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR
|
2381 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR
|
2382 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR
|
2383 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
;
2384 pSurfaceCapabilities
->currentTransform
= VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
;
2385 pSurfaceCapabilities
->supportedCompositeAlpha
= VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
|
2386 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR
|
2387 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
|
2388 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
;
2389 pSurfaceCapabilities
->supportedUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
|
2390 VK_IMAGE_USAGE_TRANSFER_DST_BIT
|
2391 VK_IMAGE_USAGE_SAMPLED_BIT
|
2392 VK_IMAGE_USAGE_STORAGE_BIT
|
2393 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
2394 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
2395 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
|
2396 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
;
2400 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfaceFormatsKHR(
2401 VkPhysicalDevice physicalDevice
,
2402 VkSurfaceKHR surface
,
2403 uint32_t* pSurfaceFormatCount
,
2404 VkSurfaceFormatKHR
* pSurfaceFormats
)
2406 // Currently always say that RGBA8 & BGRA8 are supported
2407 if (!pSurfaceFormats
) {
2408 *pSurfaceFormatCount
= 2;
2410 if (*pSurfaceFormatCount
>= 2) {
2411 pSurfaceFormats
[1].format
= VK_FORMAT_R8G8B8A8_UNORM
;
2412 pSurfaceFormats
[1].colorSpace
= VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
;
2414 if (*pSurfaceFormatCount
>= 1) {
2415 pSurfaceFormats
[0].format
= VK_FORMAT_B8G8R8A8_UNORM
;
2416 pSurfaceFormats
[0].colorSpace
= VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
;
2422 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfacePresentModesKHR(
2423 VkPhysicalDevice physicalDevice
,
2424 VkSurfaceKHR surface
,
2425 uint32_t* pPresentModeCount
,
2426 VkPresentModeKHR
* pPresentModes
)
2428 // Currently always say that all present modes are supported
2429 if (!pPresentModes
) {
2430 *pPresentModeCount
= 6;
2432 if (*pPresentModeCount
>= 6) pPresentModes
[5] = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
;
2433 if (*pPresentModeCount
>= 5) pPresentModes
[4] = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
;
2434 if (*pPresentModeCount
>= 4) pPresentModes
[3] = VK_PRESENT_MODE_FIFO_RELAXED_KHR
;
2435 if (*pPresentModeCount
>= 3) pPresentModes
[2] = VK_PRESENT_MODE_FIFO_KHR
;
2436 if (*pPresentModeCount
>= 2) pPresentModes
[1] = VK_PRESENT_MODE_MAILBOX_KHR
;
2437 if (*pPresentModeCount
>= 1) pPresentModes
[0] = VK_PRESENT_MODE_IMMEDIATE_KHR
;
2443 static VKAPI_ATTR VkResult VKAPI_CALL
CreateSwapchainKHR(
2445 const VkSwapchainCreateInfoKHR
* pCreateInfo
,
2446 const VkAllocationCallbacks
* pAllocator
,
2447 VkSwapchainKHR
* pSwapchain
)
2449 unique_lock_t
lock(global_lock
);
2450 *pSwapchain
= (VkSwapchainKHR
)global_unique_handle
++;
2451 for(uint32_t i
= 0; i
< icd_swapchain_image_count
; ++i
){
2452 swapchain_image_map
[*pSwapchain
][i
] = (VkImage
)global_unique_handle
++;
2457 static VKAPI_ATTR
void VKAPI_CALL
DestroySwapchainKHR(
2459 VkSwapchainKHR swapchain
,
2460 const VkAllocationCallbacks
* pAllocator
)
2462 unique_lock_t
lock(global_lock
);
2463 swapchain_image_map
.clear();
2466 static VKAPI_ATTR VkResult VKAPI_CALL
GetSwapchainImagesKHR(
2468 VkSwapchainKHR swapchain
,
2469 uint32_t* pSwapchainImageCount
,
2470 VkImage
* pSwapchainImages
)
2472 if (!pSwapchainImages
) {
2473 *pSwapchainImageCount
= icd_swapchain_image_count
;
2475 unique_lock_t
lock(global_lock
);
2476 for (uint32_t img_i
= 0; img_i
< (std::min
)(*pSwapchainImageCount
, icd_swapchain_image_count
); ++img_i
){
2477 pSwapchainImages
[img_i
] = swapchain_image_map
.at(swapchain
)[img_i
];
2480 if (*pSwapchainImageCount
< icd_swapchain_image_count
) return VK_INCOMPLETE
;
2481 else if (*pSwapchainImageCount
> icd_swapchain_image_count
) *pSwapchainImageCount
= icd_swapchain_image_count
;
2486 static VKAPI_ATTR VkResult VKAPI_CALL
AcquireNextImageKHR(
2488 VkSwapchainKHR swapchain
,
2490 VkSemaphore semaphore
,
2492 uint32_t* pImageIndex
)
2498 static VKAPI_ATTR VkResult VKAPI_CALL
QueuePresentKHR(
2500 const VkPresentInfoKHR
* pPresentInfo
)
2502 //Not a CREATE or DESTROY function
2506 static VKAPI_ATTR VkResult VKAPI_CALL
GetDeviceGroupPresentCapabilitiesKHR(
2508 VkDeviceGroupPresentCapabilitiesKHR
* pDeviceGroupPresentCapabilities
)
2510 //Not a CREATE or DESTROY function
2514 static VKAPI_ATTR VkResult VKAPI_CALL
GetDeviceGroupSurfacePresentModesKHR(
2516 VkSurfaceKHR surface
,
2517 VkDeviceGroupPresentModeFlagsKHR
* pModes
)
2519 //Not a CREATE or DESTROY function
2523 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDevicePresentRectanglesKHR(
2524 VkPhysicalDevice physicalDevice
,
2525 VkSurfaceKHR surface
,
2526 uint32_t* pRectCount
,
2529 //Not a CREATE or DESTROY function
2533 static VKAPI_ATTR VkResult VKAPI_CALL
AcquireNextImage2KHR(
2535 const VkAcquireNextImageInfoKHR
* pAcquireInfo
,
2536 uint32_t* pImageIndex
)
2543 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceDisplayPropertiesKHR(
2544 VkPhysicalDevice physicalDevice
,
2545 uint32_t* pPropertyCount
,
2546 VkDisplayPropertiesKHR
* pProperties
)
2549 *pPropertyCount
= 1;
2551 unique_lock_t
lock(global_lock
);
2552 pProperties
[0].display
= (VkDisplayKHR
)global_unique_handle
++;
2553 display_map
[physicalDevice
].insert(pProperties
[0].display
);
2558 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceDisplayPlanePropertiesKHR(
2559 VkPhysicalDevice physicalDevice
,
2560 uint32_t* pPropertyCount
,
2561 VkDisplayPlanePropertiesKHR
* pProperties
)
2563 //Not a CREATE or DESTROY function
2567 static VKAPI_ATTR VkResult VKAPI_CALL
GetDisplayPlaneSupportedDisplaysKHR(
2568 VkPhysicalDevice physicalDevice
,
2569 uint32_t planeIndex
,
2570 uint32_t* pDisplayCount
,
2571 VkDisplayKHR
* pDisplays
)
2573 //Not a CREATE or DESTROY function
2577 static VKAPI_ATTR VkResult VKAPI_CALL
GetDisplayModePropertiesKHR(
2578 VkPhysicalDevice physicalDevice
,
2579 VkDisplayKHR display
,
2580 uint32_t* pPropertyCount
,
2581 VkDisplayModePropertiesKHR
* pProperties
)
2583 //Not a CREATE or DESTROY function
2587 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDisplayModeKHR(
2588 VkPhysicalDevice physicalDevice
,
2589 VkDisplayKHR display
,
2590 const VkDisplayModeCreateInfoKHR
* pCreateInfo
,
2591 const VkAllocationCallbacks
* pAllocator
,
2592 VkDisplayModeKHR
* pMode
)
2594 unique_lock_t
lock(global_lock
);
2595 *pMode
= (VkDisplayModeKHR
)global_unique_handle
++;
2599 static VKAPI_ATTR VkResult VKAPI_CALL
GetDisplayPlaneCapabilitiesKHR(
2600 VkPhysicalDevice physicalDevice
,
2601 VkDisplayModeKHR mode
,
2602 uint32_t planeIndex
,
2603 VkDisplayPlaneCapabilitiesKHR
* pCapabilities
)
2605 //Not a CREATE or DESTROY function
2609 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDisplayPlaneSurfaceKHR(
2610 VkInstance instance
,
2611 const VkDisplaySurfaceCreateInfoKHR
* pCreateInfo
,
2612 const VkAllocationCallbacks
* pAllocator
,
2613 VkSurfaceKHR
* pSurface
)
2615 unique_lock_t
lock(global_lock
);
2616 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
2621 static VKAPI_ATTR VkResult VKAPI_CALL
CreateSharedSwapchainsKHR(
2623 uint32_t swapchainCount
,
2624 const VkSwapchainCreateInfoKHR
* pCreateInfos
,
2625 const VkAllocationCallbacks
* pAllocator
,
2626 VkSwapchainKHR
* pSwapchains
)
2628 unique_lock_t
lock(global_lock
);
2629 for (uint32_t i
= 0; i
< swapchainCount
; ++i
) {
2630 pSwapchains
[i
] = (VkSwapchainKHR
)global_unique_handle
++;
2635 #ifdef VK_USE_PLATFORM_XLIB_KHR
2637 static VKAPI_ATTR VkResult VKAPI_CALL
CreateXlibSurfaceKHR(
2638 VkInstance instance
,
2639 const VkXlibSurfaceCreateInfoKHR
* pCreateInfo
,
2640 const VkAllocationCallbacks
* pAllocator
,
2641 VkSurfaceKHR
* pSurface
)
2643 unique_lock_t
lock(global_lock
);
2644 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
2648 static VKAPI_ATTR VkBool32 VKAPI_CALL
GetPhysicalDeviceXlibPresentationSupportKHR(
2649 VkPhysicalDevice physicalDevice
,
2650 uint32_t queueFamilyIndex
,
2654 //Not a CREATE or DESTROY function
2657 #endif /* VK_USE_PLATFORM_XLIB_KHR */
2659 #ifdef VK_USE_PLATFORM_XCB_KHR
2661 static VKAPI_ATTR VkResult VKAPI_CALL
CreateXcbSurfaceKHR(
2662 VkInstance instance
,
2663 const VkXcbSurfaceCreateInfoKHR
* pCreateInfo
,
2664 const VkAllocationCallbacks
* pAllocator
,
2665 VkSurfaceKHR
* pSurface
)
2667 unique_lock_t
lock(global_lock
);
2668 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
2672 static VKAPI_ATTR VkBool32 VKAPI_CALL
GetPhysicalDeviceXcbPresentationSupportKHR(
2673 VkPhysicalDevice physicalDevice
,
2674 uint32_t queueFamilyIndex
,
2675 xcb_connection_t
* connection
,
2676 xcb_visualid_t visual_id
)
2678 //Not a CREATE or DESTROY function
2681 #endif /* VK_USE_PLATFORM_XCB_KHR */
2683 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
2685 static VKAPI_ATTR VkResult VKAPI_CALL
CreateWaylandSurfaceKHR(
2686 VkInstance instance
,
2687 const VkWaylandSurfaceCreateInfoKHR
* pCreateInfo
,
2688 const VkAllocationCallbacks
* pAllocator
,
2689 VkSurfaceKHR
* pSurface
)
2691 unique_lock_t
lock(global_lock
);
2692 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
2696 static VKAPI_ATTR VkBool32 VKAPI_CALL
GetPhysicalDeviceWaylandPresentationSupportKHR(
2697 VkPhysicalDevice physicalDevice
,
2698 uint32_t queueFamilyIndex
,
2699 struct wl_display
* display
)
2701 //Not a CREATE or DESTROY function
2704 #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
2706 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2708 static VKAPI_ATTR VkResult VKAPI_CALL
CreateAndroidSurfaceKHR(
2709 VkInstance instance
,
2710 const VkAndroidSurfaceCreateInfoKHR
* pCreateInfo
,
2711 const VkAllocationCallbacks
* pAllocator
,
2712 VkSurfaceKHR
* pSurface
)
2714 unique_lock_t
lock(global_lock
);
2715 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
2718 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
2720 #ifdef VK_USE_PLATFORM_WIN32_KHR
2722 static VKAPI_ATTR VkResult VKAPI_CALL
CreateWin32SurfaceKHR(
2723 VkInstance instance
,
2724 const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
,
2725 const VkAllocationCallbacks
* pAllocator
,
2726 VkSurfaceKHR
* pSurface
)
2728 unique_lock_t
lock(global_lock
);
2729 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
2733 static VKAPI_ATTR VkBool32 VKAPI_CALL
GetPhysicalDeviceWin32PresentationSupportKHR(
2734 VkPhysicalDevice physicalDevice
,
2735 uint32_t queueFamilyIndex
)
2737 //Not a CREATE or DESTROY function
2740 #endif /* VK_USE_PLATFORM_WIN32_KHR */
2744 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceVideoCapabilitiesKHR(
2745 VkPhysicalDevice physicalDevice
,
2746 const VkVideoProfileInfoKHR
* pVideoProfile
,
2747 VkVideoCapabilitiesKHR
* pCapabilities
)
2749 // We include some reasonable set of capability combinations to cover a wide range of use cases
2750 auto caps
= pCapabilities
;
2751 auto caps_decode
= lvl_find_mod_in_chain
<VkVideoDecodeCapabilitiesKHR
>(pCapabilities
->pNext
);
2752 auto caps_decode_h264
= lvl_find_mod_in_chain
<VkVideoDecodeH264CapabilitiesKHR
>(pCapabilities
->pNext
);
2753 auto caps_decode_h265
= lvl_find_mod_in_chain
<VkVideoDecodeH265CapabilitiesKHR
>(pCapabilities
->pNext
);
2754 auto caps_decode_av1
= lvl_find_mod_in_chain
<VkVideoDecodeAV1CapabilitiesKHR
>(pCapabilities
->pNext
);
2755 auto caps_encode
= lvl_find_mod_in_chain
<VkVideoEncodeCapabilitiesKHR
>(pCapabilities
->pNext
);
2756 auto caps_encode_h264
= lvl_find_mod_in_chain
<VkVideoEncodeH264CapabilitiesKHR
>(pCapabilities
->pNext
);
2757 auto caps_encode_h265
= lvl_find_mod_in_chain
<VkVideoEncodeH265CapabilitiesKHR
>(pCapabilities
->pNext
);
2759 switch (pVideoProfile
->videoCodecOperation
) {
2760 case VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR
: {
2761 auto profile
= lvl_find_in_chain
<VkVideoDecodeH264ProfileInfoKHR
>(pVideoProfile
->pNext
);
2762 if (profile
->stdProfileIdc
!= STD_VIDEO_H264_PROFILE_IDC_BASELINE
&&
2763 profile
->stdProfileIdc
!= STD_VIDEO_H264_PROFILE_IDC_MAIN
) {
2764 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2767 caps
->flags
= VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR
;
2768 caps
->minBitstreamBufferOffsetAlignment
= 256;
2769 caps
->minBitstreamBufferSizeAlignment
= 256;
2770 caps
->pictureAccessGranularity
= {16,16};
2771 caps
->minCodedExtent
= {16,16};
2772 caps
->maxCodedExtent
= {1920,1080};
2773 caps
->maxDpbSlots
= 33;
2774 caps
->maxActiveReferencePictures
= 32;
2775 std::strncpy(caps
->stdHeaderVersion
.extensionName
, VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME
,
2776 sizeof(caps
->stdHeaderVersion
.extensionName
));
2777 caps
->stdHeaderVersion
.specVersion
= VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION
;
2779 switch (pVideoProfile
->chromaSubsampling
) {
2780 case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR
:
2781 if (profile
->pictureLayout
!= VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR
) {
2782 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2784 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR
;
2785 caps_decode_h264
->maxLevelIdc
= STD_VIDEO_H264_LEVEL_IDC_6_2
;
2786 caps_decode_h264
->fieldOffsetGranularity
= {0,0};
2788 case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR
:
2789 if (profile
->pictureLayout
!= VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR
&&
2790 profile
->pictureLayout
!= VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR
) {
2791 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2793 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR
;
2794 caps_decode_h264
->maxLevelIdc
= STD_VIDEO_H264_LEVEL_IDC_5_0
;
2795 caps_decode_h264
->fieldOffsetGranularity
= {0,16};
2797 case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR
:
2798 if (profile
->pictureLayout
!= VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR
&&
2799 profile
->pictureLayout
!= VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR
) {
2800 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2802 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR
2803 | VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR
;
2804 caps_decode_h264
->maxLevelIdc
= STD_VIDEO_H264_LEVEL_IDC_3_2
;
2805 caps_decode_h264
->fieldOffsetGranularity
= {0,1};
2808 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2812 case VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR
: {
2813 auto profile
= lvl_find_in_chain
<VkVideoDecodeH265ProfileInfoKHR
>(pVideoProfile
->pNext
);
2814 if (profile
->stdProfileIdc
!= STD_VIDEO_H265_PROFILE_IDC_MAIN
) {
2815 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2818 caps
->flags
= VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR
;
2819 caps
->minBitstreamBufferOffsetAlignment
= 64;
2820 caps
->minBitstreamBufferSizeAlignment
= 64;
2821 caps
->pictureAccessGranularity
= {32,32};
2822 caps
->minCodedExtent
= {48,48};
2823 caps
->maxCodedExtent
= {3840,2160};
2824 caps
->maxDpbSlots
= 16;
2825 caps
->maxActiveReferencePictures
= 15;
2826 std::strncpy(caps
->stdHeaderVersion
.extensionName
, VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME
,
2827 sizeof(caps
->stdHeaderVersion
.extensionName
));
2828 caps
->stdHeaderVersion
.specVersion
= VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION
;
2830 switch (pVideoProfile
->chromaSubsampling
) {
2831 case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR
:
2832 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR
;
2833 caps_decode_h265
->maxLevelIdc
= STD_VIDEO_H265_LEVEL_IDC_6_0
;
2835 case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR
:
2836 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR
;
2837 caps_decode_h265
->maxLevelIdc
= STD_VIDEO_H265_LEVEL_IDC_5_2
;
2839 case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR
:
2840 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR
2841 | VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR
;
2842 caps_decode_h265
->maxLevelIdc
= STD_VIDEO_H265_LEVEL_IDC_4_1
;
2845 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2849 case VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR
: {
2850 auto profile
= lvl_find_in_chain
<VkVideoDecodeAV1ProfileInfoKHR
>(pVideoProfile
->pNext
);
2851 if (profile
->stdProfile
!= STD_VIDEO_AV1_PROFILE_MAIN
) {
2852 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2855 caps
->flags
= VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR
;
2856 caps
->minBitstreamBufferOffsetAlignment
= 256;
2857 caps
->minBitstreamBufferSizeAlignment
= 256;
2858 caps
->pictureAccessGranularity
= {16,16};
2859 caps
->minCodedExtent
= {16,16};
2860 caps
->maxCodedExtent
= {1920,1080};
2861 caps
->maxDpbSlots
= 8;
2862 caps
->maxActiveReferencePictures
= 7;
2863 std::strncpy(caps
->stdHeaderVersion
.extensionName
, VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME
,
2864 sizeof(caps
->stdHeaderVersion
.extensionName
));
2865 caps
->stdHeaderVersion
.specVersion
= VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION
;
2867 switch (pVideoProfile
->chromaSubsampling
) {
2868 case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR
:
2869 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR
;
2870 caps_decode_av1
->maxLevel
= STD_VIDEO_AV1_LEVEL_6_2
;
2872 case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR
:
2873 if (profile
->filmGrainSupport
) {
2874 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2876 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR
;
2877 caps_decode_av1
->maxLevel
= STD_VIDEO_AV1_LEVEL_5_0
;
2879 case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR
:
2880 caps_decode
->flags
= VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR
2881 | VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR
;
2882 caps_decode_av1
->maxLevel
= STD_VIDEO_AV1_LEVEL_3_2
;
2885 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2889 case VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR
: {
2890 auto profile
= lvl_find_in_chain
<VkVideoEncodeH264ProfileInfoKHR
>(pVideoProfile
->pNext
);
2891 if (profile
->stdProfileIdc
!= STD_VIDEO_H264_PROFILE_IDC_BASELINE
) {
2892 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2895 caps
->flags
= VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR
;
2896 caps
->minBitstreamBufferOffsetAlignment
= 4096;
2897 caps
->minBitstreamBufferSizeAlignment
= 4096;
2898 caps
->pictureAccessGranularity
= {16,16};
2899 caps
->minCodedExtent
= {160,128};
2900 caps
->maxCodedExtent
= {1920,1080};
2901 caps
->maxDpbSlots
= 10;
2902 caps
->maxActiveReferencePictures
= 4;
2903 std::strncpy(caps
->stdHeaderVersion
.extensionName
, VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME
,
2904 sizeof(caps
->stdHeaderVersion
.extensionName
));
2905 caps
->stdHeaderVersion
.specVersion
= VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION
;
2907 switch (pVideoProfile
->chromaSubsampling
) {
2908 case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR
:
2909 caps_encode
->flags
= VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR
;
2910 caps_encode
->rateControlModes
= VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR
2911 | VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR
2912 | VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR
;
2913 caps_encode
->maxRateControlLayers
= 4;
2914 caps_encode
->maxBitrate
= 800000000;
2915 caps_encode
->maxQualityLevels
= 4;
2916 caps_encode
->encodeInputPictureGranularity
= {16,16};
2917 caps_encode
->supportedEncodeFeedbackFlags
= VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR
2918 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR
2919 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR
;
2920 caps_encode_h264
->flags
= VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR
2921 | VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR
2922 | VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR
2923 | VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR
2924 | VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR
2925 | VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR
;
2926 caps_encode_h264
->maxLevelIdc
= STD_VIDEO_H264_LEVEL_IDC_6_2
;
2927 caps_encode_h264
->maxSliceCount
= 8;
2928 caps_encode_h264
->maxPPictureL0ReferenceCount
= 4;
2929 caps_encode_h264
->maxBPictureL0ReferenceCount
= 3;
2930 caps_encode_h264
->maxL1ReferenceCount
= 2;
2931 caps_encode_h264
->maxTemporalLayerCount
= 4;
2932 caps_encode_h264
->expectDyadicTemporalLayerPattern
= VK_FALSE
;
2933 caps_encode_h264
->minQp
= 0;
2934 caps_encode_h264
->maxQp
= 51;
2935 caps_encode_h264
->prefersGopRemainingFrames
= VK_FALSE
;
2936 caps_encode_h264
->requiresGopRemainingFrames
= VK_FALSE
;
2938 case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR
:
2939 caps_encode
->flags
= VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR
;
2940 caps_encode
->rateControlModes
= VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR
2941 | VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR
;
2942 caps_encode
->maxRateControlLayers
= 1;
2943 caps_encode
->maxBitrate
= 480000000;
2944 caps_encode
->maxQualityLevels
= 3;
2945 caps_encode
->encodeInputPictureGranularity
= {32,32};
2946 caps_encode
->supportedEncodeFeedbackFlags
= VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR
2947 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR
;
2948 caps_encode_h264
->flags
= VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR
2949 | VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR
2950 | VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR
;
2951 caps_encode_h264
->maxLevelIdc
= STD_VIDEO_H264_LEVEL_IDC_6_1
;
2952 caps_encode_h264
->maxSliceCount
= 4;
2953 caps_encode_h264
->maxPPictureL0ReferenceCount
= 4;
2954 caps_encode_h264
->maxBPictureL0ReferenceCount
= 0;
2955 caps_encode_h264
->maxL1ReferenceCount
= 0;
2956 caps_encode_h264
->maxTemporalLayerCount
= 4;
2957 caps_encode_h264
->expectDyadicTemporalLayerPattern
= VK_TRUE
;
2958 caps_encode_h264
->minQp
= 0;
2959 caps_encode_h264
->maxQp
= 30;
2960 caps_encode_h264
->prefersGopRemainingFrames
= VK_TRUE
;
2961 caps_encode_h264
->requiresGopRemainingFrames
= VK_FALSE
;
2963 case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR
:
2964 caps_encode
->flags
= 0;
2965 caps_encode
->rateControlModes
= VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR
;
2966 caps_encode
->maxRateControlLayers
= 1;
2967 caps_encode
->maxBitrate
= 240000000;
2968 caps_encode
->maxQualityLevels
= 1;
2969 caps_encode
->encodeInputPictureGranularity
= {1,1};
2970 caps_encode
->supportedEncodeFeedbackFlags
= VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR
2971 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR
;
2972 caps_encode_h264
->flags
= VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR
2973 | VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR
2974 | VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR
;
2975 caps_encode_h264
->maxLevelIdc
= STD_VIDEO_H264_LEVEL_IDC_5_1
;
2976 caps_encode_h264
->maxSliceCount
= 1;
2977 caps_encode_h264
->maxPPictureL0ReferenceCount
= 0;
2978 caps_encode_h264
->maxBPictureL0ReferenceCount
= 2;
2979 caps_encode_h264
->maxL1ReferenceCount
= 2;
2980 caps_encode_h264
->maxTemporalLayerCount
= 1;
2981 caps_encode_h264
->expectDyadicTemporalLayerPattern
= VK_FALSE
;
2982 caps_encode_h264
->minQp
= 5;
2983 caps_encode_h264
->maxQp
= 40;
2984 caps_encode_h264
->prefersGopRemainingFrames
= VK_TRUE
;
2985 caps_encode_h264
->requiresGopRemainingFrames
= VK_TRUE
;
2988 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2992 case VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR
: {
2993 auto profile
= lvl_find_in_chain
<VkVideoEncodeH265ProfileInfoKHR
>(pVideoProfile
->pNext
);
2994 if (profile
->stdProfileIdc
!= STD_VIDEO_H265_PROFILE_IDC_MAIN
) {
2995 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
2998 caps
->flags
= VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR
;
2999 caps
->minBitstreamBufferOffsetAlignment
= 1;
3000 caps
->minBitstreamBufferSizeAlignment
= 1;
3001 caps
->pictureAccessGranularity
= {8,8};
3002 caps
->minCodedExtent
= {64,48};
3003 caps
->maxCodedExtent
= {4096,2560};
3004 caps
->maxDpbSlots
= 8;
3005 caps
->maxActiveReferencePictures
= 2;
3006 std::strncpy(caps
->stdHeaderVersion
.extensionName
, VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME
, sizeof(caps
->stdHeaderVersion
.extensionName
));
3007 caps
->stdHeaderVersion
.specVersion
= VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION
;
3009 switch (pVideoProfile
->chromaSubsampling
) {
3010 case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR
:
3011 caps_encode
->flags
= 0;
3012 caps_encode
->rateControlModes
= VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR
;
3013 caps_encode
->maxRateControlLayers
= 1;
3014 caps_encode
->maxBitrate
= 800000000;
3015 caps_encode
->maxQualityLevels
= 1;
3016 caps_encode
->encodeInputPictureGranularity
= {64,64};
3017 caps_encode
->supportedEncodeFeedbackFlags
= VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR
3018 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR
;
3019 caps_encode_h265
->flags
= VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR
3020 | VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR
3021 | VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR
3022 | VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR
3023 | VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR
3024 | VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR
;
3025 caps_encode_h265
->maxLevelIdc
= STD_VIDEO_H265_LEVEL_IDC_6_2
;
3026 caps_encode_h265
->maxSliceSegmentCount
= 8;
3027 caps_encode_h265
->maxTiles
= {1,1};
3028 caps_encode_h265
->ctbSizes
= VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR
3029 | VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR
;
3030 caps_encode_h265
->transformBlockSizes
= VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR
3031 | VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR
3032 | VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR
;
3033 caps_encode_h265
->maxPPictureL0ReferenceCount
= 4;
3034 caps_encode_h265
->maxBPictureL0ReferenceCount
= 3;
3035 caps_encode_h265
->maxL1ReferenceCount
= 2;
3036 caps_encode_h265
->maxSubLayerCount
= 1;
3037 caps_encode_h265
->expectDyadicTemporalSubLayerPattern
= VK_FALSE
;
3038 caps_encode_h265
->minQp
= 16;
3039 caps_encode_h265
->maxQp
= 32;
3040 caps_encode_h265
->prefersGopRemainingFrames
= VK_FALSE
;
3041 caps_encode_h265
->requiresGopRemainingFrames
= VK_FALSE
;
3043 case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR
:
3044 caps_encode
->flags
= 0;
3045 caps_encode
->rateControlModes
= VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR
;
3046 caps_encode
->maxRateControlLayers
= 0;
3047 caps_encode
->maxBitrate
= 480000000;
3048 caps_encode
->maxQualityLevels
= 2;
3049 caps_encode
->encodeInputPictureGranularity
= {32,32};
3050 caps_encode
->supportedEncodeFeedbackFlags
= VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR
3051 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR
;
3052 caps_encode_h265
->flags
= VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR
;
3053 caps_encode_h265
->maxLevelIdc
= STD_VIDEO_H265_LEVEL_IDC_6_1
;
3054 caps_encode_h265
->maxSliceSegmentCount
= 4;
3055 caps_encode_h265
->maxTiles
= {2,2};
3056 caps_encode_h265
->ctbSizes
= VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR
3057 | VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR
;
3058 caps_encode_h265
->transformBlockSizes
= VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR
3059 | VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR
3060 | VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR
;
3061 caps_encode_h265
->maxPPictureL0ReferenceCount
= 4;
3062 caps_encode_h265
->maxBPictureL0ReferenceCount
= 0;
3063 caps_encode_h265
->maxL1ReferenceCount
= 0;
3064 caps_encode_h265
->maxSubLayerCount
= 1;
3065 caps_encode_h265
->expectDyadicTemporalSubLayerPattern
= VK_FALSE
;
3066 caps_encode_h265
->minQp
= 0;
3067 caps_encode_h265
->maxQp
= 51;
3068 caps_encode_h265
->prefersGopRemainingFrames
= VK_TRUE
;
3069 caps_encode_h265
->requiresGopRemainingFrames
= VK_FALSE
;
3071 case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR
:
3072 caps_encode
->flags
= VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR
;
3073 caps_encode
->rateControlModes
= VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR
3074 | VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR
3075 | VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR
;
3076 caps_encode
->maxRateControlLayers
= 2;
3077 caps_encode
->maxBitrate
= 240000000;
3078 caps_encode
->maxQualityLevels
= 3;
3079 caps_encode
->encodeInputPictureGranularity
= {16,16};
3080 caps_encode
->supportedEncodeFeedbackFlags
= VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR
3081 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR
3082 | VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR
;
3083 caps_encode_h265
->flags
= VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR
3084 | VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR
3085 | VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR
;
3086 caps_encode_h265
->maxLevelIdc
= STD_VIDEO_H265_LEVEL_IDC_5_1
;
3087 caps_encode_h265
->maxSliceSegmentCount
= 1;
3088 caps_encode_h265
->maxTiles
= {2,2};
3089 caps_encode_h265
->ctbSizes
= VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR
;
3090 caps_encode_h265
->transformBlockSizes
= VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR
;
3091 caps_encode_h265
->maxPPictureL0ReferenceCount
= 0;
3092 caps_encode_h265
->maxBPictureL0ReferenceCount
= 2;
3093 caps_encode_h265
->maxL1ReferenceCount
= 2;
3094 caps_encode_h265
->maxSubLayerCount
= 4;
3095 caps_encode_h265
->expectDyadicTemporalSubLayerPattern
= VK_TRUE
;
3096 caps_encode_h265
->minQp
= 16;
3097 caps_encode_h265
->maxQp
= 51;
3098 caps_encode_h265
->prefersGopRemainingFrames
= VK_TRUE
;
3099 caps_encode_h265
->requiresGopRemainingFrames
= VK_TRUE
;
3102 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
3113 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceVideoFormatPropertiesKHR(
3114 VkPhysicalDevice physicalDevice
,
3115 const VkPhysicalDeviceVideoFormatInfoKHR
* pVideoFormatInfo
,
3116 uint32_t* pVideoFormatPropertyCount
,
3117 VkVideoFormatPropertiesKHR
* pVideoFormatProperties
)
3119 // We include some reasonable set of format combinations to cover a wide range of use cases
3120 auto profile_list
= lvl_find_in_chain
<VkVideoProfileListInfoKHR
>(pVideoFormatInfo
->pNext
);
3121 if (profile_list
->profileCount
!= 1) {
3122 return VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR
;
3125 std::vector
<VkVideoFormatPropertiesKHR
> format_props
{};
3127 VkVideoFormatPropertiesKHR props
= {};
3128 props
.sType
= VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR
;
3129 props
.imageCreateFlags
= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
3130 | VK_IMAGE_CREATE_ALIAS_BIT
3131 | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT
3132 | VK_IMAGE_CREATE_PROTECTED_BIT
3133 | VK_IMAGE_CREATE_DISJOINT_BIT
;
3134 props
.imageType
= VK_IMAGE_TYPE_2D
;
3135 props
.imageTiling
= VK_IMAGE_TILING_OPTIMAL
;
3137 switch (profile_list
->pProfiles
[0].videoCodecOperation
) {
3138 case VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR
:
3139 case VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR
:
3140 case VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR
:
3141 switch (profile_list
->pProfiles
[0].chromaSubsampling
) {
3142 case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR
:
3143 props
.format
= VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
;
3144 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3145 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3146 | VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
;
3147 format_props
.push_back(props
);
3148 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3149 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3150 | VK_IMAGE_USAGE_SAMPLED_BIT
3151 | VK_IMAGE_USAGE_STORAGE_BIT
3152 | VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
3153 | VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
3154 | VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
;
3155 format_props
.push_back(props
);
3156 props
.format
= VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
;
3157 format_props
.push_back(props
);
3159 case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR
:
3160 props
.imageUsageFlags
= VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
;
3161 props
.format
= VK_FORMAT_G8_B8R8_2PLANE_422_UNORM
;
3162 format_props
.push_back(props
);
3163 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3164 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3165 | VK_IMAGE_USAGE_SAMPLED_BIT
3166 | VK_IMAGE_USAGE_STORAGE_BIT
3167 | VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
3168 | VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
;
3169 format_props
.push_back(props
);
3170 props
.format
= VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
;
3171 format_props
.push_back(props
);
3173 case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR
:
3174 props
.format
= VK_FORMAT_G8_B8R8_2PLANE_444_UNORM
;
3175 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3176 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3177 | VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
;
3178 format_props
.push_back(props
);
3179 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3180 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3181 | VK_IMAGE_USAGE_SAMPLED_BIT
3182 | VK_IMAGE_USAGE_STORAGE_BIT
3183 | VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
3184 | VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
3185 | VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
;
3186 format_props
.push_back(props
);
3189 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
3192 case VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR
:
3193 case VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR
:
3194 switch (profile_list
->pProfiles
[0].chromaSubsampling
) {
3195 case VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR
:
3196 props
.format
= VK_FORMAT_G8_B8R8_2PLANE_420_UNORM
;
3197 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3198 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3199 | VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
;
3200 format_props
.push_back(props
);
3201 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3202 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3203 | VK_IMAGE_USAGE_SAMPLED_BIT
3204 | VK_IMAGE_USAGE_STORAGE_BIT
3205 | VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
3206 | VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
;
3207 format_props
.push_back(props
);
3208 props
.format
= VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM
;
3209 format_props
.push_back(props
);
3211 case VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR
:
3212 props
.format
= VK_FORMAT_G8_B8R8_2PLANE_422_UNORM
;
3213 props
.imageUsageFlags
= VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
;
3214 format_props
.push_back(props
);
3215 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3216 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3217 | VK_IMAGE_USAGE_SAMPLED_BIT
3218 | VK_IMAGE_USAGE_STORAGE_BIT
3219 | VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
3220 | VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
;
3221 format_props
.push_back(props
);
3222 props
.format
= VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
;
3223 format_props
.push_back(props
);
3225 case VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR
:
3226 props
.format
= VK_FORMAT_G8_B8R8_2PLANE_444_UNORM
;
3227 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3228 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3229 | VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
;
3230 format_props
.push_back(props
);
3231 props
.imageUsageFlags
= VK_IMAGE_USAGE_TRANSFER_SRC_BIT
3232 | VK_IMAGE_USAGE_TRANSFER_DST_BIT
3233 | VK_IMAGE_USAGE_SAMPLED_BIT
3234 | VK_IMAGE_USAGE_STORAGE_BIT
3235 | VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
3236 | VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
;
3237 format_props
.push_back(props
);
3240 return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
;
3248 std::vector
<VkVideoFormatPropertiesKHR
> filtered_props
;
3249 for (const auto& fmt_props
: format_props
) {
3250 if ((pVideoFormatInfo
->imageUsage
& fmt_props
.imageUsageFlags
) == pVideoFormatInfo
->imageUsage
) {
3251 filtered_props
.push_back(fmt_props
);
3255 if (pVideoFormatProperties
!= nullptr) {
3256 for (uint32_t i
= 0; i
< (std::min
)(*pVideoFormatPropertyCount
, (uint32_t)filtered_props
.size()); ++i
) {
3257 pVideoFormatProperties
[i
] = filtered_props
[i
];
3260 *pVideoFormatPropertyCount
= (uint32_t)filtered_props
.size();
3264 static VKAPI_ATTR VkResult VKAPI_CALL
CreateVideoSessionKHR(
3266 const VkVideoSessionCreateInfoKHR
* pCreateInfo
,
3267 const VkAllocationCallbacks
* pAllocator
,
3268 VkVideoSessionKHR
* pVideoSession
)
3270 unique_lock_t
lock(global_lock
);
3271 *pVideoSession
= (VkVideoSessionKHR
)global_unique_handle
++;
3275 static VKAPI_ATTR
void VKAPI_CALL
DestroyVideoSessionKHR(
3277 VkVideoSessionKHR videoSession
,
3278 const VkAllocationCallbacks
* pAllocator
)
3283 static VKAPI_ATTR VkResult VKAPI_CALL
GetVideoSessionMemoryRequirementsKHR(
3285 VkVideoSessionKHR videoSession
,
3286 uint32_t* pMemoryRequirementsCount
,
3287 VkVideoSessionMemoryRequirementsKHR
* pMemoryRequirements
)
3289 if (!pMemoryRequirements
) {
3290 *pMemoryRequirementsCount
= 1;
3293 pMemoryRequirements
[0].memoryBindIndex
= 0;
3294 pMemoryRequirements
[0].memoryRequirements
.size
= 4096;
3295 pMemoryRequirements
[0].memoryRequirements
.alignment
= 1;
3296 pMemoryRequirements
[0].memoryRequirements
.memoryTypeBits
= 0xFFFF;
3301 static VKAPI_ATTR VkResult VKAPI_CALL
BindVideoSessionMemoryKHR(
3303 VkVideoSessionKHR videoSession
,
3304 uint32_t bindSessionMemoryInfoCount
,
3305 const VkBindVideoSessionMemoryInfoKHR
* pBindSessionMemoryInfos
)
3307 //Not a CREATE or DESTROY function
3311 static VKAPI_ATTR VkResult VKAPI_CALL
CreateVideoSessionParametersKHR(
3313 const VkVideoSessionParametersCreateInfoKHR
* pCreateInfo
,
3314 const VkAllocationCallbacks
* pAllocator
,
3315 VkVideoSessionParametersKHR
* pVideoSessionParameters
)
3317 unique_lock_t
lock(global_lock
);
3318 *pVideoSessionParameters
= (VkVideoSessionParametersKHR
)global_unique_handle
++;
3322 static VKAPI_ATTR VkResult VKAPI_CALL
UpdateVideoSessionParametersKHR(
3324 VkVideoSessionParametersKHR videoSessionParameters
,
3325 const VkVideoSessionParametersUpdateInfoKHR
* pUpdateInfo
)
3327 //Not a CREATE or DESTROY function
3331 static VKAPI_ATTR
void VKAPI_CALL
DestroyVideoSessionParametersKHR(
3333 VkVideoSessionParametersKHR videoSessionParameters
,
3334 const VkAllocationCallbacks
* pAllocator
)
3339 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginVideoCodingKHR(
3340 VkCommandBuffer commandBuffer
,
3341 const VkVideoBeginCodingInfoKHR
* pBeginInfo
)
3343 //Not a CREATE or DESTROY function
3346 static VKAPI_ATTR
void VKAPI_CALL
CmdEndVideoCodingKHR(
3347 VkCommandBuffer commandBuffer
,
3348 const VkVideoEndCodingInfoKHR
* pEndCodingInfo
)
3350 //Not a CREATE or DESTROY function
3353 static VKAPI_ATTR
void VKAPI_CALL
CmdControlVideoCodingKHR(
3354 VkCommandBuffer commandBuffer
,
3355 const VkVideoCodingControlInfoKHR
* pCodingControlInfo
)
3357 //Not a CREATE or DESTROY function
3361 static VKAPI_ATTR
void VKAPI_CALL
CmdDecodeVideoKHR(
3362 VkCommandBuffer commandBuffer
,
3363 const VkVideoDecodeInfoKHR
* pDecodeInfo
)
3365 //Not a CREATE or DESTROY function
3372 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginRenderingKHR(
3373 VkCommandBuffer commandBuffer
,
3374 const VkRenderingInfo
* pRenderingInfo
)
3376 //Not a CREATE or DESTROY function
3379 static VKAPI_ATTR
void VKAPI_CALL
CmdEndRenderingKHR(
3380 VkCommandBuffer commandBuffer
)
3382 //Not a CREATE or DESTROY function
3387 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceFeatures2KHR(
3388 VkPhysicalDevice physicalDevice
,
3389 VkPhysicalDeviceFeatures2
* pFeatures
)
3391 GetPhysicalDeviceFeatures(physicalDevice
, &pFeatures
->features
);
3392 uint32_t num_bools
= 0; // Count number of VkBool32s in extension structs
3393 VkBool32
* feat_bools
= nullptr;
3394 auto vk_1_1_features
= lvl_find_mod_in_chain
<VkPhysicalDeviceVulkan11Features
>(pFeatures
->pNext
);
3395 if (vk_1_1_features
) {
3396 vk_1_1_features
->protectedMemory
= VK_TRUE
;
3398 auto vk_1_3_features
= lvl_find_mod_in_chain
<VkPhysicalDeviceVulkan13Features
>(pFeatures
->pNext
);
3399 if (vk_1_3_features
) {
3400 vk_1_3_features
->synchronization2
= VK_TRUE
;
3402 auto prot_features
= lvl_find_mod_in_chain
<VkPhysicalDeviceProtectedMemoryFeatures
>(pFeatures
->pNext
);
3403 if (prot_features
) {
3404 prot_features
->protectedMemory
= VK_TRUE
;
3406 auto sync2_features
= lvl_find_mod_in_chain
<VkPhysicalDeviceSynchronization2FeaturesKHR
>(pFeatures
->pNext
);
3407 if (sync2_features
) {
3408 sync2_features
->synchronization2
= VK_TRUE
;
3410 auto video_maintenance1_features
= lvl_find_mod_in_chain
<VkPhysicalDeviceVideoMaintenance1FeaturesKHR
>(pFeatures
->pNext
);
3411 if (video_maintenance1_features
) {
3412 video_maintenance1_features
->videoMaintenance1
= VK_TRUE
;
3414 const auto *desc_idx_features
= lvl_find_in_chain
<VkPhysicalDeviceDescriptorIndexingFeaturesEXT
>(pFeatures
->pNext
);
3415 if (desc_idx_features
) {
3416 const auto bool_size
= sizeof(VkPhysicalDeviceDescriptorIndexingFeaturesEXT
) - offsetof(VkPhysicalDeviceDescriptorIndexingFeaturesEXT
, shaderInputAttachmentArrayDynamicIndexing
);
3417 num_bools
= bool_size
/sizeof(VkBool32
);
3418 feat_bools
= (VkBool32
*)&desc_idx_features
->shaderInputAttachmentArrayDynamicIndexing
;
3419 SetBoolArrayTrue(feat_bools
, num_bools
);
3421 const auto *blendop_features
= lvl_find_in_chain
<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
>(pFeatures
->pNext
);
3422 if (blendop_features
) {
3423 const auto bool_size
= sizeof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
) - offsetof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
, advancedBlendCoherentOperations
);
3424 num_bools
= bool_size
/sizeof(VkBool32
);
3425 feat_bools
= (VkBool32
*)&blendop_features
->advancedBlendCoherentOperations
;
3426 SetBoolArrayTrue(feat_bools
, num_bools
);
3428 const auto *host_image_copy_features
= lvl_find_in_chain
<VkPhysicalDeviceHostImageCopyFeaturesEXT
>(pFeatures
->pNext
);
3429 if (host_image_copy_features
) {
3430 feat_bools
= (VkBool32
*)&host_image_copy_features
->hostImageCopy
;
3431 SetBoolArrayTrue(feat_bools
, 1);
3435 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceProperties2KHR(
3436 VkPhysicalDevice physicalDevice
,
3437 VkPhysicalDeviceProperties2
* pProperties
)
3439 // The only value that need to be set are those the Profile layer can't set
3440 // see https://github.com/KhronosGroup/Vulkan-Profiles/issues/352
3441 // All values set are arbitrary
3442 GetPhysicalDeviceProperties(physicalDevice
, &pProperties
->properties
);
3444 auto *props_11
= lvl_find_mod_in_chain
<VkPhysicalDeviceVulkan11Properties
>(pProperties
->pNext
);
3446 props_11
->protectedNoFault
= VK_FALSE
;
3449 auto *props_12
= lvl_find_mod_in_chain
<VkPhysicalDeviceVulkan12Properties
>(pProperties
->pNext
);
3451 props_12
->denormBehaviorIndependence
= VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL
;
3452 props_12
->roundingModeIndependence
= VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL
;
3455 auto *props_13
= lvl_find_mod_in_chain
<VkPhysicalDeviceVulkan13Properties
>(pProperties
->pNext
);
3457 props_13
->storageTexelBufferOffsetSingleTexelAlignment
= VK_TRUE
;
3458 props_13
->uniformTexelBufferOffsetSingleTexelAlignment
= VK_TRUE
;
3459 props_13
->storageTexelBufferOffsetAlignmentBytes
= 16;
3460 props_13
->uniformTexelBufferOffsetAlignmentBytes
= 16;
3463 auto *protected_memory_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceProtectedMemoryProperties
>(pProperties
->pNext
);
3464 if (protected_memory_props
) {
3465 protected_memory_props
->protectedNoFault
= VK_FALSE
;
3468 auto *float_controls_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceFloatControlsProperties
>(pProperties
->pNext
);
3469 if (float_controls_props
) {
3470 float_controls_props
->denormBehaviorIndependence
= VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL
;
3471 float_controls_props
->roundingModeIndependence
= VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL
;
3474 auto *conservative_raster_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceConservativeRasterizationPropertiesEXT
>(pProperties
->pNext
);
3475 if (conservative_raster_props
) {
3476 conservative_raster_props
->primitiveOverestimationSize
= 0.00195313f
;
3477 conservative_raster_props
->conservativePointAndLineRasterization
= VK_TRUE
;
3478 conservative_raster_props
->degenerateTrianglesRasterized
= VK_TRUE
;
3479 conservative_raster_props
->degenerateLinesRasterized
= VK_TRUE
;
3482 auto *rt_pipeline_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceRayTracingPipelinePropertiesKHR
>(pProperties
->pNext
);
3483 if (rt_pipeline_props
) {
3484 rt_pipeline_props
->shaderGroupHandleSize
= 32;
3485 rt_pipeline_props
->shaderGroupBaseAlignment
= 64;
3486 rt_pipeline_props
->shaderGroupHandleCaptureReplaySize
= 32;
3489 auto *rt_pipeline_nv_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceRayTracingPropertiesNV
>(pProperties
->pNext
);
3490 if (rt_pipeline_nv_props
) {
3491 rt_pipeline_nv_props
->shaderGroupHandleSize
= 32;
3492 rt_pipeline_nv_props
->shaderGroupBaseAlignment
= 64;
3495 auto *texel_buffer_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceTexelBufferAlignmentProperties
>(pProperties
->pNext
);
3496 if (texel_buffer_props
) {
3497 texel_buffer_props
->storageTexelBufferOffsetSingleTexelAlignment
= VK_TRUE
;
3498 texel_buffer_props
->uniformTexelBufferOffsetSingleTexelAlignment
= VK_TRUE
;
3499 texel_buffer_props
->storageTexelBufferOffsetAlignmentBytes
= 16;
3500 texel_buffer_props
->uniformTexelBufferOffsetAlignmentBytes
= 16;
3503 auto *descriptor_buffer_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceDescriptorBufferPropertiesEXT
>(pProperties
->pNext
);
3504 if (descriptor_buffer_props
) {
3505 descriptor_buffer_props
->combinedImageSamplerDescriptorSingleArray
= VK_TRUE
;
3506 descriptor_buffer_props
->bufferlessPushDescriptors
= VK_TRUE
;
3507 descriptor_buffer_props
->allowSamplerImageViewPostSubmitCreation
= VK_TRUE
;
3508 descriptor_buffer_props
->descriptorBufferOffsetAlignment
= 4;
3511 auto *mesh_shader_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceMeshShaderPropertiesEXT
>(pProperties
->pNext
);
3512 if (mesh_shader_props
) {
3513 mesh_shader_props
->meshOutputPerVertexGranularity
= 32;
3514 mesh_shader_props
->meshOutputPerPrimitiveGranularity
= 32;
3515 mesh_shader_props
->prefersLocalInvocationVertexOutput
= VK_TRUE
;
3516 mesh_shader_props
->prefersLocalInvocationPrimitiveOutput
= VK_TRUE
;
3517 mesh_shader_props
->prefersCompactVertexOutput
= VK_TRUE
;
3518 mesh_shader_props
->prefersCompactPrimitiveOutput
= VK_TRUE
;
3521 auto *fragment_density_map2_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT
>(pProperties
->pNext
);
3522 if (fragment_density_map2_props
) {
3523 fragment_density_map2_props
->subsampledLoads
= VK_FALSE
;
3524 fragment_density_map2_props
->subsampledCoarseReconstructionEarlyAccess
= VK_FALSE
;
3525 fragment_density_map2_props
->maxSubsampledArrayLayers
= 2;
3526 fragment_density_map2_props
->maxDescriptorSetSubsampledSamplers
= 1;
3529 const uint32_t num_copy_layouts
= 5;
3530 const VkImageLayout HostCopyLayouts
[]{
3531 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
,
3532 VK_IMAGE_LAYOUT_GENERAL
,
3533 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
,
3534 VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
,
3535 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
,
3538 auto *host_image_copy_props
= lvl_find_mod_in_chain
<VkPhysicalDeviceHostImageCopyPropertiesEXT
>(pProperties
->pNext
);
3539 if (host_image_copy_props
){
3540 if (host_image_copy_props
->pCopyDstLayouts
== nullptr) host_image_copy_props
->copyDstLayoutCount
= num_copy_layouts
;
3542 uint32_t num_layouts
= (std::min
)(host_image_copy_props
->copyDstLayoutCount
, num_copy_layouts
);
3543 for (uint32_t i
= 0; i
< num_layouts
; i
++) {
3544 host_image_copy_props
->pCopyDstLayouts
[i
] = HostCopyLayouts
[i
];
3547 if (host_image_copy_props
->pCopySrcLayouts
== nullptr) host_image_copy_props
->copySrcLayoutCount
= num_copy_layouts
;
3549 uint32_t num_layouts
= (std::min
)(host_image_copy_props
->copySrcLayoutCount
, num_copy_layouts
);
3550 for (uint32_t i
= 0; i
< num_layouts
; i
++) {
3551 host_image_copy_props
->pCopySrcLayouts
[i
] = HostCopyLayouts
[i
];
3556 auto *driver_properties
= lvl_find_mod_in_chain
<VkPhysicalDeviceDriverProperties
>(pProperties
->pNext
);
3557 if (driver_properties
) {
3558 std::strncpy(driver_properties
->driverName
, "Vulkan Mock Device", VK_MAX_DRIVER_NAME_SIZE
);
3559 #if defined(GIT_BRANCH_NAME) && defined(GIT_TAG_INFO)
3560 std::strncpy(driver_properties
->driverInfo
, "Branch: " GIT_BRANCH_NAME
" Tag Info: " GIT_TAG_INFO
, VK_MAX_DRIVER_INFO_SIZE
);
3562 std::strncpy(driver_properties
->driverInfo
, "Branch: --unknown-- Tag Info: --unknown--", VK_MAX_DRIVER_INFO_SIZE
);
3567 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceFormatProperties2KHR(
3568 VkPhysicalDevice physicalDevice
,
3570 VkFormatProperties2
* pFormatProperties
)
3572 GetPhysicalDeviceFormatProperties(physicalDevice
, format
, &pFormatProperties
->formatProperties
);
3573 VkFormatProperties3KHR
*props_3
= lvl_find_mod_in_chain
<VkFormatProperties3KHR
>(pFormatProperties
->pNext
);
3575 props_3
->linearTilingFeatures
= pFormatProperties
->formatProperties
.linearTilingFeatures
;
3576 props_3
->optimalTilingFeatures
= pFormatProperties
->formatProperties
.optimalTilingFeatures
;
3577 props_3
->bufferFeatures
= pFormatProperties
->formatProperties
.bufferFeatures
;
3578 props_3
->optimalTilingFeatures
|= VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT
;
3582 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceImageFormatProperties2KHR(
3583 VkPhysicalDevice physicalDevice
,
3584 const VkPhysicalDeviceImageFormatInfo2
* pImageFormatInfo
,
3585 VkImageFormatProperties2
* pImageFormatProperties
)
3587 auto *external_image_prop
= lvl_find_mod_in_chain
<VkExternalImageFormatProperties
>(pImageFormatProperties
->pNext
);
3588 auto *external_image_format
= lvl_find_in_chain
<VkPhysicalDeviceExternalImageFormatInfo
>(pImageFormatInfo
->pNext
);
3589 if (external_image_prop
&& external_image_format
) {
3590 external_image_prop
->externalMemoryProperties
.externalMemoryFeatures
= VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
| VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
;
3591 external_image_prop
->externalMemoryProperties
.compatibleHandleTypes
= external_image_format
->handleType
;
3594 GetPhysicalDeviceImageFormatProperties(physicalDevice
, pImageFormatInfo
->format
, pImageFormatInfo
->type
, pImageFormatInfo
->tiling
, pImageFormatInfo
->usage
, pImageFormatInfo
->flags
, &pImageFormatProperties
->imageFormatProperties
);
3598 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceQueueFamilyProperties2KHR(
3599 VkPhysicalDevice physicalDevice
,
3600 uint32_t* pQueueFamilyPropertyCount
,
3601 VkQueueFamilyProperties2
* pQueueFamilyProperties
)
3603 if (pQueueFamilyProperties
) {
3604 if (*pQueueFamilyPropertyCount
>= 1) {
3605 auto props
= &pQueueFamilyProperties
[0].queueFamilyProperties
;
3606 props
->queueFlags
= VK_QUEUE_GRAPHICS_BIT
| VK_QUEUE_COMPUTE_BIT
| VK_QUEUE_TRANSFER_BIT
3607 | VK_QUEUE_SPARSE_BINDING_BIT
| VK_QUEUE_PROTECTED_BIT
;
3608 props
->queueCount
= 1;
3609 props
->timestampValidBits
= 16;
3610 props
->minImageTransferGranularity
= {1,1,1};
3612 if (*pQueueFamilyPropertyCount
>= 2) {
3613 auto props
= &pQueueFamilyProperties
[1].queueFamilyProperties
;
3614 props
->queueFlags
= VK_QUEUE_TRANSFER_BIT
| VK_QUEUE_PROTECTED_BIT
| VK_QUEUE_VIDEO_DECODE_BIT_KHR
;
3615 props
->queueCount
= 1;
3616 props
->timestampValidBits
= 16;
3617 props
->minImageTransferGranularity
= {1,1,1};
3619 auto status_query_props
= lvl_find_mod_in_chain
<VkQueueFamilyQueryResultStatusPropertiesKHR
>(pQueueFamilyProperties
[1].pNext
);
3620 if (status_query_props
) {
3621 status_query_props
->queryResultStatusSupport
= VK_TRUE
;
3623 auto video_props
= lvl_find_mod_in_chain
<VkQueueFamilyVideoPropertiesKHR
>(pQueueFamilyProperties
[1].pNext
);
3625 video_props
->videoCodecOperations
= VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR
3626 | VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR
3627 | VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR
;
3630 if (*pQueueFamilyPropertyCount
>= 3) {
3631 auto props
= &pQueueFamilyProperties
[2].queueFamilyProperties
;
3632 props
->queueFlags
= VK_QUEUE_TRANSFER_BIT
| VK_QUEUE_PROTECTED_BIT
| VK_QUEUE_VIDEO_ENCODE_BIT_KHR
;
3633 props
->queueCount
= 1;
3634 props
->timestampValidBits
= 16;
3635 props
->minImageTransferGranularity
= {1,1,1};
3637 auto status_query_props
= lvl_find_mod_in_chain
<VkQueueFamilyQueryResultStatusPropertiesKHR
>(pQueueFamilyProperties
[2].pNext
);
3638 if (status_query_props
) {
3639 status_query_props
->queryResultStatusSupport
= VK_TRUE
;
3641 auto video_props
= lvl_find_mod_in_chain
<VkQueueFamilyVideoPropertiesKHR
>(pQueueFamilyProperties
[2].pNext
);
3643 video_props
->videoCodecOperations
= VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR
3644 | VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR
;
3647 if (*pQueueFamilyPropertyCount
> 3) {
3648 *pQueueFamilyPropertyCount
= 3;
3651 *pQueueFamilyPropertyCount
= 3;
3655 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceMemoryProperties2KHR(
3656 VkPhysicalDevice physicalDevice
,
3657 VkPhysicalDeviceMemoryProperties2
* pMemoryProperties
)
3659 GetPhysicalDeviceMemoryProperties(physicalDevice
, &pMemoryProperties
->memoryProperties
);
3662 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceSparseImageFormatProperties2KHR(
3663 VkPhysicalDevice physicalDevice
,
3664 const VkPhysicalDeviceSparseImageFormatInfo2
* pFormatInfo
,
3665 uint32_t* pPropertyCount
,
3666 VkSparseImageFormatProperties2
* pProperties
)
3668 if (pPropertyCount
&& pProperties
) {
3669 GetPhysicalDeviceSparseImageFormatProperties(physicalDevice
, pFormatInfo
->format
, pFormatInfo
->type
, pFormatInfo
->samples
, pFormatInfo
->usage
, pFormatInfo
->tiling
, pPropertyCount
, &pProperties
->properties
);
3671 GetPhysicalDeviceSparseImageFormatProperties(physicalDevice
, pFormatInfo
->format
, pFormatInfo
->type
, pFormatInfo
->samples
, pFormatInfo
->usage
, pFormatInfo
->tiling
, pPropertyCount
, nullptr);
3676 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceGroupPeerMemoryFeaturesKHR(
3679 uint32_t localDeviceIndex
,
3680 uint32_t remoteDeviceIndex
,
3681 VkPeerMemoryFeatureFlags
* pPeerMemoryFeatures
)
3683 //Not a CREATE or DESTROY function
3686 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDeviceMaskKHR(
3687 VkCommandBuffer commandBuffer
,
3688 uint32_t deviceMask
)
3690 //Not a CREATE or DESTROY function
3693 static VKAPI_ATTR
void VKAPI_CALL
CmdDispatchBaseKHR(
3694 VkCommandBuffer commandBuffer
,
3695 uint32_t baseGroupX
,
3696 uint32_t baseGroupY
,
3697 uint32_t baseGroupZ
,
3698 uint32_t groupCountX
,
3699 uint32_t groupCountY
,
3700 uint32_t groupCountZ
)
3702 //Not a CREATE or DESTROY function
3707 static VKAPI_ATTR
void VKAPI_CALL
TrimCommandPoolKHR(
3709 VkCommandPool commandPool
,
3710 VkCommandPoolTrimFlags flags
)
3712 //Not a CREATE or DESTROY function
3716 static VKAPI_ATTR VkResult VKAPI_CALL
EnumeratePhysicalDeviceGroupsKHR(
3717 VkInstance instance
,
3718 uint32_t* pPhysicalDeviceGroupCount
,
3719 VkPhysicalDeviceGroupProperties
* pPhysicalDeviceGroupProperties
)
3721 if (!pPhysicalDeviceGroupProperties
) {
3722 *pPhysicalDeviceGroupCount
= 1;
3725 pPhysicalDeviceGroupProperties
->physicalDeviceCount
= 1;
3726 pPhysicalDeviceGroupProperties
->physicalDevices
[0] = physical_device_map
.at(instance
)[0];
3727 pPhysicalDeviceGroupProperties
->subsetAllocation
= VK_FALSE
;
3733 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceExternalBufferPropertiesKHR(
3734 VkPhysicalDevice physicalDevice
,
3735 const VkPhysicalDeviceExternalBufferInfo
* pExternalBufferInfo
,
3736 VkExternalBufferProperties
* pExternalBufferProperties
)
3738 GetPhysicalDeviceExternalBufferProperties(physicalDevice
, pExternalBufferInfo
, pExternalBufferProperties
);
3742 #ifdef VK_USE_PLATFORM_WIN32_KHR
3744 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryWin32HandleKHR(
3746 const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
3749 //Not a CREATE or DESTROY function
3753 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryWin32HandlePropertiesKHR(
3755 VkExternalMemoryHandleTypeFlagBits handleType
,
3757 VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
)
3759 pMemoryWin32HandleProperties
->memoryTypeBits
= 0xFFFF;
3762 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3765 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryFdKHR(
3767 const VkMemoryGetFdInfoKHR
* pGetFdInfo
,
3774 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryFdPropertiesKHR(
3776 VkExternalMemoryHandleTypeFlagBits handleType
,
3778 VkMemoryFdPropertiesKHR
* pMemoryFdProperties
)
3780 //Not a CREATE or DESTROY function
3784 #ifdef VK_USE_PLATFORM_WIN32_KHR
3785 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3788 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceExternalSemaphorePropertiesKHR(
3789 VkPhysicalDevice physicalDevice
,
3790 const VkPhysicalDeviceExternalSemaphoreInfo
* pExternalSemaphoreInfo
,
3791 VkExternalSemaphoreProperties
* pExternalSemaphoreProperties
)
3793 GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice
, pExternalSemaphoreInfo
, pExternalSemaphoreProperties
);
3797 #ifdef VK_USE_PLATFORM_WIN32_KHR
3799 static VKAPI_ATTR VkResult VKAPI_CALL
ImportSemaphoreWin32HandleKHR(
3801 const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
)
3803 //Not a CREATE or DESTROY function
3807 static VKAPI_ATTR VkResult VKAPI_CALL
GetSemaphoreWin32HandleKHR(
3809 const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
3812 //Not a CREATE or DESTROY function
3815 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3818 static VKAPI_ATTR VkResult VKAPI_CALL
ImportSemaphoreFdKHR(
3820 const VkImportSemaphoreFdInfoKHR
* pImportSemaphoreFdInfo
)
3822 //Not a CREATE or DESTROY function
3826 static VKAPI_ATTR VkResult VKAPI_CALL
GetSemaphoreFdKHR(
3828 const VkSemaphoreGetFdInfoKHR
* pGetFdInfo
,
3831 //Not a CREATE or DESTROY function
3836 static VKAPI_ATTR
void VKAPI_CALL
CmdPushDescriptorSetKHR(
3837 VkCommandBuffer commandBuffer
,
3838 VkPipelineBindPoint pipelineBindPoint
,
3839 VkPipelineLayout layout
,
3841 uint32_t descriptorWriteCount
,
3842 const VkWriteDescriptorSet
* pDescriptorWrites
)
3844 //Not a CREATE or DESTROY function
3847 static VKAPI_ATTR
void VKAPI_CALL
CmdPushDescriptorSetWithTemplateKHR(
3848 VkCommandBuffer commandBuffer
,
3849 VkDescriptorUpdateTemplate descriptorUpdateTemplate
,
3850 VkPipelineLayout layout
,
3854 //Not a CREATE or DESTROY function
3861 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDescriptorUpdateTemplateKHR(
3863 const VkDescriptorUpdateTemplateCreateInfo
* pCreateInfo
,
3864 const VkAllocationCallbacks
* pAllocator
,
3865 VkDescriptorUpdateTemplate
* pDescriptorUpdateTemplate
)
3867 unique_lock_t
lock(global_lock
);
3868 *pDescriptorUpdateTemplate
= (VkDescriptorUpdateTemplate
)global_unique_handle
++;
3872 static VKAPI_ATTR
void VKAPI_CALL
DestroyDescriptorUpdateTemplateKHR(
3874 VkDescriptorUpdateTemplate descriptorUpdateTemplate
,
3875 const VkAllocationCallbacks
* pAllocator
)
3880 static VKAPI_ATTR
void VKAPI_CALL
UpdateDescriptorSetWithTemplateKHR(
3882 VkDescriptorSet descriptorSet
,
3883 VkDescriptorUpdateTemplate descriptorUpdateTemplate
,
3886 //Not a CREATE or DESTROY function
3891 static VKAPI_ATTR VkResult VKAPI_CALL
CreateRenderPass2KHR(
3893 const VkRenderPassCreateInfo2
* pCreateInfo
,
3894 const VkAllocationCallbacks
* pAllocator
,
3895 VkRenderPass
* pRenderPass
)
3897 unique_lock_t
lock(global_lock
);
3898 *pRenderPass
= (VkRenderPass
)global_unique_handle
++;
3902 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginRenderPass2KHR(
3903 VkCommandBuffer commandBuffer
,
3904 const VkRenderPassBeginInfo
* pRenderPassBegin
,
3905 const VkSubpassBeginInfo
* pSubpassBeginInfo
)
3907 //Not a CREATE or DESTROY function
3910 static VKAPI_ATTR
void VKAPI_CALL
CmdNextSubpass2KHR(
3911 VkCommandBuffer commandBuffer
,
3912 const VkSubpassBeginInfo
* pSubpassBeginInfo
,
3913 const VkSubpassEndInfo
* pSubpassEndInfo
)
3915 //Not a CREATE or DESTROY function
3918 static VKAPI_ATTR
void VKAPI_CALL
CmdEndRenderPass2KHR(
3919 VkCommandBuffer commandBuffer
,
3920 const VkSubpassEndInfo
* pSubpassEndInfo
)
3922 //Not a CREATE or DESTROY function
3926 static VKAPI_ATTR VkResult VKAPI_CALL
GetSwapchainStatusKHR(
3928 VkSwapchainKHR swapchain
)
3930 //Not a CREATE or DESTROY function
3935 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceExternalFencePropertiesKHR(
3936 VkPhysicalDevice physicalDevice
,
3937 const VkPhysicalDeviceExternalFenceInfo
* pExternalFenceInfo
,
3938 VkExternalFenceProperties
* pExternalFenceProperties
)
3940 GetPhysicalDeviceExternalFenceProperties(physicalDevice
, pExternalFenceInfo
, pExternalFenceProperties
);
3944 #ifdef VK_USE_PLATFORM_WIN32_KHR
3946 static VKAPI_ATTR VkResult VKAPI_CALL
ImportFenceWin32HandleKHR(
3948 const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
)
3950 //Not a CREATE or DESTROY function
3954 static VKAPI_ATTR VkResult VKAPI_CALL
GetFenceWin32HandleKHR(
3956 const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
3959 *pHandle
= (HANDLE
)0x12345678;
3962 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3965 static VKAPI_ATTR VkResult VKAPI_CALL
ImportFenceFdKHR(
3967 const VkImportFenceFdInfoKHR
* pImportFenceFdInfo
)
3969 //Not a CREATE or DESTROY function
3973 static VKAPI_ATTR VkResult VKAPI_CALL
GetFenceFdKHR(
3975 const VkFenceGetFdInfoKHR
* pGetFdInfo
,
3983 static VKAPI_ATTR VkResult VKAPI_CALL
EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3984 VkPhysicalDevice physicalDevice
,
3985 uint32_t queueFamilyIndex
,
3986 uint32_t* pCounterCount
,
3987 VkPerformanceCounterKHR
* pCounters
,
3988 VkPerformanceCounterDescriptionKHR
* pCounterDescriptions
)
3993 if (*pCounterCount
== 0){
3994 return VK_INCOMPLETE
;
3997 pCounters
[0].unit
= VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR
;
3998 pCounters
[0].scope
= VK_QUERY_SCOPE_COMMAND_BUFFER_KHR
;
3999 pCounters
[0].storage
= VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR
;
4000 pCounters
[0].uuid
[0] = 0x01;
4001 if (*pCounterCount
== 1){
4002 return VK_INCOMPLETE
;
4004 pCounters
[1].unit
= VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR
;
4005 pCounters
[1].scope
= VK_QUERY_SCOPE_RENDER_PASS_KHR
;
4006 pCounters
[1].storage
= VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR
;
4007 pCounters
[1].uuid
[0] = 0x02;
4008 if (*pCounterCount
== 2){
4009 return VK_INCOMPLETE
;
4011 pCounters
[2].unit
= VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR
;
4012 pCounters
[2].scope
= VK_QUERY_SCOPE_COMMAND_KHR
;
4013 pCounters
[2].storage
= VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR
;
4014 pCounters
[2].uuid
[0] = 0x03;
4020 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
4021 VkPhysicalDevice physicalDevice
,
4022 const VkQueryPoolPerformanceCreateInfoKHR
* pPerformanceQueryCreateInfo
,
4023 uint32_t* pNumPasses
)
4031 static VKAPI_ATTR VkResult VKAPI_CALL
AcquireProfilingLockKHR(
4033 const VkAcquireProfilingLockInfoKHR
* pInfo
)
4035 //Not a CREATE or DESTROY function
4039 static VKAPI_ATTR
void VKAPI_CALL
ReleaseProfilingLockKHR(
4042 //Not a CREATE or DESTROY function
4047 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfaceCapabilities2KHR(
4048 VkPhysicalDevice physicalDevice
,
4049 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
4050 VkSurfaceCapabilities2KHR
* pSurfaceCapabilities
)
4052 GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice
, pSurfaceInfo
->surface
, &pSurfaceCapabilities
->surfaceCapabilities
);
4054 auto *present_mode_compatibility
= lvl_find_mod_in_chain
<VkSurfacePresentModeCompatibilityEXT
>(pSurfaceCapabilities
->pNext
);
4055 if (present_mode_compatibility
) {
4056 if (!present_mode_compatibility
->pPresentModes
) {
4057 present_mode_compatibility
->presentModeCount
= 3;
4060 present_mode_compatibility
->pPresentModes
[0] = VK_PRESENT_MODE_IMMEDIATE_KHR
;
4061 present_mode_compatibility
->pPresentModes
[1] = VK_PRESENT_MODE_FIFO_KHR
;
4062 present_mode_compatibility
->pPresentModes
[2] = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
;
4068 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfaceFormats2KHR(
4069 VkPhysicalDevice physicalDevice
,
4070 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
4071 uint32_t* pSurfaceFormatCount
,
4072 VkSurfaceFormat2KHR
* pSurfaceFormats
)
4074 // Currently always say that RGBA8 & BGRA8 are supported
4075 if (!pSurfaceFormats
) {
4076 *pSurfaceFormatCount
= 2;
4078 if (*pSurfaceFormatCount
>= 2) {
4079 pSurfaceFormats
[1].pNext
= nullptr;
4080 pSurfaceFormats
[1].surfaceFormat
.format
= VK_FORMAT_R8G8B8A8_UNORM
;
4081 pSurfaceFormats
[1].surfaceFormat
.colorSpace
= VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
;
4083 if (*pSurfaceFormatCount
>= 1) {
4084 pSurfaceFormats
[1].pNext
= nullptr;
4085 pSurfaceFormats
[0].surfaceFormat
.format
= VK_FORMAT_B8G8R8A8_UNORM
;
4086 pSurfaceFormats
[0].surfaceFormat
.colorSpace
= VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
;
4094 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceDisplayProperties2KHR(
4095 VkPhysicalDevice physicalDevice
,
4096 uint32_t* pPropertyCount
,
4097 VkDisplayProperties2KHR
* pProperties
)
4099 //Not a CREATE or DESTROY function
4103 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceDisplayPlaneProperties2KHR(
4104 VkPhysicalDevice physicalDevice
,
4105 uint32_t* pPropertyCount
,
4106 VkDisplayPlaneProperties2KHR
* pProperties
)
4108 //Not a CREATE or DESTROY function
4112 static VKAPI_ATTR VkResult VKAPI_CALL
GetDisplayModeProperties2KHR(
4113 VkPhysicalDevice physicalDevice
,
4114 VkDisplayKHR display
,
4115 uint32_t* pPropertyCount
,
4116 VkDisplayModeProperties2KHR
* pProperties
)
4118 //Not a CREATE or DESTROY function
4122 static VKAPI_ATTR VkResult VKAPI_CALL
GetDisplayPlaneCapabilities2KHR(
4123 VkPhysicalDevice physicalDevice
,
4124 const VkDisplayPlaneInfo2KHR
* pDisplayPlaneInfo
,
4125 VkDisplayPlaneCapabilities2KHR
* pCapabilities
)
4127 //Not a CREATE or DESTROY function
4135 static VKAPI_ATTR
void VKAPI_CALL
GetImageMemoryRequirements2KHR(
4137 const VkImageMemoryRequirementsInfo2
* pInfo
,
4138 VkMemoryRequirements2
* pMemoryRequirements
)
4140 GetImageMemoryRequirements(device
, pInfo
->image
, &pMemoryRequirements
->memoryRequirements
);
4143 static VKAPI_ATTR
void VKAPI_CALL
GetBufferMemoryRequirements2KHR(
4145 const VkBufferMemoryRequirementsInfo2
* pInfo
,
4146 VkMemoryRequirements2
* pMemoryRequirements
)
4148 GetBufferMemoryRequirements(device
, pInfo
->buffer
, &pMemoryRequirements
->memoryRequirements
);
4151 static VKAPI_ATTR
void VKAPI_CALL
GetImageSparseMemoryRequirements2KHR(
4153 const VkImageSparseMemoryRequirementsInfo2
* pInfo
,
4154 uint32_t* pSparseMemoryRequirementCount
,
4155 VkSparseImageMemoryRequirements2
* pSparseMemoryRequirements
)
4157 if (pSparseMemoryRequirementCount
&& pSparseMemoryRequirements
) {
4158 GetImageSparseMemoryRequirements(device
, pInfo
->image
, pSparseMemoryRequirementCount
, &pSparseMemoryRequirements
->memoryRequirements
);
4160 GetImageSparseMemoryRequirements(device
, pInfo
->image
, pSparseMemoryRequirementCount
, nullptr);
4166 static VKAPI_ATTR VkResult VKAPI_CALL
CreateSamplerYcbcrConversionKHR(
4168 const VkSamplerYcbcrConversionCreateInfo
* pCreateInfo
,
4169 const VkAllocationCallbacks
* pAllocator
,
4170 VkSamplerYcbcrConversion
* pYcbcrConversion
)
4172 unique_lock_t
lock(global_lock
);
4173 *pYcbcrConversion
= (VkSamplerYcbcrConversion
)global_unique_handle
++;
4177 static VKAPI_ATTR
void VKAPI_CALL
DestroySamplerYcbcrConversionKHR(
4179 VkSamplerYcbcrConversion ycbcrConversion
,
4180 const VkAllocationCallbacks
* pAllocator
)
4186 static VKAPI_ATTR VkResult VKAPI_CALL
BindBufferMemory2KHR(
4188 uint32_t bindInfoCount
,
4189 const VkBindBufferMemoryInfo
* pBindInfos
)
4191 //Not a CREATE or DESTROY function
4195 static VKAPI_ATTR VkResult VKAPI_CALL
BindImageMemory2KHR(
4197 uint32_t bindInfoCount
,
4198 const VkBindImageMemoryInfo
* pBindInfos
)
4200 //Not a CREATE or DESTROY function
4204 #ifdef VK_ENABLE_BETA_EXTENSIONS
4205 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4208 static VKAPI_ATTR
void VKAPI_CALL
GetDescriptorSetLayoutSupportKHR(
4210 const VkDescriptorSetLayoutCreateInfo
* pCreateInfo
,
4211 VkDescriptorSetLayoutSupport
* pSupport
)
4213 GetDescriptorSetLayoutSupport(device
, pCreateInfo
, pSupport
);
4217 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndirectCountKHR(
4218 VkCommandBuffer commandBuffer
,
4220 VkDeviceSize offset
,
4221 VkBuffer countBuffer
,
4222 VkDeviceSize countBufferOffset
,
4223 uint32_t maxDrawCount
,
4226 //Not a CREATE or DESTROY function
4229 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndexedIndirectCountKHR(
4230 VkCommandBuffer commandBuffer
,
4232 VkDeviceSize offset
,
4233 VkBuffer countBuffer
,
4234 VkDeviceSize countBufferOffset
,
4235 uint32_t maxDrawCount
,
4238 //Not a CREATE or DESTROY function
4252 static VKAPI_ATTR VkResult VKAPI_CALL
GetSemaphoreCounterValueKHR(
4254 VkSemaphore semaphore
,
4257 //Not a CREATE or DESTROY function
4261 static VKAPI_ATTR VkResult VKAPI_CALL
WaitSemaphoresKHR(
4263 const VkSemaphoreWaitInfo
* pWaitInfo
,
4266 //Not a CREATE or DESTROY function
4270 static VKAPI_ATTR VkResult VKAPI_CALL
SignalSemaphoreKHR(
4272 const VkSemaphoreSignalInfo
* pSignalInfo
)
4274 //Not a CREATE or DESTROY function
4281 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceFragmentShadingRatesKHR(
4282 VkPhysicalDevice physicalDevice
,
4283 uint32_t* pFragmentShadingRateCount
,
4284 VkPhysicalDeviceFragmentShadingRateKHR
* pFragmentShadingRates
)
4286 if (!pFragmentShadingRates
) {
4287 *pFragmentShadingRateCount
= 1;
4290 pFragmentShadingRates
->sampleCounts
= VK_SAMPLE_COUNT_1_BIT
| VK_SAMPLE_COUNT_4_BIT
;
4291 pFragmentShadingRates
->fragmentSize
= {8, 8};
4296 static VKAPI_ATTR
void VKAPI_CALL
CmdSetFragmentShadingRateKHR(
4297 VkCommandBuffer commandBuffer
,
4298 const VkExtent2D
* pFragmentSize
,
4299 const VkFragmentShadingRateCombinerOpKHR combinerOps
[2])
4301 //Not a CREATE or DESTROY function
4305 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRenderingAttachmentLocationsKHR(
4306 VkCommandBuffer commandBuffer
,
4307 const VkRenderingAttachmentLocationInfoKHR
* pLocationInfo
)
4309 //Not a CREATE or DESTROY function
4312 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRenderingInputAttachmentIndicesKHR(
4313 VkCommandBuffer commandBuffer
,
4314 const VkRenderingInputAttachmentIndexInfoKHR
* pInputAttachmentIndexInfo
)
4316 //Not a CREATE or DESTROY function
4324 static VKAPI_ATTR VkResult VKAPI_CALL
WaitForPresentKHR(
4326 VkSwapchainKHR swapchain
,
4330 //Not a CREATE or DESTROY function
4336 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL
GetBufferDeviceAddressKHR(
4338 const VkBufferDeviceAddressInfo
* pInfo
)
4340 return GetBufferDeviceAddress(device
, pInfo
);
4343 static VKAPI_ATTR
uint64_t VKAPI_CALL
GetBufferOpaqueCaptureAddressKHR(
4345 const VkBufferDeviceAddressInfo
* pInfo
)
4347 //Not a CREATE or DESTROY function
4351 static VKAPI_ATTR
uint64_t VKAPI_CALL
GetDeviceMemoryOpaqueCaptureAddressKHR(
4353 const VkDeviceMemoryOpaqueCaptureAddressInfo
* pInfo
)
4355 //Not a CREATE or DESTROY function
4360 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDeferredOperationKHR(
4362 const VkAllocationCallbacks
* pAllocator
,
4363 VkDeferredOperationKHR
* pDeferredOperation
)
4365 unique_lock_t
lock(global_lock
);
4366 *pDeferredOperation
= (VkDeferredOperationKHR
)global_unique_handle
++;
4370 static VKAPI_ATTR
void VKAPI_CALL
DestroyDeferredOperationKHR(
4372 VkDeferredOperationKHR operation
,
4373 const VkAllocationCallbacks
* pAllocator
)
4378 static VKAPI_ATTR
uint32_t VKAPI_CALL
GetDeferredOperationMaxConcurrencyKHR(
4380 VkDeferredOperationKHR operation
)
4382 //Not a CREATE or DESTROY function
4386 static VKAPI_ATTR VkResult VKAPI_CALL
GetDeferredOperationResultKHR(
4388 VkDeferredOperationKHR operation
)
4390 //Not a CREATE or DESTROY function
4394 static VKAPI_ATTR VkResult VKAPI_CALL
DeferredOperationJoinKHR(
4396 VkDeferredOperationKHR operation
)
4398 //Not a CREATE or DESTROY function
4403 static VKAPI_ATTR VkResult VKAPI_CALL
GetPipelineExecutablePropertiesKHR(
4405 const VkPipelineInfoKHR
* pPipelineInfo
,
4406 uint32_t* pExecutableCount
,
4407 VkPipelineExecutablePropertiesKHR
* pProperties
)
4409 //Not a CREATE or DESTROY function
4413 static VKAPI_ATTR VkResult VKAPI_CALL
GetPipelineExecutableStatisticsKHR(
4415 const VkPipelineExecutableInfoKHR
* pExecutableInfo
,
4416 uint32_t* pStatisticCount
,
4417 VkPipelineExecutableStatisticKHR
* pStatistics
)
4419 //Not a CREATE or DESTROY function
4423 static VKAPI_ATTR VkResult VKAPI_CALL
GetPipelineExecutableInternalRepresentationsKHR(
4425 const VkPipelineExecutableInfoKHR
* pExecutableInfo
,
4426 uint32_t* pInternalRepresentationCount
,
4427 VkPipelineExecutableInternalRepresentationKHR
* pInternalRepresentations
)
4429 //Not a CREATE or DESTROY function
4434 static VKAPI_ATTR VkResult VKAPI_CALL
MapMemory2KHR(
4436 const VkMemoryMapInfoKHR
* pMemoryMapInfo
,
4439 return MapMemory(device
, pMemoryMapInfo
->memory
, pMemoryMapInfo
->offset
, pMemoryMapInfo
->size
, pMemoryMapInfo
->flags
, ppData
);
4442 static VKAPI_ATTR VkResult VKAPI_CALL
UnmapMemory2KHR(
4444 const VkMemoryUnmapInfoKHR
* pMemoryUnmapInfo
)
4446 UnmapMemory(device
, pMemoryUnmapInfo
->memory
);
4455 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
4456 VkPhysicalDevice physicalDevice
,
4457 const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR
* pQualityLevelInfo
,
4458 VkVideoEncodeQualityLevelPropertiesKHR
* pQualityLevelProperties
)
4460 //Not a CREATE or DESTROY function
4464 static VKAPI_ATTR VkResult VKAPI_CALL
GetEncodedVideoSessionParametersKHR(
4466 const VkVideoEncodeSessionParametersGetInfoKHR
* pVideoSessionParametersInfo
,
4467 VkVideoEncodeSessionParametersFeedbackInfoKHR
* pFeedbackInfo
,
4471 //Not a CREATE or DESTROY function
4475 static VKAPI_ATTR
void VKAPI_CALL
CmdEncodeVideoKHR(
4476 VkCommandBuffer commandBuffer
,
4477 const VkVideoEncodeInfoKHR
* pEncodeInfo
)
4479 //Not a CREATE or DESTROY function
4483 static VKAPI_ATTR
void VKAPI_CALL
CmdSetEvent2KHR(
4484 VkCommandBuffer commandBuffer
,
4486 const VkDependencyInfo
* pDependencyInfo
)
4488 //Not a CREATE or DESTROY function
4491 static VKAPI_ATTR
void VKAPI_CALL
CmdResetEvent2KHR(
4492 VkCommandBuffer commandBuffer
,
4494 VkPipelineStageFlags2 stageMask
)
4496 //Not a CREATE or DESTROY function
4499 static VKAPI_ATTR
void VKAPI_CALL
CmdWaitEvents2KHR(
4500 VkCommandBuffer commandBuffer
,
4501 uint32_t eventCount
,
4502 const VkEvent
* pEvents
,
4503 const VkDependencyInfo
* pDependencyInfos
)
4505 //Not a CREATE or DESTROY function
4508 static VKAPI_ATTR
void VKAPI_CALL
CmdPipelineBarrier2KHR(
4509 VkCommandBuffer commandBuffer
,
4510 const VkDependencyInfo
* pDependencyInfo
)
4512 //Not a CREATE or DESTROY function
4515 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteTimestamp2KHR(
4516 VkCommandBuffer commandBuffer
,
4517 VkPipelineStageFlags2 stage
,
4518 VkQueryPool queryPool
,
4521 //Not a CREATE or DESTROY function
4524 static VKAPI_ATTR VkResult VKAPI_CALL
QueueSubmit2KHR(
4526 uint32_t submitCount
,
4527 const VkSubmitInfo2
* pSubmits
,
4530 //Not a CREATE or DESTROY function
4534 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteBufferMarker2AMD(
4535 VkCommandBuffer commandBuffer
,
4536 VkPipelineStageFlags2 stage
,
4538 VkDeviceSize dstOffset
,
4541 //Not a CREATE or DESTROY function
4544 static VKAPI_ATTR
void VKAPI_CALL
GetQueueCheckpointData2NV(
4546 uint32_t* pCheckpointDataCount
,
4547 VkCheckpointData2NV
* pCheckpointData
)
4549 //Not a CREATE or DESTROY function
4557 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyBuffer2KHR(
4558 VkCommandBuffer commandBuffer
,
4559 const VkCopyBufferInfo2
* pCopyBufferInfo
)
4561 //Not a CREATE or DESTROY function
4564 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyImage2KHR(
4565 VkCommandBuffer commandBuffer
,
4566 const VkCopyImageInfo2
* pCopyImageInfo
)
4568 //Not a CREATE or DESTROY function
4571 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyBufferToImage2KHR(
4572 VkCommandBuffer commandBuffer
,
4573 const VkCopyBufferToImageInfo2
* pCopyBufferToImageInfo
)
4575 //Not a CREATE or DESTROY function
4578 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyImageToBuffer2KHR(
4579 VkCommandBuffer commandBuffer
,
4580 const VkCopyImageToBufferInfo2
* pCopyImageToBufferInfo
)
4582 //Not a CREATE or DESTROY function
4585 static VKAPI_ATTR
void VKAPI_CALL
CmdBlitImage2KHR(
4586 VkCommandBuffer commandBuffer
,
4587 const VkBlitImageInfo2
* pBlitImageInfo
)
4589 //Not a CREATE or DESTROY function
4592 static VKAPI_ATTR
void VKAPI_CALL
CmdResolveImage2KHR(
4593 VkCommandBuffer commandBuffer
,
4594 const VkResolveImageInfo2
* pResolveImageInfo
)
4596 //Not a CREATE or DESTROY function
4601 static VKAPI_ATTR
void VKAPI_CALL
CmdTraceRaysIndirect2KHR(
4602 VkCommandBuffer commandBuffer
,
4603 VkDeviceAddress indirectDeviceAddress
)
4605 //Not a CREATE or DESTROY function
4610 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceBufferMemoryRequirementsKHR(
4612 const VkDeviceBufferMemoryRequirements
* pInfo
,
4613 VkMemoryRequirements2
* pMemoryRequirements
)
4615 GetDeviceBufferMemoryRequirements(device
, pInfo
, pMemoryRequirements
);
4618 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceImageMemoryRequirementsKHR(
4620 const VkDeviceImageMemoryRequirements
* pInfo
,
4621 VkMemoryRequirements2
* pMemoryRequirements
)
4623 GetDeviceImageMemoryRequirements(device
, pInfo
, pMemoryRequirements
);
4626 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceImageSparseMemoryRequirementsKHR(
4628 const VkDeviceImageMemoryRequirements
* pInfo
,
4629 uint32_t* pSparseMemoryRequirementCount
,
4630 VkSparseImageMemoryRequirements2
* pSparseMemoryRequirements
)
4632 //Not a CREATE or DESTROY function
4638 static VKAPI_ATTR
void VKAPI_CALL
CmdBindIndexBuffer2KHR(
4639 VkCommandBuffer commandBuffer
,
4641 VkDeviceSize offset
,
4643 VkIndexType indexType
)
4645 //Not a CREATE or DESTROY function
4648 static VKAPI_ATTR
void VKAPI_CALL
GetRenderingAreaGranularityKHR(
4650 const VkRenderingAreaInfoKHR
* pRenderingAreaInfo
,
4651 VkExtent2D
* pGranularity
)
4653 //Not a CREATE or DESTROY function
4656 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceImageSubresourceLayoutKHR(
4658 const VkDeviceImageSubresourceInfoKHR
* pInfo
,
4659 VkSubresourceLayout2KHR
* pLayout
)
4661 //Not a CREATE or DESTROY function
4664 static VKAPI_ATTR
void VKAPI_CALL
GetImageSubresourceLayout2KHR(
4667 const VkImageSubresource2KHR
* pSubresource
,
4668 VkSubresourceLayout2KHR
* pLayout
)
4670 //Not a CREATE or DESTROY function
4675 static VKAPI_ATTR VkResult VKAPI_CALL
CreatePipelineBinariesKHR(
4677 const VkPipelineBinaryCreateInfoKHR
* pCreateInfo
,
4678 const VkAllocationCallbacks
* pAllocator
,
4679 VkPipelineBinaryHandlesInfoKHR
* pBinaries
)
4681 unique_lock_t
lock(global_lock
);
4682 for (uint32_t i
= 0; i
< pBinaries
->pipelineBinaryCount
; ++i
) {
4683 pBinaries
->pPipelineBinaries
[i
] = (VkPipelineBinaryKHR
)global_unique_handle
++;
4688 static VKAPI_ATTR
void VKAPI_CALL
DestroyPipelineBinaryKHR(
4690 VkPipelineBinaryKHR pipelineBinary
,
4691 const VkAllocationCallbacks
* pAllocator
)
4696 static VKAPI_ATTR VkResult VKAPI_CALL
GetPipelineKeyKHR(
4698 const VkPipelineCreateInfoKHR
* pPipelineCreateInfo
,
4699 VkPipelineBinaryKeyKHR
* pPipelineKey
)
4701 //Not a CREATE or DESTROY function
4705 static VKAPI_ATTR VkResult VKAPI_CALL
GetPipelineBinaryDataKHR(
4707 const VkPipelineBinaryDataInfoKHR
* pInfo
,
4708 VkPipelineBinaryKeyKHR
* pPipelineBinaryKey
,
4709 size_t* pPipelineBinaryDataSize
,
4710 void* pPipelineBinaryData
)
4712 //Not a CREATE or DESTROY function
4716 static VKAPI_ATTR VkResult VKAPI_CALL
ReleaseCapturedPipelineDataKHR(
4718 const VkReleaseCapturedPipelineDataInfoKHR
* pInfo
,
4719 const VkAllocationCallbacks
* pAllocator
)
4721 //Not a CREATE or DESTROY function
4726 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceCooperativeMatrixPropertiesKHR(
4727 VkPhysicalDevice physicalDevice
,
4728 uint32_t* pPropertyCount
,
4729 VkCooperativeMatrixPropertiesKHR
* pProperties
)
4732 *pPropertyCount
= 2;
4735 pProperties
[0].MSize
= 16;
4736 pProperties
[0].NSize
= 16;
4737 pProperties
[0].KSize
= 16;
4738 pProperties
[0].AType
= VK_COMPONENT_TYPE_UINT32_KHR
;
4739 pProperties
[0].BType
= VK_COMPONENT_TYPE_UINT32_KHR
;
4740 pProperties
[0].CType
= VK_COMPONENT_TYPE_UINT32_KHR
;
4741 pProperties
[0].ResultType
= VK_COMPONENT_TYPE_UINT32_KHR
;
4742 pProperties
[0].saturatingAccumulation
= VK_FALSE
;
4743 pProperties
[0].scope
= VK_SCOPE_SUBGROUP_KHR
;
4745 pProperties
[1] = pProperties
[0];
4746 pProperties
[1].scope
= VK_SCOPE_DEVICE_KHR
;
4759 static VKAPI_ATTR
void VKAPI_CALL
CmdSetLineStippleKHR(
4760 VkCommandBuffer commandBuffer
,
4761 uint32_t lineStippleFactor
,
4762 uint16_t lineStipplePattern
)
4764 //Not a CREATE or DESTROY function
4768 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceCalibrateableTimeDomainsKHR(
4769 VkPhysicalDevice physicalDevice
,
4770 uint32_t* pTimeDomainCount
,
4771 VkTimeDomainKHR
* pTimeDomains
)
4773 if (!pTimeDomains
) {
4774 *pTimeDomainCount
= 1;
4777 *pTimeDomains
= VK_TIME_DOMAIN_DEVICE_KHR
;
4782 static VKAPI_ATTR VkResult VKAPI_CALL
GetCalibratedTimestampsKHR(
4784 uint32_t timestampCount
,
4785 const VkCalibratedTimestampInfoKHR
* pTimestampInfos
,
4786 uint64_t* pTimestamps
,
4787 uint64_t* pMaxDeviation
)
4789 //Not a CREATE or DESTROY function
4795 static VKAPI_ATTR
void VKAPI_CALL
CmdBindDescriptorSets2KHR(
4796 VkCommandBuffer commandBuffer
,
4797 const VkBindDescriptorSetsInfoKHR
* pBindDescriptorSetsInfo
)
4799 //Not a CREATE or DESTROY function
4802 static VKAPI_ATTR
void VKAPI_CALL
CmdPushConstants2KHR(
4803 VkCommandBuffer commandBuffer
,
4804 const VkPushConstantsInfoKHR
* pPushConstantsInfo
)
4806 //Not a CREATE or DESTROY function
4809 static VKAPI_ATTR
void VKAPI_CALL
CmdPushDescriptorSet2KHR(
4810 VkCommandBuffer commandBuffer
,
4811 const VkPushDescriptorSetInfoKHR
* pPushDescriptorSetInfo
)
4813 //Not a CREATE or DESTROY function
4816 static VKAPI_ATTR
void VKAPI_CALL
CmdPushDescriptorSetWithTemplate2KHR(
4817 VkCommandBuffer commandBuffer
,
4818 const VkPushDescriptorSetWithTemplateInfoKHR
* pPushDescriptorSetWithTemplateInfo
)
4820 //Not a CREATE or DESTROY function
4823 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDescriptorBufferOffsets2EXT(
4824 VkCommandBuffer commandBuffer
,
4825 const VkSetDescriptorBufferOffsetsInfoEXT
* pSetDescriptorBufferOffsetsInfo
)
4827 //Not a CREATE or DESTROY function
4830 static VKAPI_ATTR
void VKAPI_CALL
CmdBindDescriptorBufferEmbeddedSamplers2EXT(
4831 VkCommandBuffer commandBuffer
,
4832 const VkBindDescriptorBufferEmbeddedSamplersInfoEXT
* pBindDescriptorBufferEmbeddedSamplersInfo
)
4834 //Not a CREATE or DESTROY function
4840 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDebugReportCallbackEXT(
4841 VkInstance instance
,
4842 const VkDebugReportCallbackCreateInfoEXT
* pCreateInfo
,
4843 const VkAllocationCallbacks
* pAllocator
,
4844 VkDebugReportCallbackEXT
* pCallback
)
4846 unique_lock_t
lock(global_lock
);
4847 *pCallback
= (VkDebugReportCallbackEXT
)global_unique_handle
++;
4851 static VKAPI_ATTR
void VKAPI_CALL
DestroyDebugReportCallbackEXT(
4852 VkInstance instance
,
4853 VkDebugReportCallbackEXT callback
,
4854 const VkAllocationCallbacks
* pAllocator
)
4859 static VKAPI_ATTR
void VKAPI_CALL
DebugReportMessageEXT(
4860 VkInstance instance
,
4861 VkDebugReportFlagsEXT flags
,
4862 VkDebugReportObjectTypeEXT objectType
,
4865 int32_t messageCode
,
4866 const char* pLayerPrefix
,
4867 const char* pMessage
)
4869 //Not a CREATE or DESTROY function
4879 static VKAPI_ATTR VkResult VKAPI_CALL
DebugMarkerSetObjectTagEXT(
4881 const VkDebugMarkerObjectTagInfoEXT
* pTagInfo
)
4883 //Not a CREATE or DESTROY function
4887 static VKAPI_ATTR VkResult VKAPI_CALL
DebugMarkerSetObjectNameEXT(
4889 const VkDebugMarkerObjectNameInfoEXT
* pNameInfo
)
4891 //Not a CREATE or DESTROY function
4895 static VKAPI_ATTR
void VKAPI_CALL
CmdDebugMarkerBeginEXT(
4896 VkCommandBuffer commandBuffer
,
4897 const VkDebugMarkerMarkerInfoEXT
* pMarkerInfo
)
4899 //Not a CREATE or DESTROY function
4902 static VKAPI_ATTR
void VKAPI_CALL
CmdDebugMarkerEndEXT(
4903 VkCommandBuffer commandBuffer
)
4905 //Not a CREATE or DESTROY function
4908 static VKAPI_ATTR
void VKAPI_CALL
CmdDebugMarkerInsertEXT(
4909 VkCommandBuffer commandBuffer
,
4910 const VkDebugMarkerMarkerInfoEXT
* pMarkerInfo
)
4912 //Not a CREATE or DESTROY function
4918 static VKAPI_ATTR
void VKAPI_CALL
CmdBindTransformFeedbackBuffersEXT(
4919 VkCommandBuffer commandBuffer
,
4920 uint32_t firstBinding
,
4921 uint32_t bindingCount
,
4922 const VkBuffer
* pBuffers
,
4923 const VkDeviceSize
* pOffsets
,
4924 const VkDeviceSize
* pSizes
)
4926 //Not a CREATE or DESTROY function
4929 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginTransformFeedbackEXT(
4930 VkCommandBuffer commandBuffer
,
4931 uint32_t firstCounterBuffer
,
4932 uint32_t counterBufferCount
,
4933 const VkBuffer
* pCounterBuffers
,
4934 const VkDeviceSize
* pCounterBufferOffsets
)
4936 //Not a CREATE or DESTROY function
4939 static VKAPI_ATTR
void VKAPI_CALL
CmdEndTransformFeedbackEXT(
4940 VkCommandBuffer commandBuffer
,
4941 uint32_t firstCounterBuffer
,
4942 uint32_t counterBufferCount
,
4943 const VkBuffer
* pCounterBuffers
,
4944 const VkDeviceSize
* pCounterBufferOffsets
)
4946 //Not a CREATE or DESTROY function
4949 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginQueryIndexedEXT(
4950 VkCommandBuffer commandBuffer
,
4951 VkQueryPool queryPool
,
4953 VkQueryControlFlags flags
,
4956 //Not a CREATE or DESTROY function
4959 static VKAPI_ATTR
void VKAPI_CALL
CmdEndQueryIndexedEXT(
4960 VkCommandBuffer commandBuffer
,
4961 VkQueryPool queryPool
,
4965 //Not a CREATE or DESTROY function
4968 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndirectByteCountEXT(
4969 VkCommandBuffer commandBuffer
,
4970 uint32_t instanceCount
,
4971 uint32_t firstInstance
,
4972 VkBuffer counterBuffer
,
4973 VkDeviceSize counterBufferOffset
,
4974 uint32_t counterOffset
,
4975 uint32_t vertexStride
)
4977 //Not a CREATE or DESTROY function
4981 static VKAPI_ATTR VkResult VKAPI_CALL
CreateCuModuleNVX(
4983 const VkCuModuleCreateInfoNVX
* pCreateInfo
,
4984 const VkAllocationCallbacks
* pAllocator
,
4985 VkCuModuleNVX
* pModule
)
4987 unique_lock_t
lock(global_lock
);
4988 *pModule
= (VkCuModuleNVX
)global_unique_handle
++;
4992 static VKAPI_ATTR VkResult VKAPI_CALL
CreateCuFunctionNVX(
4994 const VkCuFunctionCreateInfoNVX
* pCreateInfo
,
4995 const VkAllocationCallbacks
* pAllocator
,
4996 VkCuFunctionNVX
* pFunction
)
4998 unique_lock_t
lock(global_lock
);
4999 *pFunction
= (VkCuFunctionNVX
)global_unique_handle
++;
5003 static VKAPI_ATTR
void VKAPI_CALL
DestroyCuModuleNVX(
5005 VkCuModuleNVX module
,
5006 const VkAllocationCallbacks
* pAllocator
)
5011 static VKAPI_ATTR
void VKAPI_CALL
DestroyCuFunctionNVX(
5013 VkCuFunctionNVX function
,
5014 const VkAllocationCallbacks
* pAllocator
)
5019 static VKAPI_ATTR
void VKAPI_CALL
CmdCuLaunchKernelNVX(
5020 VkCommandBuffer commandBuffer
,
5021 const VkCuLaunchInfoNVX
* pLaunchInfo
)
5023 //Not a CREATE or DESTROY function
5027 static VKAPI_ATTR
uint32_t VKAPI_CALL
GetImageViewHandleNVX(
5029 const VkImageViewHandleInfoNVX
* pInfo
)
5031 //Not a CREATE or DESTROY function
5035 static VKAPI_ATTR VkResult VKAPI_CALL
GetImageViewAddressNVX(
5037 VkImageView imageView
,
5038 VkImageViewAddressPropertiesNVX
* pProperties
)
5040 //Not a CREATE or DESTROY function
5045 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndirectCountAMD(
5046 VkCommandBuffer commandBuffer
,
5048 VkDeviceSize offset
,
5049 VkBuffer countBuffer
,
5050 VkDeviceSize countBufferOffset
,
5051 uint32_t maxDrawCount
,
5054 //Not a CREATE or DESTROY function
5057 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawIndexedIndirectCountAMD(
5058 VkCommandBuffer commandBuffer
,
5060 VkDeviceSize offset
,
5061 VkBuffer countBuffer
,
5062 VkDeviceSize countBufferOffset
,
5063 uint32_t maxDrawCount
,
5066 //Not a CREATE or DESTROY function
5074 static VKAPI_ATTR VkResult VKAPI_CALL
GetShaderInfoAMD(
5076 VkPipeline pipeline
,
5077 VkShaderStageFlagBits shaderStage
,
5078 VkShaderInfoTypeAMD infoType
,
5082 //Not a CREATE or DESTROY function
5087 #ifdef VK_USE_PLATFORM_GGP
5089 static VKAPI_ATTR VkResult VKAPI_CALL
CreateStreamDescriptorSurfaceGGP(
5090 VkInstance instance
,
5091 const VkStreamDescriptorSurfaceCreateInfoGGP
* pCreateInfo
,
5092 const VkAllocationCallbacks
* pAllocator
,
5093 VkSurfaceKHR
* pSurface
)
5095 unique_lock_t
lock(global_lock
);
5096 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
5099 #endif /* VK_USE_PLATFORM_GGP */
5104 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceExternalImageFormatPropertiesNV(
5105 VkPhysicalDevice physicalDevice
,
5108 VkImageTiling tiling
,
5109 VkImageUsageFlags usage
,
5110 VkImageCreateFlags flags
,
5111 VkExternalMemoryHandleTypeFlagsNV externalHandleType
,
5112 VkExternalImageFormatPropertiesNV
* pExternalImageFormatProperties
)
5114 //Not a CREATE or DESTROY function
5119 #ifdef VK_USE_PLATFORM_WIN32_KHR
5121 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryWin32HandleNV(
5123 VkDeviceMemory memory
,
5124 VkExternalMemoryHandleTypeFlagsNV handleType
,
5127 //Not a CREATE or DESTROY function
5130 #endif /* VK_USE_PLATFORM_WIN32_KHR */
5132 #ifdef VK_USE_PLATFORM_WIN32_KHR
5133 #endif /* VK_USE_PLATFORM_WIN32_KHR */
5136 #ifdef VK_USE_PLATFORM_VI_NN
5138 static VKAPI_ATTR VkResult VKAPI_CALL
CreateViSurfaceNN(
5139 VkInstance instance
,
5140 const VkViSurfaceCreateInfoNN
* pCreateInfo
,
5141 const VkAllocationCallbacks
* pAllocator
,
5142 VkSurfaceKHR
* pSurface
)
5144 unique_lock_t
lock(global_lock
);
5145 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
5148 #endif /* VK_USE_PLATFORM_VI_NN */
5156 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginConditionalRenderingEXT(
5157 VkCommandBuffer commandBuffer
,
5158 const VkConditionalRenderingBeginInfoEXT
* pConditionalRenderingBegin
)
5160 //Not a CREATE or DESTROY function
5163 static VKAPI_ATTR
void VKAPI_CALL
CmdEndConditionalRenderingEXT(
5164 VkCommandBuffer commandBuffer
)
5166 //Not a CREATE or DESTROY function
5170 static VKAPI_ATTR
void VKAPI_CALL
CmdSetViewportWScalingNV(
5171 VkCommandBuffer commandBuffer
,
5172 uint32_t firstViewport
,
5173 uint32_t viewportCount
,
5174 const VkViewportWScalingNV
* pViewportWScalings
)
5176 //Not a CREATE or DESTROY function
5180 static VKAPI_ATTR VkResult VKAPI_CALL
ReleaseDisplayEXT(
5181 VkPhysicalDevice physicalDevice
,
5182 VkDisplayKHR display
)
5184 //Not a CREATE or DESTROY function
5188 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
5190 static VKAPI_ATTR VkResult VKAPI_CALL
AcquireXlibDisplayEXT(
5191 VkPhysicalDevice physicalDevice
,
5193 VkDisplayKHR display
)
5195 //Not a CREATE or DESTROY function
5199 static VKAPI_ATTR VkResult VKAPI_CALL
GetRandROutputDisplayEXT(
5200 VkPhysicalDevice physicalDevice
,
5203 VkDisplayKHR
* pDisplay
)
5205 //Not a CREATE or DESTROY function
5208 #endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */
5211 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfaceCapabilities2EXT(
5212 VkPhysicalDevice physicalDevice
,
5213 VkSurfaceKHR surface
,
5214 VkSurfaceCapabilities2EXT
* pSurfaceCapabilities
)
5216 //Not a CREATE or DESTROY function
5221 static VKAPI_ATTR VkResult VKAPI_CALL
DisplayPowerControlEXT(
5223 VkDisplayKHR display
,
5224 const VkDisplayPowerInfoEXT
* pDisplayPowerInfo
)
5226 //Not a CREATE or DESTROY function
5230 static VKAPI_ATTR VkResult VKAPI_CALL
RegisterDeviceEventEXT(
5232 const VkDeviceEventInfoEXT
* pDeviceEventInfo
,
5233 const VkAllocationCallbacks
* pAllocator
,
5236 //Not a CREATE or DESTROY function
5240 static VKAPI_ATTR VkResult VKAPI_CALL
RegisterDisplayEventEXT(
5242 VkDisplayKHR display
,
5243 const VkDisplayEventInfoEXT
* pDisplayEventInfo
,
5244 const VkAllocationCallbacks
* pAllocator
,
5247 unique_lock_t
lock(global_lock
);
5248 *pFence
= (VkFence
)global_unique_handle
++;
5252 static VKAPI_ATTR VkResult VKAPI_CALL
GetSwapchainCounterEXT(
5254 VkSwapchainKHR swapchain
,
5255 VkSurfaceCounterFlagBitsEXT counter
,
5256 uint64_t* pCounterValue
)
5258 //Not a CREATE or DESTROY function
5263 static VKAPI_ATTR VkResult VKAPI_CALL
GetRefreshCycleDurationGOOGLE(
5265 VkSwapchainKHR swapchain
,
5266 VkRefreshCycleDurationGOOGLE
* pDisplayTimingProperties
)
5268 //Not a CREATE or DESTROY function
5272 static VKAPI_ATTR VkResult VKAPI_CALL
GetPastPresentationTimingGOOGLE(
5274 VkSwapchainKHR swapchain
,
5275 uint32_t* pPresentationTimingCount
,
5276 VkPastPresentationTimingGOOGLE
* pPresentationTimings
)
5278 //Not a CREATE or DESTROY function
5288 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDiscardRectangleEXT(
5289 VkCommandBuffer commandBuffer
,
5290 uint32_t firstDiscardRectangle
,
5291 uint32_t discardRectangleCount
,
5292 const VkRect2D
* pDiscardRectangles
)
5294 //Not a CREATE or DESTROY function
5297 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDiscardRectangleEnableEXT(
5298 VkCommandBuffer commandBuffer
,
5299 VkBool32 discardRectangleEnable
)
5301 //Not a CREATE or DESTROY function
5304 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDiscardRectangleModeEXT(
5305 VkCommandBuffer commandBuffer
,
5306 VkDiscardRectangleModeEXT discardRectangleMode
)
5308 //Not a CREATE or DESTROY function
5315 static VKAPI_ATTR
void VKAPI_CALL
SetHdrMetadataEXT(
5317 uint32_t swapchainCount
,
5318 const VkSwapchainKHR
* pSwapchains
,
5319 const VkHdrMetadataEXT
* pMetadata
)
5321 //Not a CREATE or DESTROY function
5325 #ifdef VK_USE_PLATFORM_IOS_MVK
5327 static VKAPI_ATTR VkResult VKAPI_CALL
CreateIOSSurfaceMVK(
5328 VkInstance instance
,
5329 const VkIOSSurfaceCreateInfoMVK
* pCreateInfo
,
5330 const VkAllocationCallbacks
* pAllocator
,
5331 VkSurfaceKHR
* pSurface
)
5333 unique_lock_t
lock(global_lock
);
5334 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
5337 #endif /* VK_USE_PLATFORM_IOS_MVK */
5339 #ifdef VK_USE_PLATFORM_MACOS_MVK
5341 static VKAPI_ATTR VkResult VKAPI_CALL
CreateMacOSSurfaceMVK(
5342 VkInstance instance
,
5343 const VkMacOSSurfaceCreateInfoMVK
* pCreateInfo
,
5344 const VkAllocationCallbacks
* pAllocator
,
5345 VkSurfaceKHR
* pSurface
)
5347 unique_lock_t
lock(global_lock
);
5348 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
5351 #endif /* VK_USE_PLATFORM_MACOS_MVK */
5356 static VKAPI_ATTR VkResult VKAPI_CALL
SetDebugUtilsObjectNameEXT(
5358 const VkDebugUtilsObjectNameInfoEXT
* pNameInfo
)
5360 //Not a CREATE or DESTROY function
5364 static VKAPI_ATTR VkResult VKAPI_CALL
SetDebugUtilsObjectTagEXT(
5366 const VkDebugUtilsObjectTagInfoEXT
* pTagInfo
)
5368 //Not a CREATE or DESTROY function
5372 static VKAPI_ATTR
void VKAPI_CALL
QueueBeginDebugUtilsLabelEXT(
5374 const VkDebugUtilsLabelEXT
* pLabelInfo
)
5376 //Not a CREATE or DESTROY function
5379 static VKAPI_ATTR
void VKAPI_CALL
QueueEndDebugUtilsLabelEXT(
5382 //Not a CREATE or DESTROY function
5385 static VKAPI_ATTR
void VKAPI_CALL
QueueInsertDebugUtilsLabelEXT(
5387 const VkDebugUtilsLabelEXT
* pLabelInfo
)
5389 //Not a CREATE or DESTROY function
5392 static VKAPI_ATTR
void VKAPI_CALL
CmdBeginDebugUtilsLabelEXT(
5393 VkCommandBuffer commandBuffer
,
5394 const VkDebugUtilsLabelEXT
* pLabelInfo
)
5396 //Not a CREATE or DESTROY function
5399 static VKAPI_ATTR
void VKAPI_CALL
CmdEndDebugUtilsLabelEXT(
5400 VkCommandBuffer commandBuffer
)
5402 //Not a CREATE or DESTROY function
5405 static VKAPI_ATTR
void VKAPI_CALL
CmdInsertDebugUtilsLabelEXT(
5406 VkCommandBuffer commandBuffer
,
5407 const VkDebugUtilsLabelEXT
* pLabelInfo
)
5409 //Not a CREATE or DESTROY function
5412 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDebugUtilsMessengerEXT(
5413 VkInstance instance
,
5414 const VkDebugUtilsMessengerCreateInfoEXT
* pCreateInfo
,
5415 const VkAllocationCallbacks
* pAllocator
,
5416 VkDebugUtilsMessengerEXT
* pMessenger
)
5418 unique_lock_t
lock(global_lock
);
5419 *pMessenger
= (VkDebugUtilsMessengerEXT
)global_unique_handle
++;
5423 static VKAPI_ATTR
void VKAPI_CALL
DestroyDebugUtilsMessengerEXT(
5424 VkInstance instance
,
5425 VkDebugUtilsMessengerEXT messenger
,
5426 const VkAllocationCallbacks
* pAllocator
)
5431 static VKAPI_ATTR
void VKAPI_CALL
SubmitDebugUtilsMessageEXT(
5432 VkInstance instance
,
5433 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity
,
5434 VkDebugUtilsMessageTypeFlagsEXT messageTypes
,
5435 const VkDebugUtilsMessengerCallbackDataEXT
* pCallbackData
)
5437 //Not a CREATE or DESTROY function
5440 #ifdef VK_USE_PLATFORM_ANDROID_KHR
5442 static VKAPI_ATTR VkResult VKAPI_CALL
GetAndroidHardwareBufferPropertiesANDROID(
5444 const struct AHardwareBuffer
* buffer
,
5445 VkAndroidHardwareBufferPropertiesANDROID
* pProperties
)
5447 pProperties
->allocationSize
= 65536;
5448 pProperties
->memoryTypeBits
= 1 << 5; // DEVICE_LOCAL only type
5450 auto *format_prop
= lvl_find_mod_in_chain
<VkAndroidHardwareBufferFormatPropertiesANDROID
>(pProperties
->pNext
);
5452 // Likley using this format
5453 format_prop
->format
= VK_FORMAT_R8G8B8A8_UNORM
;
5454 format_prop
->externalFormat
= 37;
5457 auto *format_resolve_prop
= lvl_find_mod_in_chain
<VkAndroidHardwareBufferFormatResolvePropertiesANDROID
>(pProperties
->pNext
);
5458 if (format_resolve_prop
) {
5459 format_resolve_prop
->colorAttachmentFormat
= VK_FORMAT_R8G8B8A8_UNORM
;
5464 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryAndroidHardwareBufferANDROID(
5466 const VkMemoryGetAndroidHardwareBufferInfoANDROID
* pInfo
,
5467 struct AHardwareBuffer
** pBuffer
)
5469 //Not a CREATE or DESTROY function
5472 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
5476 #ifdef VK_ENABLE_BETA_EXTENSIONS
5478 static VKAPI_ATTR VkResult VKAPI_CALL
CreateExecutionGraphPipelinesAMDX(
5480 VkPipelineCache pipelineCache
,
5481 uint32_t createInfoCount
,
5482 const VkExecutionGraphPipelineCreateInfoAMDX
* pCreateInfos
,
5483 const VkAllocationCallbacks
* pAllocator
,
5484 VkPipeline
* pPipelines
)
5486 unique_lock_t
lock(global_lock
);
5487 for (uint32_t i
= 0; i
< createInfoCount
; ++i
) {
5488 pPipelines
[i
] = (VkPipeline
)global_unique_handle
++;
5493 static VKAPI_ATTR VkResult VKAPI_CALL
GetExecutionGraphPipelineScratchSizeAMDX(
5495 VkPipeline executionGraph
,
5496 VkExecutionGraphPipelineScratchSizeAMDX
* pSizeInfo
)
5498 //Not a CREATE or DESTROY function
5502 static VKAPI_ATTR VkResult VKAPI_CALL
GetExecutionGraphPipelineNodeIndexAMDX(
5504 VkPipeline executionGraph
,
5505 const VkPipelineShaderStageNodeCreateInfoAMDX
* pNodeInfo
,
5506 uint32_t* pNodeIndex
)
5508 //Not a CREATE or DESTROY function
5512 static VKAPI_ATTR
void VKAPI_CALL
CmdInitializeGraphScratchMemoryAMDX(
5513 VkCommandBuffer commandBuffer
,
5514 VkDeviceAddress scratch
)
5516 //Not a CREATE or DESTROY function
5519 static VKAPI_ATTR
void VKAPI_CALL
CmdDispatchGraphAMDX(
5520 VkCommandBuffer commandBuffer
,
5521 VkDeviceAddress scratch
,
5522 const VkDispatchGraphCountInfoAMDX
* pCountInfo
)
5524 //Not a CREATE or DESTROY function
5527 static VKAPI_ATTR
void VKAPI_CALL
CmdDispatchGraphIndirectAMDX(
5528 VkCommandBuffer commandBuffer
,
5529 VkDeviceAddress scratch
,
5530 const VkDispatchGraphCountInfoAMDX
* pCountInfo
)
5532 //Not a CREATE or DESTROY function
5535 static VKAPI_ATTR
void VKAPI_CALL
CmdDispatchGraphIndirectCountAMDX(
5536 VkCommandBuffer commandBuffer
,
5537 VkDeviceAddress scratch
,
5538 VkDeviceAddress countInfo
)
5540 //Not a CREATE or DESTROY function
5542 #endif /* VK_ENABLE_BETA_EXTENSIONS */
5549 static VKAPI_ATTR
void VKAPI_CALL
CmdSetSampleLocationsEXT(
5550 VkCommandBuffer commandBuffer
,
5551 const VkSampleLocationsInfoEXT
* pSampleLocationsInfo
)
5553 //Not a CREATE or DESTROY function
5556 static VKAPI_ATTR
void VKAPI_CALL
GetPhysicalDeviceMultisamplePropertiesEXT(
5557 VkPhysicalDevice physicalDevice
,
5558 VkSampleCountFlagBits samples
,
5559 VkMultisamplePropertiesEXT
* pMultisampleProperties
)
5561 if (pMultisampleProperties
) {
5563 pMultisampleProperties
->maxSampleLocationGridSize
= {32, 32};
5574 static VKAPI_ATTR VkResult VKAPI_CALL
GetImageDrmFormatModifierPropertiesEXT(
5577 VkImageDrmFormatModifierPropertiesEXT
* pProperties
)
5579 //Not a CREATE or DESTROY function
5584 static VKAPI_ATTR VkResult VKAPI_CALL
CreateValidationCacheEXT(
5586 const VkValidationCacheCreateInfoEXT
* pCreateInfo
,
5587 const VkAllocationCallbacks
* pAllocator
,
5588 VkValidationCacheEXT
* pValidationCache
)
5590 unique_lock_t
lock(global_lock
);
5591 *pValidationCache
= (VkValidationCacheEXT
)global_unique_handle
++;
5595 static VKAPI_ATTR
void VKAPI_CALL
DestroyValidationCacheEXT(
5597 VkValidationCacheEXT validationCache
,
5598 const VkAllocationCallbacks
* pAllocator
)
5603 static VKAPI_ATTR VkResult VKAPI_CALL
MergeValidationCachesEXT(
5605 VkValidationCacheEXT dstCache
,
5606 uint32_t srcCacheCount
,
5607 const VkValidationCacheEXT
* pSrcCaches
)
5609 //Not a CREATE or DESTROY function
5613 static VKAPI_ATTR VkResult VKAPI_CALL
GetValidationCacheDataEXT(
5615 VkValidationCacheEXT validationCache
,
5619 //Not a CREATE or DESTROY function
5626 static VKAPI_ATTR
void VKAPI_CALL
CmdBindShadingRateImageNV(
5627 VkCommandBuffer commandBuffer
,
5628 VkImageView imageView
,
5629 VkImageLayout imageLayout
)
5631 //Not a CREATE or DESTROY function
5634 static VKAPI_ATTR
void VKAPI_CALL
CmdSetViewportShadingRatePaletteNV(
5635 VkCommandBuffer commandBuffer
,
5636 uint32_t firstViewport
,
5637 uint32_t viewportCount
,
5638 const VkShadingRatePaletteNV
* pShadingRatePalettes
)
5640 //Not a CREATE or DESTROY function
5643 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCoarseSampleOrderNV(
5644 VkCommandBuffer commandBuffer
,
5645 VkCoarseSampleOrderTypeNV sampleOrderType
,
5646 uint32_t customSampleOrderCount
,
5647 const VkCoarseSampleOrderCustomNV
* pCustomSampleOrders
)
5649 //Not a CREATE or DESTROY function
5653 static VKAPI_ATTR VkResult VKAPI_CALL
CreateAccelerationStructureNV(
5655 const VkAccelerationStructureCreateInfoNV
* pCreateInfo
,
5656 const VkAllocationCallbacks
* pAllocator
,
5657 VkAccelerationStructureNV
* pAccelerationStructure
)
5659 unique_lock_t
lock(global_lock
);
5660 *pAccelerationStructure
= (VkAccelerationStructureNV
)global_unique_handle
++;
5664 static VKAPI_ATTR
void VKAPI_CALL
DestroyAccelerationStructureNV(
5666 VkAccelerationStructureNV accelerationStructure
,
5667 const VkAllocationCallbacks
* pAllocator
)
5672 static VKAPI_ATTR
void VKAPI_CALL
GetAccelerationStructureMemoryRequirementsNV(
5674 const VkAccelerationStructureMemoryRequirementsInfoNV
* pInfo
,
5675 VkMemoryRequirements2KHR
* pMemoryRequirements
)
5678 pMemoryRequirements
->memoryRequirements
.size
= 4096;
5679 pMemoryRequirements
->memoryRequirements
.alignment
= 1;
5680 pMemoryRequirements
->memoryRequirements
.memoryTypeBits
= 0xFFFF;
5683 static VKAPI_ATTR VkResult VKAPI_CALL
BindAccelerationStructureMemoryNV(
5685 uint32_t bindInfoCount
,
5686 const VkBindAccelerationStructureMemoryInfoNV
* pBindInfos
)
5688 //Not a CREATE or DESTROY function
5692 static VKAPI_ATTR
void VKAPI_CALL
CmdBuildAccelerationStructureNV(
5693 VkCommandBuffer commandBuffer
,
5694 const VkAccelerationStructureInfoNV
* pInfo
,
5695 VkBuffer instanceData
,
5696 VkDeviceSize instanceOffset
,
5698 VkAccelerationStructureNV dst
,
5699 VkAccelerationStructureNV src
,
5701 VkDeviceSize scratchOffset
)
5703 //Not a CREATE or DESTROY function
5706 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyAccelerationStructureNV(
5707 VkCommandBuffer commandBuffer
,
5708 VkAccelerationStructureNV dst
,
5709 VkAccelerationStructureNV src
,
5710 VkCopyAccelerationStructureModeKHR mode
)
5712 //Not a CREATE or DESTROY function
5715 static VKAPI_ATTR
void VKAPI_CALL
CmdTraceRaysNV(
5716 VkCommandBuffer commandBuffer
,
5717 VkBuffer raygenShaderBindingTableBuffer
,
5718 VkDeviceSize raygenShaderBindingOffset
,
5719 VkBuffer missShaderBindingTableBuffer
,
5720 VkDeviceSize missShaderBindingOffset
,
5721 VkDeviceSize missShaderBindingStride
,
5722 VkBuffer hitShaderBindingTableBuffer
,
5723 VkDeviceSize hitShaderBindingOffset
,
5724 VkDeviceSize hitShaderBindingStride
,
5725 VkBuffer callableShaderBindingTableBuffer
,
5726 VkDeviceSize callableShaderBindingOffset
,
5727 VkDeviceSize callableShaderBindingStride
,
5732 //Not a CREATE or DESTROY function
5735 static VKAPI_ATTR VkResult VKAPI_CALL
CreateRayTracingPipelinesNV(
5737 VkPipelineCache pipelineCache
,
5738 uint32_t createInfoCount
,
5739 const VkRayTracingPipelineCreateInfoNV
* pCreateInfos
,
5740 const VkAllocationCallbacks
* pAllocator
,
5741 VkPipeline
* pPipelines
)
5743 unique_lock_t
lock(global_lock
);
5744 for (uint32_t i
= 0; i
< createInfoCount
; ++i
) {
5745 pPipelines
[i
] = (VkPipeline
)global_unique_handle
++;
5750 static VKAPI_ATTR VkResult VKAPI_CALL
GetRayTracingShaderGroupHandlesKHR(
5752 VkPipeline pipeline
,
5753 uint32_t firstGroup
,
5754 uint32_t groupCount
,
5758 //Not a CREATE or DESTROY function
5762 static VKAPI_ATTR VkResult VKAPI_CALL
GetRayTracingShaderGroupHandlesNV(
5764 VkPipeline pipeline
,
5765 uint32_t firstGroup
,
5766 uint32_t groupCount
,
5770 //Not a CREATE or DESTROY function
5774 static VKAPI_ATTR VkResult VKAPI_CALL
GetAccelerationStructureHandleNV(
5776 VkAccelerationStructureNV accelerationStructure
,
5780 //Not a CREATE or DESTROY function
5784 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteAccelerationStructuresPropertiesNV(
5785 VkCommandBuffer commandBuffer
,
5786 uint32_t accelerationStructureCount
,
5787 const VkAccelerationStructureNV
* pAccelerationStructures
,
5788 VkQueryType queryType
,
5789 VkQueryPool queryPool
,
5790 uint32_t firstQuery
)
5792 //Not a CREATE or DESTROY function
5795 static VKAPI_ATTR VkResult VKAPI_CALL
CompileDeferredNV(
5797 VkPipeline pipeline
,
5800 //Not a CREATE or DESTROY function
5809 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryHostPointerPropertiesEXT(
5811 VkExternalMemoryHandleTypeFlagBits handleType
,
5812 const void* pHostPointer
,
5813 VkMemoryHostPointerPropertiesEXT
* pMemoryHostPointerProperties
)
5815 pMemoryHostPointerProperties
->memoryTypeBits
= 1 << 5; // DEVICE_LOCAL only type
5820 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteBufferMarkerAMD(
5821 VkCommandBuffer commandBuffer
,
5822 VkPipelineStageFlagBits pipelineStage
,
5824 VkDeviceSize dstOffset
,
5827 //Not a CREATE or DESTROY function
5832 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceCalibrateableTimeDomainsEXT(
5833 VkPhysicalDevice physicalDevice
,
5834 uint32_t* pTimeDomainCount
,
5835 VkTimeDomainKHR
* pTimeDomains
)
5837 if (!pTimeDomains
) {
5838 *pTimeDomainCount
= 1;
5841 *pTimeDomains
= VK_TIME_DOMAIN_DEVICE_EXT
;
5846 static VKAPI_ATTR VkResult VKAPI_CALL
GetCalibratedTimestampsEXT(
5848 uint32_t timestampCount
,
5849 const VkCalibratedTimestampInfoKHR
* pTimestampInfos
,
5850 uint64_t* pTimestamps
,
5851 uint64_t* pMaxDeviation
)
5853 //Not a CREATE or DESTROY function
5860 #ifdef VK_USE_PLATFORM_GGP
5861 #endif /* VK_USE_PLATFORM_GGP */
5867 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMeshTasksNV(
5868 VkCommandBuffer commandBuffer
,
5872 //Not a CREATE or DESTROY function
5875 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMeshTasksIndirectNV(
5876 VkCommandBuffer commandBuffer
,
5878 VkDeviceSize offset
,
5882 //Not a CREATE or DESTROY function
5885 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMeshTasksIndirectCountNV(
5886 VkCommandBuffer commandBuffer
,
5888 VkDeviceSize offset
,
5889 VkBuffer countBuffer
,
5890 VkDeviceSize countBufferOffset
,
5891 uint32_t maxDrawCount
,
5894 //Not a CREATE or DESTROY function
5900 static VKAPI_ATTR
void VKAPI_CALL
CmdSetExclusiveScissorEnableNV(
5901 VkCommandBuffer commandBuffer
,
5902 uint32_t firstExclusiveScissor
,
5903 uint32_t exclusiveScissorCount
,
5904 const VkBool32
* pExclusiveScissorEnables
)
5906 //Not a CREATE or DESTROY function
5909 static VKAPI_ATTR
void VKAPI_CALL
CmdSetExclusiveScissorNV(
5910 VkCommandBuffer commandBuffer
,
5911 uint32_t firstExclusiveScissor
,
5912 uint32_t exclusiveScissorCount
,
5913 const VkRect2D
* pExclusiveScissors
)
5915 //Not a CREATE or DESTROY function
5919 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCheckpointNV(
5920 VkCommandBuffer commandBuffer
,
5921 const void* pCheckpointMarker
)
5923 //Not a CREATE or DESTROY function
5926 static VKAPI_ATTR
void VKAPI_CALL
GetQueueCheckpointDataNV(
5928 uint32_t* pCheckpointDataCount
,
5929 VkCheckpointDataNV
* pCheckpointData
)
5931 //Not a CREATE or DESTROY function
5936 static VKAPI_ATTR VkResult VKAPI_CALL
InitializePerformanceApiINTEL(
5938 const VkInitializePerformanceApiInfoINTEL
* pInitializeInfo
)
5940 //Not a CREATE or DESTROY function
5944 static VKAPI_ATTR
void VKAPI_CALL
UninitializePerformanceApiINTEL(
5947 //Not a CREATE or DESTROY function
5950 static VKAPI_ATTR VkResult VKAPI_CALL
CmdSetPerformanceMarkerINTEL(
5951 VkCommandBuffer commandBuffer
,
5952 const VkPerformanceMarkerInfoINTEL
* pMarkerInfo
)
5954 //Not a CREATE or DESTROY function
5958 static VKAPI_ATTR VkResult VKAPI_CALL
CmdSetPerformanceStreamMarkerINTEL(
5959 VkCommandBuffer commandBuffer
,
5960 const VkPerformanceStreamMarkerInfoINTEL
* pMarkerInfo
)
5962 //Not a CREATE or DESTROY function
5966 static VKAPI_ATTR VkResult VKAPI_CALL
CmdSetPerformanceOverrideINTEL(
5967 VkCommandBuffer commandBuffer
,
5968 const VkPerformanceOverrideInfoINTEL
* pOverrideInfo
)
5970 //Not a CREATE or DESTROY function
5974 static VKAPI_ATTR VkResult VKAPI_CALL
AcquirePerformanceConfigurationINTEL(
5976 const VkPerformanceConfigurationAcquireInfoINTEL
* pAcquireInfo
,
5977 VkPerformanceConfigurationINTEL
* pConfiguration
)
5979 //Not a CREATE or DESTROY function
5983 static VKAPI_ATTR VkResult VKAPI_CALL
ReleasePerformanceConfigurationINTEL(
5985 VkPerformanceConfigurationINTEL configuration
)
5987 //Not a CREATE or DESTROY function
5991 static VKAPI_ATTR VkResult VKAPI_CALL
QueueSetPerformanceConfigurationINTEL(
5993 VkPerformanceConfigurationINTEL configuration
)
5995 //Not a CREATE or DESTROY function
5999 static VKAPI_ATTR VkResult VKAPI_CALL
GetPerformanceParameterINTEL(
6001 VkPerformanceParameterTypeINTEL parameter
,
6002 VkPerformanceValueINTEL
* pValue
)
6004 //Not a CREATE or DESTROY function
6010 static VKAPI_ATTR
void VKAPI_CALL
SetLocalDimmingAMD(
6012 VkSwapchainKHR swapChain
,
6013 VkBool32 localDimmingEnable
)
6015 //Not a CREATE or DESTROY function
6018 #ifdef VK_USE_PLATFORM_FUCHSIA
6020 static VKAPI_ATTR VkResult VKAPI_CALL
CreateImagePipeSurfaceFUCHSIA(
6021 VkInstance instance
,
6022 const VkImagePipeSurfaceCreateInfoFUCHSIA
* pCreateInfo
,
6023 const VkAllocationCallbacks
* pAllocator
,
6024 VkSurfaceKHR
* pSurface
)
6026 unique_lock_t
lock(global_lock
);
6027 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
6030 #endif /* VK_USE_PLATFORM_FUCHSIA */
6032 #ifdef VK_USE_PLATFORM_METAL_EXT
6034 static VKAPI_ATTR VkResult VKAPI_CALL
CreateMetalSurfaceEXT(
6035 VkInstance instance
,
6036 const VkMetalSurfaceCreateInfoEXT
* pCreateInfo
,
6037 const VkAllocationCallbacks
* pAllocator
,
6038 VkSurfaceKHR
* pSurface
)
6040 unique_lock_t
lock(global_lock
);
6041 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
6044 #endif /* VK_USE_PLATFORM_METAL_EXT */
6058 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL
GetBufferDeviceAddressEXT(
6060 const VkBufferDeviceAddressInfo
* pInfo
)
6062 return GetBufferDeviceAddress(device
, pInfo
);
6066 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceToolPropertiesEXT(
6067 VkPhysicalDevice physicalDevice
,
6068 uint32_t* pToolCount
,
6069 VkPhysicalDeviceToolProperties
* pToolProperties
)
6071 //Not a CREATE or DESTROY function
6078 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceCooperativeMatrixPropertiesNV(
6079 VkPhysicalDevice physicalDevice
,
6080 uint32_t* pPropertyCount
,
6081 VkCooperativeMatrixPropertiesNV
* pProperties
)
6083 //Not a CREATE or DESTROY function
6088 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6089 VkPhysicalDevice physicalDevice
,
6090 uint32_t* pCombinationCount
,
6091 VkFramebufferMixedSamplesCombinationNV
* pCombinations
)
6093 //Not a CREATE or DESTROY function
6100 #ifdef VK_USE_PLATFORM_WIN32_KHR
6102 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceSurfacePresentModes2EXT(
6103 VkPhysicalDevice physicalDevice
,
6104 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
6105 uint32_t* pPresentModeCount
,
6106 VkPresentModeKHR
* pPresentModes
)
6108 //Not a CREATE or DESTROY function
6112 static VKAPI_ATTR VkResult VKAPI_CALL
AcquireFullScreenExclusiveModeEXT(
6114 VkSwapchainKHR swapchain
)
6116 //Not a CREATE or DESTROY function
6120 static VKAPI_ATTR VkResult VKAPI_CALL
ReleaseFullScreenExclusiveModeEXT(
6122 VkSwapchainKHR swapchain
)
6124 //Not a CREATE or DESTROY function
6128 static VKAPI_ATTR VkResult VKAPI_CALL
GetDeviceGroupSurfacePresentModes2EXT(
6130 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
6131 VkDeviceGroupPresentModeFlagsKHR
* pModes
)
6133 //Not a CREATE or DESTROY function
6136 #endif /* VK_USE_PLATFORM_WIN32_KHR */
6139 static VKAPI_ATTR VkResult VKAPI_CALL
CreateHeadlessSurfaceEXT(
6140 VkInstance instance
,
6141 const VkHeadlessSurfaceCreateInfoEXT
* pCreateInfo
,
6142 const VkAllocationCallbacks
* pAllocator
,
6143 VkSurfaceKHR
* pSurface
)
6145 unique_lock_t
lock(global_lock
);
6146 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
6151 static VKAPI_ATTR
void VKAPI_CALL
CmdSetLineStippleEXT(
6152 VkCommandBuffer commandBuffer
,
6153 uint32_t lineStippleFactor
,
6154 uint16_t lineStipplePattern
)
6156 //Not a CREATE or DESTROY function
6161 static VKAPI_ATTR
void VKAPI_CALL
ResetQueryPoolEXT(
6163 VkQueryPool queryPool
,
6164 uint32_t firstQuery
,
6165 uint32_t queryCount
)
6167 //Not a CREATE or DESTROY function
6172 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCullModeEXT(
6173 VkCommandBuffer commandBuffer
,
6174 VkCullModeFlags cullMode
)
6176 //Not a CREATE or DESTROY function
6179 static VKAPI_ATTR
void VKAPI_CALL
CmdSetFrontFaceEXT(
6180 VkCommandBuffer commandBuffer
,
6181 VkFrontFace frontFace
)
6183 //Not a CREATE or DESTROY function
6186 static VKAPI_ATTR
void VKAPI_CALL
CmdSetPrimitiveTopologyEXT(
6187 VkCommandBuffer commandBuffer
,
6188 VkPrimitiveTopology primitiveTopology
)
6190 //Not a CREATE or DESTROY function
6193 static VKAPI_ATTR
void VKAPI_CALL
CmdSetViewportWithCountEXT(
6194 VkCommandBuffer commandBuffer
,
6195 uint32_t viewportCount
,
6196 const VkViewport
* pViewports
)
6198 //Not a CREATE or DESTROY function
6201 static VKAPI_ATTR
void VKAPI_CALL
CmdSetScissorWithCountEXT(
6202 VkCommandBuffer commandBuffer
,
6203 uint32_t scissorCount
,
6204 const VkRect2D
* pScissors
)
6206 //Not a CREATE or DESTROY function
6209 static VKAPI_ATTR
void VKAPI_CALL
CmdBindVertexBuffers2EXT(
6210 VkCommandBuffer commandBuffer
,
6211 uint32_t firstBinding
,
6212 uint32_t bindingCount
,
6213 const VkBuffer
* pBuffers
,
6214 const VkDeviceSize
* pOffsets
,
6215 const VkDeviceSize
* pSizes
,
6216 const VkDeviceSize
* pStrides
)
6218 //Not a CREATE or DESTROY function
6221 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthTestEnableEXT(
6222 VkCommandBuffer commandBuffer
,
6223 VkBool32 depthTestEnable
)
6225 //Not a CREATE or DESTROY function
6228 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthWriteEnableEXT(
6229 VkCommandBuffer commandBuffer
,
6230 VkBool32 depthWriteEnable
)
6232 //Not a CREATE or DESTROY function
6235 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthCompareOpEXT(
6236 VkCommandBuffer commandBuffer
,
6237 VkCompareOp depthCompareOp
)
6239 //Not a CREATE or DESTROY function
6242 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthBoundsTestEnableEXT(
6243 VkCommandBuffer commandBuffer
,
6244 VkBool32 depthBoundsTestEnable
)
6246 //Not a CREATE or DESTROY function
6249 static VKAPI_ATTR
void VKAPI_CALL
CmdSetStencilTestEnableEXT(
6250 VkCommandBuffer commandBuffer
,
6251 VkBool32 stencilTestEnable
)
6253 //Not a CREATE or DESTROY function
6256 static VKAPI_ATTR
void VKAPI_CALL
CmdSetStencilOpEXT(
6257 VkCommandBuffer commandBuffer
,
6258 VkStencilFaceFlags faceMask
,
6261 VkStencilOp depthFailOp
,
6262 VkCompareOp compareOp
)
6264 //Not a CREATE or DESTROY function
6268 static VKAPI_ATTR VkResult VKAPI_CALL
CopyMemoryToImageEXT(
6270 const VkCopyMemoryToImageInfoEXT
* pCopyMemoryToImageInfo
)
6272 //Not a CREATE or DESTROY function
6276 static VKAPI_ATTR VkResult VKAPI_CALL
CopyImageToMemoryEXT(
6278 const VkCopyImageToMemoryInfoEXT
* pCopyImageToMemoryInfo
)
6280 //Not a CREATE or DESTROY function
6284 static VKAPI_ATTR VkResult VKAPI_CALL
CopyImageToImageEXT(
6286 const VkCopyImageToImageInfoEXT
* pCopyImageToImageInfo
)
6288 //Not a CREATE or DESTROY function
6292 static VKAPI_ATTR VkResult VKAPI_CALL
TransitionImageLayoutEXT(
6294 uint32_t transitionCount
,
6295 const VkHostImageLayoutTransitionInfoEXT
* pTransitions
)
6297 //Not a CREATE or DESTROY function
6301 static VKAPI_ATTR
void VKAPI_CALL
GetImageSubresourceLayout2EXT(
6304 const VkImageSubresource2KHR
* pSubresource
,
6305 VkSubresourceLayout2KHR
* pLayout
)
6307 //Not a CREATE or DESTROY function
6314 static VKAPI_ATTR VkResult VKAPI_CALL
ReleaseSwapchainImagesEXT(
6316 const VkReleaseSwapchainImagesInfoEXT
* pReleaseInfo
)
6318 //Not a CREATE or DESTROY function
6324 static VKAPI_ATTR
void VKAPI_CALL
GetGeneratedCommandsMemoryRequirementsNV(
6326 const VkGeneratedCommandsMemoryRequirementsInfoNV
* pInfo
,
6327 VkMemoryRequirements2
* pMemoryRequirements
)
6329 //Not a CREATE or DESTROY function
6332 static VKAPI_ATTR
void VKAPI_CALL
CmdPreprocessGeneratedCommandsNV(
6333 VkCommandBuffer commandBuffer
,
6334 const VkGeneratedCommandsInfoNV
* pGeneratedCommandsInfo
)
6336 //Not a CREATE or DESTROY function
6339 static VKAPI_ATTR
void VKAPI_CALL
CmdExecuteGeneratedCommandsNV(
6340 VkCommandBuffer commandBuffer
,
6341 VkBool32 isPreprocessed
,
6342 const VkGeneratedCommandsInfoNV
* pGeneratedCommandsInfo
)
6344 //Not a CREATE or DESTROY function
6347 static VKAPI_ATTR
void VKAPI_CALL
CmdBindPipelineShaderGroupNV(
6348 VkCommandBuffer commandBuffer
,
6349 VkPipelineBindPoint pipelineBindPoint
,
6350 VkPipeline pipeline
,
6351 uint32_t groupIndex
)
6353 //Not a CREATE or DESTROY function
6356 static VKAPI_ATTR VkResult VKAPI_CALL
CreateIndirectCommandsLayoutNV(
6358 const VkIndirectCommandsLayoutCreateInfoNV
* pCreateInfo
,
6359 const VkAllocationCallbacks
* pAllocator
,
6360 VkIndirectCommandsLayoutNV
* pIndirectCommandsLayout
)
6362 unique_lock_t
lock(global_lock
);
6363 *pIndirectCommandsLayout
= (VkIndirectCommandsLayoutNV
)global_unique_handle
++;
6367 static VKAPI_ATTR
void VKAPI_CALL
DestroyIndirectCommandsLayoutNV(
6369 VkIndirectCommandsLayoutNV indirectCommandsLayout
,
6370 const VkAllocationCallbacks
* pAllocator
)
6379 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthBias2EXT(
6380 VkCommandBuffer commandBuffer
,
6381 const VkDepthBiasInfoEXT
* pDepthBiasInfo
)
6383 //Not a CREATE or DESTROY function
6388 static VKAPI_ATTR VkResult VKAPI_CALL
AcquireDrmDisplayEXT(
6389 VkPhysicalDevice physicalDevice
,
6391 VkDisplayKHR display
)
6393 //Not a CREATE or DESTROY function
6397 static VKAPI_ATTR VkResult VKAPI_CALL
GetDrmDisplayEXT(
6398 VkPhysicalDevice physicalDevice
,
6400 uint32_t connectorId
,
6401 VkDisplayKHR
* display
)
6403 //Not a CREATE or DESTROY function
6412 static VKAPI_ATTR VkResult VKAPI_CALL
CreatePrivateDataSlotEXT(
6414 const VkPrivateDataSlotCreateInfo
* pCreateInfo
,
6415 const VkAllocationCallbacks
* pAllocator
,
6416 VkPrivateDataSlot
* pPrivateDataSlot
)
6418 unique_lock_t
lock(global_lock
);
6419 *pPrivateDataSlot
= (VkPrivateDataSlot
)global_unique_handle
++;
6423 static VKAPI_ATTR
void VKAPI_CALL
DestroyPrivateDataSlotEXT(
6425 VkPrivateDataSlot privateDataSlot
,
6426 const VkAllocationCallbacks
* pAllocator
)
6431 static VKAPI_ATTR VkResult VKAPI_CALL
SetPrivateDataEXT(
6433 VkObjectType objectType
,
6434 uint64_t objectHandle
,
6435 VkPrivateDataSlot privateDataSlot
,
6438 //Not a CREATE or DESTROY function
6442 static VKAPI_ATTR
void VKAPI_CALL
GetPrivateDataEXT(
6444 VkObjectType objectType
,
6445 uint64_t objectHandle
,
6446 VkPrivateDataSlot privateDataSlot
,
6449 //Not a CREATE or DESTROY function
6456 static VKAPI_ATTR VkResult VKAPI_CALL
CreateCudaModuleNV(
6458 const VkCudaModuleCreateInfoNV
* pCreateInfo
,
6459 const VkAllocationCallbacks
* pAllocator
,
6460 VkCudaModuleNV
* pModule
)
6462 unique_lock_t
lock(global_lock
);
6463 *pModule
= (VkCudaModuleNV
)global_unique_handle
++;
6467 static VKAPI_ATTR VkResult VKAPI_CALL
GetCudaModuleCacheNV(
6469 VkCudaModuleNV module
,
6473 //Not a CREATE or DESTROY function
6477 static VKAPI_ATTR VkResult VKAPI_CALL
CreateCudaFunctionNV(
6479 const VkCudaFunctionCreateInfoNV
* pCreateInfo
,
6480 const VkAllocationCallbacks
* pAllocator
,
6481 VkCudaFunctionNV
* pFunction
)
6483 unique_lock_t
lock(global_lock
);
6484 *pFunction
= (VkCudaFunctionNV
)global_unique_handle
++;
6488 static VKAPI_ATTR
void VKAPI_CALL
DestroyCudaModuleNV(
6490 VkCudaModuleNV module
,
6491 const VkAllocationCallbacks
* pAllocator
)
6496 static VKAPI_ATTR
void VKAPI_CALL
DestroyCudaFunctionNV(
6498 VkCudaFunctionNV function
,
6499 const VkAllocationCallbacks
* pAllocator
)
6504 static VKAPI_ATTR
void VKAPI_CALL
CmdCudaLaunchKernelNV(
6505 VkCommandBuffer commandBuffer
,
6506 const VkCudaLaunchInfoNV
* pLaunchInfo
)
6508 //Not a CREATE or DESTROY function
6512 #ifdef VK_USE_PLATFORM_METAL_EXT
6514 static VKAPI_ATTR
void VKAPI_CALL
ExportMetalObjectsEXT(
6516 VkExportMetalObjectsInfoEXT
* pMetalObjectsInfo
)
6518 //Not a CREATE or DESTROY function
6520 #endif /* VK_USE_PLATFORM_METAL_EXT */
6523 static VKAPI_ATTR
void VKAPI_CALL
GetDescriptorSetLayoutSizeEXT(
6525 VkDescriptorSetLayout layout
,
6526 VkDeviceSize
* pLayoutSizeInBytes
)
6528 // Need to give something non-zero
6529 *pLayoutSizeInBytes
= 4;
6532 static VKAPI_ATTR
void VKAPI_CALL
GetDescriptorSetLayoutBindingOffsetEXT(
6534 VkDescriptorSetLayout layout
,
6536 VkDeviceSize
* pOffset
)
6538 //Not a CREATE or DESTROY function
6541 static VKAPI_ATTR
void VKAPI_CALL
GetDescriptorEXT(
6543 const VkDescriptorGetInfoEXT
* pDescriptorInfo
,
6547 //Not a CREATE or DESTROY function
6550 static VKAPI_ATTR
void VKAPI_CALL
CmdBindDescriptorBuffersEXT(
6551 VkCommandBuffer commandBuffer
,
6552 uint32_t bufferCount
,
6553 const VkDescriptorBufferBindingInfoEXT
* pBindingInfos
)
6555 //Not a CREATE or DESTROY function
6558 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDescriptorBufferOffsetsEXT(
6559 VkCommandBuffer commandBuffer
,
6560 VkPipelineBindPoint pipelineBindPoint
,
6561 VkPipelineLayout layout
,
6564 const uint32_t* pBufferIndices
,
6565 const VkDeviceSize
* pOffsets
)
6567 //Not a CREATE or DESTROY function
6570 static VKAPI_ATTR
void VKAPI_CALL
CmdBindDescriptorBufferEmbeddedSamplersEXT(
6571 VkCommandBuffer commandBuffer
,
6572 VkPipelineBindPoint pipelineBindPoint
,
6573 VkPipelineLayout layout
,
6576 //Not a CREATE or DESTROY function
6579 static VKAPI_ATTR VkResult VKAPI_CALL
GetBufferOpaqueCaptureDescriptorDataEXT(
6581 const VkBufferCaptureDescriptorDataInfoEXT
* pInfo
,
6584 //Not a CREATE or DESTROY function
6588 static VKAPI_ATTR VkResult VKAPI_CALL
GetImageOpaqueCaptureDescriptorDataEXT(
6590 const VkImageCaptureDescriptorDataInfoEXT
* pInfo
,
6593 //Not a CREATE or DESTROY function
6597 static VKAPI_ATTR VkResult VKAPI_CALL
GetImageViewOpaqueCaptureDescriptorDataEXT(
6599 const VkImageViewCaptureDescriptorDataInfoEXT
* pInfo
,
6602 //Not a CREATE or DESTROY function
6606 static VKAPI_ATTR VkResult VKAPI_CALL
GetSamplerOpaqueCaptureDescriptorDataEXT(
6608 const VkSamplerCaptureDescriptorDataInfoEXT
* pInfo
,
6611 //Not a CREATE or DESTROY function
6615 static VKAPI_ATTR VkResult VKAPI_CALL
GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
6617 const VkAccelerationStructureCaptureDescriptorDataInfoEXT
* pInfo
,
6620 //Not a CREATE or DESTROY function
6627 static VKAPI_ATTR
void VKAPI_CALL
CmdSetFragmentShadingRateEnumNV(
6628 VkCommandBuffer commandBuffer
,
6629 VkFragmentShadingRateNV shadingRate
,
6630 const VkFragmentShadingRateCombinerOpKHR combinerOps
[2])
6632 //Not a CREATE or DESTROY function
6644 static VKAPI_ATTR VkResult VKAPI_CALL
GetDeviceFaultInfoEXT(
6646 VkDeviceFaultCountsEXT
* pFaultCounts
,
6647 VkDeviceFaultInfoEXT
* pFaultInfo
)
6649 //Not a CREATE or DESTROY function
6655 #ifdef VK_USE_PLATFORM_WIN32_KHR
6657 static VKAPI_ATTR VkResult VKAPI_CALL
AcquireWinrtDisplayNV(
6658 VkPhysicalDevice physicalDevice
,
6659 VkDisplayKHR display
)
6661 //Not a CREATE or DESTROY function
6665 static VKAPI_ATTR VkResult VKAPI_CALL
GetWinrtDisplayNV(
6666 VkPhysicalDevice physicalDevice
,
6667 uint32_t deviceRelativeId
,
6668 VkDisplayKHR
* pDisplay
)
6670 //Not a CREATE or DESTROY function
6673 #endif /* VK_USE_PLATFORM_WIN32_KHR */
6675 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
6677 static VKAPI_ATTR VkResult VKAPI_CALL
CreateDirectFBSurfaceEXT(
6678 VkInstance instance
,
6679 const VkDirectFBSurfaceCreateInfoEXT
* pCreateInfo
,
6680 const VkAllocationCallbacks
* pAllocator
,
6681 VkSurfaceKHR
* pSurface
)
6683 unique_lock_t
lock(global_lock
);
6684 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
6688 static VKAPI_ATTR VkBool32 VKAPI_CALL
GetPhysicalDeviceDirectFBPresentationSupportEXT(
6689 VkPhysicalDevice physicalDevice
,
6690 uint32_t queueFamilyIndex
,
6693 //Not a CREATE or DESTROY function
6696 #endif /* VK_USE_PLATFORM_DIRECTFB_EXT */
6700 static VKAPI_ATTR
void VKAPI_CALL
CmdSetVertexInputEXT(
6701 VkCommandBuffer commandBuffer
,
6702 uint32_t vertexBindingDescriptionCount
,
6703 const VkVertexInputBindingDescription2EXT
* pVertexBindingDescriptions
,
6704 uint32_t vertexAttributeDescriptionCount
,
6705 const VkVertexInputAttributeDescription2EXT
* pVertexAttributeDescriptions
)
6707 //Not a CREATE or DESTROY function
6715 #ifdef VK_USE_PLATFORM_FUCHSIA
6717 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryZirconHandleFUCHSIA(
6719 const VkMemoryGetZirconHandleInfoFUCHSIA
* pGetZirconHandleInfo
,
6720 zx_handle_t
* pZirconHandle
)
6722 //Not a CREATE or DESTROY function
6726 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryZirconHandlePropertiesFUCHSIA(
6728 VkExternalMemoryHandleTypeFlagBits handleType
,
6729 zx_handle_t zirconHandle
,
6730 VkMemoryZirconHandlePropertiesFUCHSIA
* pMemoryZirconHandleProperties
)
6732 //Not a CREATE or DESTROY function
6735 #endif /* VK_USE_PLATFORM_FUCHSIA */
6737 #ifdef VK_USE_PLATFORM_FUCHSIA
6739 static VKAPI_ATTR VkResult VKAPI_CALL
ImportSemaphoreZirconHandleFUCHSIA(
6741 const VkImportSemaphoreZirconHandleInfoFUCHSIA
* pImportSemaphoreZirconHandleInfo
)
6743 //Not a CREATE or DESTROY function
6747 static VKAPI_ATTR VkResult VKAPI_CALL
GetSemaphoreZirconHandleFUCHSIA(
6749 const VkSemaphoreGetZirconHandleInfoFUCHSIA
* pGetZirconHandleInfo
,
6750 zx_handle_t
* pZirconHandle
)
6752 //Not a CREATE or DESTROY function
6755 #endif /* VK_USE_PLATFORM_FUCHSIA */
6757 #ifdef VK_USE_PLATFORM_FUCHSIA
6759 static VKAPI_ATTR VkResult VKAPI_CALL
CreateBufferCollectionFUCHSIA(
6761 const VkBufferCollectionCreateInfoFUCHSIA
* pCreateInfo
,
6762 const VkAllocationCallbacks
* pAllocator
,
6763 VkBufferCollectionFUCHSIA
* pCollection
)
6765 unique_lock_t
lock(global_lock
);
6766 *pCollection
= (VkBufferCollectionFUCHSIA
)global_unique_handle
++;
6770 static VKAPI_ATTR VkResult VKAPI_CALL
SetBufferCollectionImageConstraintsFUCHSIA(
6772 VkBufferCollectionFUCHSIA collection
,
6773 const VkImageConstraintsInfoFUCHSIA
* pImageConstraintsInfo
)
6775 //Not a CREATE or DESTROY function
6779 static VKAPI_ATTR VkResult VKAPI_CALL
SetBufferCollectionBufferConstraintsFUCHSIA(
6781 VkBufferCollectionFUCHSIA collection
,
6782 const VkBufferConstraintsInfoFUCHSIA
* pBufferConstraintsInfo
)
6784 //Not a CREATE or DESTROY function
6788 static VKAPI_ATTR
void VKAPI_CALL
DestroyBufferCollectionFUCHSIA(
6790 VkBufferCollectionFUCHSIA collection
,
6791 const VkAllocationCallbacks
* pAllocator
)
6796 static VKAPI_ATTR VkResult VKAPI_CALL
GetBufferCollectionPropertiesFUCHSIA(
6798 VkBufferCollectionFUCHSIA collection
,
6799 VkBufferCollectionPropertiesFUCHSIA
* pProperties
)
6801 //Not a CREATE or DESTROY function
6804 #endif /* VK_USE_PLATFORM_FUCHSIA */
6807 static VKAPI_ATTR VkResult VKAPI_CALL
GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
6809 VkRenderPass renderpass
,
6810 VkExtent2D
* pMaxWorkgroupSize
)
6812 //Not a CREATE or DESTROY function
6816 static VKAPI_ATTR
void VKAPI_CALL
CmdSubpassShadingHUAWEI(
6817 VkCommandBuffer commandBuffer
)
6819 //Not a CREATE or DESTROY function
6823 static VKAPI_ATTR
void VKAPI_CALL
CmdBindInvocationMaskHUAWEI(
6824 VkCommandBuffer commandBuffer
,
6825 VkImageView imageView
,
6826 VkImageLayout imageLayout
)
6828 //Not a CREATE or DESTROY function
6832 static VKAPI_ATTR VkResult VKAPI_CALL
GetMemoryRemoteAddressNV(
6834 const VkMemoryGetRemoteAddressInfoNV
* pMemoryGetRemoteAddressInfo
,
6835 VkRemoteAddressNV
* pAddress
)
6837 //Not a CREATE or DESTROY function
6842 static VKAPI_ATTR VkResult VKAPI_CALL
GetPipelinePropertiesEXT(
6844 const VkPipelineInfoEXT
* pPipelineInfo
,
6845 VkBaseOutStructure
* pPipelineProperties
)
6847 //Not a CREATE or DESTROY function
6854 static VKAPI_ATTR
void VKAPI_CALL
CmdSetPatchControlPointsEXT(
6855 VkCommandBuffer commandBuffer
,
6856 uint32_t patchControlPoints
)
6858 //Not a CREATE or DESTROY function
6861 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRasterizerDiscardEnableEXT(
6862 VkCommandBuffer commandBuffer
,
6863 VkBool32 rasterizerDiscardEnable
)
6865 //Not a CREATE or DESTROY function
6868 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthBiasEnableEXT(
6869 VkCommandBuffer commandBuffer
,
6870 VkBool32 depthBiasEnable
)
6872 //Not a CREATE or DESTROY function
6875 static VKAPI_ATTR
void VKAPI_CALL
CmdSetLogicOpEXT(
6876 VkCommandBuffer commandBuffer
,
6879 //Not a CREATE or DESTROY function
6882 static VKAPI_ATTR
void VKAPI_CALL
CmdSetPrimitiveRestartEnableEXT(
6883 VkCommandBuffer commandBuffer
,
6884 VkBool32 primitiveRestartEnable
)
6886 //Not a CREATE or DESTROY function
6889 #ifdef VK_USE_PLATFORM_SCREEN_QNX
6891 static VKAPI_ATTR VkResult VKAPI_CALL
CreateScreenSurfaceQNX(
6892 VkInstance instance
,
6893 const VkScreenSurfaceCreateInfoQNX
* pCreateInfo
,
6894 const VkAllocationCallbacks
* pAllocator
,
6895 VkSurfaceKHR
* pSurface
)
6897 unique_lock_t
lock(global_lock
);
6898 *pSurface
= (VkSurfaceKHR
)global_unique_handle
++;
6902 static VKAPI_ATTR VkBool32 VKAPI_CALL
GetPhysicalDeviceScreenPresentationSupportQNX(
6903 VkPhysicalDevice physicalDevice
,
6904 uint32_t queueFamilyIndex
,
6905 struct _screen_window
* window
)
6907 //Not a CREATE or DESTROY function
6910 #endif /* VK_USE_PLATFORM_SCREEN_QNX */
6913 static VKAPI_ATTR
void VKAPI_CALL
CmdSetColorWriteEnableEXT(
6914 VkCommandBuffer commandBuffer
,
6915 uint32_t attachmentCount
,
6916 const VkBool32
* pColorWriteEnables
)
6918 //Not a CREATE or DESTROY function
6925 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMultiEXT(
6926 VkCommandBuffer commandBuffer
,
6928 const VkMultiDrawInfoEXT
* pVertexInfo
,
6929 uint32_t instanceCount
,
6930 uint32_t firstInstance
,
6933 //Not a CREATE or DESTROY function
6936 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMultiIndexedEXT(
6937 VkCommandBuffer commandBuffer
,
6939 const VkMultiDrawIndexedInfoEXT
* pIndexInfo
,
6940 uint32_t instanceCount
,
6941 uint32_t firstInstance
,
6943 const int32_t* pVertexOffset
)
6945 //Not a CREATE or DESTROY function
6951 static VKAPI_ATTR VkResult VKAPI_CALL
CreateMicromapEXT(
6953 const VkMicromapCreateInfoEXT
* pCreateInfo
,
6954 const VkAllocationCallbacks
* pAllocator
,
6955 VkMicromapEXT
* pMicromap
)
6957 unique_lock_t
lock(global_lock
);
6958 *pMicromap
= (VkMicromapEXT
)global_unique_handle
++;
6962 static VKAPI_ATTR
void VKAPI_CALL
DestroyMicromapEXT(
6964 VkMicromapEXT micromap
,
6965 const VkAllocationCallbacks
* pAllocator
)
6970 static VKAPI_ATTR
void VKAPI_CALL
CmdBuildMicromapsEXT(
6971 VkCommandBuffer commandBuffer
,
6973 const VkMicromapBuildInfoEXT
* pInfos
)
6975 //Not a CREATE or DESTROY function
6978 static VKAPI_ATTR VkResult VKAPI_CALL
BuildMicromapsEXT(
6980 VkDeferredOperationKHR deferredOperation
,
6982 const VkMicromapBuildInfoEXT
* pInfos
)
6984 //Not a CREATE or DESTROY function
6988 static VKAPI_ATTR VkResult VKAPI_CALL
CopyMicromapEXT(
6990 VkDeferredOperationKHR deferredOperation
,
6991 const VkCopyMicromapInfoEXT
* pInfo
)
6993 //Not a CREATE or DESTROY function
6997 static VKAPI_ATTR VkResult VKAPI_CALL
CopyMicromapToMemoryEXT(
6999 VkDeferredOperationKHR deferredOperation
,
7000 const VkCopyMicromapToMemoryInfoEXT
* pInfo
)
7002 //Not a CREATE or DESTROY function
7006 static VKAPI_ATTR VkResult VKAPI_CALL
CopyMemoryToMicromapEXT(
7008 VkDeferredOperationKHR deferredOperation
,
7009 const VkCopyMemoryToMicromapInfoEXT
* pInfo
)
7011 //Not a CREATE or DESTROY function
7015 static VKAPI_ATTR VkResult VKAPI_CALL
WriteMicromapsPropertiesEXT(
7017 uint32_t micromapCount
,
7018 const VkMicromapEXT
* pMicromaps
,
7019 VkQueryType queryType
,
7024 //Not a CREATE or DESTROY function
7028 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyMicromapEXT(
7029 VkCommandBuffer commandBuffer
,
7030 const VkCopyMicromapInfoEXT
* pInfo
)
7032 //Not a CREATE or DESTROY function
7035 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyMicromapToMemoryEXT(
7036 VkCommandBuffer commandBuffer
,
7037 const VkCopyMicromapToMemoryInfoEXT
* pInfo
)
7039 //Not a CREATE or DESTROY function
7042 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyMemoryToMicromapEXT(
7043 VkCommandBuffer commandBuffer
,
7044 const VkCopyMemoryToMicromapInfoEXT
* pInfo
)
7046 //Not a CREATE or DESTROY function
7049 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteMicromapsPropertiesEXT(
7050 VkCommandBuffer commandBuffer
,
7051 uint32_t micromapCount
,
7052 const VkMicromapEXT
* pMicromaps
,
7053 VkQueryType queryType
,
7054 VkQueryPool queryPool
,
7055 uint32_t firstQuery
)
7057 //Not a CREATE or DESTROY function
7060 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceMicromapCompatibilityEXT(
7062 const VkMicromapVersionInfoEXT
* pVersionInfo
,
7063 VkAccelerationStructureCompatibilityKHR
* pCompatibility
)
7065 //Not a CREATE or DESTROY function
7068 static VKAPI_ATTR
void VKAPI_CALL
GetMicromapBuildSizesEXT(
7070 VkAccelerationStructureBuildTypeKHR buildType
,
7071 const VkMicromapBuildInfoEXT
* pBuildInfo
,
7072 VkMicromapBuildSizesInfoEXT
* pSizeInfo
)
7074 //Not a CREATE or DESTROY function
7077 #ifdef VK_ENABLE_BETA_EXTENSIONS
7078 #endif /* VK_ENABLE_BETA_EXTENSIONS */
7082 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawClusterHUAWEI(
7083 VkCommandBuffer commandBuffer
,
7084 uint32_t groupCountX
,
7085 uint32_t groupCountY
,
7086 uint32_t groupCountZ
)
7088 //Not a CREATE or DESTROY function
7091 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawClusterIndirectHUAWEI(
7092 VkCommandBuffer commandBuffer
,
7094 VkDeviceSize offset
)
7096 //Not a CREATE or DESTROY function
7101 static VKAPI_ATTR
void VKAPI_CALL
SetDeviceMemoryPriorityEXT(
7103 VkDeviceMemory memory
,
7106 //Not a CREATE or DESTROY function
7113 static VKAPI_ATTR
void VKAPI_CALL
GetDescriptorSetLayoutHostMappingInfoVALVE(
7115 const VkDescriptorSetBindingReferenceVALVE
* pBindingReference
,
7116 VkDescriptorSetLayoutHostMappingInfoVALVE
* pHostMapping
)
7118 //Not a CREATE or DESTROY function
7121 static VKAPI_ATTR
void VKAPI_CALL
GetDescriptorSetHostMappingVALVE(
7123 VkDescriptorSet descriptorSet
,
7126 //Not a CREATE or DESTROY function
7134 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyMemoryIndirectNV(
7135 VkCommandBuffer commandBuffer
,
7136 VkDeviceAddress copyBufferAddress
,
7140 //Not a CREATE or DESTROY function
7143 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyMemoryToImageIndirectNV(
7144 VkCommandBuffer commandBuffer
,
7145 VkDeviceAddress copyBufferAddress
,
7149 VkImageLayout dstImageLayout
,
7150 const VkImageSubresourceLayers
* pImageSubresources
)
7152 //Not a CREATE or DESTROY function
7156 static VKAPI_ATTR
void VKAPI_CALL
CmdDecompressMemoryNV(
7157 VkCommandBuffer commandBuffer
,
7158 uint32_t decompressRegionCount
,
7159 const VkDecompressMemoryRegionNV
* pDecompressMemoryRegions
)
7161 //Not a CREATE or DESTROY function
7164 static VKAPI_ATTR
void VKAPI_CALL
CmdDecompressMemoryIndirectCountNV(
7165 VkCommandBuffer commandBuffer
,
7166 VkDeviceAddress indirectCommandsAddress
,
7167 VkDeviceAddress indirectCommandsCountAddress
,
7170 //Not a CREATE or DESTROY function
7174 static VKAPI_ATTR
void VKAPI_CALL
GetPipelineIndirectMemoryRequirementsNV(
7176 const VkComputePipelineCreateInfo
* pCreateInfo
,
7177 VkMemoryRequirements2
* pMemoryRequirements
)
7179 //Not a CREATE or DESTROY function
7182 static VKAPI_ATTR
void VKAPI_CALL
CmdUpdatePipelineIndirectBufferNV(
7183 VkCommandBuffer commandBuffer
,
7184 VkPipelineBindPoint pipelineBindPoint
,
7185 VkPipeline pipeline
)
7187 //Not a CREATE or DESTROY function
7190 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL
GetPipelineIndirectDeviceAddressNV(
7192 const VkPipelineIndirectDeviceAddressInfoNV
* pInfo
)
7194 //Not a CREATE or DESTROY function
7205 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthClampEnableEXT(
7206 VkCommandBuffer commandBuffer
,
7207 VkBool32 depthClampEnable
)
7209 //Not a CREATE or DESTROY function
7212 static VKAPI_ATTR
void VKAPI_CALL
CmdSetPolygonModeEXT(
7213 VkCommandBuffer commandBuffer
,
7214 VkPolygonMode polygonMode
)
7216 //Not a CREATE or DESTROY function
7219 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRasterizationSamplesEXT(
7220 VkCommandBuffer commandBuffer
,
7221 VkSampleCountFlagBits rasterizationSamples
)
7223 //Not a CREATE or DESTROY function
7226 static VKAPI_ATTR
void VKAPI_CALL
CmdSetSampleMaskEXT(
7227 VkCommandBuffer commandBuffer
,
7228 VkSampleCountFlagBits samples
,
7229 const VkSampleMask
* pSampleMask
)
7231 //Not a CREATE or DESTROY function
7234 static VKAPI_ATTR
void VKAPI_CALL
CmdSetAlphaToCoverageEnableEXT(
7235 VkCommandBuffer commandBuffer
,
7236 VkBool32 alphaToCoverageEnable
)
7238 //Not a CREATE or DESTROY function
7241 static VKAPI_ATTR
void VKAPI_CALL
CmdSetAlphaToOneEnableEXT(
7242 VkCommandBuffer commandBuffer
,
7243 VkBool32 alphaToOneEnable
)
7245 //Not a CREATE or DESTROY function
7248 static VKAPI_ATTR
void VKAPI_CALL
CmdSetLogicOpEnableEXT(
7249 VkCommandBuffer commandBuffer
,
7250 VkBool32 logicOpEnable
)
7252 //Not a CREATE or DESTROY function
7255 static VKAPI_ATTR
void VKAPI_CALL
CmdSetColorBlendEnableEXT(
7256 VkCommandBuffer commandBuffer
,
7257 uint32_t firstAttachment
,
7258 uint32_t attachmentCount
,
7259 const VkBool32
* pColorBlendEnables
)
7261 //Not a CREATE or DESTROY function
7264 static VKAPI_ATTR
void VKAPI_CALL
CmdSetColorBlendEquationEXT(
7265 VkCommandBuffer commandBuffer
,
7266 uint32_t firstAttachment
,
7267 uint32_t attachmentCount
,
7268 const VkColorBlendEquationEXT
* pColorBlendEquations
)
7270 //Not a CREATE or DESTROY function
7273 static VKAPI_ATTR
void VKAPI_CALL
CmdSetColorWriteMaskEXT(
7274 VkCommandBuffer commandBuffer
,
7275 uint32_t firstAttachment
,
7276 uint32_t attachmentCount
,
7277 const VkColorComponentFlags
* pColorWriteMasks
)
7279 //Not a CREATE or DESTROY function
7282 static VKAPI_ATTR
void VKAPI_CALL
CmdSetTessellationDomainOriginEXT(
7283 VkCommandBuffer commandBuffer
,
7284 VkTessellationDomainOrigin domainOrigin
)
7286 //Not a CREATE or DESTROY function
7289 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRasterizationStreamEXT(
7290 VkCommandBuffer commandBuffer
,
7291 uint32_t rasterizationStream
)
7293 //Not a CREATE or DESTROY function
7296 static VKAPI_ATTR
void VKAPI_CALL
CmdSetConservativeRasterizationModeEXT(
7297 VkCommandBuffer commandBuffer
,
7298 VkConservativeRasterizationModeEXT conservativeRasterizationMode
)
7300 //Not a CREATE or DESTROY function
7303 static VKAPI_ATTR
void VKAPI_CALL
CmdSetExtraPrimitiveOverestimationSizeEXT(
7304 VkCommandBuffer commandBuffer
,
7305 float extraPrimitiveOverestimationSize
)
7307 //Not a CREATE or DESTROY function
7310 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthClipEnableEXT(
7311 VkCommandBuffer commandBuffer
,
7312 VkBool32 depthClipEnable
)
7314 //Not a CREATE or DESTROY function
7317 static VKAPI_ATTR
void VKAPI_CALL
CmdSetSampleLocationsEnableEXT(
7318 VkCommandBuffer commandBuffer
,
7319 VkBool32 sampleLocationsEnable
)
7321 //Not a CREATE or DESTROY function
7324 static VKAPI_ATTR
void VKAPI_CALL
CmdSetColorBlendAdvancedEXT(
7325 VkCommandBuffer commandBuffer
,
7326 uint32_t firstAttachment
,
7327 uint32_t attachmentCount
,
7328 const VkColorBlendAdvancedEXT
* pColorBlendAdvanced
)
7330 //Not a CREATE or DESTROY function
7333 static VKAPI_ATTR
void VKAPI_CALL
CmdSetProvokingVertexModeEXT(
7334 VkCommandBuffer commandBuffer
,
7335 VkProvokingVertexModeEXT provokingVertexMode
)
7337 //Not a CREATE or DESTROY function
7340 static VKAPI_ATTR
void VKAPI_CALL
CmdSetLineRasterizationModeEXT(
7341 VkCommandBuffer commandBuffer
,
7342 VkLineRasterizationModeEXT lineRasterizationMode
)
7344 //Not a CREATE or DESTROY function
7347 static VKAPI_ATTR
void VKAPI_CALL
CmdSetLineStippleEnableEXT(
7348 VkCommandBuffer commandBuffer
,
7349 VkBool32 stippledLineEnable
)
7351 //Not a CREATE or DESTROY function
7354 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthClipNegativeOneToOneEXT(
7355 VkCommandBuffer commandBuffer
,
7356 VkBool32 negativeOneToOne
)
7358 //Not a CREATE or DESTROY function
7361 static VKAPI_ATTR
void VKAPI_CALL
CmdSetViewportWScalingEnableNV(
7362 VkCommandBuffer commandBuffer
,
7363 VkBool32 viewportWScalingEnable
)
7365 //Not a CREATE or DESTROY function
7368 static VKAPI_ATTR
void VKAPI_CALL
CmdSetViewportSwizzleNV(
7369 VkCommandBuffer commandBuffer
,
7370 uint32_t firstViewport
,
7371 uint32_t viewportCount
,
7372 const VkViewportSwizzleNV
* pViewportSwizzles
)
7374 //Not a CREATE or DESTROY function
7377 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCoverageToColorEnableNV(
7378 VkCommandBuffer commandBuffer
,
7379 VkBool32 coverageToColorEnable
)
7381 //Not a CREATE or DESTROY function
7384 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCoverageToColorLocationNV(
7385 VkCommandBuffer commandBuffer
,
7386 uint32_t coverageToColorLocation
)
7388 //Not a CREATE or DESTROY function
7391 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCoverageModulationModeNV(
7392 VkCommandBuffer commandBuffer
,
7393 VkCoverageModulationModeNV coverageModulationMode
)
7395 //Not a CREATE or DESTROY function
7398 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCoverageModulationTableEnableNV(
7399 VkCommandBuffer commandBuffer
,
7400 VkBool32 coverageModulationTableEnable
)
7402 //Not a CREATE or DESTROY function
7405 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCoverageModulationTableNV(
7406 VkCommandBuffer commandBuffer
,
7407 uint32_t coverageModulationTableCount
,
7408 const float* pCoverageModulationTable
)
7410 //Not a CREATE or DESTROY function
7413 static VKAPI_ATTR
void VKAPI_CALL
CmdSetShadingRateImageEnableNV(
7414 VkCommandBuffer commandBuffer
,
7415 VkBool32 shadingRateImageEnable
)
7417 //Not a CREATE or DESTROY function
7420 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRepresentativeFragmentTestEnableNV(
7421 VkCommandBuffer commandBuffer
,
7422 VkBool32 representativeFragmentTestEnable
)
7424 //Not a CREATE or DESTROY function
7427 static VKAPI_ATTR
void VKAPI_CALL
CmdSetCoverageReductionModeNV(
7428 VkCommandBuffer commandBuffer
,
7429 VkCoverageReductionModeNV coverageReductionMode
)
7431 //Not a CREATE or DESTROY function
7437 static VKAPI_ATTR
void VKAPI_CALL
GetShaderModuleIdentifierEXT(
7439 VkShaderModule shaderModule
,
7440 VkShaderModuleIdentifierEXT
* pIdentifier
)
7444 pIdentifier
->identifierSize
= 1;
7445 pIdentifier
->identifier
[0] = 0x01;
7449 static VKAPI_ATTR
void VKAPI_CALL
GetShaderModuleCreateInfoIdentifierEXT(
7451 const VkShaderModuleCreateInfo
* pCreateInfo
,
7452 VkShaderModuleIdentifierEXT
* pIdentifier
)
7454 //Not a CREATE or DESTROY function
7459 static VKAPI_ATTR VkResult VKAPI_CALL
GetPhysicalDeviceOpticalFlowImageFormatsNV(
7460 VkPhysicalDevice physicalDevice
,
7461 const VkOpticalFlowImageFormatInfoNV
* pOpticalFlowImageFormatInfo
,
7462 uint32_t* pFormatCount
,
7463 VkOpticalFlowImageFormatPropertiesNV
* pImageFormatProperties
)
7465 //Not a CREATE or DESTROY function
7469 static VKAPI_ATTR VkResult VKAPI_CALL
CreateOpticalFlowSessionNV(
7471 const VkOpticalFlowSessionCreateInfoNV
* pCreateInfo
,
7472 const VkAllocationCallbacks
* pAllocator
,
7473 VkOpticalFlowSessionNV
* pSession
)
7475 unique_lock_t
lock(global_lock
);
7476 *pSession
= (VkOpticalFlowSessionNV
)global_unique_handle
++;
7480 static VKAPI_ATTR
void VKAPI_CALL
DestroyOpticalFlowSessionNV(
7482 VkOpticalFlowSessionNV session
,
7483 const VkAllocationCallbacks
* pAllocator
)
7488 static VKAPI_ATTR VkResult VKAPI_CALL
BindOpticalFlowSessionImageNV(
7490 VkOpticalFlowSessionNV session
,
7491 VkOpticalFlowSessionBindingPointNV bindingPoint
,
7493 VkImageLayout layout
)
7495 //Not a CREATE or DESTROY function
7499 static VKAPI_ATTR
void VKAPI_CALL
CmdOpticalFlowExecuteNV(
7500 VkCommandBuffer commandBuffer
,
7501 VkOpticalFlowSessionNV session
,
7502 const VkOpticalFlowExecuteInfoNV
* pExecuteInfo
)
7504 //Not a CREATE or DESTROY function
7509 #ifdef VK_USE_PLATFORM_ANDROID_KHR
7510 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
7513 static VKAPI_ATTR
void VKAPI_CALL
AntiLagUpdateAMD(
7515 const VkAntiLagDataAMD
* pData
)
7517 //Not a CREATE or DESTROY function
7521 static VKAPI_ATTR VkResult VKAPI_CALL
CreateShadersEXT(
7523 uint32_t createInfoCount
,
7524 const VkShaderCreateInfoEXT
* pCreateInfos
,
7525 const VkAllocationCallbacks
* pAllocator
,
7526 VkShaderEXT
* pShaders
)
7528 unique_lock_t
lock(global_lock
);
7529 for (uint32_t i
= 0; i
< createInfoCount
; ++i
) {
7530 pShaders
[i
] = (VkShaderEXT
)global_unique_handle
++;
7535 static VKAPI_ATTR
void VKAPI_CALL
DestroyShaderEXT(
7538 const VkAllocationCallbacks
* pAllocator
)
7543 static VKAPI_ATTR VkResult VKAPI_CALL
GetShaderBinaryDataEXT(
7549 //Not a CREATE or DESTROY function
7553 static VKAPI_ATTR
void VKAPI_CALL
CmdBindShadersEXT(
7554 VkCommandBuffer commandBuffer
,
7555 uint32_t stageCount
,
7556 const VkShaderStageFlagBits
* pStages
,
7557 const VkShaderEXT
* pShaders
)
7559 //Not a CREATE or DESTROY function
7562 static VKAPI_ATTR
void VKAPI_CALL
CmdSetDepthClampRangeEXT(
7563 VkCommandBuffer commandBuffer
,
7564 VkDepthClampModeEXT depthClampMode
,
7565 const VkDepthClampRangeEXT
* pDepthClampRange
)
7567 //Not a CREATE or DESTROY function
7571 static VKAPI_ATTR VkResult VKAPI_CALL
GetFramebufferTilePropertiesQCOM(
7573 VkFramebuffer framebuffer
,
7574 uint32_t* pPropertiesCount
,
7575 VkTilePropertiesQCOM
* pProperties
)
7577 //Not a CREATE or DESTROY function
7581 static VKAPI_ATTR VkResult VKAPI_CALL
GetDynamicRenderingTilePropertiesQCOM(
7583 const VkRenderingInfo
* pRenderingInfo
,
7584 VkTilePropertiesQCOM
* pProperties
)
7586 //Not a CREATE or DESTROY function
7601 static VKAPI_ATTR VkResult VKAPI_CALL
SetLatencySleepModeNV(
7603 VkSwapchainKHR swapchain
,
7604 const VkLatencySleepModeInfoNV
* pSleepModeInfo
)
7606 //Not a CREATE or DESTROY function
7610 static VKAPI_ATTR VkResult VKAPI_CALL
LatencySleepNV(
7612 VkSwapchainKHR swapchain
,
7613 const VkLatencySleepInfoNV
* pSleepInfo
)
7615 //Not a CREATE or DESTROY function
7619 static VKAPI_ATTR
void VKAPI_CALL
SetLatencyMarkerNV(
7621 VkSwapchainKHR swapchain
,
7622 const VkSetLatencyMarkerInfoNV
* pLatencyMarkerInfo
)
7624 //Not a CREATE or DESTROY function
7627 static VKAPI_ATTR
void VKAPI_CALL
GetLatencyTimingsNV(
7629 VkSwapchainKHR swapchain
,
7630 VkGetLatencyMarkerInfoNV
* pLatencyMarkerInfo
)
7632 //Not a CREATE or DESTROY function
7635 static VKAPI_ATTR
void VKAPI_CALL
QueueNotifyOutOfBandNV(
7637 const VkOutOfBandQueueTypeInfoNV
* pQueueTypeInfo
)
7639 //Not a CREATE or DESTROY function
7649 static VKAPI_ATTR
void VKAPI_CALL
CmdSetAttachmentFeedbackLoopEnableEXT(
7650 VkCommandBuffer commandBuffer
,
7651 VkImageAspectFlags aspectMask
)
7653 //Not a CREATE or DESTROY function
7656 #ifdef VK_USE_PLATFORM_SCREEN_QNX
7658 static VKAPI_ATTR VkResult VKAPI_CALL
GetScreenBufferPropertiesQNX(
7660 const struct _screen_buffer
* buffer
,
7661 VkScreenBufferPropertiesQNX
* pProperties
)
7663 //Not a CREATE or DESTROY function
7666 #endif /* VK_USE_PLATFORM_SCREEN_QNX */
7676 static VKAPI_ATTR
void VKAPI_CALL
GetGeneratedCommandsMemoryRequirementsEXT(
7678 const VkGeneratedCommandsMemoryRequirementsInfoEXT
* pInfo
,
7679 VkMemoryRequirements2
* pMemoryRequirements
)
7681 //Not a CREATE or DESTROY function
7684 static VKAPI_ATTR
void VKAPI_CALL
CmdPreprocessGeneratedCommandsEXT(
7685 VkCommandBuffer commandBuffer
,
7686 const VkGeneratedCommandsInfoEXT
* pGeneratedCommandsInfo
,
7687 VkCommandBuffer stateCommandBuffer
)
7689 //Not a CREATE or DESTROY function
7692 static VKAPI_ATTR
void VKAPI_CALL
CmdExecuteGeneratedCommandsEXT(
7693 VkCommandBuffer commandBuffer
,
7694 VkBool32 isPreprocessed
,
7695 const VkGeneratedCommandsInfoEXT
* pGeneratedCommandsInfo
)
7697 //Not a CREATE or DESTROY function
7700 static VKAPI_ATTR VkResult VKAPI_CALL
CreateIndirectCommandsLayoutEXT(
7702 const VkIndirectCommandsLayoutCreateInfoEXT
* pCreateInfo
,
7703 const VkAllocationCallbacks
* pAllocator
,
7704 VkIndirectCommandsLayoutEXT
* pIndirectCommandsLayout
)
7706 unique_lock_t
lock(global_lock
);
7707 *pIndirectCommandsLayout
= (VkIndirectCommandsLayoutEXT
)global_unique_handle
++;
7711 static VKAPI_ATTR
void VKAPI_CALL
DestroyIndirectCommandsLayoutEXT(
7713 VkIndirectCommandsLayoutEXT indirectCommandsLayout
,
7714 const VkAllocationCallbacks
* pAllocator
)
7719 static VKAPI_ATTR VkResult VKAPI_CALL
CreateIndirectExecutionSetEXT(
7721 const VkIndirectExecutionSetCreateInfoEXT
* pCreateInfo
,
7722 const VkAllocationCallbacks
* pAllocator
,
7723 VkIndirectExecutionSetEXT
* pIndirectExecutionSet
)
7725 unique_lock_t
lock(global_lock
);
7726 *pIndirectExecutionSet
= (VkIndirectExecutionSetEXT
)global_unique_handle
++;
7730 static VKAPI_ATTR
void VKAPI_CALL
DestroyIndirectExecutionSetEXT(
7732 VkIndirectExecutionSetEXT indirectExecutionSet
,
7733 const VkAllocationCallbacks
* pAllocator
)
7738 static VKAPI_ATTR
void VKAPI_CALL
UpdateIndirectExecutionSetPipelineEXT(
7740 VkIndirectExecutionSetEXT indirectExecutionSet
,
7741 uint32_t executionSetWriteCount
,
7742 const VkWriteIndirectExecutionSetPipelineEXT
* pExecutionSetWrites
)
7744 //Not a CREATE or DESTROY function
7747 static VKAPI_ATTR
void VKAPI_CALL
UpdateIndirectExecutionSetShaderEXT(
7749 VkIndirectExecutionSetEXT indirectExecutionSet
,
7750 uint32_t executionSetWriteCount
,
7751 const VkWriteIndirectExecutionSetShaderEXT
* pExecutionSetWrites
)
7753 //Not a CREATE or DESTROY function
7759 static VKAPI_ATTR VkResult VKAPI_CALL
CreateAccelerationStructureKHR(
7761 const VkAccelerationStructureCreateInfoKHR
* pCreateInfo
,
7762 const VkAllocationCallbacks
* pAllocator
,
7763 VkAccelerationStructureKHR
* pAccelerationStructure
)
7765 unique_lock_t
lock(global_lock
);
7766 *pAccelerationStructure
= (VkAccelerationStructureKHR
)global_unique_handle
++;
7770 static VKAPI_ATTR
void VKAPI_CALL
DestroyAccelerationStructureKHR(
7772 VkAccelerationStructureKHR accelerationStructure
,
7773 const VkAllocationCallbacks
* pAllocator
)
7778 static VKAPI_ATTR
void VKAPI_CALL
CmdBuildAccelerationStructuresKHR(
7779 VkCommandBuffer commandBuffer
,
7781 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
,
7782 const VkAccelerationStructureBuildRangeInfoKHR
* const* ppBuildRangeInfos
)
7784 //Not a CREATE or DESTROY function
7787 static VKAPI_ATTR
void VKAPI_CALL
CmdBuildAccelerationStructuresIndirectKHR(
7788 VkCommandBuffer commandBuffer
,
7790 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
,
7791 const VkDeviceAddress
* pIndirectDeviceAddresses
,
7792 const uint32_t* pIndirectStrides
,
7793 const uint32_t* const* ppMaxPrimitiveCounts
)
7795 //Not a CREATE or DESTROY function
7798 static VKAPI_ATTR VkResult VKAPI_CALL
BuildAccelerationStructuresKHR(
7800 VkDeferredOperationKHR deferredOperation
,
7802 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
,
7803 const VkAccelerationStructureBuildRangeInfoKHR
* const* ppBuildRangeInfos
)
7805 //Not a CREATE or DESTROY function
7809 static VKAPI_ATTR VkResult VKAPI_CALL
CopyAccelerationStructureKHR(
7811 VkDeferredOperationKHR deferredOperation
,
7812 const VkCopyAccelerationStructureInfoKHR
* pInfo
)
7814 //Not a CREATE or DESTROY function
7818 static VKAPI_ATTR VkResult VKAPI_CALL
CopyAccelerationStructureToMemoryKHR(
7820 VkDeferredOperationKHR deferredOperation
,
7821 const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
)
7823 //Not a CREATE or DESTROY function
7827 static VKAPI_ATTR VkResult VKAPI_CALL
CopyMemoryToAccelerationStructureKHR(
7829 VkDeferredOperationKHR deferredOperation
,
7830 const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
)
7832 //Not a CREATE or DESTROY function
7836 static VKAPI_ATTR VkResult VKAPI_CALL
WriteAccelerationStructuresPropertiesKHR(
7838 uint32_t accelerationStructureCount
,
7839 const VkAccelerationStructureKHR
* pAccelerationStructures
,
7840 VkQueryType queryType
,
7845 //Not a CREATE or DESTROY function
7849 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyAccelerationStructureKHR(
7850 VkCommandBuffer commandBuffer
,
7851 const VkCopyAccelerationStructureInfoKHR
* pInfo
)
7853 //Not a CREATE or DESTROY function
7856 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyAccelerationStructureToMemoryKHR(
7857 VkCommandBuffer commandBuffer
,
7858 const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
)
7860 //Not a CREATE or DESTROY function
7863 static VKAPI_ATTR
void VKAPI_CALL
CmdCopyMemoryToAccelerationStructureKHR(
7864 VkCommandBuffer commandBuffer
,
7865 const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
)
7867 //Not a CREATE or DESTROY function
7870 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL
GetAccelerationStructureDeviceAddressKHR(
7872 const VkAccelerationStructureDeviceAddressInfoKHR
* pInfo
)
7874 // arbitrary - need to be aligned to 256 bytes
7878 static VKAPI_ATTR
void VKAPI_CALL
CmdWriteAccelerationStructuresPropertiesKHR(
7879 VkCommandBuffer commandBuffer
,
7880 uint32_t accelerationStructureCount
,
7881 const VkAccelerationStructureKHR
* pAccelerationStructures
,
7882 VkQueryType queryType
,
7883 VkQueryPool queryPool
,
7884 uint32_t firstQuery
)
7886 //Not a CREATE or DESTROY function
7889 static VKAPI_ATTR
void VKAPI_CALL
GetDeviceAccelerationStructureCompatibilityKHR(
7891 const VkAccelerationStructureVersionInfoKHR
* pVersionInfo
,
7892 VkAccelerationStructureCompatibilityKHR
* pCompatibility
)
7894 //Not a CREATE or DESTROY function
7897 static VKAPI_ATTR
void VKAPI_CALL
GetAccelerationStructureBuildSizesKHR(
7899 VkAccelerationStructureBuildTypeKHR buildType
,
7900 const VkAccelerationStructureBuildGeometryInfoKHR
* pBuildInfo
,
7901 const uint32_t* pMaxPrimitiveCounts
,
7902 VkAccelerationStructureBuildSizesInfoKHR
* pSizeInfo
)
7905 pSizeInfo
->accelerationStructureSize
= 4;
7906 pSizeInfo
->updateScratchSize
= 4;
7907 pSizeInfo
->buildScratchSize
= 4;
7911 static VKAPI_ATTR
void VKAPI_CALL
CmdTraceRaysKHR(
7912 VkCommandBuffer commandBuffer
,
7913 const VkStridedDeviceAddressRegionKHR
* pRaygenShaderBindingTable
,
7914 const VkStridedDeviceAddressRegionKHR
* pMissShaderBindingTable
,
7915 const VkStridedDeviceAddressRegionKHR
* pHitShaderBindingTable
,
7916 const VkStridedDeviceAddressRegionKHR
* pCallableShaderBindingTable
,
7921 //Not a CREATE or DESTROY function
7924 static VKAPI_ATTR VkResult VKAPI_CALL
CreateRayTracingPipelinesKHR(
7926 VkDeferredOperationKHR deferredOperation
,
7927 VkPipelineCache pipelineCache
,
7928 uint32_t createInfoCount
,
7929 const VkRayTracingPipelineCreateInfoKHR
* pCreateInfos
,
7930 const VkAllocationCallbacks
* pAllocator
,
7931 VkPipeline
* pPipelines
)
7933 unique_lock_t
lock(global_lock
);
7934 for (uint32_t i
= 0; i
< createInfoCount
; ++i
) {
7935 pPipelines
[i
] = (VkPipeline
)global_unique_handle
++;
7940 static VKAPI_ATTR VkResult VKAPI_CALL
GetRayTracingCaptureReplayShaderGroupHandlesKHR(
7942 VkPipeline pipeline
,
7943 uint32_t firstGroup
,
7944 uint32_t groupCount
,
7948 //Not a CREATE or DESTROY function
7952 static VKAPI_ATTR
void VKAPI_CALL
CmdTraceRaysIndirectKHR(
7953 VkCommandBuffer commandBuffer
,
7954 const VkStridedDeviceAddressRegionKHR
* pRaygenShaderBindingTable
,
7955 const VkStridedDeviceAddressRegionKHR
* pMissShaderBindingTable
,
7956 const VkStridedDeviceAddressRegionKHR
* pHitShaderBindingTable
,
7957 const VkStridedDeviceAddressRegionKHR
* pCallableShaderBindingTable
,
7958 VkDeviceAddress indirectDeviceAddress
)
7960 //Not a CREATE or DESTROY function
7963 static VKAPI_ATTR VkDeviceSize VKAPI_CALL
GetRayTracingShaderGroupStackSizeKHR(
7965 VkPipeline pipeline
,
7967 VkShaderGroupShaderKHR groupShader
)
7969 //Not a CREATE or DESTROY function
7973 static VKAPI_ATTR
void VKAPI_CALL
CmdSetRayTracingPipelineStackSizeKHR(
7974 VkCommandBuffer commandBuffer
,
7975 uint32_t pipelineStackSize
)
7977 //Not a CREATE or DESTROY function
7982 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMeshTasksEXT(
7983 VkCommandBuffer commandBuffer
,
7984 uint32_t groupCountX
,
7985 uint32_t groupCountY
,
7986 uint32_t groupCountZ
)
7988 //Not a CREATE or DESTROY function
7991 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMeshTasksIndirectEXT(
7992 VkCommandBuffer commandBuffer
,
7994 VkDeviceSize offset
,
7998 //Not a CREATE or DESTROY function
8001 static VKAPI_ATTR
void VKAPI_CALL
CmdDrawMeshTasksIndirectCountEXT(
8002 VkCommandBuffer commandBuffer
,
8004 VkDeviceSize offset
,
8005 VkBuffer countBuffer
,
8006 VkDeviceSize countBufferOffset
,
8007 uint32_t maxDrawCount
,
8010 //Not a CREATE or DESTROY function
8013 } // namespace vkmock