2 ** Copyright (c) 2015-2018 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.
27 #include "vk_typemap_helper.h"
31 using std::unordered_map;
33 static constexpr uint32_t icd_physical_device_count = 1;
34 static constexpr uint32_t kSupportedVulkanAPIVersion = VK_API_VERSION_1_1;
35 static unordered_map<VkInstance, std::array<VkPhysicalDevice, icd_physical_device_count>> physical_device_map;
37 // Map device memory handle to any mapped allocations that we'll need to free on unmap
38 static unordered_map<VkDeviceMemory, std::vector<void*>> mapped_memory_map;
40 // Map device memory allocation handle to the size
41 static unordered_map<VkDeviceMemory, VkDeviceSize> allocated_memory_size_map;
43 static unordered_map<VkDevice, unordered_map<uint32_t, unordered_map<uint32_t, VkQueue>>> queue_map;
44 static unordered_map<VkDevice, unordered_map<VkBuffer, VkBufferCreateInfo>> buffer_map;
45 static unordered_map<VkDevice, unordered_map<VkImage, VkDeviceSize>> image_memory_size_map;
47 static constexpr uint32_t icd_swapchain_image_count = 1;
48 static unordered_map<VkSwapchainKHR, VkImage[icd_swapchain_image_count]> swapchain_image_map;
50 // TODO: Would like to codegen this but limits aren't in XML
51 static VkPhysicalDeviceLimits SetLimits(VkPhysicalDeviceLimits *limits) {
52 limits->maxImageDimension1D = 4096;
53 limits->maxImageDimension2D = 4096;
54 limits->maxImageDimension3D = 256;
55 limits->maxImageDimensionCube = 4096;
56 limits->maxImageArrayLayers = 256;
57 limits->maxTexelBufferElements = 65536;
58 limits->maxUniformBufferRange = 16384;
59 limits->maxStorageBufferRange = 134217728;
60 limits->maxPushConstantsSize = 128;
61 limits->maxMemoryAllocationCount = 4096;
62 limits->maxSamplerAllocationCount = 4000;
63 limits->bufferImageGranularity = 1;
64 limits->sparseAddressSpaceSize = 2147483648;
65 limits->maxBoundDescriptorSets = 4;
66 limits->maxPerStageDescriptorSamplers = 16;
67 limits->maxPerStageDescriptorUniformBuffers = 12;
68 limits->maxPerStageDescriptorStorageBuffers = 4;
69 limits->maxPerStageDescriptorSampledImages = 16;
70 limits->maxPerStageDescriptorStorageImages = 4;
71 limits->maxPerStageDescriptorInputAttachments = 4;
72 limits->maxPerStageResources = 128;
73 limits->maxDescriptorSetSamplers = 96;
74 limits->maxDescriptorSetUniformBuffers = 72;
75 limits->maxDescriptorSetUniformBuffersDynamic = 8;
76 limits->maxDescriptorSetStorageBuffers = 24;
77 limits->maxDescriptorSetStorageBuffersDynamic = 4;
78 limits->maxDescriptorSetSampledImages = 96;
79 limits->maxDescriptorSetStorageImages = 24;
80 limits->maxDescriptorSetInputAttachments = 4;
81 limits->maxVertexInputAttributes = 16;
82 limits->maxVertexInputBindings = 16;
83 limits->maxVertexInputAttributeOffset = 2047;
84 limits->maxVertexInputBindingStride = 2048;
85 limits->maxVertexOutputComponents = 64;
86 limits->maxTessellationGenerationLevel = 64;
87 limits->maxTessellationPatchSize = 32;
88 limits->maxTessellationControlPerVertexInputComponents = 64;
89 limits->maxTessellationControlPerVertexOutputComponents = 64;
90 limits->maxTessellationControlPerPatchOutputComponents = 120;
91 limits->maxTessellationControlTotalOutputComponents = 2048;
92 limits->maxTessellationEvaluationInputComponents = 64;
93 limits->maxTessellationEvaluationOutputComponents = 64;
94 limits->maxGeometryShaderInvocations = 32;
95 limits->maxGeometryInputComponents = 64;
96 limits->maxGeometryOutputComponents = 64;
97 limits->maxGeometryOutputVertices = 256;
98 limits->maxGeometryTotalOutputComponents = 1024;
99 limits->maxFragmentInputComponents = 64;
100 limits->maxFragmentOutputAttachments = 4;
101 limits->maxFragmentDualSrcAttachments = 1;
102 limits->maxFragmentCombinedOutputResources = 4;
103 limits->maxComputeSharedMemorySize = 16384;
104 limits->maxComputeWorkGroupCount[0] = 65535;
105 limits->maxComputeWorkGroupCount[1] = 65535;
106 limits->maxComputeWorkGroupCount[2] = 65535;
107 limits->maxComputeWorkGroupInvocations = 128;
108 limits->maxComputeWorkGroupSize[0] = 128;
109 limits->maxComputeWorkGroupSize[1] = 128;
110 limits->maxComputeWorkGroupSize[2] = 64;
111 limits->subPixelPrecisionBits = 4;
112 limits->subTexelPrecisionBits = 4;
113 limits->mipmapPrecisionBits = 4;
114 limits->maxDrawIndexedIndexValue = UINT32_MAX;
115 limits->maxDrawIndirectCount = UINT16_MAX;
116 limits->maxSamplerLodBias = 2.0f;
117 limits->maxSamplerAnisotropy = 16;
118 limits->maxViewports = 16;
119 limits->maxViewportDimensions[0] = 4096;
120 limits->maxViewportDimensions[1] = 4096;
121 limits->viewportBoundsRange[0] = -8192;
122 limits->viewportBoundsRange[1] = 8191;
123 limits->viewportSubPixelBits = 0;
124 limits->minMemoryMapAlignment = 64;
125 limits->minTexelBufferOffsetAlignment = 16;
126 limits->minUniformBufferOffsetAlignment = 16;
127 limits->minStorageBufferOffsetAlignment = 16;
128 limits->minTexelOffset = -8;
129 limits->maxTexelOffset = 7;
130 limits->minTexelGatherOffset = -8;
131 limits->maxTexelGatherOffset = 7;
132 limits->minInterpolationOffset = 0.0f;
133 limits->maxInterpolationOffset = 0.5f;
134 limits->subPixelInterpolationOffsetBits = 4;
135 limits->maxFramebufferWidth = 4096;
136 limits->maxFramebufferHeight = 4096;
137 limits->maxFramebufferLayers = 256;
138 limits->framebufferColorSampleCounts = 0x7F;
139 limits->framebufferDepthSampleCounts = 0x7F;
140 limits->framebufferStencilSampleCounts = 0x7F;
141 limits->framebufferNoAttachmentsSampleCounts = 0x7F;
142 limits->maxColorAttachments = 4;
143 limits->sampledImageColorSampleCounts = 0x7F;
144 limits->sampledImageIntegerSampleCounts = 0x7F;
145 limits->sampledImageDepthSampleCounts = 0x7F;
146 limits->sampledImageStencilSampleCounts = 0x7F;
147 limits->storageImageSampleCounts = 0x7F;
148 limits->maxSampleMaskWords = 1;
149 limits->timestampComputeAndGraphics = VK_TRUE;
150 limits->timestampPeriod = 1;
151 limits->maxClipDistances = 8;
152 limits->maxCullDistances = 8;
153 limits->maxCombinedClipAndCullDistances = 8;
154 limits->discreteQueuePriorities = 2;
155 limits->pointSizeRange[0] = 1.0f;
156 limits->pointSizeRange[1] = 64.0f;
157 limits->lineWidthRange[0] = 1.0f;
158 limits->lineWidthRange[1] = 8.0f;
159 limits->pointSizeGranularity = 1.0f;
160 limits->lineWidthGranularity = 1.0f;
161 limits->strictLines = VK_TRUE;
162 limits->standardSampleLocations = VK_TRUE;
163 limits->optimalBufferCopyOffsetAlignment = 1;
164 limits->optimalBufferCopyRowPitchAlignment = 1;
165 limits->nonCoherentAtomSize = 256;
170 void SetBoolArrayTrue(VkBool32* bool_array, uint32_t num_bools)
172 for (uint32_t i = 0; i < num_bools; ++i) {
173 bool_array[i] = VK_TRUE;
179 static VKAPI_ATTR VkResult VKAPI_CALL CreateInstance(
180 const VkInstanceCreateInfo* pCreateInfo,
181 const VkAllocationCallbacks* pAllocator,
182 VkInstance* pInstance)
185 // TODO: If loader ver <=4 ICD must fail with VK_ERROR_INCOMPATIBLE_DRIVER for all vkCreateInstance calls with
186 // apiVersion set to > Vulkan 1.0 because the loader is still at interface version <= 4. Otherwise, the
187 // ICD should behave as normal.
188 if (loader_interface_version <= 4) {
189 return VK_ERROR_INCOMPATIBLE_DRIVER;
191 *pInstance = (VkInstance)CreateDispObjHandle();
192 for (auto& physical_device : physical_device_map[*pInstance])
193 physical_device = (VkPhysicalDevice)CreateDispObjHandle();
194 // TODO: If emulating specific device caps, will need to add intelligence here
198 static VKAPI_ATTR void VKAPI_CALL DestroyInstance(
200 const VkAllocationCallbacks* pAllocator)
204 for (const auto physical_device : physical_device_map.at(instance))
205 DestroyDispObjHandle((void*)physical_device);
206 physical_device_map.erase(instance);
207 DestroyDispObjHandle((void*)instance);
211 static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDevices(
213 uint32_t* pPhysicalDeviceCount,
214 VkPhysicalDevice* pPhysicalDevices)
216 VkResult result_code = VK_SUCCESS;
217 if (pPhysicalDevices) {
218 const auto return_count = (std::min)(*pPhysicalDeviceCount, icd_physical_device_count);
219 for (uint32_t i = 0; i < return_count; ++i) pPhysicalDevices[i] = physical_device_map.at(instance)[i];
220 if (return_count < icd_physical_device_count) result_code = VK_INCOMPLETE;
221 *pPhysicalDeviceCount = return_count;
223 *pPhysicalDeviceCount = icd_physical_device_count;
228 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures(
229 VkPhysicalDevice physicalDevice,
230 VkPhysicalDeviceFeatures* pFeatures)
232 uint32_t num_bools = sizeof(VkPhysicalDeviceFeatures) / sizeof(VkBool32);
233 VkBool32 *bool_array = &pFeatures->robustBufferAccess;
234 SetBoolArrayTrue(bool_array, num_bools);
237 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties(
238 VkPhysicalDevice physicalDevice,
240 VkFormatProperties* pFormatProperties)
242 if (VK_FORMAT_UNDEFINED == format) {
243 *pFormatProperties = { 0x0, 0x0, 0x0 };
245 // Default to a color format, skip DS bit
246 *pFormatProperties = { 0x00FFFDFF, 0x00FFFDFF, 0x00FFFDFF };
248 case VK_FORMAT_D16_UNORM:
249 case VK_FORMAT_X8_D24_UNORM_PACK32:
250 case VK_FORMAT_D32_SFLOAT:
251 case VK_FORMAT_S8_UINT:
252 case VK_FORMAT_D16_UNORM_S8_UINT:
253 case VK_FORMAT_D24_UNORM_S8_UINT:
254 case VK_FORMAT_D32_SFLOAT_S8_UINT:
255 // Don't set color bits for DS formats
256 *pFormatProperties = { 0x00FFFE7F, 0x00FFFE7F, 0x00FFFE7F };
264 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties(
265 VkPhysicalDevice physicalDevice,
268 VkImageTiling tiling,
269 VkImageUsageFlags usage,
270 VkImageCreateFlags flags,
271 VkImageFormatProperties* pImageFormatProperties)
273 // A hardcoded unsupported format
274 if (format == VK_FORMAT_E5B9G9R9_UFLOAT_PACK32) {
275 return VK_ERROR_FORMAT_NOT_SUPPORTED;
278 // TODO: Just hard-coding some values for now
279 // TODO: If tiling is linear, limit the mips, levels, & sample count
280 if (VK_IMAGE_TILING_LINEAR == tiling) {
281 *pImageFormatProperties = { { 4096, 4096, 256 }, 1, 1, VK_SAMPLE_COUNT_1_BIT, 4294967296 };
283 // We hard-code support for all sample counts except 64 bits.
284 *pImageFormatProperties = { { 4096, 4096, 256 }, 12, 256, 0x7F & ~VK_SAMPLE_COUNT_64_BIT, 4294967296 };
289 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties(
290 VkPhysicalDevice physicalDevice,
291 VkPhysicalDeviceProperties* pProperties)
293 // TODO: Just hard-coding some values for now
294 pProperties->apiVersion = kSupportedVulkanAPIVersion;
295 pProperties->driverVersion = 1;
296 pProperties->vendorID = 0xba5eba11;
297 pProperties->deviceID = 0xf005ba11;
298 pProperties->deviceType = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU;
299 //std::string devName = "Vulkan Mock Device";
300 strcpy(pProperties->deviceName, "Vulkan Mock Device");
301 pProperties->pipelineCacheUUID[0] = 18;
302 pProperties->limits = SetLimits(&pProperties->limits);
303 pProperties->sparseProperties = { VK_TRUE, VK_TRUE, VK_TRUE, VK_TRUE, VK_TRUE };
306 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties(
307 VkPhysicalDevice physicalDevice,
308 uint32_t* pQueueFamilyPropertyCount,
309 VkQueueFamilyProperties* pQueueFamilyProperties)
311 if (!pQueueFamilyProperties) {
312 *pQueueFamilyPropertyCount = 1;
314 if (*pQueueFamilyPropertyCount) {
315 pQueueFamilyProperties[0].queueFlags = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT | VK_QUEUE_TRANSFER_BIT | VK_QUEUE_SPARSE_BINDING_BIT;
316 pQueueFamilyProperties[0].queueCount = 1;
317 pQueueFamilyProperties[0].timestampValidBits = 0;
318 pQueueFamilyProperties[0].minImageTransferGranularity = {1,1,1};
323 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties(
324 VkPhysicalDevice physicalDevice,
325 VkPhysicalDeviceMemoryProperties* pMemoryProperties)
327 pMemoryProperties->memoryTypeCount = 2;
328 pMemoryProperties->memoryTypes[0].propertyFlags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
329 pMemoryProperties->memoryTypes[0].heapIndex = 0;
330 pMemoryProperties->memoryTypes[1].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;
331 pMemoryProperties->memoryTypes[1].heapIndex = 1;
332 pMemoryProperties->memoryHeapCount = 2;
333 pMemoryProperties->memoryHeaps[0].flags = 0;
334 pMemoryProperties->memoryHeaps[0].size = 8000000000;
335 pMemoryProperties->memoryHeaps[1].flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT;
336 pMemoryProperties->memoryHeaps[1].size = 8000000000;
339 static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(
344 if (!negotiate_loader_icd_interface_called) {
345 loader_interface_version = 0;
347 const auto &item = name_to_funcptr_map.find(pName);
348 if (item != name_to_funcptr_map.end()) {
349 return reinterpret_cast<PFN_vkVoidFunction>(item->second);
351 // Mock should intercept all functions so if we get here just return null
355 static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(
360 return GetInstanceProcAddr(nullptr, pName);
363 static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(
364 VkPhysicalDevice physicalDevice,
365 const VkDeviceCreateInfo* pCreateInfo,
366 const VkAllocationCallbacks* pAllocator,
370 *pDevice = (VkDevice)CreateDispObjHandle();
371 // TODO: If emulating specific device caps, will need to add intelligence here
375 static VKAPI_ATTR void VKAPI_CALL DestroyDevice(
377 const VkAllocationCallbacks* pAllocator)
380 unique_lock_t lock(global_lock);
381 // First destroy sub-device objects
383 for (auto dev_queue_map_pair : queue_map) {
384 for (auto queue_family_map_pair : queue_map[dev_queue_map_pair.first]) {
385 for (auto index_queue_pair : queue_map[dev_queue_map_pair.first][queue_family_map_pair.first]) {
386 DestroyDispObjHandle((void*)index_queue_pair.second);
391 buffer_map.erase(device);
392 image_memory_size_map.erase(device);
393 // Now destroy device
394 DestroyDispObjHandle((void*)device);
395 // TODO: If emulating specific device caps, will need to add intelligence here
398 static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceExtensionProperties(
399 const char* pLayerName,
400 uint32_t* pPropertyCount,
401 VkExtensionProperties* pProperties)
404 // If requesting number of extensions, return that
407 *pPropertyCount = (uint32_t)instance_extension_map.size();
410 for (const auto &name_ver_pair : instance_extension_map) {
411 if (i == *pPropertyCount) {
414 std::strncpy(pProperties[i].extensionName, name_ver_pair.first.c_str(), sizeof(pProperties[i].extensionName));
415 pProperties[i].extensionName[sizeof(pProperties[i].extensionName) - 1] = 0;
416 pProperties[i].specVersion = name_ver_pair.second;
419 if (i != instance_extension_map.size()) {
420 return VK_INCOMPLETE;
424 // If requesting extension properties, fill in data struct for number of extensions
428 static VKAPI_ATTR VkResult VKAPI_CALL EnumerateDeviceExtensionProperties(
429 VkPhysicalDevice physicalDevice,
430 const char* pLayerName,
431 uint32_t* pPropertyCount,
432 VkExtensionProperties* pProperties)
435 // If requesting number of extensions, return that
438 *pPropertyCount = (uint32_t)device_extension_map.size();
441 for (const auto &name_ver_pair : device_extension_map) {
442 if (i == *pPropertyCount) {
445 std::strncpy(pProperties[i].extensionName, name_ver_pair.first.c_str(), sizeof(pProperties[i].extensionName));
446 pProperties[i].extensionName[sizeof(pProperties[i].extensionName) - 1] = 0;
447 pProperties[i].specVersion = name_ver_pair.second;
450 if (i != device_extension_map.size()) {
451 return VK_INCOMPLETE;
455 // If requesting extension properties, fill in data struct for number of extensions
459 static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceLayerProperties(
460 uint32_t* pPropertyCount,
461 VkLayerProperties* pProperties)
467 static VKAPI_ATTR VkResult VKAPI_CALL EnumerateDeviceLayerProperties(
468 VkPhysicalDevice physicalDevice,
469 uint32_t* pPropertyCount,
470 VkLayerProperties* pProperties)
476 static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue(
478 uint32_t queueFamilyIndex,
482 unique_lock_t lock(global_lock);
483 auto queue = queue_map[device][queueFamilyIndex][queueIndex];
487 *pQueue = queue_map[device][queueFamilyIndex][queueIndex] = (VkQueue)CreateDispObjHandle();
489 // TODO: If emulating specific device caps, will need to add intelligence here
493 static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit(
495 uint32_t submitCount,
496 const VkSubmitInfo* pSubmits,
499 //Not a CREATE or DESTROY function
503 static VKAPI_ATTR VkResult VKAPI_CALL QueueWaitIdle(
506 //Not a CREATE or DESTROY function
510 static VKAPI_ATTR VkResult VKAPI_CALL DeviceWaitIdle(
513 //Not a CREATE or DESTROY function
517 static VKAPI_ATTR VkResult VKAPI_CALL AllocateMemory(
519 const VkMemoryAllocateInfo* pAllocateInfo,
520 const VkAllocationCallbacks* pAllocator,
521 VkDeviceMemory* pMemory)
523 unique_lock_t lock(global_lock);
524 allocated_memory_size_map[(VkDeviceMemory)global_unique_handle] = pAllocateInfo->allocationSize;
525 *pMemory = (VkDeviceMemory)global_unique_handle++;
529 static VKAPI_ATTR void VKAPI_CALL FreeMemory(
531 VkDeviceMemory memory,
532 const VkAllocationCallbacks* pAllocator)
535 allocated_memory_size_map.erase(memory);
538 static VKAPI_ATTR VkResult VKAPI_CALL MapMemory(
540 VkDeviceMemory memory,
543 VkMemoryMapFlags flags,
546 unique_lock_t lock(global_lock);
547 if (VK_WHOLE_SIZE == size) {
548 if (allocated_memory_size_map.count(memory) != 0)
549 size = allocated_memory_size_map[memory] - offset;
553 void* map_addr = malloc((size_t)size);
554 mapped_memory_map[memory].push_back(map_addr);
559 static VKAPI_ATTR void VKAPI_CALL UnmapMemory(
561 VkDeviceMemory memory)
563 unique_lock_t lock(global_lock);
564 for (auto map_addr : mapped_memory_map[memory]) {
567 mapped_memory_map.erase(memory);
570 static VKAPI_ATTR VkResult VKAPI_CALL FlushMappedMemoryRanges(
572 uint32_t memoryRangeCount,
573 const VkMappedMemoryRange* pMemoryRanges)
575 //Not a CREATE or DESTROY function
579 static VKAPI_ATTR VkResult VKAPI_CALL InvalidateMappedMemoryRanges(
581 uint32_t memoryRangeCount,
582 const VkMappedMemoryRange* pMemoryRanges)
584 //Not a CREATE or DESTROY function
588 static VKAPI_ATTR void VKAPI_CALL GetDeviceMemoryCommitment(
590 VkDeviceMemory memory,
591 VkDeviceSize* pCommittedMemoryInBytes)
593 //Not a CREATE or DESTROY function
596 static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory(
599 VkDeviceMemory memory,
600 VkDeviceSize memoryOffset)
602 //Not a CREATE or DESTROY function
606 static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory(
609 VkDeviceMemory memory,
610 VkDeviceSize memoryOffset)
612 //Not a CREATE or DESTROY function
616 static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements(
619 VkMemoryRequirements* pMemoryRequirements)
621 // TODO: Just hard-coding reqs for now
622 pMemoryRequirements->size = 4096;
623 pMemoryRequirements->alignment = 1;
624 pMemoryRequirements->memoryTypeBits = 0xFFFF;
625 // Return a better size based on the buffer size from the create info.
626 auto d_iter = buffer_map.find(device);
627 if (d_iter != buffer_map.end()) {
628 auto iter = d_iter->second.find(buffer);
629 if (iter != d_iter->second.end()) {
630 pMemoryRequirements->size = ((iter->second.size + 4095) / 4096) * 4096;
635 static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements(
638 VkMemoryRequirements* pMemoryRequirements)
640 pMemoryRequirements->size = 0;
641 pMemoryRequirements->alignment = 1;
643 auto d_iter = image_memory_size_map.find(device);
644 if(d_iter != image_memory_size_map.end()){
645 auto iter = d_iter->second.find(image);
646 if (iter != d_iter->second.end()) {
647 pMemoryRequirements->size = iter->second;
650 // Here we hard-code that the memory type at index 3 doesn't support this image.
651 pMemoryRequirements->memoryTypeBits = 0xFFFF & ~(0x1 << 3);
654 static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements(
657 uint32_t* pSparseMemoryRequirementCount,
658 VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
660 //Not a CREATE or DESTROY function
663 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties(
664 VkPhysicalDevice physicalDevice,
667 VkSampleCountFlagBits samples,
668 VkImageUsageFlags usage,
669 VkImageTiling tiling,
670 uint32_t* pPropertyCount,
671 VkSparseImageFormatProperties* pProperties)
673 //Not a CREATE or DESTROY function
676 static VKAPI_ATTR VkResult VKAPI_CALL QueueBindSparse(
678 uint32_t bindInfoCount,
679 const VkBindSparseInfo* pBindInfo,
682 //Not a CREATE or DESTROY function
686 static VKAPI_ATTR VkResult VKAPI_CALL CreateFence(
688 const VkFenceCreateInfo* pCreateInfo,
689 const VkAllocationCallbacks* pAllocator,
692 unique_lock_t lock(global_lock);
693 *pFence = (VkFence)global_unique_handle++;
697 static VKAPI_ATTR void VKAPI_CALL DestroyFence(
700 const VkAllocationCallbacks* pAllocator)
705 static VKAPI_ATTR VkResult VKAPI_CALL ResetFences(
708 const VkFence* pFences)
710 //Not a CREATE or DESTROY function
714 static VKAPI_ATTR VkResult VKAPI_CALL GetFenceStatus(
718 //Not a CREATE or DESTROY function
722 static VKAPI_ATTR VkResult VKAPI_CALL WaitForFences(
725 const VkFence* pFences,
729 //Not a CREATE or DESTROY function
733 static VKAPI_ATTR VkResult VKAPI_CALL CreateSemaphore(
735 const VkSemaphoreCreateInfo* pCreateInfo,
736 const VkAllocationCallbacks* pAllocator,
737 VkSemaphore* pSemaphore)
739 unique_lock_t lock(global_lock);
740 *pSemaphore = (VkSemaphore)global_unique_handle++;
744 static VKAPI_ATTR void VKAPI_CALL DestroySemaphore(
746 VkSemaphore semaphore,
747 const VkAllocationCallbacks* pAllocator)
752 static VKAPI_ATTR VkResult VKAPI_CALL CreateEvent(
754 const VkEventCreateInfo* pCreateInfo,
755 const VkAllocationCallbacks* pAllocator,
758 unique_lock_t lock(global_lock);
759 *pEvent = (VkEvent)global_unique_handle++;
763 static VKAPI_ATTR void VKAPI_CALL DestroyEvent(
766 const VkAllocationCallbacks* pAllocator)
771 static VKAPI_ATTR VkResult VKAPI_CALL GetEventStatus(
775 //Not a CREATE or DESTROY function
779 static VKAPI_ATTR VkResult VKAPI_CALL SetEvent(
783 //Not a CREATE or DESTROY function
787 static VKAPI_ATTR VkResult VKAPI_CALL ResetEvent(
791 //Not a CREATE or DESTROY function
795 static VKAPI_ATTR VkResult VKAPI_CALL CreateQueryPool(
797 const VkQueryPoolCreateInfo* pCreateInfo,
798 const VkAllocationCallbacks* pAllocator,
799 VkQueryPool* pQueryPool)
801 unique_lock_t lock(global_lock);
802 *pQueryPool = (VkQueryPool)global_unique_handle++;
806 static VKAPI_ATTR void VKAPI_CALL DestroyQueryPool(
808 VkQueryPool queryPool,
809 const VkAllocationCallbacks* pAllocator)
814 static VKAPI_ATTR VkResult VKAPI_CALL GetQueryPoolResults(
816 VkQueryPool queryPool,
822 VkQueryResultFlags flags)
824 //Not a CREATE or DESTROY function
828 static VKAPI_ATTR VkResult VKAPI_CALL CreateBuffer(
830 const VkBufferCreateInfo* pCreateInfo,
831 const VkAllocationCallbacks* pAllocator,
834 unique_lock_t lock(global_lock);
835 *pBuffer = (VkBuffer)global_unique_handle++;
836 buffer_map[device][*pBuffer] = *pCreateInfo;
840 static VKAPI_ATTR void VKAPI_CALL DestroyBuffer(
843 const VkAllocationCallbacks* pAllocator)
845 unique_lock_t lock(global_lock);
846 buffer_map[device].erase(buffer);
849 static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferView(
851 const VkBufferViewCreateInfo* pCreateInfo,
852 const VkAllocationCallbacks* pAllocator,
855 unique_lock_t lock(global_lock);
856 *pView = (VkBufferView)global_unique_handle++;
860 static VKAPI_ATTR void VKAPI_CALL DestroyBufferView(
862 VkBufferView bufferView,
863 const VkAllocationCallbacks* pAllocator)
868 static VKAPI_ATTR VkResult VKAPI_CALL CreateImage(
870 const VkImageCreateInfo* pCreateInfo,
871 const VkAllocationCallbacks* pAllocator,
874 unique_lock_t lock(global_lock);
875 *pImage = (VkImage)global_unique_handle++;
876 // TODO: A pixel size is 32 bytes. This accounts for the largest possible pixel size of any format. It could be changed to more accurate size if need be.
877 image_memory_size_map[device][*pImage] = pCreateInfo->extent.width * pCreateInfo->extent.height * pCreateInfo->extent.depth *
878 32 * pCreateInfo->arrayLayers * (pCreateInfo->mipLevels > 1 ? 2 : 1);
880 switch (pCreateInfo->format) {
881 case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
882 case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:
883 case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:
884 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:
885 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:
886 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:
887 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:
888 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:
889 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:
890 case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:
891 case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:
892 case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:
893 image_memory_size_map[device][*pImage] *= 3;
895 case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
896 case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:
897 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
898 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:
899 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:
900 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:
901 case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:
902 case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:
903 image_memory_size_map[device][*pImage] *= 2;
911 static VKAPI_ATTR void VKAPI_CALL DestroyImage(
914 const VkAllocationCallbacks* pAllocator)
916 unique_lock_t lock(global_lock);
917 image_memory_size_map[device].erase(image);
920 static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout(
923 const VkImageSubresource* pSubresource,
924 VkSubresourceLayout* pLayout)
926 // Need safe values. Callers are computing memory offsets from pLayout, with no return code to flag failure.
927 *pLayout = VkSubresourceLayout(); // Default constructor zero values.
930 static VKAPI_ATTR VkResult VKAPI_CALL CreateImageView(
932 const VkImageViewCreateInfo* pCreateInfo,
933 const VkAllocationCallbacks* pAllocator,
936 unique_lock_t lock(global_lock);
937 *pView = (VkImageView)global_unique_handle++;
941 static VKAPI_ATTR void VKAPI_CALL DestroyImageView(
943 VkImageView imageView,
944 const VkAllocationCallbacks* pAllocator)
949 static VKAPI_ATTR VkResult VKAPI_CALL CreateShaderModule(
951 const VkShaderModuleCreateInfo* pCreateInfo,
952 const VkAllocationCallbacks* pAllocator,
953 VkShaderModule* pShaderModule)
955 unique_lock_t lock(global_lock);
956 *pShaderModule = (VkShaderModule)global_unique_handle++;
960 static VKAPI_ATTR void VKAPI_CALL DestroyShaderModule(
962 VkShaderModule shaderModule,
963 const VkAllocationCallbacks* pAllocator)
968 static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineCache(
970 const VkPipelineCacheCreateInfo* pCreateInfo,
971 const VkAllocationCallbacks* pAllocator,
972 VkPipelineCache* pPipelineCache)
974 unique_lock_t lock(global_lock);
975 *pPipelineCache = (VkPipelineCache)global_unique_handle++;
979 static VKAPI_ATTR void VKAPI_CALL DestroyPipelineCache(
981 VkPipelineCache pipelineCache,
982 const VkAllocationCallbacks* pAllocator)
987 static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineCacheData(
989 VkPipelineCache pipelineCache,
993 //Not a CREATE or DESTROY function
997 static VKAPI_ATTR VkResult VKAPI_CALL MergePipelineCaches(
999 VkPipelineCache dstCache,
1000 uint32_t srcCacheCount,
1001 const VkPipelineCache* pSrcCaches)
1003 //Not a CREATE or DESTROY function
1007 static VKAPI_ATTR VkResult VKAPI_CALL CreateGraphicsPipelines(
1009 VkPipelineCache pipelineCache,
1010 uint32_t createInfoCount,
1011 const VkGraphicsPipelineCreateInfo* pCreateInfos,
1012 const VkAllocationCallbacks* pAllocator,
1013 VkPipeline* pPipelines)
1015 unique_lock_t lock(global_lock);
1016 for (uint32_t i = 0; i < createInfoCount; ++i) {
1017 pPipelines[i] = (VkPipeline)global_unique_handle++;
1022 static VKAPI_ATTR VkResult VKAPI_CALL CreateComputePipelines(
1024 VkPipelineCache pipelineCache,
1025 uint32_t createInfoCount,
1026 const VkComputePipelineCreateInfo* pCreateInfos,
1027 const VkAllocationCallbacks* pAllocator,
1028 VkPipeline* pPipelines)
1030 unique_lock_t lock(global_lock);
1031 for (uint32_t i = 0; i < createInfoCount; ++i) {
1032 pPipelines[i] = (VkPipeline)global_unique_handle++;
1037 static VKAPI_ATTR void VKAPI_CALL DestroyPipeline(
1039 VkPipeline pipeline,
1040 const VkAllocationCallbacks* pAllocator)
1045 static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineLayout(
1047 const VkPipelineLayoutCreateInfo* pCreateInfo,
1048 const VkAllocationCallbacks* pAllocator,
1049 VkPipelineLayout* pPipelineLayout)
1051 unique_lock_t lock(global_lock);
1052 *pPipelineLayout = (VkPipelineLayout)global_unique_handle++;
1056 static VKAPI_ATTR void VKAPI_CALL DestroyPipelineLayout(
1058 VkPipelineLayout pipelineLayout,
1059 const VkAllocationCallbacks* pAllocator)
1064 static VKAPI_ATTR VkResult VKAPI_CALL CreateSampler(
1066 const VkSamplerCreateInfo* pCreateInfo,
1067 const VkAllocationCallbacks* pAllocator,
1068 VkSampler* pSampler)
1070 unique_lock_t lock(global_lock);
1071 *pSampler = (VkSampler)global_unique_handle++;
1075 static VKAPI_ATTR void VKAPI_CALL DestroySampler(
1078 const VkAllocationCallbacks* pAllocator)
1083 static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorSetLayout(
1085 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1086 const VkAllocationCallbacks* pAllocator,
1087 VkDescriptorSetLayout* pSetLayout)
1089 unique_lock_t lock(global_lock);
1090 *pSetLayout = (VkDescriptorSetLayout)global_unique_handle++;
1094 static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorSetLayout(
1096 VkDescriptorSetLayout descriptorSetLayout,
1097 const VkAllocationCallbacks* pAllocator)
1102 static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorPool(
1104 const VkDescriptorPoolCreateInfo* pCreateInfo,
1105 const VkAllocationCallbacks* pAllocator,
1106 VkDescriptorPool* pDescriptorPool)
1108 unique_lock_t lock(global_lock);
1109 *pDescriptorPool = (VkDescriptorPool)global_unique_handle++;
1113 static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorPool(
1115 VkDescriptorPool descriptorPool,
1116 const VkAllocationCallbacks* pAllocator)
1121 static VKAPI_ATTR VkResult VKAPI_CALL ResetDescriptorPool(
1123 VkDescriptorPool descriptorPool,
1124 VkDescriptorPoolResetFlags flags)
1126 //Not a CREATE or DESTROY function
1130 static VKAPI_ATTR VkResult VKAPI_CALL AllocateDescriptorSets(
1132 const VkDescriptorSetAllocateInfo* pAllocateInfo,
1133 VkDescriptorSet* pDescriptorSets)
1135 unique_lock_t lock(global_lock);
1136 for (uint32_t i = 0; i < pAllocateInfo->descriptorSetCount; ++i) {
1137 pDescriptorSets[i] = (VkDescriptorSet)global_unique_handle++;
1142 static VKAPI_ATTR VkResult VKAPI_CALL FreeDescriptorSets(
1144 VkDescriptorPool descriptorPool,
1145 uint32_t descriptorSetCount,
1146 const VkDescriptorSet* pDescriptorSets)
1152 static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSets(
1154 uint32_t descriptorWriteCount,
1155 const VkWriteDescriptorSet* pDescriptorWrites,
1156 uint32_t descriptorCopyCount,
1157 const VkCopyDescriptorSet* pDescriptorCopies)
1159 //Not a CREATE or DESTROY function
1162 static VKAPI_ATTR VkResult VKAPI_CALL CreateFramebuffer(
1164 const VkFramebufferCreateInfo* pCreateInfo,
1165 const VkAllocationCallbacks* pAllocator,
1166 VkFramebuffer* pFramebuffer)
1168 unique_lock_t lock(global_lock);
1169 *pFramebuffer = (VkFramebuffer)global_unique_handle++;
1173 static VKAPI_ATTR void VKAPI_CALL DestroyFramebuffer(
1175 VkFramebuffer framebuffer,
1176 const VkAllocationCallbacks* pAllocator)
1181 static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass(
1183 const VkRenderPassCreateInfo* pCreateInfo,
1184 const VkAllocationCallbacks* pAllocator,
1185 VkRenderPass* pRenderPass)
1187 unique_lock_t lock(global_lock);
1188 *pRenderPass = (VkRenderPass)global_unique_handle++;
1192 static VKAPI_ATTR void VKAPI_CALL DestroyRenderPass(
1194 VkRenderPass renderPass,
1195 const VkAllocationCallbacks* pAllocator)
1200 static VKAPI_ATTR void VKAPI_CALL GetRenderAreaGranularity(
1202 VkRenderPass renderPass,
1203 VkExtent2D* pGranularity)
1205 //Not a CREATE or DESTROY function
1208 static VKAPI_ATTR VkResult VKAPI_CALL CreateCommandPool(
1210 const VkCommandPoolCreateInfo* pCreateInfo,
1211 const VkAllocationCallbacks* pAllocator,
1212 VkCommandPool* pCommandPool)
1214 unique_lock_t lock(global_lock);
1215 *pCommandPool = (VkCommandPool)global_unique_handle++;
1219 static VKAPI_ATTR void VKAPI_CALL DestroyCommandPool(
1221 VkCommandPool commandPool,
1222 const VkAllocationCallbacks* pAllocator)
1227 static VKAPI_ATTR VkResult VKAPI_CALL ResetCommandPool(
1229 VkCommandPool commandPool,
1230 VkCommandPoolResetFlags flags)
1232 //Not a CREATE or DESTROY function
1236 static VKAPI_ATTR VkResult VKAPI_CALL AllocateCommandBuffers(
1238 const VkCommandBufferAllocateInfo* pAllocateInfo,
1239 VkCommandBuffer* pCommandBuffers)
1241 unique_lock_t lock(global_lock);
1242 for (uint32_t i = 0; i < pAllocateInfo->commandBufferCount; ++i) {
1243 pCommandBuffers[i] = (VkCommandBuffer)CreateDispObjHandle();
1248 static VKAPI_ATTR void VKAPI_CALL FreeCommandBuffers(
1250 VkCommandPool commandPool,
1251 uint32_t commandBufferCount,
1252 const VkCommandBuffer* pCommandBuffers)
1257 static VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(
1258 VkCommandBuffer commandBuffer,
1259 const VkCommandBufferBeginInfo* pBeginInfo)
1261 //Not a CREATE or DESTROY function
1265 static VKAPI_ATTR VkResult VKAPI_CALL EndCommandBuffer(
1266 VkCommandBuffer commandBuffer)
1268 //Not a CREATE or DESTROY function
1272 static VKAPI_ATTR VkResult VKAPI_CALL ResetCommandBuffer(
1273 VkCommandBuffer commandBuffer,
1274 VkCommandBufferResetFlags flags)
1276 //Not a CREATE or DESTROY function
1280 static VKAPI_ATTR void VKAPI_CALL CmdBindPipeline(
1281 VkCommandBuffer commandBuffer,
1282 VkPipelineBindPoint pipelineBindPoint,
1283 VkPipeline pipeline)
1285 //Not a CREATE or DESTROY function
1288 static VKAPI_ATTR void VKAPI_CALL CmdSetViewport(
1289 VkCommandBuffer commandBuffer,
1290 uint32_t firstViewport,
1291 uint32_t viewportCount,
1292 const VkViewport* pViewports)
1294 //Not a CREATE or DESTROY function
1297 static VKAPI_ATTR void VKAPI_CALL CmdSetScissor(
1298 VkCommandBuffer commandBuffer,
1299 uint32_t firstScissor,
1300 uint32_t scissorCount,
1301 const VkRect2D* pScissors)
1303 //Not a CREATE or DESTROY function
1306 static VKAPI_ATTR void VKAPI_CALL CmdSetLineWidth(
1307 VkCommandBuffer commandBuffer,
1310 //Not a CREATE or DESTROY function
1313 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias(
1314 VkCommandBuffer commandBuffer,
1315 float depthBiasConstantFactor,
1316 float depthBiasClamp,
1317 float depthBiasSlopeFactor)
1319 //Not a CREATE or DESTROY function
1322 static VKAPI_ATTR void VKAPI_CALL CmdSetBlendConstants(
1323 VkCommandBuffer commandBuffer,
1324 const float blendConstants[4])
1326 //Not a CREATE or DESTROY function
1329 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBounds(
1330 VkCommandBuffer commandBuffer,
1331 float minDepthBounds,
1332 float maxDepthBounds)
1334 //Not a CREATE or DESTROY function
1337 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilCompareMask(
1338 VkCommandBuffer commandBuffer,
1339 VkStencilFaceFlags faceMask,
1340 uint32_t compareMask)
1342 //Not a CREATE or DESTROY function
1345 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilWriteMask(
1346 VkCommandBuffer commandBuffer,
1347 VkStencilFaceFlags faceMask,
1350 //Not a CREATE or DESTROY function
1353 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilReference(
1354 VkCommandBuffer commandBuffer,
1355 VkStencilFaceFlags faceMask,
1358 //Not a CREATE or DESTROY function
1361 static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets(
1362 VkCommandBuffer commandBuffer,
1363 VkPipelineBindPoint pipelineBindPoint,
1364 VkPipelineLayout layout,
1366 uint32_t descriptorSetCount,
1367 const VkDescriptorSet* pDescriptorSets,
1368 uint32_t dynamicOffsetCount,
1369 const uint32_t* pDynamicOffsets)
1371 //Not a CREATE or DESTROY function
1374 static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer(
1375 VkCommandBuffer commandBuffer,
1377 VkDeviceSize offset,
1378 VkIndexType indexType)
1380 //Not a CREATE or DESTROY function
1383 static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers(
1384 VkCommandBuffer commandBuffer,
1385 uint32_t firstBinding,
1386 uint32_t bindingCount,
1387 const VkBuffer* pBuffers,
1388 const VkDeviceSize* pOffsets)
1390 //Not a CREATE or DESTROY function
1393 static VKAPI_ATTR void VKAPI_CALL CmdDraw(
1394 VkCommandBuffer commandBuffer,
1395 uint32_t vertexCount,
1396 uint32_t instanceCount,
1397 uint32_t firstVertex,
1398 uint32_t firstInstance)
1400 //Not a CREATE or DESTROY function
1403 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexed(
1404 VkCommandBuffer commandBuffer,
1405 uint32_t indexCount,
1406 uint32_t instanceCount,
1407 uint32_t firstIndex,
1408 int32_t vertexOffset,
1409 uint32_t firstInstance)
1411 //Not a CREATE or DESTROY function
1414 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirect(
1415 VkCommandBuffer commandBuffer,
1417 VkDeviceSize offset,
1421 //Not a CREATE or DESTROY function
1424 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirect(
1425 VkCommandBuffer commandBuffer,
1427 VkDeviceSize offset,
1431 //Not a CREATE or DESTROY function
1434 static VKAPI_ATTR void VKAPI_CALL CmdDispatch(
1435 VkCommandBuffer commandBuffer,
1436 uint32_t groupCountX,
1437 uint32_t groupCountY,
1438 uint32_t groupCountZ)
1440 //Not a CREATE or DESTROY function
1443 static VKAPI_ATTR void VKAPI_CALL CmdDispatchIndirect(
1444 VkCommandBuffer commandBuffer,
1446 VkDeviceSize offset)
1448 //Not a CREATE or DESTROY function
1451 static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer(
1452 VkCommandBuffer commandBuffer,
1455 uint32_t regionCount,
1456 const VkBufferCopy* pRegions)
1458 //Not a CREATE or DESTROY function
1461 static VKAPI_ATTR void VKAPI_CALL CmdCopyImage(
1462 VkCommandBuffer commandBuffer,
1464 VkImageLayout srcImageLayout,
1466 VkImageLayout dstImageLayout,
1467 uint32_t regionCount,
1468 const VkImageCopy* pRegions)
1470 //Not a CREATE or DESTROY function
1473 static VKAPI_ATTR void VKAPI_CALL CmdBlitImage(
1474 VkCommandBuffer commandBuffer,
1476 VkImageLayout srcImageLayout,
1478 VkImageLayout dstImageLayout,
1479 uint32_t regionCount,
1480 const VkImageBlit* pRegions,
1483 //Not a CREATE or DESTROY function
1486 static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage(
1487 VkCommandBuffer commandBuffer,
1490 VkImageLayout dstImageLayout,
1491 uint32_t regionCount,
1492 const VkBufferImageCopy* pRegions)
1494 //Not a CREATE or DESTROY function
1497 static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer(
1498 VkCommandBuffer commandBuffer,
1500 VkImageLayout srcImageLayout,
1502 uint32_t regionCount,
1503 const VkBufferImageCopy* pRegions)
1505 //Not a CREATE or DESTROY function
1508 static VKAPI_ATTR void VKAPI_CALL CmdUpdateBuffer(
1509 VkCommandBuffer commandBuffer,
1511 VkDeviceSize dstOffset,
1512 VkDeviceSize dataSize,
1515 //Not a CREATE or DESTROY function
1518 static VKAPI_ATTR void VKAPI_CALL CmdFillBuffer(
1519 VkCommandBuffer commandBuffer,
1521 VkDeviceSize dstOffset,
1525 //Not a CREATE or DESTROY function
1528 static VKAPI_ATTR void VKAPI_CALL CmdClearColorImage(
1529 VkCommandBuffer commandBuffer,
1531 VkImageLayout imageLayout,
1532 const VkClearColorValue* pColor,
1533 uint32_t rangeCount,
1534 const VkImageSubresourceRange* pRanges)
1536 //Not a CREATE or DESTROY function
1539 static VKAPI_ATTR void VKAPI_CALL CmdClearDepthStencilImage(
1540 VkCommandBuffer commandBuffer,
1542 VkImageLayout imageLayout,
1543 const VkClearDepthStencilValue* pDepthStencil,
1544 uint32_t rangeCount,
1545 const VkImageSubresourceRange* pRanges)
1547 //Not a CREATE or DESTROY function
1550 static VKAPI_ATTR void VKAPI_CALL CmdClearAttachments(
1551 VkCommandBuffer commandBuffer,
1552 uint32_t attachmentCount,
1553 const VkClearAttachment* pAttachments,
1555 const VkClearRect* pRects)
1557 //Not a CREATE or DESTROY function
1560 static VKAPI_ATTR void VKAPI_CALL CmdResolveImage(
1561 VkCommandBuffer commandBuffer,
1563 VkImageLayout srcImageLayout,
1565 VkImageLayout dstImageLayout,
1566 uint32_t regionCount,
1567 const VkImageResolve* pRegions)
1569 //Not a CREATE or DESTROY function
1572 static VKAPI_ATTR void VKAPI_CALL CmdSetEvent(
1573 VkCommandBuffer commandBuffer,
1575 VkPipelineStageFlags stageMask)
1577 //Not a CREATE or DESTROY function
1580 static VKAPI_ATTR void VKAPI_CALL CmdResetEvent(
1581 VkCommandBuffer commandBuffer,
1583 VkPipelineStageFlags stageMask)
1585 //Not a CREATE or DESTROY function
1588 static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents(
1589 VkCommandBuffer commandBuffer,
1590 uint32_t eventCount,
1591 const VkEvent* pEvents,
1592 VkPipelineStageFlags srcStageMask,
1593 VkPipelineStageFlags dstStageMask,
1594 uint32_t memoryBarrierCount,
1595 const VkMemoryBarrier* pMemoryBarriers,
1596 uint32_t bufferMemoryBarrierCount,
1597 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1598 uint32_t imageMemoryBarrierCount,
1599 const VkImageMemoryBarrier* pImageMemoryBarriers)
1601 //Not a CREATE or DESTROY function
1604 static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier(
1605 VkCommandBuffer commandBuffer,
1606 VkPipelineStageFlags srcStageMask,
1607 VkPipelineStageFlags dstStageMask,
1608 VkDependencyFlags dependencyFlags,
1609 uint32_t memoryBarrierCount,
1610 const VkMemoryBarrier* pMemoryBarriers,
1611 uint32_t bufferMemoryBarrierCount,
1612 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1613 uint32_t imageMemoryBarrierCount,
1614 const VkImageMemoryBarrier* pImageMemoryBarriers)
1616 //Not a CREATE or DESTROY function
1619 static VKAPI_ATTR void VKAPI_CALL CmdBeginQuery(
1620 VkCommandBuffer commandBuffer,
1621 VkQueryPool queryPool,
1623 VkQueryControlFlags flags)
1625 //Not a CREATE or DESTROY function
1628 static VKAPI_ATTR void VKAPI_CALL CmdEndQuery(
1629 VkCommandBuffer commandBuffer,
1630 VkQueryPool queryPool,
1633 //Not a CREATE or DESTROY function
1636 static VKAPI_ATTR void VKAPI_CALL CmdResetQueryPool(
1637 VkCommandBuffer commandBuffer,
1638 VkQueryPool queryPool,
1639 uint32_t firstQuery,
1640 uint32_t queryCount)
1642 //Not a CREATE or DESTROY function
1645 static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp(
1646 VkCommandBuffer commandBuffer,
1647 VkPipelineStageFlagBits pipelineStage,
1648 VkQueryPool queryPool,
1651 //Not a CREATE or DESTROY function
1654 static VKAPI_ATTR void VKAPI_CALL CmdCopyQueryPoolResults(
1655 VkCommandBuffer commandBuffer,
1656 VkQueryPool queryPool,
1657 uint32_t firstQuery,
1658 uint32_t queryCount,
1660 VkDeviceSize dstOffset,
1661 VkDeviceSize stride,
1662 VkQueryResultFlags flags)
1664 //Not a CREATE or DESTROY function
1667 static VKAPI_ATTR void VKAPI_CALL CmdPushConstants(
1668 VkCommandBuffer commandBuffer,
1669 VkPipelineLayout layout,
1670 VkShaderStageFlags stageFlags,
1673 const void* pValues)
1675 //Not a CREATE or DESTROY function
1678 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass(
1679 VkCommandBuffer commandBuffer,
1680 const VkRenderPassBeginInfo* pRenderPassBegin,
1681 VkSubpassContents contents)
1683 //Not a CREATE or DESTROY function
1686 static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass(
1687 VkCommandBuffer commandBuffer,
1688 VkSubpassContents contents)
1690 //Not a CREATE or DESTROY function
1693 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass(
1694 VkCommandBuffer commandBuffer)
1696 //Not a CREATE or DESTROY function
1699 static VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands(
1700 VkCommandBuffer commandBuffer,
1701 uint32_t commandBufferCount,
1702 const VkCommandBuffer* pCommandBuffers)
1704 //Not a CREATE or DESTROY function
1708 static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceVersion(
1709 uint32_t* pApiVersion)
1712 *pApiVersion = kSupportedVulkanAPIVersion;
1716 static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2(
1718 uint32_t bindInfoCount,
1719 const VkBindBufferMemoryInfo* pBindInfos)
1721 //Not a CREATE or DESTROY function
1725 static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2(
1727 uint32_t bindInfoCount,
1728 const VkBindImageMemoryInfo* pBindInfos)
1730 //Not a CREATE or DESTROY function
1734 static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeatures(
1737 uint32_t localDeviceIndex,
1738 uint32_t remoteDeviceIndex,
1739 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1741 //Not a CREATE or DESTROY function
1744 static VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMask(
1745 VkCommandBuffer commandBuffer,
1746 uint32_t deviceMask)
1748 //Not a CREATE or DESTROY function
1751 static VKAPI_ATTR void VKAPI_CALL CmdDispatchBase(
1752 VkCommandBuffer commandBuffer,
1753 uint32_t baseGroupX,
1754 uint32_t baseGroupY,
1755 uint32_t baseGroupZ,
1756 uint32_t groupCountX,
1757 uint32_t groupCountY,
1758 uint32_t groupCountZ)
1760 //Not a CREATE or DESTROY function
1763 static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroups(
1764 VkInstance instance,
1765 uint32_t* pPhysicalDeviceGroupCount,
1766 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1768 //Not a CREATE or DESTROY function
1772 static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2(
1774 const VkImageMemoryRequirementsInfo2* pInfo,
1775 VkMemoryRequirements2* pMemoryRequirements)
1777 GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
1780 static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2(
1782 const VkBufferMemoryRequirementsInfo2* pInfo,
1783 VkMemoryRequirements2* pMemoryRequirements)
1785 GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
1788 static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2(
1790 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1791 uint32_t* pSparseMemoryRequirementCount,
1792 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1794 //Not a CREATE or DESTROY function
1797 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2(
1798 VkPhysicalDevice physicalDevice,
1799 VkPhysicalDeviceFeatures2* pFeatures)
1801 GetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
1804 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2(
1805 VkPhysicalDevice physicalDevice,
1806 VkPhysicalDeviceProperties2* pProperties)
1808 GetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
1811 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2(
1812 VkPhysicalDevice physicalDevice,
1814 VkFormatProperties2* pFormatProperties)
1816 GetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
1819 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2(
1820 VkPhysicalDevice physicalDevice,
1821 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1822 VkImageFormatProperties2* pImageFormatProperties)
1824 return GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties);
1827 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2(
1828 VkPhysicalDevice physicalDevice,
1829 uint32_t* pQueueFamilyPropertyCount,
1830 VkQueueFamilyProperties2* pQueueFamilyProperties)
1832 GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1835 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties2(
1836 VkPhysicalDevice physicalDevice,
1837 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1839 GetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
1842 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2(
1843 VkPhysicalDevice physicalDevice,
1844 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1845 uint32_t* pPropertyCount,
1846 VkSparseImageFormatProperties2* pProperties)
1848 //Not a CREATE or DESTROY function
1851 static VKAPI_ATTR void VKAPI_CALL TrimCommandPool(
1853 VkCommandPool commandPool,
1854 VkCommandPoolTrimFlags flags)
1856 //Not a CREATE or DESTROY function
1859 static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue2(
1861 const VkDeviceQueueInfo2* pQueueInfo,
1864 GetDeviceQueue(device, pQueueInfo->queueFamilyIndex, pQueueInfo->queueIndex, pQueue);
1865 // TODO: Add further support for GetDeviceQueue2 features
1868 static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversion(
1870 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1871 const VkAllocationCallbacks* pAllocator,
1872 VkSamplerYcbcrConversion* pYcbcrConversion)
1874 unique_lock_t lock(global_lock);
1875 *pYcbcrConversion = (VkSamplerYcbcrConversion)global_unique_handle++;
1879 static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversion(
1881 VkSamplerYcbcrConversion ycbcrConversion,
1882 const VkAllocationCallbacks* pAllocator)
1887 static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplate(
1889 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1890 const VkAllocationCallbacks* pAllocator,
1891 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1893 unique_lock_t lock(global_lock);
1894 *pDescriptorUpdateTemplate = (VkDescriptorUpdateTemplate)global_unique_handle++;
1898 static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplate(
1900 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1901 const VkAllocationCallbacks* pAllocator)
1906 static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplate(
1908 VkDescriptorSet descriptorSet,
1909 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1912 //Not a CREATE or DESTROY function
1915 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferProperties(
1916 VkPhysicalDevice physicalDevice,
1917 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1918 VkExternalBufferProperties* pExternalBufferProperties)
1920 // Hard-code support for all handle types and features
1921 pExternalBufferProperties->externalMemoryProperties.externalMemoryFeatures = 0x7;
1922 pExternalBufferProperties->externalMemoryProperties.exportFromImportedHandleTypes = 0x1FF;
1923 pExternalBufferProperties->externalMemoryProperties.compatibleHandleTypes = 0x1FF;
1926 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFenceProperties(
1927 VkPhysicalDevice physicalDevice,
1928 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
1929 VkExternalFenceProperties* pExternalFenceProperties)
1931 // Hard-code support for all handle types and features
1932 pExternalFenceProperties->exportFromImportedHandleTypes = 0xF;
1933 pExternalFenceProperties->compatibleHandleTypes = 0xF;
1934 pExternalFenceProperties->externalFenceFeatures = 0x3;
1937 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphoreProperties(
1938 VkPhysicalDevice physicalDevice,
1939 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
1940 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
1942 // Hard code support for all handle types and features
1943 pExternalSemaphoreProperties->exportFromImportedHandleTypes = 0x1F;
1944 pExternalSemaphoreProperties->compatibleHandleTypes = 0x1F;
1945 pExternalSemaphoreProperties->externalSemaphoreFeatures = 0x3;
1948 static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupport(
1950 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1951 VkDescriptorSetLayoutSupport* pSupport)
1953 //Not a CREATE or DESTROY function
1957 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCount(
1958 VkCommandBuffer commandBuffer,
1960 VkDeviceSize offset,
1961 VkBuffer countBuffer,
1962 VkDeviceSize countBufferOffset,
1963 uint32_t maxDrawCount,
1966 //Not a CREATE or DESTROY function
1969 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCount(
1970 VkCommandBuffer commandBuffer,
1972 VkDeviceSize offset,
1973 VkBuffer countBuffer,
1974 VkDeviceSize countBufferOffset,
1975 uint32_t maxDrawCount,
1978 //Not a CREATE or DESTROY function
1981 static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2(
1983 const VkRenderPassCreateInfo2* pCreateInfo,
1984 const VkAllocationCallbacks* pAllocator,
1985 VkRenderPass* pRenderPass)
1987 unique_lock_t lock(global_lock);
1988 *pRenderPass = (VkRenderPass)global_unique_handle++;
1992 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2(
1993 VkCommandBuffer commandBuffer,
1994 const VkRenderPassBeginInfo* pRenderPassBegin,
1995 const VkSubpassBeginInfo* pSubpassBeginInfo)
1997 //Not a CREATE or DESTROY function
2000 static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2(
2001 VkCommandBuffer commandBuffer,
2002 const VkSubpassBeginInfo* pSubpassBeginInfo,
2003 const VkSubpassEndInfo* pSubpassEndInfo)
2005 //Not a CREATE or DESTROY function
2008 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2(
2009 VkCommandBuffer commandBuffer,
2010 const VkSubpassEndInfo* pSubpassEndInfo)
2012 //Not a CREATE or DESTROY function
2015 static VKAPI_ATTR void VKAPI_CALL ResetQueryPool(
2017 VkQueryPool queryPool,
2018 uint32_t firstQuery,
2019 uint32_t queryCount)
2021 //Not a CREATE or DESTROY function
2024 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValue(
2026 VkSemaphore semaphore,
2029 //Not a CREATE or DESTROY function
2033 static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphores(
2035 const VkSemaphoreWaitInfo* pWaitInfo,
2038 //Not a CREATE or DESTROY function
2042 static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphore(
2044 const VkSemaphoreSignalInfo* pSignalInfo)
2046 //Not a CREATE or DESTROY function
2050 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddress(
2052 const VkBufferDeviceAddressInfo* pInfo)
2054 //Not a CREATE or DESTROY function
2058 static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddress(
2060 const VkBufferDeviceAddressInfo* pInfo)
2062 //Not a CREATE or DESTROY function
2066 static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddress(
2068 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2070 //Not a CREATE or DESTROY function
2075 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolProperties(
2076 VkPhysicalDevice physicalDevice,
2077 uint32_t* pToolCount,
2078 VkPhysicalDeviceToolProperties* pToolProperties)
2080 //Not a CREATE or DESTROY function
2084 static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlot(
2086 const VkPrivateDataSlotCreateInfo* pCreateInfo,
2087 const VkAllocationCallbacks* pAllocator,
2088 VkPrivateDataSlot* pPrivateDataSlot)
2090 unique_lock_t lock(global_lock);
2091 *pPrivateDataSlot = (VkPrivateDataSlot)global_unique_handle++;
2095 static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlot(
2097 VkPrivateDataSlot privateDataSlot,
2098 const VkAllocationCallbacks* pAllocator)
2103 static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateData(
2105 VkObjectType objectType,
2106 uint64_t objectHandle,
2107 VkPrivateDataSlot privateDataSlot,
2110 //Not a CREATE or DESTROY function
2114 static VKAPI_ATTR void VKAPI_CALL GetPrivateData(
2116 VkObjectType objectType,
2117 uint64_t objectHandle,
2118 VkPrivateDataSlot privateDataSlot,
2121 //Not a CREATE or DESTROY function
2124 static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2(
2125 VkCommandBuffer commandBuffer,
2127 const VkDependencyInfo* pDependencyInfo)
2129 //Not a CREATE or DESTROY function
2132 static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2(
2133 VkCommandBuffer commandBuffer,
2135 VkPipelineStageFlags2 stageMask)
2137 //Not a CREATE or DESTROY function
2140 static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2(
2141 VkCommandBuffer commandBuffer,
2142 uint32_t eventCount,
2143 const VkEvent* pEvents,
2144 const VkDependencyInfo* pDependencyInfos)
2146 //Not a CREATE or DESTROY function
2149 static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2(
2150 VkCommandBuffer commandBuffer,
2151 const VkDependencyInfo* pDependencyInfo)
2153 //Not a CREATE or DESTROY function
2156 static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2(
2157 VkCommandBuffer commandBuffer,
2158 VkPipelineStageFlags2 stage,
2159 VkQueryPool queryPool,
2162 //Not a CREATE or DESTROY function
2165 static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2(
2167 uint32_t submitCount,
2168 const VkSubmitInfo2* pSubmits,
2171 //Not a CREATE or DESTROY function
2175 static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2(
2176 VkCommandBuffer commandBuffer,
2177 const VkCopyBufferInfo2* pCopyBufferInfo)
2179 //Not a CREATE or DESTROY function
2182 static VKAPI_ATTR void VKAPI_CALL CmdCopyImage2(
2183 VkCommandBuffer commandBuffer,
2184 const VkCopyImageInfo2* pCopyImageInfo)
2186 //Not a CREATE or DESTROY function
2189 static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2(
2190 VkCommandBuffer commandBuffer,
2191 const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo)
2193 //Not a CREATE or DESTROY function
2196 static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2(
2197 VkCommandBuffer commandBuffer,
2198 const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo)
2200 //Not a CREATE or DESTROY function
2203 static VKAPI_ATTR void VKAPI_CALL CmdBlitImage2(
2204 VkCommandBuffer commandBuffer,
2205 const VkBlitImageInfo2* pBlitImageInfo)
2207 //Not a CREATE or DESTROY function
2210 static VKAPI_ATTR void VKAPI_CALL CmdResolveImage2(
2211 VkCommandBuffer commandBuffer,
2212 const VkResolveImageInfo2* pResolveImageInfo)
2214 //Not a CREATE or DESTROY function
2217 static VKAPI_ATTR void VKAPI_CALL CmdBeginRendering(
2218 VkCommandBuffer commandBuffer,
2219 const VkRenderingInfo* pRenderingInfo)
2221 //Not a CREATE or DESTROY function
2224 static VKAPI_ATTR void VKAPI_CALL CmdEndRendering(
2225 VkCommandBuffer commandBuffer)
2227 //Not a CREATE or DESTROY function
2230 static VKAPI_ATTR void VKAPI_CALL CmdSetCullMode(
2231 VkCommandBuffer commandBuffer,
2232 VkCullModeFlags cullMode)
2234 //Not a CREATE or DESTROY function
2237 static VKAPI_ATTR void VKAPI_CALL CmdSetFrontFace(
2238 VkCommandBuffer commandBuffer,
2239 VkFrontFace frontFace)
2241 //Not a CREATE or DESTROY function
2244 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopology(
2245 VkCommandBuffer commandBuffer,
2246 VkPrimitiveTopology primitiveTopology)
2248 //Not a CREATE or DESTROY function
2251 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCount(
2252 VkCommandBuffer commandBuffer,
2253 uint32_t viewportCount,
2254 const VkViewport* pViewports)
2256 //Not a CREATE or DESTROY function
2259 static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCount(
2260 VkCommandBuffer commandBuffer,
2261 uint32_t scissorCount,
2262 const VkRect2D* pScissors)
2264 //Not a CREATE or DESTROY function
2267 static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2(
2268 VkCommandBuffer commandBuffer,
2269 uint32_t firstBinding,
2270 uint32_t bindingCount,
2271 const VkBuffer* pBuffers,
2272 const VkDeviceSize* pOffsets,
2273 const VkDeviceSize* pSizes,
2274 const VkDeviceSize* pStrides)
2276 //Not a CREATE or DESTROY function
2279 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnable(
2280 VkCommandBuffer commandBuffer,
2281 VkBool32 depthTestEnable)
2283 //Not a CREATE or DESTROY function
2286 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnable(
2287 VkCommandBuffer commandBuffer,
2288 VkBool32 depthWriteEnable)
2290 //Not a CREATE or DESTROY function
2293 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOp(
2294 VkCommandBuffer commandBuffer,
2295 VkCompareOp depthCompareOp)
2297 //Not a CREATE or DESTROY function
2300 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnable(
2301 VkCommandBuffer commandBuffer,
2302 VkBool32 depthBoundsTestEnable)
2304 //Not a CREATE or DESTROY function
2307 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnable(
2308 VkCommandBuffer commandBuffer,
2309 VkBool32 stencilTestEnable)
2311 //Not a CREATE or DESTROY function
2314 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOp(
2315 VkCommandBuffer commandBuffer,
2316 VkStencilFaceFlags faceMask,
2319 VkStencilOp depthFailOp,
2320 VkCompareOp compareOp)
2322 //Not a CREATE or DESTROY function
2325 static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnable(
2326 VkCommandBuffer commandBuffer,
2327 VkBool32 rasterizerDiscardEnable)
2329 //Not a CREATE or DESTROY function
2332 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnable(
2333 VkCommandBuffer commandBuffer,
2334 VkBool32 depthBiasEnable)
2336 //Not a CREATE or DESTROY function
2339 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnable(
2340 VkCommandBuffer commandBuffer,
2341 VkBool32 primitiveRestartEnable)
2343 //Not a CREATE or DESTROY function
2346 static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirements(
2348 const VkDeviceBufferMemoryRequirements* pInfo,
2349 VkMemoryRequirements2* pMemoryRequirements)
2351 //Not a CREATE or DESTROY function
2354 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirements(
2356 const VkDeviceImageMemoryRequirements* pInfo,
2357 VkMemoryRequirements2* pMemoryRequirements)
2359 //Not a CREATE or DESTROY function
2362 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirements(
2364 const VkDeviceImageMemoryRequirements* pInfo,
2365 uint32_t* pSparseMemoryRequirementCount,
2366 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
2368 //Not a CREATE or DESTROY function
2372 static VKAPI_ATTR void VKAPI_CALL DestroySurfaceKHR(
2373 VkInstance instance,
2374 VkSurfaceKHR surface,
2375 const VkAllocationCallbacks* pAllocator)
2380 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceSupportKHR(
2381 VkPhysicalDevice physicalDevice,
2382 uint32_t queueFamilyIndex,
2383 VkSurfaceKHR surface,
2384 VkBool32* pSupported)
2386 // Currently say that all surface/queue combos are supported
2387 *pSupported = VK_TRUE;
2391 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilitiesKHR(
2392 VkPhysicalDevice physicalDevice,
2393 VkSurfaceKHR surface,
2394 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2396 // In general just say max supported is available for requested surface
2397 pSurfaceCapabilities->minImageCount = 1;
2398 pSurfaceCapabilities->maxImageCount = 0;
2399 pSurfaceCapabilities->currentExtent.width = 0xFFFFFFFF;
2400 pSurfaceCapabilities->currentExtent.height = 0xFFFFFFFF;
2401 pSurfaceCapabilities->minImageExtent.width = 1;
2402 pSurfaceCapabilities->minImageExtent.height = 1;
2403 pSurfaceCapabilities->maxImageExtent.width = 0xFFFF;
2404 pSurfaceCapabilities->maxImageExtent.height = 0xFFFF;
2405 pSurfaceCapabilities->maxImageArrayLayers = 128;
2406 pSurfaceCapabilities->supportedTransforms = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR |
2407 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR |
2408 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR |
2409 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR |
2410 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR |
2411 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR |
2412 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR |
2413 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR |
2414 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR;
2415 pSurfaceCapabilities->currentTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
2416 pSurfaceCapabilities->supportedCompositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR |
2417 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR |
2418 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR |
2419 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR;
2420 pSurfaceCapabilities->supportedUsageFlags = VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
2421 VK_IMAGE_USAGE_TRANSFER_DST_BIT |
2422 VK_IMAGE_USAGE_SAMPLED_BIT |
2423 VK_IMAGE_USAGE_STORAGE_BIT |
2424 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
2425 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT |
2426 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT |
2427 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
2431 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormatsKHR(
2432 VkPhysicalDevice physicalDevice,
2433 VkSurfaceKHR surface,
2434 uint32_t* pSurfaceFormatCount,
2435 VkSurfaceFormatKHR* pSurfaceFormats)
2437 // Currently always say that RGBA8 & BGRA8 are supported
2438 if (!pSurfaceFormats) {
2439 *pSurfaceFormatCount = 2;
2441 // Intentionally falling through and just filling however many types are requested
2442 switch(*pSurfaceFormatCount) {
2444 pSurfaceFormats[1].format = VK_FORMAT_R8G8B8A8_UNORM;
2445 pSurfaceFormats[1].colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
2448 pSurfaceFormats[0].format = VK_FORMAT_B8G8R8A8_UNORM;
2449 pSurfaceFormats[0].colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
2456 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModesKHR(
2457 VkPhysicalDevice physicalDevice,
2458 VkSurfaceKHR surface,
2459 uint32_t* pPresentModeCount,
2460 VkPresentModeKHR* pPresentModes)
2462 // Currently always say that all present modes are supported
2463 if (!pPresentModes) {
2464 *pPresentModeCount = 6;
2466 // Intentionally falling through and just filling however many modes are requested
2467 switch(*pPresentModeCount) {
2469 pPresentModes[5] = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR;
2472 pPresentModes[4] = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR;
2475 pPresentModes[3] = VK_PRESENT_MODE_FIFO_RELAXED_KHR;
2478 pPresentModes[2] = VK_PRESENT_MODE_FIFO_KHR;
2481 pPresentModes[1] = VK_PRESENT_MODE_MAILBOX_KHR;
2484 pPresentModes[0] = VK_PRESENT_MODE_IMMEDIATE_KHR;
2492 static VKAPI_ATTR VkResult VKAPI_CALL CreateSwapchainKHR(
2494 const VkSwapchainCreateInfoKHR* pCreateInfo,
2495 const VkAllocationCallbacks* pAllocator,
2496 VkSwapchainKHR* pSwapchain)
2498 unique_lock_t lock(global_lock);
2499 *pSwapchain = (VkSwapchainKHR)global_unique_handle++;
2500 for(uint32_t i = 0; i < icd_swapchain_image_count; ++i){
2501 swapchain_image_map[*pSwapchain][i] = (VkImage)global_unique_handle++;
2506 static VKAPI_ATTR void VKAPI_CALL DestroySwapchainKHR(
2508 VkSwapchainKHR swapchain,
2509 const VkAllocationCallbacks* pAllocator)
2511 unique_lock_t lock(global_lock);
2512 swapchain_image_map.clear();
2515 static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainImagesKHR(
2517 VkSwapchainKHR swapchain,
2518 uint32_t* pSwapchainImageCount,
2519 VkImage* pSwapchainImages)
2521 if (!pSwapchainImages) {
2522 *pSwapchainImageCount = icd_swapchain_image_count;
2524 unique_lock_t lock(global_lock);
2525 for (uint32_t img_i = 0; img_i < (std::min)(*pSwapchainImageCount, icd_swapchain_image_count); ++img_i){
2526 pSwapchainImages[img_i] = swapchain_image_map.at(swapchain)[img_i];
2529 if (*pSwapchainImageCount < icd_swapchain_image_count) return VK_INCOMPLETE;
2530 else if (*pSwapchainImageCount > icd_swapchain_image_count) *pSwapchainImageCount = icd_swapchain_image_count;
2535 static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImageKHR(
2537 VkSwapchainKHR swapchain,
2539 VkSemaphore semaphore,
2541 uint32_t* pImageIndex)
2547 static VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(
2549 const VkPresentInfoKHR* pPresentInfo)
2551 //Not a CREATE or DESTROY function
2555 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupPresentCapabilitiesKHR(
2557 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2559 //Not a CREATE or DESTROY function
2563 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModesKHR(
2565 VkSurfaceKHR surface,
2566 VkDeviceGroupPresentModeFlagsKHR* pModes)
2568 //Not a CREATE or DESTROY function
2572 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDevicePresentRectanglesKHR(
2573 VkPhysicalDevice physicalDevice,
2574 VkSurfaceKHR surface,
2575 uint32_t* pRectCount,
2578 //Not a CREATE or DESTROY function
2582 static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImage2KHR(
2584 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2585 uint32_t* pImageIndex)
2592 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPropertiesKHR(
2593 VkPhysicalDevice physicalDevice,
2594 uint32_t* pPropertyCount,
2595 VkDisplayPropertiesKHR* pProperties)
2597 //Not a CREATE or DESTROY function
2601 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlanePropertiesKHR(
2602 VkPhysicalDevice physicalDevice,
2603 uint32_t* pPropertyCount,
2604 VkDisplayPlanePropertiesKHR* pProperties)
2606 //Not a CREATE or DESTROY function
2610 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneSupportedDisplaysKHR(
2611 VkPhysicalDevice physicalDevice,
2612 uint32_t planeIndex,
2613 uint32_t* pDisplayCount,
2614 VkDisplayKHR* pDisplays)
2616 //Not a CREATE or DESTROY function
2620 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModePropertiesKHR(
2621 VkPhysicalDevice physicalDevice,
2622 VkDisplayKHR display,
2623 uint32_t* pPropertyCount,
2624 VkDisplayModePropertiesKHR* pProperties)
2626 //Not a CREATE or DESTROY function
2630 static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayModeKHR(
2631 VkPhysicalDevice physicalDevice,
2632 VkDisplayKHR display,
2633 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2634 const VkAllocationCallbacks* pAllocator,
2635 VkDisplayModeKHR* pMode)
2637 unique_lock_t lock(global_lock);
2638 *pMode = (VkDisplayModeKHR)global_unique_handle++;
2642 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR(
2643 VkPhysicalDevice physicalDevice,
2644 VkDisplayModeKHR mode,
2645 uint32_t planeIndex,
2646 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2648 //Not a CREATE or DESTROY function
2652 static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayPlaneSurfaceKHR(
2653 VkInstance instance,
2654 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2655 const VkAllocationCallbacks* pAllocator,
2656 VkSurfaceKHR* pSurface)
2658 unique_lock_t lock(global_lock);
2659 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2664 static VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR(
2666 uint32_t swapchainCount,
2667 const VkSwapchainCreateInfoKHR* pCreateInfos,
2668 const VkAllocationCallbacks* pAllocator,
2669 VkSwapchainKHR* pSwapchains)
2671 unique_lock_t lock(global_lock);
2672 for (uint32_t i = 0; i < swapchainCount; ++i) {
2673 pSwapchains[i] = (VkSwapchainKHR)global_unique_handle++;
2678 #ifdef VK_USE_PLATFORM_XLIB_KHR
2680 static VKAPI_ATTR VkResult VKAPI_CALL CreateXlibSurfaceKHR(
2681 VkInstance instance,
2682 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2683 const VkAllocationCallbacks* pAllocator,
2684 VkSurfaceKHR* pSurface)
2686 unique_lock_t lock(global_lock);
2687 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2691 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXlibPresentationSupportKHR(
2692 VkPhysicalDevice physicalDevice,
2693 uint32_t queueFamilyIndex,
2697 //Not a CREATE or DESTROY function
2700 #endif /* VK_USE_PLATFORM_XLIB_KHR */
2702 #ifdef VK_USE_PLATFORM_XCB_KHR
2704 static VKAPI_ATTR VkResult VKAPI_CALL CreateXcbSurfaceKHR(
2705 VkInstance instance,
2706 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2707 const VkAllocationCallbacks* pAllocator,
2708 VkSurfaceKHR* pSurface)
2710 unique_lock_t lock(global_lock);
2711 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2715 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXcbPresentationSupportKHR(
2716 VkPhysicalDevice physicalDevice,
2717 uint32_t queueFamilyIndex,
2718 xcb_connection_t* connection,
2719 xcb_visualid_t visual_id)
2721 //Not a CREATE or DESTROY function
2724 #endif /* VK_USE_PLATFORM_XCB_KHR */
2726 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
2728 static VKAPI_ATTR VkResult VKAPI_CALL CreateWaylandSurfaceKHR(
2729 VkInstance instance,
2730 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2731 const VkAllocationCallbacks* pAllocator,
2732 VkSurfaceKHR* pSurface)
2734 unique_lock_t lock(global_lock);
2735 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2739 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWaylandPresentationSupportKHR(
2740 VkPhysicalDevice physicalDevice,
2741 uint32_t queueFamilyIndex,
2742 struct wl_display* display)
2744 //Not a CREATE or DESTROY function
2747 #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
2749 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2751 static VKAPI_ATTR VkResult VKAPI_CALL CreateAndroidSurfaceKHR(
2752 VkInstance instance,
2753 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2754 const VkAllocationCallbacks* pAllocator,
2755 VkSurfaceKHR* pSurface)
2757 unique_lock_t lock(global_lock);
2758 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2761 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
2763 #ifdef VK_USE_PLATFORM_WIN32_KHR
2765 static VKAPI_ATTR VkResult VKAPI_CALL CreateWin32SurfaceKHR(
2766 VkInstance instance,
2767 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2768 const VkAllocationCallbacks* pAllocator,
2769 VkSurfaceKHR* pSurface)
2771 unique_lock_t lock(global_lock);
2772 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2776 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWin32PresentationSupportKHR(
2777 VkPhysicalDevice physicalDevice,
2778 uint32_t queueFamilyIndex)
2780 //Not a CREATE or DESTROY function
2783 #endif /* VK_USE_PLATFORM_WIN32_KHR */
2786 #ifdef VK_ENABLE_BETA_EXTENSIONS
2788 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR(
2789 VkPhysicalDevice physicalDevice,
2790 const VkVideoProfileKHR* pVideoProfile,
2791 VkVideoCapabilitiesKHR* pCapabilities)
2793 //Not a CREATE or DESTROY function
2797 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoFormatPropertiesKHR(
2798 VkPhysicalDevice physicalDevice,
2799 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
2800 uint32_t* pVideoFormatPropertyCount,
2801 VkVideoFormatPropertiesKHR* pVideoFormatProperties)
2803 //Not a CREATE or DESTROY function
2807 static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionKHR(
2809 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2810 const VkAllocationCallbacks* pAllocator,
2811 VkVideoSessionKHR* pVideoSession)
2813 unique_lock_t lock(global_lock);
2814 *pVideoSession = (VkVideoSessionKHR)global_unique_handle++;
2818 static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionKHR(
2820 VkVideoSessionKHR videoSession,
2821 const VkAllocationCallbacks* pAllocator)
2826 static VKAPI_ATTR VkResult VKAPI_CALL GetVideoSessionMemoryRequirementsKHR(
2828 VkVideoSessionKHR videoSession,
2829 uint32_t* pVideoSessionMemoryRequirementsCount,
2830 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
2832 //Not a CREATE or DESTROY function
2836 static VKAPI_ATTR VkResult VKAPI_CALL BindVideoSessionMemoryKHR(
2838 VkVideoSessionKHR videoSession,
2839 uint32_t videoSessionBindMemoryCount,
2840 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
2842 //Not a CREATE or DESTROY function
2846 static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionParametersKHR(
2848 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2849 const VkAllocationCallbacks* pAllocator,
2850 VkVideoSessionParametersKHR* pVideoSessionParameters)
2852 unique_lock_t lock(global_lock);
2853 *pVideoSessionParameters = (VkVideoSessionParametersKHR)global_unique_handle++;
2857 static VKAPI_ATTR VkResult VKAPI_CALL UpdateVideoSessionParametersKHR(
2859 VkVideoSessionParametersKHR videoSessionParameters,
2860 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
2862 //Not a CREATE or DESTROY function
2866 static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionParametersKHR(
2868 VkVideoSessionParametersKHR videoSessionParameters,
2869 const VkAllocationCallbacks* pAllocator)
2874 static VKAPI_ATTR void VKAPI_CALL CmdBeginVideoCodingKHR(
2875 VkCommandBuffer commandBuffer,
2876 const VkVideoBeginCodingInfoKHR* pBeginInfo)
2878 //Not a CREATE or DESTROY function
2881 static VKAPI_ATTR void VKAPI_CALL CmdEndVideoCodingKHR(
2882 VkCommandBuffer commandBuffer,
2883 const VkVideoEndCodingInfoKHR* pEndCodingInfo)
2885 //Not a CREATE or DESTROY function
2888 static VKAPI_ATTR void VKAPI_CALL CmdControlVideoCodingKHR(
2889 VkCommandBuffer commandBuffer,
2890 const VkVideoCodingControlInfoKHR* pCodingControlInfo)
2892 //Not a CREATE or DESTROY function
2894 #endif /* VK_ENABLE_BETA_EXTENSIONS */
2896 #ifdef VK_ENABLE_BETA_EXTENSIONS
2898 static VKAPI_ATTR void VKAPI_CALL CmdDecodeVideoKHR(
2899 VkCommandBuffer commandBuffer,
2900 const VkVideoDecodeInfoKHR* pFrameInfo)
2902 //Not a CREATE or DESTROY function
2904 #endif /* VK_ENABLE_BETA_EXTENSIONS */
2907 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR(
2908 VkCommandBuffer commandBuffer,
2909 const VkRenderingInfo* pRenderingInfo)
2911 //Not a CREATE or DESTROY function
2914 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderingKHR(
2915 VkCommandBuffer commandBuffer)
2917 //Not a CREATE or DESTROY function
2922 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2KHR(
2923 VkPhysicalDevice physicalDevice,
2924 VkPhysicalDeviceFeatures2* pFeatures)
2926 GetPhysicalDeviceFeatures(physicalDevice, &pFeatures->features);
2927 uint32_t num_bools = 0; // Count number of VkBool32s in extension structs
2928 VkBool32* feat_bools = nullptr;
2929 const auto *desc_idx_features = lvl_find_in_chain<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>(pFeatures->pNext);
2930 if (desc_idx_features) {
2931 const auto bool_size = sizeof(VkPhysicalDeviceDescriptorIndexingFeaturesEXT) - offsetof(VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing);
2932 num_bools = bool_size/sizeof(VkBool32);
2933 feat_bools = (VkBool32*)&desc_idx_features->shaderInputAttachmentArrayDynamicIndexing;
2934 SetBoolArrayTrue(feat_bools, num_bools);
2936 const auto *blendop_features = lvl_find_in_chain<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(pFeatures->pNext);
2937 if (blendop_features) {
2938 const auto bool_size = sizeof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT) - offsetof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations);
2939 num_bools = bool_size/sizeof(VkBool32);
2940 feat_bools = (VkBool32*)&blendop_features->advancedBlendCoherentOperations;
2941 SetBoolArrayTrue(feat_bools, num_bools);
2945 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2KHR(
2946 VkPhysicalDevice physicalDevice,
2947 VkPhysicalDeviceProperties2* pProperties)
2949 GetPhysicalDeviceProperties(physicalDevice, &pProperties->properties);
2950 const auto *desc_idx_props = lvl_find_in_chain<VkPhysicalDeviceDescriptorIndexingPropertiesEXT>(pProperties->pNext);
2951 if (desc_idx_props) {
2952 VkPhysicalDeviceDescriptorIndexingPropertiesEXT* write_props = (VkPhysicalDeviceDescriptorIndexingPropertiesEXT*)desc_idx_props;
2953 write_props->maxUpdateAfterBindDescriptorsInAllPools = 500000;
2954 write_props->shaderUniformBufferArrayNonUniformIndexingNative = false;
2955 write_props->shaderSampledImageArrayNonUniformIndexingNative = false;
2956 write_props->shaderStorageBufferArrayNonUniformIndexingNative = false;
2957 write_props->shaderStorageImageArrayNonUniformIndexingNative = false;
2958 write_props->shaderInputAttachmentArrayNonUniformIndexingNative = false;
2959 write_props->robustBufferAccessUpdateAfterBind = true;
2960 write_props->quadDivergentImplicitLod = true;
2961 write_props->maxPerStageDescriptorUpdateAfterBindSamplers = 500000;
2962 write_props->maxPerStageDescriptorUpdateAfterBindUniformBuffers = 500000;
2963 write_props->maxPerStageDescriptorUpdateAfterBindStorageBuffers = 500000;
2964 write_props->maxPerStageDescriptorUpdateAfterBindSampledImages = 500000;
2965 write_props->maxPerStageDescriptorUpdateAfterBindStorageImages = 500000;
2966 write_props->maxPerStageDescriptorUpdateAfterBindInputAttachments = 500000;
2967 write_props->maxPerStageUpdateAfterBindResources = 500000;
2968 write_props->maxDescriptorSetUpdateAfterBindSamplers = 500000;
2969 write_props->maxDescriptorSetUpdateAfterBindUniformBuffers = 96;
2970 write_props->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 8;
2971 write_props->maxDescriptorSetUpdateAfterBindStorageBuffers = 500000;
2972 write_props->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 4;
2973 write_props->maxDescriptorSetUpdateAfterBindSampledImages = 500000;
2974 write_props->maxDescriptorSetUpdateAfterBindStorageImages = 500000;
2975 write_props->maxDescriptorSetUpdateAfterBindInputAttachments = 500000;
2978 const auto *push_descriptor_props = lvl_find_in_chain<VkPhysicalDevicePushDescriptorPropertiesKHR>(pProperties->pNext);
2979 if (push_descriptor_props) {
2980 VkPhysicalDevicePushDescriptorPropertiesKHR* write_props = (VkPhysicalDevicePushDescriptorPropertiesKHR*)push_descriptor_props;
2981 write_props->maxPushDescriptors = 256;
2984 const auto *depth_stencil_resolve_props = lvl_find_in_chain<VkPhysicalDeviceDepthStencilResolvePropertiesKHR>(pProperties->pNext);
2985 if (depth_stencil_resolve_props) {
2986 VkPhysicalDeviceDepthStencilResolvePropertiesKHR* write_props = (VkPhysicalDeviceDepthStencilResolvePropertiesKHR*)depth_stencil_resolve_props;
2987 write_props->supportedDepthResolveModes = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR;
2988 write_props->supportedStencilResolveModes = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR;
2991 const auto *fragment_density_map2_props = lvl_find_in_chain<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT>(pProperties->pNext);
2992 if (fragment_density_map2_props) {
2993 VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* write_props = (VkPhysicalDeviceFragmentDensityMap2PropertiesEXT*)fragment_density_map2_props;
2994 write_props->subsampledLoads = VK_FALSE;
2995 write_props->subsampledCoarseReconstructionEarlyAccess = VK_FALSE;
2996 write_props->maxSubsampledArrayLayers = 2;
2997 write_props->maxDescriptorSetSubsampledSamplers = 1;
3001 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2KHR(
3002 VkPhysicalDevice physicalDevice,
3004 VkFormatProperties2* pFormatProperties)
3006 GetPhysicalDeviceFormatProperties(physicalDevice, format, &pFormatProperties->formatProperties);
3007 VkFormatProperties3KHR *props_3 = lvl_find_mod_in_chain<VkFormatProperties3KHR>(pFormatProperties->pNext);
3009 props_3->linearTilingFeatures = pFormatProperties->formatProperties.linearTilingFeatures;
3010 props_3->optimalTilingFeatures = pFormatProperties->formatProperties.optimalTilingFeatures;
3011 props_3->bufferFeatures = pFormatProperties->formatProperties.bufferFeatures;
3015 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2KHR(
3016 VkPhysicalDevice physicalDevice,
3017 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
3018 VkImageFormatProperties2* pImageFormatProperties)
3020 GetPhysicalDeviceImageFormatProperties(physicalDevice, pImageFormatInfo->format, pImageFormatInfo->type, pImageFormatInfo->tiling, pImageFormatInfo->usage, pImageFormatInfo->flags, &pImageFormatProperties->imageFormatProperties);
3024 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2KHR(
3025 VkPhysicalDevice physicalDevice,
3026 uint32_t* pQueueFamilyPropertyCount,
3027 VkQueueFamilyProperties2* pQueueFamilyProperties)
3029 if (pQueueFamilyPropertyCount && pQueueFamilyProperties) {
3030 GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, &pQueueFamilyProperties->queueFamilyProperties);
3032 GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, nullptr);
3036 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties2KHR(
3037 VkPhysicalDevice physicalDevice,
3038 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
3040 GetPhysicalDeviceMemoryProperties(physicalDevice, &pMemoryProperties->memoryProperties);
3043 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2KHR(
3044 VkPhysicalDevice physicalDevice,
3045 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
3046 uint32_t* pPropertyCount,
3047 VkSparseImageFormatProperties2* pProperties)
3049 //Not a CREATE or DESTROY function
3053 static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR(
3056 uint32_t localDeviceIndex,
3057 uint32_t remoteDeviceIndex,
3058 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3060 //Not a CREATE or DESTROY function
3063 static VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMaskKHR(
3064 VkCommandBuffer commandBuffer,
3065 uint32_t deviceMask)
3067 //Not a CREATE or DESTROY function
3070 static VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR(
3071 VkCommandBuffer commandBuffer,
3072 uint32_t baseGroupX,
3073 uint32_t baseGroupY,
3074 uint32_t baseGroupZ,
3075 uint32_t groupCountX,
3076 uint32_t groupCountY,
3077 uint32_t groupCountZ)
3079 //Not a CREATE or DESTROY function
3084 static VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR(
3086 VkCommandPool commandPool,
3087 VkCommandPoolTrimFlags flags)
3089 //Not a CREATE or DESTROY function
3093 static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroupsKHR(
3094 VkInstance instance,
3095 uint32_t* pPhysicalDeviceGroupCount,
3096 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
3098 //Not a CREATE or DESTROY function
3103 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferPropertiesKHR(
3104 VkPhysicalDevice physicalDevice,
3105 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
3106 VkExternalBufferProperties* pExternalBufferProperties)
3108 GetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
3112 #ifdef VK_USE_PLATFORM_WIN32_KHR
3114 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR(
3116 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3119 //Not a CREATE or DESTROY function
3123 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR(
3125 VkExternalMemoryHandleTypeFlagBits handleType,
3127 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3129 //Not a CREATE or DESTROY function
3132 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3135 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR(
3137 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3140 //Not a CREATE or DESTROY function
3144 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR(
3146 VkExternalMemoryHandleTypeFlagBits handleType,
3148 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3150 //Not a CREATE or DESTROY function
3154 #ifdef VK_USE_PLATFORM_WIN32_KHR
3155 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3158 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphorePropertiesKHR(
3159 VkPhysicalDevice physicalDevice,
3160 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3161 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3163 GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
3167 #ifdef VK_USE_PLATFORM_WIN32_KHR
3169 static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR(
3171 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3173 //Not a CREATE or DESTROY function
3177 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR(
3179 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3182 //Not a CREATE or DESTROY function
3185 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3188 static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR(
3190 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3192 //Not a CREATE or DESTROY function
3196 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR(
3198 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3201 //Not a CREATE or DESTROY function
3206 static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR(
3207 VkCommandBuffer commandBuffer,
3208 VkPipelineBindPoint pipelineBindPoint,
3209 VkPipelineLayout layout,
3211 uint32_t descriptorWriteCount,
3212 const VkWriteDescriptorSet* pDescriptorWrites)
3214 //Not a CREATE or DESTROY function
3217 static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR(
3218 VkCommandBuffer commandBuffer,
3219 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3220 VkPipelineLayout layout,
3224 //Not a CREATE or DESTROY function
3231 static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR(
3233 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3234 const VkAllocationCallbacks* pAllocator,
3235 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3237 unique_lock_t lock(global_lock);
3238 *pDescriptorUpdateTemplate = (VkDescriptorUpdateTemplate)global_unique_handle++;
3242 static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplateKHR(
3244 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3245 const VkAllocationCallbacks* pAllocator)
3250 static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR(
3252 VkDescriptorSet descriptorSet,
3253 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3256 //Not a CREATE or DESTROY function
3261 static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR(
3263 const VkRenderPassCreateInfo2* pCreateInfo,
3264 const VkAllocationCallbacks* pAllocator,
3265 VkRenderPass* pRenderPass)
3267 unique_lock_t lock(global_lock);
3268 *pRenderPass = (VkRenderPass)global_unique_handle++;
3272 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR(
3273 VkCommandBuffer commandBuffer,
3274 const VkRenderPassBeginInfo* pRenderPassBegin,
3275 const VkSubpassBeginInfo* pSubpassBeginInfo)
3277 //Not a CREATE or DESTROY function
3280 static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR(
3281 VkCommandBuffer commandBuffer,
3282 const VkSubpassBeginInfo* pSubpassBeginInfo,
3283 const VkSubpassEndInfo* pSubpassEndInfo)
3285 //Not a CREATE or DESTROY function
3288 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR(
3289 VkCommandBuffer commandBuffer,
3290 const VkSubpassEndInfo* pSubpassEndInfo)
3292 //Not a CREATE or DESTROY function
3296 static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR(
3298 VkSwapchainKHR swapchain)
3300 //Not a CREATE or DESTROY function
3305 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFencePropertiesKHR(
3306 VkPhysicalDevice physicalDevice,
3307 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3308 VkExternalFenceProperties* pExternalFenceProperties)
3310 GetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
3314 #ifdef VK_USE_PLATFORM_WIN32_KHR
3316 static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR(
3318 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3320 //Not a CREATE or DESTROY function
3324 static VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR(
3326 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3329 //Not a CREATE or DESTROY function
3332 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3335 static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR(
3337 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3339 //Not a CREATE or DESTROY function
3343 static VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR(
3345 const VkFenceGetFdInfoKHR* pGetFdInfo,
3348 //Not a CREATE or DESTROY function
3353 static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3354 VkPhysicalDevice physicalDevice,
3355 uint32_t queueFamilyIndex,
3356 uint32_t* pCounterCount,
3357 VkPerformanceCounterKHR* pCounters,
3358 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3360 //Not a CREATE or DESTROY function
3364 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3365 VkPhysicalDevice physicalDevice,
3366 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3367 uint32_t* pNumPasses)
3369 //Not a CREATE or DESTROY function
3372 static VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR(
3374 const VkAcquireProfilingLockInfoKHR* pInfo)
3376 //Not a CREATE or DESTROY function
3380 static VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR(
3383 //Not a CREATE or DESTROY function
3388 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2KHR(
3389 VkPhysicalDevice physicalDevice,
3390 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3391 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3393 GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, pSurfaceInfo->surface, &pSurfaceCapabilities->surfaceCapabilities);
3397 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormats2KHR(
3398 VkPhysicalDevice physicalDevice,
3399 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3400 uint32_t* pSurfaceFormatCount,
3401 VkSurfaceFormat2KHR* pSurfaceFormats)
3403 // Currently always say that RGBA8 & BGRA8 are supported
3404 if (!pSurfaceFormats) {
3405 *pSurfaceFormatCount = 2;
3407 // Intentionally falling through and just filling however many types are requested
3408 switch(*pSurfaceFormatCount) {
3410 pSurfaceFormats[1].pNext = nullptr;
3411 pSurfaceFormats[1].surfaceFormat.format = VK_FORMAT_R8G8B8A8_UNORM;
3412 pSurfaceFormats[1].surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
3415 pSurfaceFormats[1].pNext = nullptr;
3416 pSurfaceFormats[0].surfaceFormat.format = VK_FORMAT_B8G8R8A8_UNORM;
3417 pSurfaceFormats[0].surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
3426 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayProperties2KHR(
3427 VkPhysicalDevice physicalDevice,
3428 uint32_t* pPropertyCount,
3429 VkDisplayProperties2KHR* pProperties)
3431 //Not a CREATE or DESTROY function
3435 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlaneProperties2KHR(
3436 VkPhysicalDevice physicalDevice,
3437 uint32_t* pPropertyCount,
3438 VkDisplayPlaneProperties2KHR* pProperties)
3440 //Not a CREATE or DESTROY function
3444 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModeProperties2KHR(
3445 VkPhysicalDevice physicalDevice,
3446 VkDisplayKHR display,
3447 uint32_t* pPropertyCount,
3448 VkDisplayModeProperties2KHR* pProperties)
3450 //Not a CREATE or DESTROY function
3454 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilities2KHR(
3455 VkPhysicalDevice physicalDevice,
3456 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3457 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3459 //Not a CREATE or DESTROY function
3467 static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR(
3469 const VkImageMemoryRequirementsInfo2* pInfo,
3470 VkMemoryRequirements2* pMemoryRequirements)
3472 GetImageMemoryRequirements(device, pInfo->image, &pMemoryRequirements->memoryRequirements);
3475 static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR(
3477 const VkBufferMemoryRequirementsInfo2* pInfo,
3478 VkMemoryRequirements2* pMemoryRequirements)
3480 GetBufferMemoryRequirements(device, pInfo->buffer, &pMemoryRequirements->memoryRequirements);
3483 static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR(
3485 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3486 uint32_t* pSparseMemoryRequirementCount,
3487 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3489 //Not a CREATE or DESTROY function
3494 static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR(
3496 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3497 const VkAllocationCallbacks* pAllocator,
3498 VkSamplerYcbcrConversion* pYcbcrConversion)
3500 unique_lock_t lock(global_lock);
3501 *pYcbcrConversion = (VkSamplerYcbcrConversion)global_unique_handle++;
3505 static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR(
3507 VkSamplerYcbcrConversion ycbcrConversion,
3508 const VkAllocationCallbacks* pAllocator)
3514 static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR(
3516 uint32_t bindInfoCount,
3517 const VkBindBufferMemoryInfo* pBindInfos)
3519 //Not a CREATE or DESTROY function
3523 static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR(
3525 uint32_t bindInfoCount,
3526 const VkBindImageMemoryInfo* pBindInfos)
3528 //Not a CREATE or DESTROY function
3532 #ifdef VK_ENABLE_BETA_EXTENSIONS
3533 #endif /* VK_ENABLE_BETA_EXTENSIONS */
3536 static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR(
3538 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3539 VkDescriptorSetLayoutSupport* pSupport)
3541 //Not a CREATE or DESTROY function
3545 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR(
3546 VkCommandBuffer commandBuffer,
3548 VkDeviceSize offset,
3549 VkBuffer countBuffer,
3550 VkDeviceSize countBufferOffset,
3551 uint32_t maxDrawCount,
3554 //Not a CREATE or DESTROY function
3557 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR(
3558 VkCommandBuffer commandBuffer,
3560 VkDeviceSize offset,
3561 VkBuffer countBuffer,
3562 VkDeviceSize countBufferOffset,
3563 uint32_t maxDrawCount,
3566 //Not a CREATE or DESTROY function
3579 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR(
3581 VkSemaphore semaphore,
3584 //Not a CREATE or DESTROY function
3588 static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
3590 const VkSemaphoreWaitInfo* pWaitInfo,
3593 //Not a CREATE or DESTROY function
3597 static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR(
3599 const VkSemaphoreSignalInfo* pSignalInfo)
3601 //Not a CREATE or DESTROY function
3608 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR(
3609 VkPhysicalDevice physicalDevice,
3610 uint32_t* pFragmentShadingRateCount,
3611 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
3613 //Not a CREATE or DESTROY function
3617 static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR(
3618 VkCommandBuffer commandBuffer,
3619 const VkExtent2D* pFragmentSize,
3620 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
3622 //Not a CREATE or DESTROY function
3629 static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR(
3631 VkSwapchainKHR swapchain,
3635 //Not a CREATE or DESTROY function
3641 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR(
3643 const VkBufferDeviceAddressInfo* pInfo)
3645 //Not a CREATE or DESTROY function
3649 static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR(
3651 const VkBufferDeviceAddressInfo* pInfo)
3653 //Not a CREATE or DESTROY function
3657 static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR(
3659 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
3661 //Not a CREATE or DESTROY function
3666 static VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR(
3668 const VkAllocationCallbacks* pAllocator,
3669 VkDeferredOperationKHR* pDeferredOperation)
3671 unique_lock_t lock(global_lock);
3672 *pDeferredOperation = (VkDeferredOperationKHR)global_unique_handle++;
3676 static VKAPI_ATTR void VKAPI_CALL DestroyDeferredOperationKHR(
3678 VkDeferredOperationKHR operation,
3679 const VkAllocationCallbacks* pAllocator)
3684 static VKAPI_ATTR uint32_t VKAPI_CALL GetDeferredOperationMaxConcurrencyKHR(
3686 VkDeferredOperationKHR operation)
3688 //Not a CREATE or DESTROY function
3692 static VKAPI_ATTR VkResult VKAPI_CALL GetDeferredOperationResultKHR(
3694 VkDeferredOperationKHR operation)
3696 //Not a CREATE or DESTROY function
3700 static VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR(
3702 VkDeferredOperationKHR operation)
3704 //Not a CREATE or DESTROY function
3709 static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR(
3711 const VkPipelineInfoKHR* pPipelineInfo,
3712 uint32_t* pExecutableCount,
3713 VkPipelineExecutablePropertiesKHR* pProperties)
3715 //Not a CREATE or DESTROY function
3719 static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR(
3721 const VkPipelineExecutableInfoKHR* pExecutableInfo,
3722 uint32_t* pStatisticCount,
3723 VkPipelineExecutableStatisticKHR* pStatistics)
3725 //Not a CREATE or DESTROY function
3729 static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentationsKHR(
3731 const VkPipelineExecutableInfoKHR* pExecutableInfo,
3732 uint32_t* pInternalRepresentationCount,
3733 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
3735 //Not a CREATE or DESTROY function
3743 #ifdef VK_ENABLE_BETA_EXTENSIONS
3745 static VKAPI_ATTR void VKAPI_CALL CmdEncodeVideoKHR(
3746 VkCommandBuffer commandBuffer,
3747 const VkVideoEncodeInfoKHR* pEncodeInfo)
3749 //Not a CREATE or DESTROY function
3751 #endif /* VK_ENABLE_BETA_EXTENSIONS */
3754 static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR(
3755 VkCommandBuffer commandBuffer,
3757 const VkDependencyInfo* pDependencyInfo)
3759 //Not a CREATE or DESTROY function
3762 static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2KHR(
3763 VkCommandBuffer commandBuffer,
3765 VkPipelineStageFlags2 stageMask)
3767 //Not a CREATE or DESTROY function
3770 static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2KHR(
3771 VkCommandBuffer commandBuffer,
3772 uint32_t eventCount,
3773 const VkEvent* pEvents,
3774 const VkDependencyInfo* pDependencyInfos)
3776 //Not a CREATE or DESTROY function
3779 static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2KHR(
3780 VkCommandBuffer commandBuffer,
3781 const VkDependencyInfo* pDependencyInfo)
3783 //Not a CREATE or DESTROY function
3786 static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2KHR(
3787 VkCommandBuffer commandBuffer,
3788 VkPipelineStageFlags2 stage,
3789 VkQueryPool queryPool,
3792 //Not a CREATE or DESTROY function
3795 static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR(
3797 uint32_t submitCount,
3798 const VkSubmitInfo2* pSubmits,
3801 //Not a CREATE or DESTROY function
3805 static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD(
3806 VkCommandBuffer commandBuffer,
3807 VkPipelineStageFlags2 stage,
3809 VkDeviceSize dstOffset,
3812 //Not a CREATE or DESTROY function
3815 static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV(
3817 uint32_t* pCheckpointDataCount,
3818 VkCheckpointData2NV* pCheckpointData)
3820 //Not a CREATE or DESTROY function
3827 static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2KHR(
3828 VkCommandBuffer commandBuffer,
3829 const VkCopyBufferInfo2* pCopyBufferInfo)
3831 //Not a CREATE or DESTROY function
3834 static VKAPI_ATTR void VKAPI_CALL CmdCopyImage2KHR(
3835 VkCommandBuffer commandBuffer,
3836 const VkCopyImageInfo2* pCopyImageInfo)
3838 //Not a CREATE or DESTROY function
3841 static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2KHR(
3842 VkCommandBuffer commandBuffer,
3843 const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo)
3845 //Not a CREATE or DESTROY function
3848 static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2KHR(
3849 VkCommandBuffer commandBuffer,
3850 const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo)
3852 //Not a CREATE or DESTROY function
3855 static VKAPI_ATTR void VKAPI_CALL CmdBlitImage2KHR(
3856 VkCommandBuffer commandBuffer,
3857 const VkBlitImageInfo2* pBlitImageInfo)
3859 //Not a CREATE or DESTROY function
3862 static VKAPI_ATTR void VKAPI_CALL CmdResolveImage2KHR(
3863 VkCommandBuffer commandBuffer,
3864 const VkResolveImageInfo2* pResolveImageInfo)
3866 //Not a CREATE or DESTROY function
3871 static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR(
3873 const VkDeviceBufferMemoryRequirements* pInfo,
3874 VkMemoryRequirements2* pMemoryRequirements)
3876 //Not a CREATE or DESTROY function
3879 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirementsKHR(
3881 const VkDeviceImageMemoryRequirements* pInfo,
3882 VkMemoryRequirements2* pMemoryRequirements)
3884 //Not a CREATE or DESTROY function
3887 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR(
3889 const VkDeviceImageMemoryRequirements* pInfo,
3890 uint32_t* pSparseMemoryRequirementCount,
3891 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3893 //Not a CREATE or DESTROY function
3897 static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugReportCallbackEXT(
3898 VkInstance instance,
3899 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3900 const VkAllocationCallbacks* pAllocator,
3901 VkDebugReportCallbackEXT* pCallback)
3903 unique_lock_t lock(global_lock);
3904 *pCallback = (VkDebugReportCallbackEXT)global_unique_handle++;
3908 static VKAPI_ATTR void VKAPI_CALL DestroyDebugReportCallbackEXT(
3909 VkInstance instance,
3910 VkDebugReportCallbackEXT callback,
3911 const VkAllocationCallbacks* pAllocator)
3916 static VKAPI_ATTR void VKAPI_CALL DebugReportMessageEXT(
3917 VkInstance instance,
3918 VkDebugReportFlagsEXT flags,
3919 VkDebugReportObjectTypeEXT objectType,
3922 int32_t messageCode,
3923 const char* pLayerPrefix,
3924 const char* pMessage)
3926 //Not a CREATE or DESTROY function
3936 static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
3938 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3940 //Not a CREATE or DESTROY function
3944 static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(
3946 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3948 //Not a CREATE or DESTROY function
3952 static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerBeginEXT(
3953 VkCommandBuffer commandBuffer,
3954 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3956 //Not a CREATE or DESTROY function
3959 static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerEndEXT(
3960 VkCommandBuffer commandBuffer)
3962 //Not a CREATE or DESTROY function
3965 static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT(
3966 VkCommandBuffer commandBuffer,
3967 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3969 //Not a CREATE or DESTROY function
3975 static VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT(
3976 VkCommandBuffer commandBuffer,
3977 uint32_t firstBinding,
3978 uint32_t bindingCount,
3979 const VkBuffer* pBuffers,
3980 const VkDeviceSize* pOffsets,
3981 const VkDeviceSize* pSizes)
3983 //Not a CREATE or DESTROY function
3986 static VKAPI_ATTR void VKAPI_CALL CmdBeginTransformFeedbackEXT(
3987 VkCommandBuffer commandBuffer,
3988 uint32_t firstCounterBuffer,
3989 uint32_t counterBufferCount,
3990 const VkBuffer* pCounterBuffers,
3991 const VkDeviceSize* pCounterBufferOffsets)
3993 //Not a CREATE or DESTROY function
3996 static VKAPI_ATTR void VKAPI_CALL CmdEndTransformFeedbackEXT(
3997 VkCommandBuffer commandBuffer,
3998 uint32_t firstCounterBuffer,
3999 uint32_t counterBufferCount,
4000 const VkBuffer* pCounterBuffers,
4001 const VkDeviceSize* pCounterBufferOffsets)
4003 //Not a CREATE or DESTROY function
4006 static VKAPI_ATTR void VKAPI_CALL CmdBeginQueryIndexedEXT(
4007 VkCommandBuffer commandBuffer,
4008 VkQueryPool queryPool,
4010 VkQueryControlFlags flags,
4013 //Not a CREATE or DESTROY function
4016 static VKAPI_ATTR void VKAPI_CALL CmdEndQueryIndexedEXT(
4017 VkCommandBuffer commandBuffer,
4018 VkQueryPool queryPool,
4022 //Not a CREATE or DESTROY function
4025 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT(
4026 VkCommandBuffer commandBuffer,
4027 uint32_t instanceCount,
4028 uint32_t firstInstance,
4029 VkBuffer counterBuffer,
4030 VkDeviceSize counterBufferOffset,
4031 uint32_t counterOffset,
4032 uint32_t vertexStride)
4034 //Not a CREATE or DESTROY function
4038 static VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX(
4040 const VkCuModuleCreateInfoNVX* pCreateInfo,
4041 const VkAllocationCallbacks* pAllocator,
4042 VkCuModuleNVX* pModule)
4044 unique_lock_t lock(global_lock);
4045 *pModule = (VkCuModuleNVX)global_unique_handle++;
4049 static VKAPI_ATTR VkResult VKAPI_CALL CreateCuFunctionNVX(
4051 const VkCuFunctionCreateInfoNVX* pCreateInfo,
4052 const VkAllocationCallbacks* pAllocator,
4053 VkCuFunctionNVX* pFunction)
4055 unique_lock_t lock(global_lock);
4056 *pFunction = (VkCuFunctionNVX)global_unique_handle++;
4060 static VKAPI_ATTR void VKAPI_CALL DestroyCuModuleNVX(
4062 VkCuModuleNVX module,
4063 const VkAllocationCallbacks* pAllocator)
4068 static VKAPI_ATTR void VKAPI_CALL DestroyCuFunctionNVX(
4070 VkCuFunctionNVX function,
4071 const VkAllocationCallbacks* pAllocator)
4076 static VKAPI_ATTR void VKAPI_CALL CmdCuLaunchKernelNVX(
4077 VkCommandBuffer commandBuffer,
4078 const VkCuLaunchInfoNVX* pLaunchInfo)
4080 //Not a CREATE or DESTROY function
4084 static VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX(
4086 const VkImageViewHandleInfoNVX* pInfo)
4088 //Not a CREATE or DESTROY function
4092 static VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX(
4094 VkImageView imageView,
4095 VkImageViewAddressPropertiesNVX* pProperties)
4097 //Not a CREATE or DESTROY function
4102 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD(
4103 VkCommandBuffer commandBuffer,
4105 VkDeviceSize offset,
4106 VkBuffer countBuffer,
4107 VkDeviceSize countBufferOffset,
4108 uint32_t maxDrawCount,
4111 //Not a CREATE or DESTROY function
4114 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD(
4115 VkCommandBuffer commandBuffer,
4117 VkDeviceSize offset,
4118 VkBuffer countBuffer,
4119 VkDeviceSize countBufferOffset,
4120 uint32_t maxDrawCount,
4123 //Not a CREATE or DESTROY function
4129 #ifdef VK_ENABLE_BETA_EXTENSIONS
4130 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4132 #ifdef VK_ENABLE_BETA_EXTENSIONS
4133 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4135 #ifdef VK_ENABLE_BETA_EXTENSIONS
4136 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4140 static VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD(
4142 VkPipeline pipeline,
4143 VkShaderStageFlagBits shaderStage,
4144 VkShaderInfoTypeAMD infoType,
4148 //Not a CREATE or DESTROY function
4153 #ifdef VK_USE_PLATFORM_GGP
4155 static VKAPI_ATTR VkResult VKAPI_CALL CreateStreamDescriptorSurfaceGGP(
4156 VkInstance instance,
4157 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4158 const VkAllocationCallbacks* pAllocator,
4159 VkSurfaceKHR* pSurface)
4161 unique_lock_t lock(global_lock);
4162 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4165 #endif /* VK_USE_PLATFORM_GGP */
4170 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatPropertiesNV(
4171 VkPhysicalDevice physicalDevice,
4174 VkImageTiling tiling,
4175 VkImageUsageFlags usage,
4176 VkImageCreateFlags flags,
4177 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4178 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4180 //Not a CREATE or DESTROY function
4185 #ifdef VK_USE_PLATFORM_WIN32_KHR
4187 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV(
4189 VkDeviceMemory memory,
4190 VkExternalMemoryHandleTypeFlagsNV handleType,
4193 //Not a CREATE or DESTROY function
4196 #endif /* VK_USE_PLATFORM_WIN32_KHR */
4198 #ifdef VK_USE_PLATFORM_WIN32_KHR
4199 #endif /* VK_USE_PLATFORM_WIN32_KHR */
4202 #ifdef VK_USE_PLATFORM_VI_NN
4204 static VKAPI_ATTR VkResult VKAPI_CALL CreateViSurfaceNN(
4205 VkInstance instance,
4206 const VkViSurfaceCreateInfoNN* pCreateInfo,
4207 const VkAllocationCallbacks* pAllocator,
4208 VkSurfaceKHR* pSurface)
4210 unique_lock_t lock(global_lock);
4211 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4214 #endif /* VK_USE_PLATFORM_VI_NN */
4221 static VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT(
4222 VkCommandBuffer commandBuffer,
4223 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4225 //Not a CREATE or DESTROY function
4228 static VKAPI_ATTR void VKAPI_CALL CmdEndConditionalRenderingEXT(
4229 VkCommandBuffer commandBuffer)
4231 //Not a CREATE or DESTROY function
4235 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV(
4236 VkCommandBuffer commandBuffer,
4237 uint32_t firstViewport,
4238 uint32_t viewportCount,
4239 const VkViewportWScalingNV* pViewportWScalings)
4241 //Not a CREATE or DESTROY function
4245 static VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT(
4246 VkPhysicalDevice physicalDevice,
4247 VkDisplayKHR display)
4249 //Not a CREATE or DESTROY function
4253 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
4255 static VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT(
4256 VkPhysicalDevice physicalDevice,
4258 VkDisplayKHR display)
4260 //Not a CREATE or DESTROY function
4264 static VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT(
4265 VkPhysicalDevice physicalDevice,
4268 VkDisplayKHR* pDisplay)
4270 //Not a CREATE or DESTROY function
4273 #endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */
4276 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT(
4277 VkPhysicalDevice physicalDevice,
4278 VkSurfaceKHR surface,
4279 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4281 //Not a CREATE or DESTROY function
4286 static VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT(
4288 VkDisplayKHR display,
4289 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4291 //Not a CREATE or DESTROY function
4295 static VKAPI_ATTR VkResult VKAPI_CALL RegisterDeviceEventEXT(
4297 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4298 const VkAllocationCallbacks* pAllocator,
4301 //Not a CREATE or DESTROY function
4305 static VKAPI_ATTR VkResult VKAPI_CALL RegisterDisplayEventEXT(
4307 VkDisplayKHR display,
4308 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4309 const VkAllocationCallbacks* pAllocator,
4312 //Not a CREATE or DESTROY function
4316 static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT(
4318 VkSwapchainKHR swapchain,
4319 VkSurfaceCounterFlagBitsEXT counter,
4320 uint64_t* pCounterValue)
4322 //Not a CREATE or DESTROY function
4327 static VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE(
4329 VkSwapchainKHR swapchain,
4330 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4332 //Not a CREATE or DESTROY function
4336 static VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE(
4338 VkSwapchainKHR swapchain,
4339 uint32_t* pPresentationTimingCount,
4340 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4342 //Not a CREATE or DESTROY function
4352 static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT(
4353 VkCommandBuffer commandBuffer,
4354 uint32_t firstDiscardRectangle,
4355 uint32_t discardRectangleCount,
4356 const VkRect2D* pDiscardRectangles)
4358 //Not a CREATE or DESTROY function
4365 static VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT(
4367 uint32_t swapchainCount,
4368 const VkSwapchainKHR* pSwapchains,
4369 const VkHdrMetadataEXT* pMetadata)
4371 //Not a CREATE or DESTROY function
4374 #ifdef VK_USE_PLATFORM_IOS_MVK
4376 static VKAPI_ATTR VkResult VKAPI_CALL CreateIOSSurfaceMVK(
4377 VkInstance instance,
4378 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4379 const VkAllocationCallbacks* pAllocator,
4380 VkSurfaceKHR* pSurface)
4382 unique_lock_t lock(global_lock);
4383 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4386 #endif /* VK_USE_PLATFORM_IOS_MVK */
4388 #ifdef VK_USE_PLATFORM_MACOS_MVK
4390 static VKAPI_ATTR VkResult VKAPI_CALL CreateMacOSSurfaceMVK(
4391 VkInstance instance,
4392 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4393 const VkAllocationCallbacks* pAllocator,
4394 VkSurfaceKHR* pSurface)
4396 unique_lock_t lock(global_lock);
4397 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4400 #endif /* VK_USE_PLATFORM_MACOS_MVK */
4405 static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(
4407 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4409 //Not a CREATE or DESTROY function
4413 static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(
4415 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4417 //Not a CREATE or DESTROY function
4421 static VKAPI_ATTR void VKAPI_CALL QueueBeginDebugUtilsLabelEXT(
4423 const VkDebugUtilsLabelEXT* pLabelInfo)
4425 //Not a CREATE or DESTROY function
4428 static VKAPI_ATTR void VKAPI_CALL QueueEndDebugUtilsLabelEXT(
4431 //Not a CREATE or DESTROY function
4434 static VKAPI_ATTR void VKAPI_CALL QueueInsertDebugUtilsLabelEXT(
4436 const VkDebugUtilsLabelEXT* pLabelInfo)
4438 //Not a CREATE or DESTROY function
4441 static VKAPI_ATTR void VKAPI_CALL CmdBeginDebugUtilsLabelEXT(
4442 VkCommandBuffer commandBuffer,
4443 const VkDebugUtilsLabelEXT* pLabelInfo)
4445 //Not a CREATE or DESTROY function
4448 static VKAPI_ATTR void VKAPI_CALL CmdEndDebugUtilsLabelEXT(
4449 VkCommandBuffer commandBuffer)
4451 //Not a CREATE or DESTROY function
4454 static VKAPI_ATTR void VKAPI_CALL CmdInsertDebugUtilsLabelEXT(
4455 VkCommandBuffer commandBuffer,
4456 const VkDebugUtilsLabelEXT* pLabelInfo)
4458 //Not a CREATE or DESTROY function
4461 static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugUtilsMessengerEXT(
4462 VkInstance instance,
4463 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4464 const VkAllocationCallbacks* pAllocator,
4465 VkDebugUtilsMessengerEXT* pMessenger)
4467 unique_lock_t lock(global_lock);
4468 *pMessenger = (VkDebugUtilsMessengerEXT)global_unique_handle++;
4472 static VKAPI_ATTR void VKAPI_CALL DestroyDebugUtilsMessengerEXT(
4473 VkInstance instance,
4474 VkDebugUtilsMessengerEXT messenger,
4475 const VkAllocationCallbacks* pAllocator)
4480 static VKAPI_ATTR void VKAPI_CALL SubmitDebugUtilsMessageEXT(
4481 VkInstance instance,
4482 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4483 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4484 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4486 //Not a CREATE or DESTROY function
4489 #ifdef VK_USE_PLATFORM_ANDROID_KHR
4491 static VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID(
4493 const struct AHardwareBuffer* buffer,
4494 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4496 //Not a CREATE or DESTROY function
4500 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID(
4502 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4503 struct AHardwareBuffer** pBuffer)
4505 //Not a CREATE or DESTROY function
4508 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
4517 static VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEXT(
4518 VkCommandBuffer commandBuffer,
4519 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4521 //Not a CREATE or DESTROY function
4524 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT(
4525 VkPhysicalDevice physicalDevice,
4526 VkSampleCountFlagBits samples,
4527 VkMultisamplePropertiesEXT* pMultisampleProperties)
4529 //Not a CREATE or DESTROY function
4539 static VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT(
4542 VkImageDrmFormatModifierPropertiesEXT* pProperties)
4544 //Not a CREATE or DESTROY function
4549 static VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT(
4551 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4552 const VkAllocationCallbacks* pAllocator,
4553 VkValidationCacheEXT* pValidationCache)
4555 unique_lock_t lock(global_lock);
4556 *pValidationCache = (VkValidationCacheEXT)global_unique_handle++;
4560 static VKAPI_ATTR void VKAPI_CALL DestroyValidationCacheEXT(
4562 VkValidationCacheEXT validationCache,
4563 const VkAllocationCallbacks* pAllocator)
4568 static VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT(
4570 VkValidationCacheEXT dstCache,
4571 uint32_t srcCacheCount,
4572 const VkValidationCacheEXT* pSrcCaches)
4574 //Not a CREATE or DESTROY function
4578 static VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT(
4580 VkValidationCacheEXT validationCache,
4584 //Not a CREATE or DESTROY function
4591 static VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV(
4592 VkCommandBuffer commandBuffer,
4593 VkImageView imageView,
4594 VkImageLayout imageLayout)
4596 //Not a CREATE or DESTROY function
4599 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportShadingRatePaletteNV(
4600 VkCommandBuffer commandBuffer,
4601 uint32_t firstViewport,
4602 uint32_t viewportCount,
4603 const VkShadingRatePaletteNV* pShadingRatePalettes)
4605 //Not a CREATE or DESTROY function
4608 static VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV(
4609 VkCommandBuffer commandBuffer,
4610 VkCoarseSampleOrderTypeNV sampleOrderType,
4611 uint32_t customSampleOrderCount,
4612 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
4614 //Not a CREATE or DESTROY function
4618 static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV(
4620 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
4621 const VkAllocationCallbacks* pAllocator,
4622 VkAccelerationStructureNV* pAccelerationStructure)
4624 unique_lock_t lock(global_lock);
4625 *pAccelerationStructure = (VkAccelerationStructureNV)global_unique_handle++;
4629 static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureNV(
4631 VkAccelerationStructureNV accelerationStructure,
4632 const VkAllocationCallbacks* pAllocator)
4637 static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV(
4639 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
4640 VkMemoryRequirements2KHR* pMemoryRequirements)
4642 //Not a CREATE or DESTROY function
4645 static VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV(
4647 uint32_t bindInfoCount,
4648 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
4650 //Not a CREATE or DESTROY function
4654 static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructureNV(
4655 VkCommandBuffer commandBuffer,
4656 const VkAccelerationStructureInfoNV* pInfo,
4657 VkBuffer instanceData,
4658 VkDeviceSize instanceOffset,
4660 VkAccelerationStructureNV dst,
4661 VkAccelerationStructureNV src,
4663 VkDeviceSize scratchOffset)
4665 //Not a CREATE or DESTROY function
4668 static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureNV(
4669 VkCommandBuffer commandBuffer,
4670 VkAccelerationStructureNV dst,
4671 VkAccelerationStructureNV src,
4672 VkCopyAccelerationStructureModeKHR mode)
4674 //Not a CREATE or DESTROY function
4677 static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysNV(
4678 VkCommandBuffer commandBuffer,
4679 VkBuffer raygenShaderBindingTableBuffer,
4680 VkDeviceSize raygenShaderBindingOffset,
4681 VkBuffer missShaderBindingTableBuffer,
4682 VkDeviceSize missShaderBindingOffset,
4683 VkDeviceSize missShaderBindingStride,
4684 VkBuffer hitShaderBindingTableBuffer,
4685 VkDeviceSize hitShaderBindingOffset,
4686 VkDeviceSize hitShaderBindingStride,
4687 VkBuffer callableShaderBindingTableBuffer,
4688 VkDeviceSize callableShaderBindingOffset,
4689 VkDeviceSize callableShaderBindingStride,
4694 //Not a CREATE or DESTROY function
4697 static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesNV(
4699 VkPipelineCache pipelineCache,
4700 uint32_t createInfoCount,
4701 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
4702 const VkAllocationCallbacks* pAllocator,
4703 VkPipeline* pPipelines)
4705 unique_lock_t lock(global_lock);
4706 for (uint32_t i = 0; i < createInfoCount; ++i) {
4707 pPipelines[i] = (VkPipeline)global_unique_handle++;
4712 static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesKHR(
4714 VkPipeline pipeline,
4715 uint32_t firstGroup,
4716 uint32_t groupCount,
4720 //Not a CREATE or DESTROY function
4724 static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesNV(
4726 VkPipeline pipeline,
4727 uint32_t firstGroup,
4728 uint32_t groupCount,
4732 //Not a CREATE or DESTROY function
4736 static VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureHandleNV(
4738 VkAccelerationStructureNV accelerationStructure,
4742 //Not a CREATE or DESTROY function
4746 static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesNV(
4747 VkCommandBuffer commandBuffer,
4748 uint32_t accelerationStructureCount,
4749 const VkAccelerationStructureNV* pAccelerationStructures,
4750 VkQueryType queryType,
4751 VkQueryPool queryPool,
4752 uint32_t firstQuery)
4754 //Not a CREATE or DESTROY function
4757 static VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV(
4759 VkPipeline pipeline,
4762 //Not a CREATE or DESTROY function
4771 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT(
4773 VkExternalMemoryHandleTypeFlagBits handleType,
4774 const void* pHostPointer,
4775 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4777 //Not a CREATE or DESTROY function
4782 static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD(
4783 VkCommandBuffer commandBuffer,
4784 VkPipelineStageFlagBits pipelineStage,
4786 VkDeviceSize dstOffset,
4789 //Not a CREATE or DESTROY function
4794 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsEXT(
4795 VkPhysicalDevice physicalDevice,
4796 uint32_t* pTimeDomainCount,
4797 VkTimeDomainEXT* pTimeDomains)
4799 //Not a CREATE or DESTROY function
4803 static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT(
4805 uint32_t timestampCount,
4806 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
4807 uint64_t* pTimestamps,
4808 uint64_t* pMaxDeviation)
4810 //Not a CREATE or DESTROY function
4815 #ifdef VK_ENABLE_BETA_EXTENSIONS
4816 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4820 #ifdef VK_USE_PLATFORM_GGP
4821 #endif /* VK_USE_PLATFORM_GGP */
4827 static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV(
4828 VkCommandBuffer commandBuffer,
4832 //Not a CREATE or DESTROY function
4835 static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectNV(
4836 VkCommandBuffer commandBuffer,
4838 VkDeviceSize offset,
4842 //Not a CREATE or DESTROY function
4845 static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV(
4846 VkCommandBuffer commandBuffer,
4848 VkDeviceSize offset,
4849 VkBuffer countBuffer,
4850 VkDeviceSize countBufferOffset,
4851 uint32_t maxDrawCount,
4854 //Not a CREATE or DESTROY function
4860 static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV(
4861 VkCommandBuffer commandBuffer,
4862 uint32_t firstExclusiveScissor,
4863 uint32_t exclusiveScissorCount,
4864 const VkRect2D* pExclusiveScissors)
4866 //Not a CREATE or DESTROY function
4870 static VKAPI_ATTR void VKAPI_CALL CmdSetCheckpointNV(
4871 VkCommandBuffer commandBuffer,
4872 const void* pCheckpointMarker)
4874 //Not a CREATE or DESTROY function
4877 static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointDataNV(
4879 uint32_t* pCheckpointDataCount,
4880 VkCheckpointDataNV* pCheckpointData)
4882 //Not a CREATE or DESTROY function
4887 static VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL(
4889 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
4891 //Not a CREATE or DESTROY function
4895 static VKAPI_ATTR void VKAPI_CALL UninitializePerformanceApiINTEL(
4898 //Not a CREATE or DESTROY function
4901 static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceMarkerINTEL(
4902 VkCommandBuffer commandBuffer,
4903 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
4905 //Not a CREATE or DESTROY function
4909 static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceStreamMarkerINTEL(
4910 VkCommandBuffer commandBuffer,
4911 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
4913 //Not a CREATE or DESTROY function
4917 static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceOverrideINTEL(
4918 VkCommandBuffer commandBuffer,
4919 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
4921 //Not a CREATE or DESTROY function
4925 static VKAPI_ATTR VkResult VKAPI_CALL AcquirePerformanceConfigurationINTEL(
4927 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
4928 VkPerformanceConfigurationINTEL* pConfiguration)
4930 //Not a CREATE or DESTROY function
4934 static VKAPI_ATTR VkResult VKAPI_CALL ReleasePerformanceConfigurationINTEL(
4936 VkPerformanceConfigurationINTEL configuration)
4938 //Not a CREATE or DESTROY function
4942 static VKAPI_ATTR VkResult VKAPI_CALL QueueSetPerformanceConfigurationINTEL(
4944 VkPerformanceConfigurationINTEL configuration)
4946 //Not a CREATE or DESTROY function
4950 static VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL(
4952 VkPerformanceParameterTypeINTEL parameter,
4953 VkPerformanceValueINTEL* pValue)
4955 //Not a CREATE or DESTROY function
4961 static VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD(
4963 VkSwapchainKHR swapChain,
4964 VkBool32 localDimmingEnable)
4966 //Not a CREATE or DESTROY function
4969 #ifdef VK_USE_PLATFORM_FUCHSIA
4971 static VKAPI_ATTR VkResult VKAPI_CALL CreateImagePipeSurfaceFUCHSIA(
4972 VkInstance instance,
4973 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
4974 const VkAllocationCallbacks* pAllocator,
4975 VkSurfaceKHR* pSurface)
4977 unique_lock_t lock(global_lock);
4978 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4981 #endif /* VK_USE_PLATFORM_FUCHSIA */
4983 #ifdef VK_USE_PLATFORM_METAL_EXT
4985 static VKAPI_ATTR VkResult VKAPI_CALL CreateMetalSurfaceEXT(
4986 VkInstance instance,
4987 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
4988 const VkAllocationCallbacks* pAllocator,
4989 VkSurfaceKHR* pSurface)
4991 unique_lock_t lock(global_lock);
4992 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4995 #endif /* VK_USE_PLATFORM_METAL_EXT */
5009 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
5011 const VkBufferDeviceAddressInfo* pInfo)
5013 //Not a CREATE or DESTROY function
5018 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT(
5019 VkPhysicalDevice physicalDevice,
5020 uint32_t* pToolCount,
5021 VkPhysicalDeviceToolProperties* pToolProperties)
5023 //Not a CREATE or DESTROY function
5030 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV(
5031 VkPhysicalDevice physicalDevice,
5032 uint32_t* pPropertyCount,
5033 VkCooperativeMatrixPropertiesNV* pProperties)
5035 //Not a CREATE or DESTROY function
5040 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
5041 VkPhysicalDevice physicalDevice,
5042 uint32_t* pCombinationCount,
5043 VkFramebufferMixedSamplesCombinationNV* pCombinations)
5045 //Not a CREATE or DESTROY function
5052 #ifdef VK_USE_PLATFORM_WIN32_KHR
5054 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT(
5055 VkPhysicalDevice physicalDevice,
5056 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
5057 uint32_t* pPresentModeCount,
5058 VkPresentModeKHR* pPresentModes)
5060 //Not a CREATE or DESTROY function
5064 static VKAPI_ATTR VkResult VKAPI_CALL AcquireFullScreenExclusiveModeEXT(
5066 VkSwapchainKHR swapchain)
5068 //Not a CREATE or DESTROY function
5072 static VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT(
5074 VkSwapchainKHR swapchain)
5076 //Not a CREATE or DESTROY function
5080 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT(
5082 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
5083 VkDeviceGroupPresentModeFlagsKHR* pModes)
5085 //Not a CREATE or DESTROY function
5088 #endif /* VK_USE_PLATFORM_WIN32_KHR */
5091 static VKAPI_ATTR VkResult VKAPI_CALL CreateHeadlessSurfaceEXT(
5092 VkInstance instance,
5093 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
5094 const VkAllocationCallbacks* pAllocator,
5095 VkSurfaceKHR* pSurface)
5097 unique_lock_t lock(global_lock);
5098 *pSurface = (VkSurfaceKHR)global_unique_handle++;
5103 static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT(
5104 VkCommandBuffer commandBuffer,
5105 uint32_t lineStippleFactor,
5106 uint16_t lineStipplePattern)
5108 //Not a CREATE or DESTROY function
5113 static VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT(
5115 VkQueryPool queryPool,
5116 uint32_t firstQuery,
5117 uint32_t queryCount)
5119 //Not a CREATE or DESTROY function
5124 static VKAPI_ATTR void VKAPI_CALL CmdSetCullModeEXT(
5125 VkCommandBuffer commandBuffer,
5126 VkCullModeFlags cullMode)
5128 //Not a CREATE or DESTROY function
5131 static VKAPI_ATTR void VKAPI_CALL CmdSetFrontFaceEXT(
5132 VkCommandBuffer commandBuffer,
5133 VkFrontFace frontFace)
5135 //Not a CREATE or DESTROY function
5138 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopologyEXT(
5139 VkCommandBuffer commandBuffer,
5140 VkPrimitiveTopology primitiveTopology)
5142 //Not a CREATE or DESTROY function
5145 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCountEXT(
5146 VkCommandBuffer commandBuffer,
5147 uint32_t viewportCount,
5148 const VkViewport* pViewports)
5150 //Not a CREATE or DESTROY function
5153 static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCountEXT(
5154 VkCommandBuffer commandBuffer,
5155 uint32_t scissorCount,
5156 const VkRect2D* pScissors)
5158 //Not a CREATE or DESTROY function
5161 static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2EXT(
5162 VkCommandBuffer commandBuffer,
5163 uint32_t firstBinding,
5164 uint32_t bindingCount,
5165 const VkBuffer* pBuffers,
5166 const VkDeviceSize* pOffsets,
5167 const VkDeviceSize* pSizes,
5168 const VkDeviceSize* pStrides)
5170 //Not a CREATE or DESTROY function
5173 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnableEXT(
5174 VkCommandBuffer commandBuffer,
5175 VkBool32 depthTestEnable)
5177 //Not a CREATE or DESTROY function
5180 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnableEXT(
5181 VkCommandBuffer commandBuffer,
5182 VkBool32 depthWriteEnable)
5184 //Not a CREATE or DESTROY function
5187 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOpEXT(
5188 VkCommandBuffer commandBuffer,
5189 VkCompareOp depthCompareOp)
5191 //Not a CREATE or DESTROY function
5194 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnableEXT(
5195 VkCommandBuffer commandBuffer,
5196 VkBool32 depthBoundsTestEnable)
5198 //Not a CREATE or DESTROY function
5201 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnableEXT(
5202 VkCommandBuffer commandBuffer,
5203 VkBool32 stencilTestEnable)
5205 //Not a CREATE or DESTROY function
5208 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT(
5209 VkCommandBuffer commandBuffer,
5210 VkStencilFaceFlags faceMask,
5213 VkStencilOp depthFailOp,
5214 VkCompareOp compareOp)
5216 //Not a CREATE or DESTROY function
5222 static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV(
5224 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
5225 VkMemoryRequirements2* pMemoryRequirements)
5227 //Not a CREATE or DESTROY function
5230 static VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsNV(
5231 VkCommandBuffer commandBuffer,
5232 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
5234 //Not a CREATE or DESTROY function
5237 static VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsNV(
5238 VkCommandBuffer commandBuffer,
5239 VkBool32 isPreprocessed,
5240 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
5242 //Not a CREATE or DESTROY function
5245 static VKAPI_ATTR void VKAPI_CALL CmdBindPipelineShaderGroupNV(
5246 VkCommandBuffer commandBuffer,
5247 VkPipelineBindPoint pipelineBindPoint,
5248 VkPipeline pipeline,
5249 uint32_t groupIndex)
5251 //Not a CREATE or DESTROY function
5254 static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutNV(
5256 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
5257 const VkAllocationCallbacks* pAllocator,
5258 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
5260 unique_lock_t lock(global_lock);
5261 *pIndirectCommandsLayout = (VkIndirectCommandsLayoutNV)global_unique_handle++;
5265 static VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV(
5267 VkIndirectCommandsLayoutNV indirectCommandsLayout,
5268 const VkAllocationCallbacks* pAllocator)
5278 static VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT(
5279 VkPhysicalDevice physicalDevice,
5281 VkDisplayKHR display)
5283 //Not a CREATE or DESTROY function
5287 static VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT(
5288 VkPhysicalDevice physicalDevice,
5290 uint32_t connectorId,
5291 VkDisplayKHR* display)
5293 //Not a CREATE or DESTROY function
5301 static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT(
5303 const VkPrivateDataSlotCreateInfo* pCreateInfo,
5304 const VkAllocationCallbacks* pAllocator,
5305 VkPrivateDataSlot* pPrivateDataSlot)
5307 unique_lock_t lock(global_lock);
5308 *pPrivateDataSlot = (VkPrivateDataSlot)global_unique_handle++;
5312 static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlotEXT(
5314 VkPrivateDataSlot privateDataSlot,
5315 const VkAllocationCallbacks* pAllocator)
5320 static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateDataEXT(
5322 VkObjectType objectType,
5323 uint64_t objectHandle,
5324 VkPrivateDataSlot privateDataSlot,
5327 //Not a CREATE or DESTROY function
5331 static VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT(
5333 VkObjectType objectType,
5334 uint64_t objectHandle,
5335 VkPrivateDataSlot privateDataSlot,
5338 //Not a CREATE or DESTROY function
5345 static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV(
5346 VkCommandBuffer commandBuffer,
5347 VkFragmentShadingRateNV shadingRate,
5348 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
5350 //Not a CREATE or DESTROY function
5361 #ifdef VK_USE_PLATFORM_WIN32_KHR
5363 static VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV(
5364 VkPhysicalDevice physicalDevice,
5365 VkDisplayKHR display)
5367 //Not a CREATE or DESTROY function
5371 static VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV(
5372 VkPhysicalDevice physicalDevice,
5373 uint32_t deviceRelativeId,
5374 VkDisplayKHR* pDisplay)
5376 //Not a CREATE or DESTROY function
5379 #endif /* VK_USE_PLATFORM_WIN32_KHR */
5381 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
5383 static VKAPI_ATTR VkResult VKAPI_CALL CreateDirectFBSurfaceEXT(
5384 VkInstance instance,
5385 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
5386 const VkAllocationCallbacks* pAllocator,
5387 VkSurfaceKHR* pSurface)
5389 unique_lock_t lock(global_lock);
5390 *pSurface = (VkSurfaceKHR)global_unique_handle++;
5394 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceDirectFBPresentationSupportEXT(
5395 VkPhysicalDevice physicalDevice,
5396 uint32_t queueFamilyIndex,
5399 //Not a CREATE or DESTROY function
5402 #endif /* VK_USE_PLATFORM_DIRECTFB_EXT */
5406 static VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT(
5407 VkCommandBuffer commandBuffer,
5408 uint32_t vertexBindingDescriptionCount,
5409 const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
5410 uint32_t vertexAttributeDescriptionCount,
5411 const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
5413 //Not a CREATE or DESTROY function
5419 #ifdef VK_USE_PLATFORM_FUCHSIA
5421 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA(
5423 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
5424 zx_handle_t* pZirconHandle)
5426 //Not a CREATE or DESTROY function
5430 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA(
5432 VkExternalMemoryHandleTypeFlagBits handleType,
5433 zx_handle_t zirconHandle,
5434 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
5436 //Not a CREATE or DESTROY function
5439 #endif /* VK_USE_PLATFORM_FUCHSIA */
5441 #ifdef VK_USE_PLATFORM_FUCHSIA
5443 static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA(
5445 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
5447 //Not a CREATE or DESTROY function
5451 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA(
5453 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
5454 zx_handle_t* pZirconHandle)
5456 //Not a CREATE or DESTROY function
5459 #endif /* VK_USE_PLATFORM_FUCHSIA */
5461 #ifdef VK_USE_PLATFORM_FUCHSIA
5463 static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA(
5465 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
5466 const VkAllocationCallbacks* pAllocator,
5467 VkBufferCollectionFUCHSIA* pCollection)
5469 unique_lock_t lock(global_lock);
5470 *pCollection = (VkBufferCollectionFUCHSIA)global_unique_handle++;
5474 static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA(
5476 VkBufferCollectionFUCHSIA collection,
5477 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
5479 //Not a CREATE or DESTROY function
5483 static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSIA(
5485 VkBufferCollectionFUCHSIA collection,
5486 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
5488 //Not a CREATE or DESTROY function
5492 static VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA(
5494 VkBufferCollectionFUCHSIA collection,
5495 const VkAllocationCallbacks* pAllocator)
5500 static VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA(
5502 VkBufferCollectionFUCHSIA collection,
5503 VkBufferCollectionPropertiesFUCHSIA* pProperties)
5505 //Not a CREATE or DESTROY function
5508 #endif /* VK_USE_PLATFORM_FUCHSIA */
5511 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
5513 VkRenderPass renderpass,
5514 VkExtent2D* pMaxWorkgroupSize)
5516 //Not a CREATE or DESTROY function
5520 static VKAPI_ATTR void VKAPI_CALL CmdSubpassShadingHUAWEI(
5521 VkCommandBuffer commandBuffer)
5523 //Not a CREATE or DESTROY function
5527 static VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI(
5528 VkCommandBuffer commandBuffer,
5529 VkImageView imageView,
5530 VkImageLayout imageLayout)
5532 //Not a CREATE or DESTROY function
5536 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV(
5538 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
5539 VkRemoteAddressNV* pAddress)
5541 //Not a CREATE or DESTROY function
5546 static VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT(
5547 VkCommandBuffer commandBuffer,
5548 uint32_t patchControlPoints)
5550 //Not a CREATE or DESTROY function
5553 static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnableEXT(
5554 VkCommandBuffer commandBuffer,
5555 VkBool32 rasterizerDiscardEnable)
5557 //Not a CREATE or DESTROY function
5560 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnableEXT(
5561 VkCommandBuffer commandBuffer,
5562 VkBool32 depthBiasEnable)
5564 //Not a CREATE or DESTROY function
5567 static VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT(
5568 VkCommandBuffer commandBuffer,
5571 //Not a CREATE or DESTROY function
5574 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnableEXT(
5575 VkCommandBuffer commandBuffer,
5576 VkBool32 primitiveRestartEnable)
5578 //Not a CREATE or DESTROY function
5581 #ifdef VK_USE_PLATFORM_SCREEN_QNX
5583 static VKAPI_ATTR VkResult VKAPI_CALL CreateScreenSurfaceQNX(
5584 VkInstance instance,
5585 const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
5586 const VkAllocationCallbacks* pAllocator,
5587 VkSurfaceKHR* pSurface)
5589 unique_lock_t lock(global_lock);
5590 *pSurface = (VkSurfaceKHR)global_unique_handle++;
5594 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceScreenPresentationSupportQNX(
5595 VkPhysicalDevice physicalDevice,
5596 uint32_t queueFamilyIndex,
5597 struct _screen_window* window)
5599 //Not a CREATE or DESTROY function
5602 #endif /* VK_USE_PLATFORM_SCREEN_QNX */
5605 static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteEnableEXT(
5606 VkCommandBuffer commandBuffer,
5607 uint32_t attachmentCount,
5608 const VkBool32* pColorWriteEnables)
5610 //Not a CREATE or DESTROY function
5616 static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT(
5617 VkCommandBuffer commandBuffer,
5619 const VkMultiDrawInfoEXT* pVertexInfo,
5620 uint32_t instanceCount,
5621 uint32_t firstInstance,
5624 //Not a CREATE or DESTROY function
5627 static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT(
5628 VkCommandBuffer commandBuffer,
5630 const VkMultiDrawIndexedInfoEXT* pIndexInfo,
5631 uint32_t instanceCount,
5632 uint32_t firstInstance,
5634 const int32_t* pVertexOffset)
5636 //Not a CREATE or DESTROY function
5642 static VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT(
5644 VkDeviceMemory memory,
5647 //Not a CREATE or DESTROY function
5654 static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(
5656 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
5657 const VkAllocationCallbacks* pAllocator,
5658 VkAccelerationStructureKHR* pAccelerationStructure)
5660 unique_lock_t lock(global_lock);
5661 *pAccelerationStructure = (VkAccelerationStructureKHR)global_unique_handle++;
5665 static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureKHR(
5667 VkAccelerationStructureKHR accelerationStructure,
5668 const VkAllocationCallbacks* pAllocator)
5673 static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresKHR(
5674 VkCommandBuffer commandBuffer,
5676 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
5677 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
5679 //Not a CREATE or DESTROY function
5682 static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresIndirectKHR(
5683 VkCommandBuffer commandBuffer,
5685 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
5686 const VkDeviceAddress* pIndirectDeviceAddresses,
5687 const uint32_t* pIndirectStrides,
5688 const uint32_t* const* ppMaxPrimitiveCounts)
5690 //Not a CREATE or DESTROY function
5693 static VKAPI_ATTR VkResult VKAPI_CALL BuildAccelerationStructuresKHR(
5695 VkDeferredOperationKHR deferredOperation,
5697 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
5698 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
5700 //Not a CREATE or DESTROY function
5704 static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureKHR(
5706 VkDeferredOperationKHR deferredOperation,
5707 const VkCopyAccelerationStructureInfoKHR* pInfo)
5709 //Not a CREATE or DESTROY function
5713 static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureToMemoryKHR(
5715 VkDeferredOperationKHR deferredOperation,
5716 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
5718 //Not a CREATE or DESTROY function
5722 static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToAccelerationStructureKHR(
5724 VkDeferredOperationKHR deferredOperation,
5725 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
5727 //Not a CREATE or DESTROY function
5731 static VKAPI_ATTR VkResult VKAPI_CALL WriteAccelerationStructuresPropertiesKHR(
5733 uint32_t accelerationStructureCount,
5734 const VkAccelerationStructureKHR* pAccelerationStructures,
5735 VkQueryType queryType,
5740 //Not a CREATE or DESTROY function
5744 static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureKHR(
5745 VkCommandBuffer commandBuffer,
5746 const VkCopyAccelerationStructureInfoKHR* pInfo)
5748 //Not a CREATE or DESTROY function
5751 static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureToMemoryKHR(
5752 VkCommandBuffer commandBuffer,
5753 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
5755 //Not a CREATE or DESTROY function
5758 static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToAccelerationStructureKHR(
5759 VkCommandBuffer commandBuffer,
5760 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
5762 //Not a CREATE or DESTROY function
5765 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddressKHR(
5767 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
5769 //Not a CREATE or DESTROY function
5773 static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR(
5774 VkCommandBuffer commandBuffer,
5775 uint32_t accelerationStructureCount,
5776 const VkAccelerationStructureKHR* pAccelerationStructures,
5777 VkQueryType queryType,
5778 VkQueryPool queryPool,
5779 uint32_t firstQuery)
5781 //Not a CREATE or DESTROY function
5784 static VKAPI_ATTR void VKAPI_CALL GetDeviceAccelerationStructureCompatibilityKHR(
5786 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
5787 VkAccelerationStructureCompatibilityKHR* pCompatibility)
5789 //Not a CREATE or DESTROY function
5792 static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR(
5794 VkAccelerationStructureBuildTypeKHR buildType,
5795 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
5796 const uint32_t* pMaxPrimitiveCounts,
5797 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
5799 //Not a CREATE or DESTROY function
5803 static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR(
5804 VkCommandBuffer commandBuffer,
5805 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
5806 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
5807 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
5808 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
5813 //Not a CREATE or DESTROY function
5816 static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesKHR(
5818 VkDeferredOperationKHR deferredOperation,
5819 VkPipelineCache pipelineCache,
5820 uint32_t createInfoCount,
5821 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
5822 const VkAllocationCallbacks* pAllocator,
5823 VkPipeline* pPipelines)
5825 unique_lock_t lock(global_lock);
5826 for (uint32_t i = 0; i < createInfoCount; ++i) {
5827 pPipelines[i] = (VkPipeline)global_unique_handle++;
5832 static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingCaptureReplayShaderGroupHandlesKHR(
5834 VkPipeline pipeline,
5835 uint32_t firstGroup,
5836 uint32_t groupCount,
5840 //Not a CREATE or DESTROY function
5844 static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirectKHR(
5845 VkCommandBuffer commandBuffer,
5846 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
5847 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
5848 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
5849 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
5850 VkDeviceAddress indirectDeviceAddress)
5852 //Not a CREATE or DESTROY function
5855 static VKAPI_ATTR VkDeviceSize VKAPI_CALL GetRayTracingShaderGroupStackSizeKHR(
5857 VkPipeline pipeline,
5859 VkShaderGroupShaderKHR groupShader)
5861 //Not a CREATE or DESTROY function
5865 static VKAPI_ATTR void VKAPI_CALL CmdSetRayTracingPipelineStackSizeKHR(
5866 VkCommandBuffer commandBuffer,
5867 uint32_t pipelineStackSize)
5869 //Not a CREATE or DESTROY function
5875 static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName) {
5876 // TODO: This function should only care about physical device functions and return nullptr for other functions
5877 const auto &item = name_to_funcptr_map.find(funcName);
5878 if (item != name_to_funcptr_map.end()) {
5879 return reinterpret_cast<PFN_vkVoidFunction>(item->second);
5881 // Mock should intercept all functions so if we get here just return null
5885 } // namespace vkmock
5887 #if defined(__GNUC__) && __GNUC__ >= 4
5888 #define EXPORT __attribute__((visibility("default")))
5889 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
5890 #define EXPORT __attribute__((visibility("default")))
5897 EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName) {
5898 if (!vkmock::negotiate_loader_icd_interface_called) {
5899 vkmock::loader_interface_version = 1;
5901 return vkmock::GetInstanceProcAddr(instance, pName);
5904 EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance instance, const char* pName) {
5905 return vkmock::GetPhysicalDeviceProcAddr(instance, pName);
5908 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion) {
5909 vkmock::negotiate_loader_icd_interface_called = true;
5910 vkmock::loader_interface_version = *pSupportedVersion;
5911 if (*pSupportedVersion > vkmock::SUPPORTED_LOADER_ICD_INTERFACE_VERSION) {
5912 *pSupportedVersion = vkmock::SUPPORTED_LOADER_ICD_INTERFACE_VERSION;
5918 EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
5919 VkInstance instance,
5920 VkSurfaceKHR surface,
5921 const VkAllocationCallbacks* pAllocator)
5923 vkmock::DestroySurfaceKHR(instance, surface, pAllocator);
5926 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
5927 VkPhysicalDevice physicalDevice,
5928 uint32_t queueFamilyIndex,
5929 VkSurfaceKHR surface,
5930 VkBool32* pSupported)
5932 return vkmock::GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
5935 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
5936 VkPhysicalDevice physicalDevice,
5937 VkSurfaceKHR surface,
5938 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
5940 return vkmock::GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
5943 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
5944 VkPhysicalDevice physicalDevice,
5945 VkSurfaceKHR surface,
5946 uint32_t* pSurfaceFormatCount,
5947 VkSurfaceFormatKHR* pSurfaceFormats)
5949 return vkmock::GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
5952 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
5953 VkPhysicalDevice physicalDevice,
5954 VkSurfaceKHR surface,
5955 uint32_t* pPresentModeCount,
5956 VkPresentModeKHR* pPresentModes)
5958 return vkmock::GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
5961 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
5962 VkInstance instance,
5963 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
5964 const VkAllocationCallbacks* pAllocator,
5965 VkSurfaceKHR* pSurface)
5967 return vkmock::CreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
5970 #ifdef VK_USE_PLATFORM_XLIB_KHR
5972 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
5973 VkInstance instance,
5974 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
5975 const VkAllocationCallbacks* pAllocator,
5976 VkSurfaceKHR* pSurface)
5978 return vkmock::CreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
5980 #endif /* VK_USE_PLATFORM_XLIB_KHR */
5982 #ifdef VK_USE_PLATFORM_XCB_KHR
5984 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
5985 VkInstance instance,
5986 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
5987 const VkAllocationCallbacks* pAllocator,
5988 VkSurfaceKHR* pSurface)
5990 return vkmock::CreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
5992 #endif /* VK_USE_PLATFORM_XCB_KHR */
5994 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
5996 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
5997 VkInstance instance,
5998 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
5999 const VkAllocationCallbacks* pAllocator,
6000 VkSurfaceKHR* pSurface)
6002 return vkmock::CreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
6004 #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
6006 #ifdef VK_USE_PLATFORM_ANDROID_KHR
6008 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
6009 VkInstance instance,
6010 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
6011 const VkAllocationCallbacks* pAllocator,
6012 VkSurfaceKHR* pSurface)
6014 return vkmock::CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
6016 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
6018 #ifdef VK_USE_PLATFORM_WIN32_KHR
6020 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
6021 VkInstance instance,
6022 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
6023 const VkAllocationCallbacks* pAllocator,
6024 VkSurfaceKHR* pSurface)
6026 return vkmock::CreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
6028 #endif /* VK_USE_PLATFORM_WIN32_KHR */
6030 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
6032 VkSurfaceKHR surface,
6033 VkDeviceGroupPresentModeFlagsKHR* pModes)
6035 return vkmock::GetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
6038 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
6039 VkPhysicalDevice physicalDevice,
6040 VkSurfaceKHR surface,
6041 uint32_t* pRectCount,
6044 return vkmock::GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
6047 #ifdef VK_USE_PLATFORM_VI_NN
6049 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
6050 VkInstance instance,
6051 const VkViSurfaceCreateInfoNN* pCreateInfo,
6052 const VkAllocationCallbacks* pAllocator,
6053 VkSurfaceKHR* pSurface)
6055 return vkmock::CreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
6057 #endif /* VK_USE_PLATFORM_VI_NN */
6059 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
6060 VkPhysicalDevice physicalDevice,
6061 VkSurfaceKHR surface,
6062 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
6064 return vkmock::GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
6067 #ifdef VK_USE_PLATFORM_IOS_MVK
6069 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(
6070 VkInstance instance,
6071 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
6072 const VkAllocationCallbacks* pAllocator,
6073 VkSurfaceKHR* pSurface)
6075 return vkmock::CreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
6077 #endif /* VK_USE_PLATFORM_IOS_MVK */
6079 #ifdef VK_USE_PLATFORM_MACOS_MVK
6081 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(
6082 VkInstance instance,
6083 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
6084 const VkAllocationCallbacks* pAllocator,
6085 VkSurfaceKHR* pSurface)
6087 return vkmock::CreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
6089 #endif /* VK_USE_PLATFORM_MACOS_MVK */