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)
1255 for (auto i = 0u; i < commandBufferCount; ++i)
1256 if (pCommandBuffers[i])
1257 DestroyDispObjHandle((void*) pCommandBuffers[i]);
1260 static VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(
1261 VkCommandBuffer commandBuffer,
1262 const VkCommandBufferBeginInfo* pBeginInfo)
1264 //Not a CREATE or DESTROY function
1268 static VKAPI_ATTR VkResult VKAPI_CALL EndCommandBuffer(
1269 VkCommandBuffer commandBuffer)
1271 //Not a CREATE or DESTROY function
1275 static VKAPI_ATTR VkResult VKAPI_CALL ResetCommandBuffer(
1276 VkCommandBuffer commandBuffer,
1277 VkCommandBufferResetFlags flags)
1279 //Not a CREATE or DESTROY function
1283 static VKAPI_ATTR void VKAPI_CALL CmdBindPipeline(
1284 VkCommandBuffer commandBuffer,
1285 VkPipelineBindPoint pipelineBindPoint,
1286 VkPipeline pipeline)
1288 //Not a CREATE or DESTROY function
1291 static VKAPI_ATTR void VKAPI_CALL CmdSetViewport(
1292 VkCommandBuffer commandBuffer,
1293 uint32_t firstViewport,
1294 uint32_t viewportCount,
1295 const VkViewport* pViewports)
1297 //Not a CREATE or DESTROY function
1300 static VKAPI_ATTR void VKAPI_CALL CmdSetScissor(
1301 VkCommandBuffer commandBuffer,
1302 uint32_t firstScissor,
1303 uint32_t scissorCount,
1304 const VkRect2D* pScissors)
1306 //Not a CREATE or DESTROY function
1309 static VKAPI_ATTR void VKAPI_CALL CmdSetLineWidth(
1310 VkCommandBuffer commandBuffer,
1313 //Not a CREATE or DESTROY function
1316 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias(
1317 VkCommandBuffer commandBuffer,
1318 float depthBiasConstantFactor,
1319 float depthBiasClamp,
1320 float depthBiasSlopeFactor)
1322 //Not a CREATE or DESTROY function
1325 static VKAPI_ATTR void VKAPI_CALL CmdSetBlendConstants(
1326 VkCommandBuffer commandBuffer,
1327 const float blendConstants[4])
1329 //Not a CREATE or DESTROY function
1332 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBounds(
1333 VkCommandBuffer commandBuffer,
1334 float minDepthBounds,
1335 float maxDepthBounds)
1337 //Not a CREATE or DESTROY function
1340 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilCompareMask(
1341 VkCommandBuffer commandBuffer,
1342 VkStencilFaceFlags faceMask,
1343 uint32_t compareMask)
1345 //Not a CREATE or DESTROY function
1348 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilWriteMask(
1349 VkCommandBuffer commandBuffer,
1350 VkStencilFaceFlags faceMask,
1353 //Not a CREATE or DESTROY function
1356 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilReference(
1357 VkCommandBuffer commandBuffer,
1358 VkStencilFaceFlags faceMask,
1361 //Not a CREATE or DESTROY function
1364 static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets(
1365 VkCommandBuffer commandBuffer,
1366 VkPipelineBindPoint pipelineBindPoint,
1367 VkPipelineLayout layout,
1369 uint32_t descriptorSetCount,
1370 const VkDescriptorSet* pDescriptorSets,
1371 uint32_t dynamicOffsetCount,
1372 const uint32_t* pDynamicOffsets)
1374 //Not a CREATE or DESTROY function
1377 static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer(
1378 VkCommandBuffer commandBuffer,
1380 VkDeviceSize offset,
1381 VkIndexType indexType)
1383 //Not a CREATE or DESTROY function
1386 static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers(
1387 VkCommandBuffer commandBuffer,
1388 uint32_t firstBinding,
1389 uint32_t bindingCount,
1390 const VkBuffer* pBuffers,
1391 const VkDeviceSize* pOffsets)
1393 //Not a CREATE or DESTROY function
1396 static VKAPI_ATTR void VKAPI_CALL CmdDraw(
1397 VkCommandBuffer commandBuffer,
1398 uint32_t vertexCount,
1399 uint32_t instanceCount,
1400 uint32_t firstVertex,
1401 uint32_t firstInstance)
1403 //Not a CREATE or DESTROY function
1406 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexed(
1407 VkCommandBuffer commandBuffer,
1408 uint32_t indexCount,
1409 uint32_t instanceCount,
1410 uint32_t firstIndex,
1411 int32_t vertexOffset,
1412 uint32_t firstInstance)
1414 //Not a CREATE or DESTROY function
1417 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirect(
1418 VkCommandBuffer commandBuffer,
1420 VkDeviceSize offset,
1424 //Not a CREATE or DESTROY function
1427 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirect(
1428 VkCommandBuffer commandBuffer,
1430 VkDeviceSize offset,
1434 //Not a CREATE or DESTROY function
1437 static VKAPI_ATTR void VKAPI_CALL CmdDispatch(
1438 VkCommandBuffer commandBuffer,
1439 uint32_t groupCountX,
1440 uint32_t groupCountY,
1441 uint32_t groupCountZ)
1443 //Not a CREATE or DESTROY function
1446 static VKAPI_ATTR void VKAPI_CALL CmdDispatchIndirect(
1447 VkCommandBuffer commandBuffer,
1449 VkDeviceSize offset)
1451 //Not a CREATE or DESTROY function
1454 static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer(
1455 VkCommandBuffer commandBuffer,
1458 uint32_t regionCount,
1459 const VkBufferCopy* pRegions)
1461 //Not a CREATE or DESTROY function
1464 static VKAPI_ATTR void VKAPI_CALL CmdCopyImage(
1465 VkCommandBuffer commandBuffer,
1467 VkImageLayout srcImageLayout,
1469 VkImageLayout dstImageLayout,
1470 uint32_t regionCount,
1471 const VkImageCopy* pRegions)
1473 //Not a CREATE or DESTROY function
1476 static VKAPI_ATTR void VKAPI_CALL CmdBlitImage(
1477 VkCommandBuffer commandBuffer,
1479 VkImageLayout srcImageLayout,
1481 VkImageLayout dstImageLayout,
1482 uint32_t regionCount,
1483 const VkImageBlit* pRegions,
1486 //Not a CREATE or DESTROY function
1489 static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage(
1490 VkCommandBuffer commandBuffer,
1493 VkImageLayout dstImageLayout,
1494 uint32_t regionCount,
1495 const VkBufferImageCopy* pRegions)
1497 //Not a CREATE or DESTROY function
1500 static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer(
1501 VkCommandBuffer commandBuffer,
1503 VkImageLayout srcImageLayout,
1505 uint32_t regionCount,
1506 const VkBufferImageCopy* pRegions)
1508 //Not a CREATE or DESTROY function
1511 static VKAPI_ATTR void VKAPI_CALL CmdUpdateBuffer(
1512 VkCommandBuffer commandBuffer,
1514 VkDeviceSize dstOffset,
1515 VkDeviceSize dataSize,
1518 //Not a CREATE or DESTROY function
1521 static VKAPI_ATTR void VKAPI_CALL CmdFillBuffer(
1522 VkCommandBuffer commandBuffer,
1524 VkDeviceSize dstOffset,
1528 //Not a CREATE or DESTROY function
1531 static VKAPI_ATTR void VKAPI_CALL CmdClearColorImage(
1532 VkCommandBuffer commandBuffer,
1534 VkImageLayout imageLayout,
1535 const VkClearColorValue* pColor,
1536 uint32_t rangeCount,
1537 const VkImageSubresourceRange* pRanges)
1539 //Not a CREATE or DESTROY function
1542 static VKAPI_ATTR void VKAPI_CALL CmdClearDepthStencilImage(
1543 VkCommandBuffer commandBuffer,
1545 VkImageLayout imageLayout,
1546 const VkClearDepthStencilValue* pDepthStencil,
1547 uint32_t rangeCount,
1548 const VkImageSubresourceRange* pRanges)
1550 //Not a CREATE or DESTROY function
1553 static VKAPI_ATTR void VKAPI_CALL CmdClearAttachments(
1554 VkCommandBuffer commandBuffer,
1555 uint32_t attachmentCount,
1556 const VkClearAttachment* pAttachments,
1558 const VkClearRect* pRects)
1560 //Not a CREATE or DESTROY function
1563 static VKAPI_ATTR void VKAPI_CALL CmdResolveImage(
1564 VkCommandBuffer commandBuffer,
1566 VkImageLayout srcImageLayout,
1568 VkImageLayout dstImageLayout,
1569 uint32_t regionCount,
1570 const VkImageResolve* pRegions)
1572 //Not a CREATE or DESTROY function
1575 static VKAPI_ATTR void VKAPI_CALL CmdSetEvent(
1576 VkCommandBuffer commandBuffer,
1578 VkPipelineStageFlags stageMask)
1580 //Not a CREATE or DESTROY function
1583 static VKAPI_ATTR void VKAPI_CALL CmdResetEvent(
1584 VkCommandBuffer commandBuffer,
1586 VkPipelineStageFlags stageMask)
1588 //Not a CREATE or DESTROY function
1591 static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents(
1592 VkCommandBuffer commandBuffer,
1593 uint32_t eventCount,
1594 const VkEvent* pEvents,
1595 VkPipelineStageFlags srcStageMask,
1596 VkPipelineStageFlags dstStageMask,
1597 uint32_t memoryBarrierCount,
1598 const VkMemoryBarrier* pMemoryBarriers,
1599 uint32_t bufferMemoryBarrierCount,
1600 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1601 uint32_t imageMemoryBarrierCount,
1602 const VkImageMemoryBarrier* pImageMemoryBarriers)
1604 //Not a CREATE or DESTROY function
1607 static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier(
1608 VkCommandBuffer commandBuffer,
1609 VkPipelineStageFlags srcStageMask,
1610 VkPipelineStageFlags dstStageMask,
1611 VkDependencyFlags dependencyFlags,
1612 uint32_t memoryBarrierCount,
1613 const VkMemoryBarrier* pMemoryBarriers,
1614 uint32_t bufferMemoryBarrierCount,
1615 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1616 uint32_t imageMemoryBarrierCount,
1617 const VkImageMemoryBarrier* pImageMemoryBarriers)
1619 //Not a CREATE or DESTROY function
1622 static VKAPI_ATTR void VKAPI_CALL CmdBeginQuery(
1623 VkCommandBuffer commandBuffer,
1624 VkQueryPool queryPool,
1626 VkQueryControlFlags flags)
1628 //Not a CREATE or DESTROY function
1631 static VKAPI_ATTR void VKAPI_CALL CmdEndQuery(
1632 VkCommandBuffer commandBuffer,
1633 VkQueryPool queryPool,
1636 //Not a CREATE or DESTROY function
1639 static VKAPI_ATTR void VKAPI_CALL CmdResetQueryPool(
1640 VkCommandBuffer commandBuffer,
1641 VkQueryPool queryPool,
1642 uint32_t firstQuery,
1643 uint32_t queryCount)
1645 //Not a CREATE or DESTROY function
1648 static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp(
1649 VkCommandBuffer commandBuffer,
1650 VkPipelineStageFlagBits pipelineStage,
1651 VkQueryPool queryPool,
1654 //Not a CREATE or DESTROY function
1657 static VKAPI_ATTR void VKAPI_CALL CmdCopyQueryPoolResults(
1658 VkCommandBuffer commandBuffer,
1659 VkQueryPool queryPool,
1660 uint32_t firstQuery,
1661 uint32_t queryCount,
1663 VkDeviceSize dstOffset,
1664 VkDeviceSize stride,
1665 VkQueryResultFlags flags)
1667 //Not a CREATE or DESTROY function
1670 static VKAPI_ATTR void VKAPI_CALL CmdPushConstants(
1671 VkCommandBuffer commandBuffer,
1672 VkPipelineLayout layout,
1673 VkShaderStageFlags stageFlags,
1676 const void* pValues)
1678 //Not a CREATE or DESTROY function
1681 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass(
1682 VkCommandBuffer commandBuffer,
1683 const VkRenderPassBeginInfo* pRenderPassBegin,
1684 VkSubpassContents contents)
1686 //Not a CREATE or DESTROY function
1689 static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass(
1690 VkCommandBuffer commandBuffer,
1691 VkSubpassContents contents)
1693 //Not a CREATE or DESTROY function
1696 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass(
1697 VkCommandBuffer commandBuffer)
1699 //Not a CREATE or DESTROY function
1702 static VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands(
1703 VkCommandBuffer commandBuffer,
1704 uint32_t commandBufferCount,
1705 const VkCommandBuffer* pCommandBuffers)
1707 //Not a CREATE or DESTROY function
1711 static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceVersion(
1712 uint32_t* pApiVersion)
1715 *pApiVersion = kSupportedVulkanAPIVersion;
1719 static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2(
1721 uint32_t bindInfoCount,
1722 const VkBindBufferMemoryInfo* pBindInfos)
1724 //Not a CREATE or DESTROY function
1728 static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2(
1730 uint32_t bindInfoCount,
1731 const VkBindImageMemoryInfo* pBindInfos)
1733 //Not a CREATE or DESTROY function
1737 static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeatures(
1740 uint32_t localDeviceIndex,
1741 uint32_t remoteDeviceIndex,
1742 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
1744 //Not a CREATE or DESTROY function
1747 static VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMask(
1748 VkCommandBuffer commandBuffer,
1749 uint32_t deviceMask)
1751 //Not a CREATE or DESTROY function
1754 static VKAPI_ATTR void VKAPI_CALL CmdDispatchBase(
1755 VkCommandBuffer commandBuffer,
1756 uint32_t baseGroupX,
1757 uint32_t baseGroupY,
1758 uint32_t baseGroupZ,
1759 uint32_t groupCountX,
1760 uint32_t groupCountY,
1761 uint32_t groupCountZ)
1763 //Not a CREATE or DESTROY function
1766 static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroups(
1767 VkInstance instance,
1768 uint32_t* pPhysicalDeviceGroupCount,
1769 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
1771 //Not a CREATE or DESTROY function
1775 static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2(
1777 const VkImageMemoryRequirementsInfo2* pInfo,
1778 VkMemoryRequirements2* pMemoryRequirements)
1780 GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
1783 static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2(
1785 const VkBufferMemoryRequirementsInfo2* pInfo,
1786 VkMemoryRequirements2* pMemoryRequirements)
1788 GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
1791 static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2(
1793 const VkImageSparseMemoryRequirementsInfo2* pInfo,
1794 uint32_t* pSparseMemoryRequirementCount,
1795 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
1797 //Not a CREATE or DESTROY function
1800 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2(
1801 VkPhysicalDevice physicalDevice,
1802 VkPhysicalDeviceFeatures2* pFeatures)
1804 GetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
1807 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2(
1808 VkPhysicalDevice physicalDevice,
1809 VkPhysicalDeviceProperties2* pProperties)
1811 GetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
1814 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2(
1815 VkPhysicalDevice physicalDevice,
1817 VkFormatProperties2* pFormatProperties)
1819 GetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
1822 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2(
1823 VkPhysicalDevice physicalDevice,
1824 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1825 VkImageFormatProperties2* pImageFormatProperties)
1827 return GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties);
1830 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2(
1831 VkPhysicalDevice physicalDevice,
1832 uint32_t* pQueueFamilyPropertyCount,
1833 VkQueueFamilyProperties2* pQueueFamilyProperties)
1835 GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1838 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties2(
1839 VkPhysicalDevice physicalDevice,
1840 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
1842 GetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
1845 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2(
1846 VkPhysicalDevice physicalDevice,
1847 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1848 uint32_t* pPropertyCount,
1849 VkSparseImageFormatProperties2* pProperties)
1851 //Not a CREATE or DESTROY function
1854 static VKAPI_ATTR void VKAPI_CALL TrimCommandPool(
1856 VkCommandPool commandPool,
1857 VkCommandPoolTrimFlags flags)
1859 //Not a CREATE or DESTROY function
1862 static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue2(
1864 const VkDeviceQueueInfo2* pQueueInfo,
1867 GetDeviceQueue(device, pQueueInfo->queueFamilyIndex, pQueueInfo->queueIndex, pQueue);
1868 // TODO: Add further support for GetDeviceQueue2 features
1871 static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversion(
1873 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1874 const VkAllocationCallbacks* pAllocator,
1875 VkSamplerYcbcrConversion* pYcbcrConversion)
1877 unique_lock_t lock(global_lock);
1878 *pYcbcrConversion = (VkSamplerYcbcrConversion)global_unique_handle++;
1882 static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversion(
1884 VkSamplerYcbcrConversion ycbcrConversion,
1885 const VkAllocationCallbacks* pAllocator)
1890 static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplate(
1892 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1893 const VkAllocationCallbacks* pAllocator,
1894 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
1896 unique_lock_t lock(global_lock);
1897 *pDescriptorUpdateTemplate = (VkDescriptorUpdateTemplate)global_unique_handle++;
1901 static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplate(
1903 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1904 const VkAllocationCallbacks* pAllocator)
1909 static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplate(
1911 VkDescriptorSet descriptorSet,
1912 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1915 //Not a CREATE or DESTROY function
1918 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferProperties(
1919 VkPhysicalDevice physicalDevice,
1920 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1921 VkExternalBufferProperties* pExternalBufferProperties)
1923 // Hard-code support for all handle types and features
1924 pExternalBufferProperties->externalMemoryProperties.externalMemoryFeatures = 0x7;
1925 pExternalBufferProperties->externalMemoryProperties.exportFromImportedHandleTypes = 0x1FF;
1926 pExternalBufferProperties->externalMemoryProperties.compatibleHandleTypes = 0x1FF;
1929 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFenceProperties(
1930 VkPhysicalDevice physicalDevice,
1931 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
1932 VkExternalFenceProperties* pExternalFenceProperties)
1934 // Hard-code support for all handle types and features
1935 pExternalFenceProperties->exportFromImportedHandleTypes = 0xF;
1936 pExternalFenceProperties->compatibleHandleTypes = 0xF;
1937 pExternalFenceProperties->externalFenceFeatures = 0x3;
1940 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphoreProperties(
1941 VkPhysicalDevice physicalDevice,
1942 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
1943 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
1945 // Hard code support for all handle types and features
1946 pExternalSemaphoreProperties->exportFromImportedHandleTypes = 0x1F;
1947 pExternalSemaphoreProperties->compatibleHandleTypes = 0x1F;
1948 pExternalSemaphoreProperties->externalSemaphoreFeatures = 0x3;
1951 static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupport(
1953 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1954 VkDescriptorSetLayoutSupport* pSupport)
1956 //Not a CREATE or DESTROY function
1960 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCount(
1961 VkCommandBuffer commandBuffer,
1963 VkDeviceSize offset,
1964 VkBuffer countBuffer,
1965 VkDeviceSize countBufferOffset,
1966 uint32_t maxDrawCount,
1969 //Not a CREATE or DESTROY function
1972 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCount(
1973 VkCommandBuffer commandBuffer,
1975 VkDeviceSize offset,
1976 VkBuffer countBuffer,
1977 VkDeviceSize countBufferOffset,
1978 uint32_t maxDrawCount,
1981 //Not a CREATE or DESTROY function
1984 static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2(
1986 const VkRenderPassCreateInfo2* pCreateInfo,
1987 const VkAllocationCallbacks* pAllocator,
1988 VkRenderPass* pRenderPass)
1990 unique_lock_t lock(global_lock);
1991 *pRenderPass = (VkRenderPass)global_unique_handle++;
1995 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2(
1996 VkCommandBuffer commandBuffer,
1997 const VkRenderPassBeginInfo* pRenderPassBegin,
1998 const VkSubpassBeginInfo* pSubpassBeginInfo)
2000 //Not a CREATE or DESTROY function
2003 static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2(
2004 VkCommandBuffer commandBuffer,
2005 const VkSubpassBeginInfo* pSubpassBeginInfo,
2006 const VkSubpassEndInfo* pSubpassEndInfo)
2008 //Not a CREATE or DESTROY function
2011 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2(
2012 VkCommandBuffer commandBuffer,
2013 const VkSubpassEndInfo* pSubpassEndInfo)
2015 //Not a CREATE or DESTROY function
2018 static VKAPI_ATTR void VKAPI_CALL ResetQueryPool(
2020 VkQueryPool queryPool,
2021 uint32_t firstQuery,
2022 uint32_t queryCount)
2024 //Not a CREATE or DESTROY function
2027 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValue(
2029 VkSemaphore semaphore,
2032 //Not a CREATE or DESTROY function
2036 static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphores(
2038 const VkSemaphoreWaitInfo* pWaitInfo,
2041 //Not a CREATE or DESTROY function
2045 static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphore(
2047 const VkSemaphoreSignalInfo* pSignalInfo)
2049 //Not a CREATE or DESTROY function
2053 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddress(
2055 const VkBufferDeviceAddressInfo* pInfo)
2057 //Not a CREATE or DESTROY function
2061 static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddress(
2063 const VkBufferDeviceAddressInfo* pInfo)
2065 //Not a CREATE or DESTROY function
2069 static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddress(
2071 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
2073 //Not a CREATE or DESTROY function
2078 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolProperties(
2079 VkPhysicalDevice physicalDevice,
2080 uint32_t* pToolCount,
2081 VkPhysicalDeviceToolProperties* pToolProperties)
2083 //Not a CREATE or DESTROY function
2087 static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlot(
2089 const VkPrivateDataSlotCreateInfo* pCreateInfo,
2090 const VkAllocationCallbacks* pAllocator,
2091 VkPrivateDataSlot* pPrivateDataSlot)
2093 unique_lock_t lock(global_lock);
2094 *pPrivateDataSlot = (VkPrivateDataSlot)global_unique_handle++;
2098 static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlot(
2100 VkPrivateDataSlot privateDataSlot,
2101 const VkAllocationCallbacks* pAllocator)
2106 static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateData(
2108 VkObjectType objectType,
2109 uint64_t objectHandle,
2110 VkPrivateDataSlot privateDataSlot,
2113 //Not a CREATE or DESTROY function
2117 static VKAPI_ATTR void VKAPI_CALL GetPrivateData(
2119 VkObjectType objectType,
2120 uint64_t objectHandle,
2121 VkPrivateDataSlot privateDataSlot,
2124 //Not a CREATE or DESTROY function
2127 static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2(
2128 VkCommandBuffer commandBuffer,
2130 const VkDependencyInfo* pDependencyInfo)
2132 //Not a CREATE or DESTROY function
2135 static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2(
2136 VkCommandBuffer commandBuffer,
2138 VkPipelineStageFlags2 stageMask)
2140 //Not a CREATE or DESTROY function
2143 static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2(
2144 VkCommandBuffer commandBuffer,
2145 uint32_t eventCount,
2146 const VkEvent* pEvents,
2147 const VkDependencyInfo* pDependencyInfos)
2149 //Not a CREATE or DESTROY function
2152 static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2(
2153 VkCommandBuffer commandBuffer,
2154 const VkDependencyInfo* pDependencyInfo)
2156 //Not a CREATE or DESTROY function
2159 static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2(
2160 VkCommandBuffer commandBuffer,
2161 VkPipelineStageFlags2 stage,
2162 VkQueryPool queryPool,
2165 //Not a CREATE or DESTROY function
2168 static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2(
2170 uint32_t submitCount,
2171 const VkSubmitInfo2* pSubmits,
2174 //Not a CREATE or DESTROY function
2178 static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2(
2179 VkCommandBuffer commandBuffer,
2180 const VkCopyBufferInfo2* pCopyBufferInfo)
2182 //Not a CREATE or DESTROY function
2185 static VKAPI_ATTR void VKAPI_CALL CmdCopyImage2(
2186 VkCommandBuffer commandBuffer,
2187 const VkCopyImageInfo2* pCopyImageInfo)
2189 //Not a CREATE or DESTROY function
2192 static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2(
2193 VkCommandBuffer commandBuffer,
2194 const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo)
2196 //Not a CREATE or DESTROY function
2199 static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2(
2200 VkCommandBuffer commandBuffer,
2201 const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo)
2203 //Not a CREATE or DESTROY function
2206 static VKAPI_ATTR void VKAPI_CALL CmdBlitImage2(
2207 VkCommandBuffer commandBuffer,
2208 const VkBlitImageInfo2* pBlitImageInfo)
2210 //Not a CREATE or DESTROY function
2213 static VKAPI_ATTR void VKAPI_CALL CmdResolveImage2(
2214 VkCommandBuffer commandBuffer,
2215 const VkResolveImageInfo2* pResolveImageInfo)
2217 //Not a CREATE or DESTROY function
2220 static VKAPI_ATTR void VKAPI_CALL CmdBeginRendering(
2221 VkCommandBuffer commandBuffer,
2222 const VkRenderingInfo* pRenderingInfo)
2224 //Not a CREATE or DESTROY function
2227 static VKAPI_ATTR void VKAPI_CALL CmdEndRendering(
2228 VkCommandBuffer commandBuffer)
2230 //Not a CREATE or DESTROY function
2233 static VKAPI_ATTR void VKAPI_CALL CmdSetCullMode(
2234 VkCommandBuffer commandBuffer,
2235 VkCullModeFlags cullMode)
2237 //Not a CREATE or DESTROY function
2240 static VKAPI_ATTR void VKAPI_CALL CmdSetFrontFace(
2241 VkCommandBuffer commandBuffer,
2242 VkFrontFace frontFace)
2244 //Not a CREATE or DESTROY function
2247 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopology(
2248 VkCommandBuffer commandBuffer,
2249 VkPrimitiveTopology primitiveTopology)
2251 //Not a CREATE or DESTROY function
2254 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCount(
2255 VkCommandBuffer commandBuffer,
2256 uint32_t viewportCount,
2257 const VkViewport* pViewports)
2259 //Not a CREATE or DESTROY function
2262 static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCount(
2263 VkCommandBuffer commandBuffer,
2264 uint32_t scissorCount,
2265 const VkRect2D* pScissors)
2267 //Not a CREATE or DESTROY function
2270 static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2(
2271 VkCommandBuffer commandBuffer,
2272 uint32_t firstBinding,
2273 uint32_t bindingCount,
2274 const VkBuffer* pBuffers,
2275 const VkDeviceSize* pOffsets,
2276 const VkDeviceSize* pSizes,
2277 const VkDeviceSize* pStrides)
2279 //Not a CREATE or DESTROY function
2282 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnable(
2283 VkCommandBuffer commandBuffer,
2284 VkBool32 depthTestEnable)
2286 //Not a CREATE or DESTROY function
2289 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnable(
2290 VkCommandBuffer commandBuffer,
2291 VkBool32 depthWriteEnable)
2293 //Not a CREATE or DESTROY function
2296 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOp(
2297 VkCommandBuffer commandBuffer,
2298 VkCompareOp depthCompareOp)
2300 //Not a CREATE or DESTROY function
2303 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnable(
2304 VkCommandBuffer commandBuffer,
2305 VkBool32 depthBoundsTestEnable)
2307 //Not a CREATE or DESTROY function
2310 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnable(
2311 VkCommandBuffer commandBuffer,
2312 VkBool32 stencilTestEnable)
2314 //Not a CREATE or DESTROY function
2317 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOp(
2318 VkCommandBuffer commandBuffer,
2319 VkStencilFaceFlags faceMask,
2322 VkStencilOp depthFailOp,
2323 VkCompareOp compareOp)
2325 //Not a CREATE or DESTROY function
2328 static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnable(
2329 VkCommandBuffer commandBuffer,
2330 VkBool32 rasterizerDiscardEnable)
2332 //Not a CREATE or DESTROY function
2335 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnable(
2336 VkCommandBuffer commandBuffer,
2337 VkBool32 depthBiasEnable)
2339 //Not a CREATE or DESTROY function
2342 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnable(
2343 VkCommandBuffer commandBuffer,
2344 VkBool32 primitiveRestartEnable)
2346 //Not a CREATE or DESTROY function
2349 static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirements(
2351 const VkDeviceBufferMemoryRequirements* pInfo,
2352 VkMemoryRequirements2* pMemoryRequirements)
2354 //Not a CREATE or DESTROY function
2357 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirements(
2359 const VkDeviceImageMemoryRequirements* pInfo,
2360 VkMemoryRequirements2* pMemoryRequirements)
2362 //Not a CREATE or DESTROY function
2365 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirements(
2367 const VkDeviceImageMemoryRequirements* pInfo,
2368 uint32_t* pSparseMemoryRequirementCount,
2369 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
2371 //Not a CREATE or DESTROY function
2375 static VKAPI_ATTR void VKAPI_CALL DestroySurfaceKHR(
2376 VkInstance instance,
2377 VkSurfaceKHR surface,
2378 const VkAllocationCallbacks* pAllocator)
2383 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceSupportKHR(
2384 VkPhysicalDevice physicalDevice,
2385 uint32_t queueFamilyIndex,
2386 VkSurfaceKHR surface,
2387 VkBool32* pSupported)
2389 // Currently say that all surface/queue combos are supported
2390 *pSupported = VK_TRUE;
2394 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilitiesKHR(
2395 VkPhysicalDevice physicalDevice,
2396 VkSurfaceKHR surface,
2397 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
2399 // In general just say max supported is available for requested surface
2400 pSurfaceCapabilities->minImageCount = 1;
2401 pSurfaceCapabilities->maxImageCount = 0;
2402 pSurfaceCapabilities->currentExtent.width = 0xFFFFFFFF;
2403 pSurfaceCapabilities->currentExtent.height = 0xFFFFFFFF;
2404 pSurfaceCapabilities->minImageExtent.width = 1;
2405 pSurfaceCapabilities->minImageExtent.height = 1;
2406 pSurfaceCapabilities->maxImageExtent.width = 0xFFFF;
2407 pSurfaceCapabilities->maxImageExtent.height = 0xFFFF;
2408 pSurfaceCapabilities->maxImageArrayLayers = 128;
2409 pSurfaceCapabilities->supportedTransforms = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR |
2410 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR |
2411 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR |
2412 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR |
2413 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR |
2414 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR |
2415 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR |
2416 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR |
2417 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR;
2418 pSurfaceCapabilities->currentTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
2419 pSurfaceCapabilities->supportedCompositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR |
2420 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR |
2421 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR |
2422 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR;
2423 pSurfaceCapabilities->supportedUsageFlags = VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
2424 VK_IMAGE_USAGE_TRANSFER_DST_BIT |
2425 VK_IMAGE_USAGE_SAMPLED_BIT |
2426 VK_IMAGE_USAGE_STORAGE_BIT |
2427 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
2428 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT |
2429 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT |
2430 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
2434 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormatsKHR(
2435 VkPhysicalDevice physicalDevice,
2436 VkSurfaceKHR surface,
2437 uint32_t* pSurfaceFormatCount,
2438 VkSurfaceFormatKHR* pSurfaceFormats)
2440 // Currently always say that RGBA8 & BGRA8 are supported
2441 if (!pSurfaceFormats) {
2442 *pSurfaceFormatCount = 2;
2444 // Intentionally falling through and just filling however many types are requested
2445 switch(*pSurfaceFormatCount) {
2447 pSurfaceFormats[1].format = VK_FORMAT_R8G8B8A8_UNORM;
2448 pSurfaceFormats[1].colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
2451 pSurfaceFormats[0].format = VK_FORMAT_B8G8R8A8_UNORM;
2452 pSurfaceFormats[0].colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
2459 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModesKHR(
2460 VkPhysicalDevice physicalDevice,
2461 VkSurfaceKHR surface,
2462 uint32_t* pPresentModeCount,
2463 VkPresentModeKHR* pPresentModes)
2465 // Currently always say that all present modes are supported
2466 if (!pPresentModes) {
2467 *pPresentModeCount = 6;
2469 // Intentionally falling through and just filling however many modes are requested
2470 switch(*pPresentModeCount) {
2472 pPresentModes[5] = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR;
2475 pPresentModes[4] = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR;
2478 pPresentModes[3] = VK_PRESENT_MODE_FIFO_RELAXED_KHR;
2481 pPresentModes[2] = VK_PRESENT_MODE_FIFO_KHR;
2484 pPresentModes[1] = VK_PRESENT_MODE_MAILBOX_KHR;
2487 pPresentModes[0] = VK_PRESENT_MODE_IMMEDIATE_KHR;
2495 static VKAPI_ATTR VkResult VKAPI_CALL CreateSwapchainKHR(
2497 const VkSwapchainCreateInfoKHR* pCreateInfo,
2498 const VkAllocationCallbacks* pAllocator,
2499 VkSwapchainKHR* pSwapchain)
2501 unique_lock_t lock(global_lock);
2502 *pSwapchain = (VkSwapchainKHR)global_unique_handle++;
2503 for(uint32_t i = 0; i < icd_swapchain_image_count; ++i){
2504 swapchain_image_map[*pSwapchain][i] = (VkImage)global_unique_handle++;
2509 static VKAPI_ATTR void VKAPI_CALL DestroySwapchainKHR(
2511 VkSwapchainKHR swapchain,
2512 const VkAllocationCallbacks* pAllocator)
2514 unique_lock_t lock(global_lock);
2515 swapchain_image_map.clear();
2518 static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainImagesKHR(
2520 VkSwapchainKHR swapchain,
2521 uint32_t* pSwapchainImageCount,
2522 VkImage* pSwapchainImages)
2524 if (!pSwapchainImages) {
2525 *pSwapchainImageCount = icd_swapchain_image_count;
2527 unique_lock_t lock(global_lock);
2528 for (uint32_t img_i = 0; img_i < (std::min)(*pSwapchainImageCount, icd_swapchain_image_count); ++img_i){
2529 pSwapchainImages[img_i] = swapchain_image_map.at(swapchain)[img_i];
2532 if (*pSwapchainImageCount < icd_swapchain_image_count) return VK_INCOMPLETE;
2533 else if (*pSwapchainImageCount > icd_swapchain_image_count) *pSwapchainImageCount = icd_swapchain_image_count;
2538 static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImageKHR(
2540 VkSwapchainKHR swapchain,
2542 VkSemaphore semaphore,
2544 uint32_t* pImageIndex)
2550 static VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR(
2552 const VkPresentInfoKHR* pPresentInfo)
2554 //Not a CREATE or DESTROY function
2558 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupPresentCapabilitiesKHR(
2560 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
2562 //Not a CREATE or DESTROY function
2566 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModesKHR(
2568 VkSurfaceKHR surface,
2569 VkDeviceGroupPresentModeFlagsKHR* pModes)
2571 //Not a CREATE or DESTROY function
2575 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDevicePresentRectanglesKHR(
2576 VkPhysicalDevice physicalDevice,
2577 VkSurfaceKHR surface,
2578 uint32_t* pRectCount,
2581 //Not a CREATE or DESTROY function
2585 static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImage2KHR(
2587 const VkAcquireNextImageInfoKHR* pAcquireInfo,
2588 uint32_t* pImageIndex)
2595 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPropertiesKHR(
2596 VkPhysicalDevice physicalDevice,
2597 uint32_t* pPropertyCount,
2598 VkDisplayPropertiesKHR* pProperties)
2600 //Not a CREATE or DESTROY function
2604 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlanePropertiesKHR(
2605 VkPhysicalDevice physicalDevice,
2606 uint32_t* pPropertyCount,
2607 VkDisplayPlanePropertiesKHR* pProperties)
2609 //Not a CREATE or DESTROY function
2613 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneSupportedDisplaysKHR(
2614 VkPhysicalDevice physicalDevice,
2615 uint32_t planeIndex,
2616 uint32_t* pDisplayCount,
2617 VkDisplayKHR* pDisplays)
2619 //Not a CREATE or DESTROY function
2623 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModePropertiesKHR(
2624 VkPhysicalDevice physicalDevice,
2625 VkDisplayKHR display,
2626 uint32_t* pPropertyCount,
2627 VkDisplayModePropertiesKHR* pProperties)
2629 //Not a CREATE or DESTROY function
2633 static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayModeKHR(
2634 VkPhysicalDevice physicalDevice,
2635 VkDisplayKHR display,
2636 const VkDisplayModeCreateInfoKHR* pCreateInfo,
2637 const VkAllocationCallbacks* pAllocator,
2638 VkDisplayModeKHR* pMode)
2640 unique_lock_t lock(global_lock);
2641 *pMode = (VkDisplayModeKHR)global_unique_handle++;
2645 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR(
2646 VkPhysicalDevice physicalDevice,
2647 VkDisplayModeKHR mode,
2648 uint32_t planeIndex,
2649 VkDisplayPlaneCapabilitiesKHR* pCapabilities)
2651 //Not a CREATE or DESTROY function
2655 static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayPlaneSurfaceKHR(
2656 VkInstance instance,
2657 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
2658 const VkAllocationCallbacks* pAllocator,
2659 VkSurfaceKHR* pSurface)
2661 unique_lock_t lock(global_lock);
2662 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2667 static VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR(
2669 uint32_t swapchainCount,
2670 const VkSwapchainCreateInfoKHR* pCreateInfos,
2671 const VkAllocationCallbacks* pAllocator,
2672 VkSwapchainKHR* pSwapchains)
2674 unique_lock_t lock(global_lock);
2675 for (uint32_t i = 0; i < swapchainCount; ++i) {
2676 pSwapchains[i] = (VkSwapchainKHR)global_unique_handle++;
2681 #ifdef VK_USE_PLATFORM_XLIB_KHR
2683 static VKAPI_ATTR VkResult VKAPI_CALL CreateXlibSurfaceKHR(
2684 VkInstance instance,
2685 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
2686 const VkAllocationCallbacks* pAllocator,
2687 VkSurfaceKHR* pSurface)
2689 unique_lock_t lock(global_lock);
2690 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2694 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXlibPresentationSupportKHR(
2695 VkPhysicalDevice physicalDevice,
2696 uint32_t queueFamilyIndex,
2700 //Not a CREATE or DESTROY function
2703 #endif /* VK_USE_PLATFORM_XLIB_KHR */
2705 #ifdef VK_USE_PLATFORM_XCB_KHR
2707 static VKAPI_ATTR VkResult VKAPI_CALL CreateXcbSurfaceKHR(
2708 VkInstance instance,
2709 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
2710 const VkAllocationCallbacks* pAllocator,
2711 VkSurfaceKHR* pSurface)
2713 unique_lock_t lock(global_lock);
2714 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2718 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXcbPresentationSupportKHR(
2719 VkPhysicalDevice physicalDevice,
2720 uint32_t queueFamilyIndex,
2721 xcb_connection_t* connection,
2722 xcb_visualid_t visual_id)
2724 //Not a CREATE or DESTROY function
2727 #endif /* VK_USE_PLATFORM_XCB_KHR */
2729 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
2731 static VKAPI_ATTR VkResult VKAPI_CALL CreateWaylandSurfaceKHR(
2732 VkInstance instance,
2733 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
2734 const VkAllocationCallbacks* pAllocator,
2735 VkSurfaceKHR* pSurface)
2737 unique_lock_t lock(global_lock);
2738 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2742 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWaylandPresentationSupportKHR(
2743 VkPhysicalDevice physicalDevice,
2744 uint32_t queueFamilyIndex,
2745 struct wl_display* display)
2747 //Not a CREATE or DESTROY function
2750 #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
2752 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2754 static VKAPI_ATTR VkResult VKAPI_CALL CreateAndroidSurfaceKHR(
2755 VkInstance instance,
2756 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2757 const VkAllocationCallbacks* pAllocator,
2758 VkSurfaceKHR* pSurface)
2760 unique_lock_t lock(global_lock);
2761 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2764 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
2766 #ifdef VK_USE_PLATFORM_WIN32_KHR
2768 static VKAPI_ATTR VkResult VKAPI_CALL CreateWin32SurfaceKHR(
2769 VkInstance instance,
2770 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
2771 const VkAllocationCallbacks* pAllocator,
2772 VkSurfaceKHR* pSurface)
2774 unique_lock_t lock(global_lock);
2775 *pSurface = (VkSurfaceKHR)global_unique_handle++;
2779 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWin32PresentationSupportKHR(
2780 VkPhysicalDevice physicalDevice,
2781 uint32_t queueFamilyIndex)
2783 //Not a CREATE or DESTROY function
2786 #endif /* VK_USE_PLATFORM_WIN32_KHR */
2789 #ifdef VK_ENABLE_BETA_EXTENSIONS
2791 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR(
2792 VkPhysicalDevice physicalDevice,
2793 const VkVideoProfileKHR* pVideoProfile,
2794 VkVideoCapabilitiesKHR* pCapabilities)
2796 //Not a CREATE or DESTROY function
2800 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoFormatPropertiesKHR(
2801 VkPhysicalDevice physicalDevice,
2802 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
2803 uint32_t* pVideoFormatPropertyCount,
2804 VkVideoFormatPropertiesKHR* pVideoFormatProperties)
2806 //Not a CREATE or DESTROY function
2810 static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionKHR(
2812 const VkVideoSessionCreateInfoKHR* pCreateInfo,
2813 const VkAllocationCallbacks* pAllocator,
2814 VkVideoSessionKHR* pVideoSession)
2816 unique_lock_t lock(global_lock);
2817 *pVideoSession = (VkVideoSessionKHR)global_unique_handle++;
2821 static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionKHR(
2823 VkVideoSessionKHR videoSession,
2824 const VkAllocationCallbacks* pAllocator)
2829 static VKAPI_ATTR VkResult VKAPI_CALL GetVideoSessionMemoryRequirementsKHR(
2831 VkVideoSessionKHR videoSession,
2832 uint32_t* pVideoSessionMemoryRequirementsCount,
2833 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements)
2835 //Not a CREATE or DESTROY function
2839 static VKAPI_ATTR VkResult VKAPI_CALL BindVideoSessionMemoryKHR(
2841 VkVideoSessionKHR videoSession,
2842 uint32_t videoSessionBindMemoryCount,
2843 const VkVideoBindMemoryKHR* pVideoSessionBindMemories)
2845 //Not a CREATE or DESTROY function
2849 static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionParametersKHR(
2851 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2852 const VkAllocationCallbacks* pAllocator,
2853 VkVideoSessionParametersKHR* pVideoSessionParameters)
2855 unique_lock_t lock(global_lock);
2856 *pVideoSessionParameters = (VkVideoSessionParametersKHR)global_unique_handle++;
2860 static VKAPI_ATTR VkResult VKAPI_CALL UpdateVideoSessionParametersKHR(
2862 VkVideoSessionParametersKHR videoSessionParameters,
2863 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo)
2865 //Not a CREATE or DESTROY function
2869 static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionParametersKHR(
2871 VkVideoSessionParametersKHR videoSessionParameters,
2872 const VkAllocationCallbacks* pAllocator)
2877 static VKAPI_ATTR void VKAPI_CALL CmdBeginVideoCodingKHR(
2878 VkCommandBuffer commandBuffer,
2879 const VkVideoBeginCodingInfoKHR* pBeginInfo)
2881 //Not a CREATE or DESTROY function
2884 static VKAPI_ATTR void VKAPI_CALL CmdEndVideoCodingKHR(
2885 VkCommandBuffer commandBuffer,
2886 const VkVideoEndCodingInfoKHR* pEndCodingInfo)
2888 //Not a CREATE or DESTROY function
2891 static VKAPI_ATTR void VKAPI_CALL CmdControlVideoCodingKHR(
2892 VkCommandBuffer commandBuffer,
2893 const VkVideoCodingControlInfoKHR* pCodingControlInfo)
2895 //Not a CREATE or DESTROY function
2897 #endif /* VK_ENABLE_BETA_EXTENSIONS */
2899 #ifdef VK_ENABLE_BETA_EXTENSIONS
2901 static VKAPI_ATTR void VKAPI_CALL CmdDecodeVideoKHR(
2902 VkCommandBuffer commandBuffer,
2903 const VkVideoDecodeInfoKHR* pFrameInfo)
2905 //Not a CREATE or DESTROY function
2907 #endif /* VK_ENABLE_BETA_EXTENSIONS */
2910 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR(
2911 VkCommandBuffer commandBuffer,
2912 const VkRenderingInfo* pRenderingInfo)
2914 //Not a CREATE or DESTROY function
2917 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderingKHR(
2918 VkCommandBuffer commandBuffer)
2920 //Not a CREATE or DESTROY function
2925 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2KHR(
2926 VkPhysicalDevice physicalDevice,
2927 VkPhysicalDeviceFeatures2* pFeatures)
2929 GetPhysicalDeviceFeatures(physicalDevice, &pFeatures->features);
2930 uint32_t num_bools = 0; // Count number of VkBool32s in extension structs
2931 VkBool32* feat_bools = nullptr;
2932 const auto *desc_idx_features = lvl_find_in_chain<VkPhysicalDeviceDescriptorIndexingFeaturesEXT>(pFeatures->pNext);
2933 if (desc_idx_features) {
2934 const auto bool_size = sizeof(VkPhysicalDeviceDescriptorIndexingFeaturesEXT) - offsetof(VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing);
2935 num_bools = bool_size/sizeof(VkBool32);
2936 feat_bools = (VkBool32*)&desc_idx_features->shaderInputAttachmentArrayDynamicIndexing;
2937 SetBoolArrayTrue(feat_bools, num_bools);
2939 const auto *blendop_features = lvl_find_in_chain<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT>(pFeatures->pNext);
2940 if (blendop_features) {
2941 const auto bool_size = sizeof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT) - offsetof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations);
2942 num_bools = bool_size/sizeof(VkBool32);
2943 feat_bools = (VkBool32*)&blendop_features->advancedBlendCoherentOperations;
2944 SetBoolArrayTrue(feat_bools, num_bools);
2948 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2KHR(
2949 VkPhysicalDevice physicalDevice,
2950 VkPhysicalDeviceProperties2* pProperties)
2952 GetPhysicalDeviceProperties(physicalDevice, &pProperties->properties);
2953 const auto *desc_idx_props = lvl_find_in_chain<VkPhysicalDeviceDescriptorIndexingPropertiesEXT>(pProperties->pNext);
2954 if (desc_idx_props) {
2955 VkPhysicalDeviceDescriptorIndexingPropertiesEXT* write_props = (VkPhysicalDeviceDescriptorIndexingPropertiesEXT*)desc_idx_props;
2956 write_props->maxUpdateAfterBindDescriptorsInAllPools = 500000;
2957 write_props->shaderUniformBufferArrayNonUniformIndexingNative = false;
2958 write_props->shaderSampledImageArrayNonUniformIndexingNative = false;
2959 write_props->shaderStorageBufferArrayNonUniformIndexingNative = false;
2960 write_props->shaderStorageImageArrayNonUniformIndexingNative = false;
2961 write_props->shaderInputAttachmentArrayNonUniformIndexingNative = false;
2962 write_props->robustBufferAccessUpdateAfterBind = true;
2963 write_props->quadDivergentImplicitLod = true;
2964 write_props->maxPerStageDescriptorUpdateAfterBindSamplers = 500000;
2965 write_props->maxPerStageDescriptorUpdateAfterBindUniformBuffers = 500000;
2966 write_props->maxPerStageDescriptorUpdateAfterBindStorageBuffers = 500000;
2967 write_props->maxPerStageDescriptorUpdateAfterBindSampledImages = 500000;
2968 write_props->maxPerStageDescriptorUpdateAfterBindStorageImages = 500000;
2969 write_props->maxPerStageDescriptorUpdateAfterBindInputAttachments = 500000;
2970 write_props->maxPerStageUpdateAfterBindResources = 500000;
2971 write_props->maxDescriptorSetUpdateAfterBindSamplers = 500000;
2972 write_props->maxDescriptorSetUpdateAfterBindUniformBuffers = 96;
2973 write_props->maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = 8;
2974 write_props->maxDescriptorSetUpdateAfterBindStorageBuffers = 500000;
2975 write_props->maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = 4;
2976 write_props->maxDescriptorSetUpdateAfterBindSampledImages = 500000;
2977 write_props->maxDescriptorSetUpdateAfterBindStorageImages = 500000;
2978 write_props->maxDescriptorSetUpdateAfterBindInputAttachments = 500000;
2981 const auto *push_descriptor_props = lvl_find_in_chain<VkPhysicalDevicePushDescriptorPropertiesKHR>(pProperties->pNext);
2982 if (push_descriptor_props) {
2983 VkPhysicalDevicePushDescriptorPropertiesKHR* write_props = (VkPhysicalDevicePushDescriptorPropertiesKHR*)push_descriptor_props;
2984 write_props->maxPushDescriptors = 256;
2987 const auto *depth_stencil_resolve_props = lvl_find_in_chain<VkPhysicalDeviceDepthStencilResolvePropertiesKHR>(pProperties->pNext);
2988 if (depth_stencil_resolve_props) {
2989 VkPhysicalDeviceDepthStencilResolvePropertiesKHR* write_props = (VkPhysicalDeviceDepthStencilResolvePropertiesKHR*)depth_stencil_resolve_props;
2990 write_props->supportedDepthResolveModes = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR;
2991 write_props->supportedStencilResolveModes = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR;
2994 const auto *fragment_density_map2_props = lvl_find_in_chain<VkPhysicalDeviceFragmentDensityMap2PropertiesEXT>(pProperties->pNext);
2995 if (fragment_density_map2_props) {
2996 VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* write_props = (VkPhysicalDeviceFragmentDensityMap2PropertiesEXT*)fragment_density_map2_props;
2997 write_props->subsampledLoads = VK_FALSE;
2998 write_props->subsampledCoarseReconstructionEarlyAccess = VK_FALSE;
2999 write_props->maxSubsampledArrayLayers = 2;
3000 write_props->maxDescriptorSetSubsampledSamplers = 1;
3004 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2KHR(
3005 VkPhysicalDevice physicalDevice,
3007 VkFormatProperties2* pFormatProperties)
3009 GetPhysicalDeviceFormatProperties(physicalDevice, format, &pFormatProperties->formatProperties);
3010 VkFormatProperties3KHR *props_3 = lvl_find_mod_in_chain<VkFormatProperties3KHR>(pFormatProperties->pNext);
3012 props_3->linearTilingFeatures = pFormatProperties->formatProperties.linearTilingFeatures;
3013 props_3->optimalTilingFeatures = pFormatProperties->formatProperties.optimalTilingFeatures;
3014 props_3->bufferFeatures = pFormatProperties->formatProperties.bufferFeatures;
3018 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2KHR(
3019 VkPhysicalDevice physicalDevice,
3020 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
3021 VkImageFormatProperties2* pImageFormatProperties)
3023 GetPhysicalDeviceImageFormatProperties(physicalDevice, pImageFormatInfo->format, pImageFormatInfo->type, pImageFormatInfo->tiling, pImageFormatInfo->usage, pImageFormatInfo->flags, &pImageFormatProperties->imageFormatProperties);
3027 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2KHR(
3028 VkPhysicalDevice physicalDevice,
3029 uint32_t* pQueueFamilyPropertyCount,
3030 VkQueueFamilyProperties2* pQueueFamilyProperties)
3032 if (pQueueFamilyPropertyCount && pQueueFamilyProperties) {
3033 GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, &pQueueFamilyProperties->queueFamilyProperties);
3035 GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, nullptr);
3039 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties2KHR(
3040 VkPhysicalDevice physicalDevice,
3041 VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
3043 GetPhysicalDeviceMemoryProperties(physicalDevice, &pMemoryProperties->memoryProperties);
3046 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2KHR(
3047 VkPhysicalDevice physicalDevice,
3048 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
3049 uint32_t* pPropertyCount,
3050 VkSparseImageFormatProperties2* pProperties)
3052 //Not a CREATE or DESTROY function
3056 static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR(
3059 uint32_t localDeviceIndex,
3060 uint32_t remoteDeviceIndex,
3061 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3063 //Not a CREATE or DESTROY function
3066 static VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMaskKHR(
3067 VkCommandBuffer commandBuffer,
3068 uint32_t deviceMask)
3070 //Not a CREATE or DESTROY function
3073 static VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR(
3074 VkCommandBuffer commandBuffer,
3075 uint32_t baseGroupX,
3076 uint32_t baseGroupY,
3077 uint32_t baseGroupZ,
3078 uint32_t groupCountX,
3079 uint32_t groupCountY,
3080 uint32_t groupCountZ)
3082 //Not a CREATE or DESTROY function
3087 static VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR(
3089 VkCommandPool commandPool,
3090 VkCommandPoolTrimFlags flags)
3092 //Not a CREATE or DESTROY function
3096 static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroupsKHR(
3097 VkInstance instance,
3098 uint32_t* pPhysicalDeviceGroupCount,
3099 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
3101 //Not a CREATE or DESTROY function
3106 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferPropertiesKHR(
3107 VkPhysicalDevice physicalDevice,
3108 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
3109 VkExternalBufferProperties* pExternalBufferProperties)
3111 GetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
3115 #ifdef VK_USE_PLATFORM_WIN32_KHR
3117 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR(
3119 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3122 //Not a CREATE or DESTROY function
3126 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR(
3128 VkExternalMemoryHandleTypeFlagBits handleType,
3130 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
3132 //Not a CREATE or DESTROY function
3135 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3138 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR(
3140 const VkMemoryGetFdInfoKHR* pGetFdInfo,
3143 //Not a CREATE or DESTROY function
3147 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR(
3149 VkExternalMemoryHandleTypeFlagBits handleType,
3151 VkMemoryFdPropertiesKHR* pMemoryFdProperties)
3153 //Not a CREATE or DESTROY function
3157 #ifdef VK_USE_PLATFORM_WIN32_KHR
3158 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3161 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphorePropertiesKHR(
3162 VkPhysicalDevice physicalDevice,
3163 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3164 VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3166 GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
3170 #ifdef VK_USE_PLATFORM_WIN32_KHR
3172 static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR(
3174 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
3176 //Not a CREATE or DESTROY function
3180 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR(
3182 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3185 //Not a CREATE or DESTROY function
3188 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3191 static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR(
3193 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
3195 //Not a CREATE or DESTROY function
3199 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR(
3201 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3204 //Not a CREATE or DESTROY function
3209 static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR(
3210 VkCommandBuffer commandBuffer,
3211 VkPipelineBindPoint pipelineBindPoint,
3212 VkPipelineLayout layout,
3214 uint32_t descriptorWriteCount,
3215 const VkWriteDescriptorSet* pDescriptorWrites)
3217 //Not a CREATE or DESTROY function
3220 static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR(
3221 VkCommandBuffer commandBuffer,
3222 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3223 VkPipelineLayout layout,
3227 //Not a CREATE or DESTROY function
3234 static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR(
3236 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3237 const VkAllocationCallbacks* pAllocator,
3238 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
3240 unique_lock_t lock(global_lock);
3241 *pDescriptorUpdateTemplate = (VkDescriptorUpdateTemplate)global_unique_handle++;
3245 static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplateKHR(
3247 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3248 const VkAllocationCallbacks* pAllocator)
3253 static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR(
3255 VkDescriptorSet descriptorSet,
3256 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3259 //Not a CREATE or DESTROY function
3264 static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR(
3266 const VkRenderPassCreateInfo2* pCreateInfo,
3267 const VkAllocationCallbacks* pAllocator,
3268 VkRenderPass* pRenderPass)
3270 unique_lock_t lock(global_lock);
3271 *pRenderPass = (VkRenderPass)global_unique_handle++;
3275 static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR(
3276 VkCommandBuffer commandBuffer,
3277 const VkRenderPassBeginInfo* pRenderPassBegin,
3278 const VkSubpassBeginInfo* pSubpassBeginInfo)
3280 //Not a CREATE or DESTROY function
3283 static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR(
3284 VkCommandBuffer commandBuffer,
3285 const VkSubpassBeginInfo* pSubpassBeginInfo,
3286 const VkSubpassEndInfo* pSubpassEndInfo)
3288 //Not a CREATE or DESTROY function
3291 static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR(
3292 VkCommandBuffer commandBuffer,
3293 const VkSubpassEndInfo* pSubpassEndInfo)
3295 //Not a CREATE or DESTROY function
3299 static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR(
3301 VkSwapchainKHR swapchain)
3303 //Not a CREATE or DESTROY function
3308 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFencePropertiesKHR(
3309 VkPhysicalDevice physicalDevice,
3310 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3311 VkExternalFenceProperties* pExternalFenceProperties)
3313 GetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
3317 #ifdef VK_USE_PLATFORM_WIN32_KHR
3319 static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR(
3321 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
3323 //Not a CREATE or DESTROY function
3327 static VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR(
3329 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
3332 //Not a CREATE or DESTROY function
3335 #endif /* VK_USE_PLATFORM_WIN32_KHR */
3338 static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR(
3340 const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
3342 //Not a CREATE or DESTROY function
3346 static VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR(
3348 const VkFenceGetFdInfoKHR* pGetFdInfo,
3351 //Not a CREATE or DESTROY function
3356 static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3357 VkPhysicalDevice physicalDevice,
3358 uint32_t queueFamilyIndex,
3359 uint32_t* pCounterCount,
3360 VkPerformanceCounterKHR* pCounters,
3361 VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
3363 //Not a CREATE or DESTROY function
3367 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3368 VkPhysicalDevice physicalDevice,
3369 const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
3370 uint32_t* pNumPasses)
3372 //Not a CREATE or DESTROY function
3375 static VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR(
3377 const VkAcquireProfilingLockInfoKHR* pInfo)
3379 //Not a CREATE or DESTROY function
3383 static VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR(
3386 //Not a CREATE or DESTROY function
3391 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2KHR(
3392 VkPhysicalDevice physicalDevice,
3393 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3394 VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
3396 GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, pSurfaceInfo->surface, &pSurfaceCapabilities->surfaceCapabilities);
3400 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormats2KHR(
3401 VkPhysicalDevice physicalDevice,
3402 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
3403 uint32_t* pSurfaceFormatCount,
3404 VkSurfaceFormat2KHR* pSurfaceFormats)
3406 // Currently always say that RGBA8 & BGRA8 are supported
3407 if (!pSurfaceFormats) {
3408 *pSurfaceFormatCount = 2;
3410 // Intentionally falling through and just filling however many types are requested
3411 switch(*pSurfaceFormatCount) {
3413 pSurfaceFormats[1].pNext = nullptr;
3414 pSurfaceFormats[1].surfaceFormat.format = VK_FORMAT_R8G8B8A8_UNORM;
3415 pSurfaceFormats[1].surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
3418 pSurfaceFormats[1].pNext = nullptr;
3419 pSurfaceFormats[0].surfaceFormat.format = VK_FORMAT_B8G8R8A8_UNORM;
3420 pSurfaceFormats[0].surfaceFormat.colorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
3429 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayProperties2KHR(
3430 VkPhysicalDevice physicalDevice,
3431 uint32_t* pPropertyCount,
3432 VkDisplayProperties2KHR* pProperties)
3434 //Not a CREATE or DESTROY function
3438 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlaneProperties2KHR(
3439 VkPhysicalDevice physicalDevice,
3440 uint32_t* pPropertyCount,
3441 VkDisplayPlaneProperties2KHR* pProperties)
3443 //Not a CREATE or DESTROY function
3447 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModeProperties2KHR(
3448 VkPhysicalDevice physicalDevice,
3449 VkDisplayKHR display,
3450 uint32_t* pPropertyCount,
3451 VkDisplayModeProperties2KHR* pProperties)
3453 //Not a CREATE or DESTROY function
3457 static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilities2KHR(
3458 VkPhysicalDevice physicalDevice,
3459 const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
3460 VkDisplayPlaneCapabilities2KHR* pCapabilities)
3462 //Not a CREATE or DESTROY function
3470 static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR(
3472 const VkImageMemoryRequirementsInfo2* pInfo,
3473 VkMemoryRequirements2* pMemoryRequirements)
3475 GetImageMemoryRequirements(device, pInfo->image, &pMemoryRequirements->memoryRequirements);
3478 static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR(
3480 const VkBufferMemoryRequirementsInfo2* pInfo,
3481 VkMemoryRequirements2* pMemoryRequirements)
3483 GetBufferMemoryRequirements(device, pInfo->buffer, &pMemoryRequirements->memoryRequirements);
3486 static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR(
3488 const VkImageSparseMemoryRequirementsInfo2* pInfo,
3489 uint32_t* pSparseMemoryRequirementCount,
3490 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3492 //Not a CREATE or DESTROY function
3497 static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR(
3499 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3500 const VkAllocationCallbacks* pAllocator,
3501 VkSamplerYcbcrConversion* pYcbcrConversion)
3503 unique_lock_t lock(global_lock);
3504 *pYcbcrConversion = (VkSamplerYcbcrConversion)global_unique_handle++;
3508 static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR(
3510 VkSamplerYcbcrConversion ycbcrConversion,
3511 const VkAllocationCallbacks* pAllocator)
3517 static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR(
3519 uint32_t bindInfoCount,
3520 const VkBindBufferMemoryInfo* pBindInfos)
3522 //Not a CREATE or DESTROY function
3526 static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR(
3528 uint32_t bindInfoCount,
3529 const VkBindImageMemoryInfo* pBindInfos)
3531 //Not a CREATE or DESTROY function
3535 #ifdef VK_ENABLE_BETA_EXTENSIONS
3536 #endif /* VK_ENABLE_BETA_EXTENSIONS */
3539 static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR(
3541 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3542 VkDescriptorSetLayoutSupport* pSupport)
3544 //Not a CREATE or DESTROY function
3548 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR(
3549 VkCommandBuffer commandBuffer,
3551 VkDeviceSize offset,
3552 VkBuffer countBuffer,
3553 VkDeviceSize countBufferOffset,
3554 uint32_t maxDrawCount,
3557 //Not a CREATE or DESTROY function
3560 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR(
3561 VkCommandBuffer commandBuffer,
3563 VkDeviceSize offset,
3564 VkBuffer countBuffer,
3565 VkDeviceSize countBufferOffset,
3566 uint32_t maxDrawCount,
3569 //Not a CREATE or DESTROY function
3582 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR(
3584 VkSemaphore semaphore,
3587 //Not a CREATE or DESTROY function
3591 static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
3593 const VkSemaphoreWaitInfo* pWaitInfo,
3596 //Not a CREATE or DESTROY function
3600 static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR(
3602 const VkSemaphoreSignalInfo* pSignalInfo)
3604 //Not a CREATE or DESTROY function
3611 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR(
3612 VkPhysicalDevice physicalDevice,
3613 uint32_t* pFragmentShadingRateCount,
3614 VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates)
3616 //Not a CREATE or DESTROY function
3620 static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR(
3621 VkCommandBuffer commandBuffer,
3622 const VkExtent2D* pFragmentSize,
3623 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
3625 //Not a CREATE or DESTROY function
3632 static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR(
3634 VkSwapchainKHR swapchain,
3638 //Not a CREATE or DESTROY function
3644 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR(
3646 const VkBufferDeviceAddressInfo* pInfo)
3648 //Not a CREATE or DESTROY function
3652 static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR(
3654 const VkBufferDeviceAddressInfo* pInfo)
3656 //Not a CREATE or DESTROY function
3660 static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR(
3662 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo)
3664 //Not a CREATE or DESTROY function
3669 static VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR(
3671 const VkAllocationCallbacks* pAllocator,
3672 VkDeferredOperationKHR* pDeferredOperation)
3674 unique_lock_t lock(global_lock);
3675 *pDeferredOperation = (VkDeferredOperationKHR)global_unique_handle++;
3679 static VKAPI_ATTR void VKAPI_CALL DestroyDeferredOperationKHR(
3681 VkDeferredOperationKHR operation,
3682 const VkAllocationCallbacks* pAllocator)
3687 static VKAPI_ATTR uint32_t VKAPI_CALL GetDeferredOperationMaxConcurrencyKHR(
3689 VkDeferredOperationKHR operation)
3691 //Not a CREATE or DESTROY function
3695 static VKAPI_ATTR VkResult VKAPI_CALL GetDeferredOperationResultKHR(
3697 VkDeferredOperationKHR operation)
3699 //Not a CREATE or DESTROY function
3703 static VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR(
3705 VkDeferredOperationKHR operation)
3707 //Not a CREATE or DESTROY function
3712 static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR(
3714 const VkPipelineInfoKHR* pPipelineInfo,
3715 uint32_t* pExecutableCount,
3716 VkPipelineExecutablePropertiesKHR* pProperties)
3718 //Not a CREATE or DESTROY function
3722 static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR(
3724 const VkPipelineExecutableInfoKHR* pExecutableInfo,
3725 uint32_t* pStatisticCount,
3726 VkPipelineExecutableStatisticKHR* pStatistics)
3728 //Not a CREATE or DESTROY function
3732 static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentationsKHR(
3734 const VkPipelineExecutableInfoKHR* pExecutableInfo,
3735 uint32_t* pInternalRepresentationCount,
3736 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
3738 //Not a CREATE or DESTROY function
3746 #ifdef VK_ENABLE_BETA_EXTENSIONS
3748 static VKAPI_ATTR void VKAPI_CALL CmdEncodeVideoKHR(
3749 VkCommandBuffer commandBuffer,
3750 const VkVideoEncodeInfoKHR* pEncodeInfo)
3752 //Not a CREATE or DESTROY function
3754 #endif /* VK_ENABLE_BETA_EXTENSIONS */
3757 static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR(
3758 VkCommandBuffer commandBuffer,
3760 const VkDependencyInfo* pDependencyInfo)
3762 //Not a CREATE or DESTROY function
3765 static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2KHR(
3766 VkCommandBuffer commandBuffer,
3768 VkPipelineStageFlags2 stageMask)
3770 //Not a CREATE or DESTROY function
3773 static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2KHR(
3774 VkCommandBuffer commandBuffer,
3775 uint32_t eventCount,
3776 const VkEvent* pEvents,
3777 const VkDependencyInfo* pDependencyInfos)
3779 //Not a CREATE or DESTROY function
3782 static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2KHR(
3783 VkCommandBuffer commandBuffer,
3784 const VkDependencyInfo* pDependencyInfo)
3786 //Not a CREATE or DESTROY function
3789 static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2KHR(
3790 VkCommandBuffer commandBuffer,
3791 VkPipelineStageFlags2 stage,
3792 VkQueryPool queryPool,
3795 //Not a CREATE or DESTROY function
3798 static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR(
3800 uint32_t submitCount,
3801 const VkSubmitInfo2* pSubmits,
3804 //Not a CREATE or DESTROY function
3808 static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD(
3809 VkCommandBuffer commandBuffer,
3810 VkPipelineStageFlags2 stage,
3812 VkDeviceSize dstOffset,
3815 //Not a CREATE or DESTROY function
3818 static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV(
3820 uint32_t* pCheckpointDataCount,
3821 VkCheckpointData2NV* pCheckpointData)
3823 //Not a CREATE or DESTROY function
3830 static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2KHR(
3831 VkCommandBuffer commandBuffer,
3832 const VkCopyBufferInfo2* pCopyBufferInfo)
3834 //Not a CREATE or DESTROY function
3837 static VKAPI_ATTR void VKAPI_CALL CmdCopyImage2KHR(
3838 VkCommandBuffer commandBuffer,
3839 const VkCopyImageInfo2* pCopyImageInfo)
3841 //Not a CREATE or DESTROY function
3844 static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2KHR(
3845 VkCommandBuffer commandBuffer,
3846 const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo)
3848 //Not a CREATE or DESTROY function
3851 static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2KHR(
3852 VkCommandBuffer commandBuffer,
3853 const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo)
3855 //Not a CREATE or DESTROY function
3858 static VKAPI_ATTR void VKAPI_CALL CmdBlitImage2KHR(
3859 VkCommandBuffer commandBuffer,
3860 const VkBlitImageInfo2* pBlitImageInfo)
3862 //Not a CREATE or DESTROY function
3865 static VKAPI_ATTR void VKAPI_CALL CmdResolveImage2KHR(
3866 VkCommandBuffer commandBuffer,
3867 const VkResolveImageInfo2* pResolveImageInfo)
3869 //Not a CREATE or DESTROY function
3874 static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR(
3876 const VkDeviceBufferMemoryRequirements* pInfo,
3877 VkMemoryRequirements2* pMemoryRequirements)
3879 //Not a CREATE or DESTROY function
3882 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirementsKHR(
3884 const VkDeviceImageMemoryRequirements* pInfo,
3885 VkMemoryRequirements2* pMemoryRequirements)
3887 //Not a CREATE or DESTROY function
3890 static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR(
3892 const VkDeviceImageMemoryRequirements* pInfo,
3893 uint32_t* pSparseMemoryRequirementCount,
3894 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3896 //Not a CREATE or DESTROY function
3900 static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugReportCallbackEXT(
3901 VkInstance instance,
3902 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
3903 const VkAllocationCallbacks* pAllocator,
3904 VkDebugReportCallbackEXT* pCallback)
3906 unique_lock_t lock(global_lock);
3907 *pCallback = (VkDebugReportCallbackEXT)global_unique_handle++;
3911 static VKAPI_ATTR void VKAPI_CALL DestroyDebugReportCallbackEXT(
3912 VkInstance instance,
3913 VkDebugReportCallbackEXT callback,
3914 const VkAllocationCallbacks* pAllocator)
3919 static VKAPI_ATTR void VKAPI_CALL DebugReportMessageEXT(
3920 VkInstance instance,
3921 VkDebugReportFlagsEXT flags,
3922 VkDebugReportObjectTypeEXT objectType,
3925 int32_t messageCode,
3926 const char* pLayerPrefix,
3927 const char* pMessage)
3929 //Not a CREATE or DESTROY function
3939 static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
3941 const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
3943 //Not a CREATE or DESTROY function
3947 static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(
3949 const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
3951 //Not a CREATE or DESTROY function
3955 static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerBeginEXT(
3956 VkCommandBuffer commandBuffer,
3957 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3959 //Not a CREATE or DESTROY function
3962 static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerEndEXT(
3963 VkCommandBuffer commandBuffer)
3965 //Not a CREATE or DESTROY function
3968 static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT(
3969 VkCommandBuffer commandBuffer,
3970 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
3972 //Not a CREATE or DESTROY function
3978 static VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT(
3979 VkCommandBuffer commandBuffer,
3980 uint32_t firstBinding,
3981 uint32_t bindingCount,
3982 const VkBuffer* pBuffers,
3983 const VkDeviceSize* pOffsets,
3984 const VkDeviceSize* pSizes)
3986 //Not a CREATE or DESTROY function
3989 static VKAPI_ATTR void VKAPI_CALL CmdBeginTransformFeedbackEXT(
3990 VkCommandBuffer commandBuffer,
3991 uint32_t firstCounterBuffer,
3992 uint32_t counterBufferCount,
3993 const VkBuffer* pCounterBuffers,
3994 const VkDeviceSize* pCounterBufferOffsets)
3996 //Not a CREATE or DESTROY function
3999 static VKAPI_ATTR void VKAPI_CALL CmdEndTransformFeedbackEXT(
4000 VkCommandBuffer commandBuffer,
4001 uint32_t firstCounterBuffer,
4002 uint32_t counterBufferCount,
4003 const VkBuffer* pCounterBuffers,
4004 const VkDeviceSize* pCounterBufferOffsets)
4006 //Not a CREATE or DESTROY function
4009 static VKAPI_ATTR void VKAPI_CALL CmdBeginQueryIndexedEXT(
4010 VkCommandBuffer commandBuffer,
4011 VkQueryPool queryPool,
4013 VkQueryControlFlags flags,
4016 //Not a CREATE or DESTROY function
4019 static VKAPI_ATTR void VKAPI_CALL CmdEndQueryIndexedEXT(
4020 VkCommandBuffer commandBuffer,
4021 VkQueryPool queryPool,
4025 //Not a CREATE or DESTROY function
4028 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT(
4029 VkCommandBuffer commandBuffer,
4030 uint32_t instanceCount,
4031 uint32_t firstInstance,
4032 VkBuffer counterBuffer,
4033 VkDeviceSize counterBufferOffset,
4034 uint32_t counterOffset,
4035 uint32_t vertexStride)
4037 //Not a CREATE or DESTROY function
4041 static VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX(
4043 const VkCuModuleCreateInfoNVX* pCreateInfo,
4044 const VkAllocationCallbacks* pAllocator,
4045 VkCuModuleNVX* pModule)
4047 unique_lock_t lock(global_lock);
4048 *pModule = (VkCuModuleNVX)global_unique_handle++;
4052 static VKAPI_ATTR VkResult VKAPI_CALL CreateCuFunctionNVX(
4054 const VkCuFunctionCreateInfoNVX* pCreateInfo,
4055 const VkAllocationCallbacks* pAllocator,
4056 VkCuFunctionNVX* pFunction)
4058 unique_lock_t lock(global_lock);
4059 *pFunction = (VkCuFunctionNVX)global_unique_handle++;
4063 static VKAPI_ATTR void VKAPI_CALL DestroyCuModuleNVX(
4065 VkCuModuleNVX module,
4066 const VkAllocationCallbacks* pAllocator)
4071 static VKAPI_ATTR void VKAPI_CALL DestroyCuFunctionNVX(
4073 VkCuFunctionNVX function,
4074 const VkAllocationCallbacks* pAllocator)
4079 static VKAPI_ATTR void VKAPI_CALL CmdCuLaunchKernelNVX(
4080 VkCommandBuffer commandBuffer,
4081 const VkCuLaunchInfoNVX* pLaunchInfo)
4083 //Not a CREATE or DESTROY function
4087 static VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX(
4089 const VkImageViewHandleInfoNVX* pInfo)
4091 //Not a CREATE or DESTROY function
4095 static VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX(
4097 VkImageView imageView,
4098 VkImageViewAddressPropertiesNVX* pProperties)
4100 //Not a CREATE or DESTROY function
4105 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD(
4106 VkCommandBuffer commandBuffer,
4108 VkDeviceSize offset,
4109 VkBuffer countBuffer,
4110 VkDeviceSize countBufferOffset,
4111 uint32_t maxDrawCount,
4114 //Not a CREATE or DESTROY function
4117 static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD(
4118 VkCommandBuffer commandBuffer,
4120 VkDeviceSize offset,
4121 VkBuffer countBuffer,
4122 VkDeviceSize countBufferOffset,
4123 uint32_t maxDrawCount,
4126 //Not a CREATE or DESTROY function
4132 #ifdef VK_ENABLE_BETA_EXTENSIONS
4133 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4135 #ifdef VK_ENABLE_BETA_EXTENSIONS
4136 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4138 #ifdef VK_ENABLE_BETA_EXTENSIONS
4139 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4143 static VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD(
4145 VkPipeline pipeline,
4146 VkShaderStageFlagBits shaderStage,
4147 VkShaderInfoTypeAMD infoType,
4151 //Not a CREATE or DESTROY function
4156 #ifdef VK_USE_PLATFORM_GGP
4158 static VKAPI_ATTR VkResult VKAPI_CALL CreateStreamDescriptorSurfaceGGP(
4159 VkInstance instance,
4160 const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
4161 const VkAllocationCallbacks* pAllocator,
4162 VkSurfaceKHR* pSurface)
4164 unique_lock_t lock(global_lock);
4165 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4168 #endif /* VK_USE_PLATFORM_GGP */
4173 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatPropertiesNV(
4174 VkPhysicalDevice physicalDevice,
4177 VkImageTiling tiling,
4178 VkImageUsageFlags usage,
4179 VkImageCreateFlags flags,
4180 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
4181 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
4183 //Not a CREATE or DESTROY function
4188 #ifdef VK_USE_PLATFORM_WIN32_KHR
4190 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV(
4192 VkDeviceMemory memory,
4193 VkExternalMemoryHandleTypeFlagsNV handleType,
4196 //Not a CREATE or DESTROY function
4199 #endif /* VK_USE_PLATFORM_WIN32_KHR */
4201 #ifdef VK_USE_PLATFORM_WIN32_KHR
4202 #endif /* VK_USE_PLATFORM_WIN32_KHR */
4205 #ifdef VK_USE_PLATFORM_VI_NN
4207 static VKAPI_ATTR VkResult VKAPI_CALL CreateViSurfaceNN(
4208 VkInstance instance,
4209 const VkViSurfaceCreateInfoNN* pCreateInfo,
4210 const VkAllocationCallbacks* pAllocator,
4211 VkSurfaceKHR* pSurface)
4213 unique_lock_t lock(global_lock);
4214 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4217 #endif /* VK_USE_PLATFORM_VI_NN */
4224 static VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT(
4225 VkCommandBuffer commandBuffer,
4226 const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
4228 //Not a CREATE or DESTROY function
4231 static VKAPI_ATTR void VKAPI_CALL CmdEndConditionalRenderingEXT(
4232 VkCommandBuffer commandBuffer)
4234 //Not a CREATE or DESTROY function
4238 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV(
4239 VkCommandBuffer commandBuffer,
4240 uint32_t firstViewport,
4241 uint32_t viewportCount,
4242 const VkViewportWScalingNV* pViewportWScalings)
4244 //Not a CREATE or DESTROY function
4248 static VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT(
4249 VkPhysicalDevice physicalDevice,
4250 VkDisplayKHR display)
4252 //Not a CREATE or DESTROY function
4256 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
4258 static VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT(
4259 VkPhysicalDevice physicalDevice,
4261 VkDisplayKHR display)
4263 //Not a CREATE or DESTROY function
4267 static VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT(
4268 VkPhysicalDevice physicalDevice,
4271 VkDisplayKHR* pDisplay)
4273 //Not a CREATE or DESTROY function
4276 #endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */
4279 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT(
4280 VkPhysicalDevice physicalDevice,
4281 VkSurfaceKHR surface,
4282 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
4284 //Not a CREATE or DESTROY function
4289 static VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT(
4291 VkDisplayKHR display,
4292 const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
4294 //Not a CREATE or DESTROY function
4298 static VKAPI_ATTR VkResult VKAPI_CALL RegisterDeviceEventEXT(
4300 const VkDeviceEventInfoEXT* pDeviceEventInfo,
4301 const VkAllocationCallbacks* pAllocator,
4304 //Not a CREATE or DESTROY function
4308 static VKAPI_ATTR VkResult VKAPI_CALL RegisterDisplayEventEXT(
4310 VkDisplayKHR display,
4311 const VkDisplayEventInfoEXT* pDisplayEventInfo,
4312 const VkAllocationCallbacks* pAllocator,
4315 //Not a CREATE or DESTROY function
4319 static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT(
4321 VkSwapchainKHR swapchain,
4322 VkSurfaceCounterFlagBitsEXT counter,
4323 uint64_t* pCounterValue)
4325 //Not a CREATE or DESTROY function
4330 static VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE(
4332 VkSwapchainKHR swapchain,
4333 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
4335 //Not a CREATE or DESTROY function
4339 static VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE(
4341 VkSwapchainKHR swapchain,
4342 uint32_t* pPresentationTimingCount,
4343 VkPastPresentationTimingGOOGLE* pPresentationTimings)
4345 //Not a CREATE or DESTROY function
4355 static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT(
4356 VkCommandBuffer commandBuffer,
4357 uint32_t firstDiscardRectangle,
4358 uint32_t discardRectangleCount,
4359 const VkRect2D* pDiscardRectangles)
4361 //Not a CREATE or DESTROY function
4368 static VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT(
4370 uint32_t swapchainCount,
4371 const VkSwapchainKHR* pSwapchains,
4372 const VkHdrMetadataEXT* pMetadata)
4374 //Not a CREATE or DESTROY function
4377 #ifdef VK_USE_PLATFORM_IOS_MVK
4379 static VKAPI_ATTR VkResult VKAPI_CALL CreateIOSSurfaceMVK(
4380 VkInstance instance,
4381 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
4382 const VkAllocationCallbacks* pAllocator,
4383 VkSurfaceKHR* pSurface)
4385 unique_lock_t lock(global_lock);
4386 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4389 #endif /* VK_USE_PLATFORM_IOS_MVK */
4391 #ifdef VK_USE_PLATFORM_MACOS_MVK
4393 static VKAPI_ATTR VkResult VKAPI_CALL CreateMacOSSurfaceMVK(
4394 VkInstance instance,
4395 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
4396 const VkAllocationCallbacks* pAllocator,
4397 VkSurfaceKHR* pSurface)
4399 unique_lock_t lock(global_lock);
4400 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4403 #endif /* VK_USE_PLATFORM_MACOS_MVK */
4408 static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(
4410 const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
4412 //Not a CREATE or DESTROY function
4416 static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(
4418 const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
4420 //Not a CREATE or DESTROY function
4424 static VKAPI_ATTR void VKAPI_CALL QueueBeginDebugUtilsLabelEXT(
4426 const VkDebugUtilsLabelEXT* pLabelInfo)
4428 //Not a CREATE or DESTROY function
4431 static VKAPI_ATTR void VKAPI_CALL QueueEndDebugUtilsLabelEXT(
4434 //Not a CREATE or DESTROY function
4437 static VKAPI_ATTR void VKAPI_CALL QueueInsertDebugUtilsLabelEXT(
4439 const VkDebugUtilsLabelEXT* pLabelInfo)
4441 //Not a CREATE or DESTROY function
4444 static VKAPI_ATTR void VKAPI_CALL CmdBeginDebugUtilsLabelEXT(
4445 VkCommandBuffer commandBuffer,
4446 const VkDebugUtilsLabelEXT* pLabelInfo)
4448 //Not a CREATE or DESTROY function
4451 static VKAPI_ATTR void VKAPI_CALL CmdEndDebugUtilsLabelEXT(
4452 VkCommandBuffer commandBuffer)
4454 //Not a CREATE or DESTROY function
4457 static VKAPI_ATTR void VKAPI_CALL CmdInsertDebugUtilsLabelEXT(
4458 VkCommandBuffer commandBuffer,
4459 const VkDebugUtilsLabelEXT* pLabelInfo)
4461 //Not a CREATE or DESTROY function
4464 static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugUtilsMessengerEXT(
4465 VkInstance instance,
4466 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
4467 const VkAllocationCallbacks* pAllocator,
4468 VkDebugUtilsMessengerEXT* pMessenger)
4470 unique_lock_t lock(global_lock);
4471 *pMessenger = (VkDebugUtilsMessengerEXT)global_unique_handle++;
4475 static VKAPI_ATTR void VKAPI_CALL DestroyDebugUtilsMessengerEXT(
4476 VkInstance instance,
4477 VkDebugUtilsMessengerEXT messenger,
4478 const VkAllocationCallbacks* pAllocator)
4483 static VKAPI_ATTR void VKAPI_CALL SubmitDebugUtilsMessageEXT(
4484 VkInstance instance,
4485 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
4486 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
4487 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
4489 //Not a CREATE or DESTROY function
4492 #ifdef VK_USE_PLATFORM_ANDROID_KHR
4494 static VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID(
4496 const struct AHardwareBuffer* buffer,
4497 VkAndroidHardwareBufferPropertiesANDROID* pProperties)
4499 //Not a CREATE or DESTROY function
4503 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID(
4505 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4506 struct AHardwareBuffer** pBuffer)
4508 //Not a CREATE or DESTROY function
4511 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
4520 static VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEXT(
4521 VkCommandBuffer commandBuffer,
4522 const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
4524 //Not a CREATE or DESTROY function
4527 static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT(
4528 VkPhysicalDevice physicalDevice,
4529 VkSampleCountFlagBits samples,
4530 VkMultisamplePropertiesEXT* pMultisampleProperties)
4532 //Not a CREATE or DESTROY function
4542 static VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT(
4545 VkImageDrmFormatModifierPropertiesEXT* pProperties)
4547 //Not a CREATE or DESTROY function
4552 static VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT(
4554 const VkValidationCacheCreateInfoEXT* pCreateInfo,
4555 const VkAllocationCallbacks* pAllocator,
4556 VkValidationCacheEXT* pValidationCache)
4558 unique_lock_t lock(global_lock);
4559 *pValidationCache = (VkValidationCacheEXT)global_unique_handle++;
4563 static VKAPI_ATTR void VKAPI_CALL DestroyValidationCacheEXT(
4565 VkValidationCacheEXT validationCache,
4566 const VkAllocationCallbacks* pAllocator)
4571 static VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT(
4573 VkValidationCacheEXT dstCache,
4574 uint32_t srcCacheCount,
4575 const VkValidationCacheEXT* pSrcCaches)
4577 //Not a CREATE or DESTROY function
4581 static VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT(
4583 VkValidationCacheEXT validationCache,
4587 //Not a CREATE or DESTROY function
4594 static VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV(
4595 VkCommandBuffer commandBuffer,
4596 VkImageView imageView,
4597 VkImageLayout imageLayout)
4599 //Not a CREATE or DESTROY function
4602 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportShadingRatePaletteNV(
4603 VkCommandBuffer commandBuffer,
4604 uint32_t firstViewport,
4605 uint32_t viewportCount,
4606 const VkShadingRatePaletteNV* pShadingRatePalettes)
4608 //Not a CREATE or DESTROY function
4611 static VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV(
4612 VkCommandBuffer commandBuffer,
4613 VkCoarseSampleOrderTypeNV sampleOrderType,
4614 uint32_t customSampleOrderCount,
4615 const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
4617 //Not a CREATE or DESTROY function
4621 static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV(
4623 const VkAccelerationStructureCreateInfoNV* pCreateInfo,
4624 const VkAllocationCallbacks* pAllocator,
4625 VkAccelerationStructureNV* pAccelerationStructure)
4627 unique_lock_t lock(global_lock);
4628 *pAccelerationStructure = (VkAccelerationStructureNV)global_unique_handle++;
4632 static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureNV(
4634 VkAccelerationStructureNV accelerationStructure,
4635 const VkAllocationCallbacks* pAllocator)
4640 static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV(
4642 const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
4643 VkMemoryRequirements2KHR* pMemoryRequirements)
4645 //Not a CREATE or DESTROY function
4648 static VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV(
4650 uint32_t bindInfoCount,
4651 const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
4653 //Not a CREATE or DESTROY function
4657 static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructureNV(
4658 VkCommandBuffer commandBuffer,
4659 const VkAccelerationStructureInfoNV* pInfo,
4660 VkBuffer instanceData,
4661 VkDeviceSize instanceOffset,
4663 VkAccelerationStructureNV dst,
4664 VkAccelerationStructureNV src,
4666 VkDeviceSize scratchOffset)
4668 //Not a CREATE or DESTROY function
4671 static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureNV(
4672 VkCommandBuffer commandBuffer,
4673 VkAccelerationStructureNV dst,
4674 VkAccelerationStructureNV src,
4675 VkCopyAccelerationStructureModeKHR mode)
4677 //Not a CREATE or DESTROY function
4680 static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysNV(
4681 VkCommandBuffer commandBuffer,
4682 VkBuffer raygenShaderBindingTableBuffer,
4683 VkDeviceSize raygenShaderBindingOffset,
4684 VkBuffer missShaderBindingTableBuffer,
4685 VkDeviceSize missShaderBindingOffset,
4686 VkDeviceSize missShaderBindingStride,
4687 VkBuffer hitShaderBindingTableBuffer,
4688 VkDeviceSize hitShaderBindingOffset,
4689 VkDeviceSize hitShaderBindingStride,
4690 VkBuffer callableShaderBindingTableBuffer,
4691 VkDeviceSize callableShaderBindingOffset,
4692 VkDeviceSize callableShaderBindingStride,
4697 //Not a CREATE or DESTROY function
4700 static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesNV(
4702 VkPipelineCache pipelineCache,
4703 uint32_t createInfoCount,
4704 const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
4705 const VkAllocationCallbacks* pAllocator,
4706 VkPipeline* pPipelines)
4708 unique_lock_t lock(global_lock);
4709 for (uint32_t i = 0; i < createInfoCount; ++i) {
4710 pPipelines[i] = (VkPipeline)global_unique_handle++;
4715 static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesKHR(
4717 VkPipeline pipeline,
4718 uint32_t firstGroup,
4719 uint32_t groupCount,
4723 //Not a CREATE or DESTROY function
4727 static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesNV(
4729 VkPipeline pipeline,
4730 uint32_t firstGroup,
4731 uint32_t groupCount,
4735 //Not a CREATE or DESTROY function
4739 static VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureHandleNV(
4741 VkAccelerationStructureNV accelerationStructure,
4745 //Not a CREATE or DESTROY function
4749 static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesNV(
4750 VkCommandBuffer commandBuffer,
4751 uint32_t accelerationStructureCount,
4752 const VkAccelerationStructureNV* pAccelerationStructures,
4753 VkQueryType queryType,
4754 VkQueryPool queryPool,
4755 uint32_t firstQuery)
4757 //Not a CREATE or DESTROY function
4760 static VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV(
4762 VkPipeline pipeline,
4765 //Not a CREATE or DESTROY function
4774 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT(
4776 VkExternalMemoryHandleTypeFlagBits handleType,
4777 const void* pHostPointer,
4778 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
4780 //Not a CREATE or DESTROY function
4785 static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD(
4786 VkCommandBuffer commandBuffer,
4787 VkPipelineStageFlagBits pipelineStage,
4789 VkDeviceSize dstOffset,
4792 //Not a CREATE or DESTROY function
4797 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsEXT(
4798 VkPhysicalDevice physicalDevice,
4799 uint32_t* pTimeDomainCount,
4800 VkTimeDomainEXT* pTimeDomains)
4802 //Not a CREATE or DESTROY function
4806 static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT(
4808 uint32_t timestampCount,
4809 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
4810 uint64_t* pTimestamps,
4811 uint64_t* pMaxDeviation)
4813 //Not a CREATE or DESTROY function
4818 #ifdef VK_ENABLE_BETA_EXTENSIONS
4819 #endif /* VK_ENABLE_BETA_EXTENSIONS */
4823 #ifdef VK_USE_PLATFORM_GGP
4824 #endif /* VK_USE_PLATFORM_GGP */
4830 static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV(
4831 VkCommandBuffer commandBuffer,
4835 //Not a CREATE or DESTROY function
4838 static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectNV(
4839 VkCommandBuffer commandBuffer,
4841 VkDeviceSize offset,
4845 //Not a CREATE or DESTROY function
4848 static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV(
4849 VkCommandBuffer commandBuffer,
4851 VkDeviceSize offset,
4852 VkBuffer countBuffer,
4853 VkDeviceSize countBufferOffset,
4854 uint32_t maxDrawCount,
4857 //Not a CREATE or DESTROY function
4863 static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV(
4864 VkCommandBuffer commandBuffer,
4865 uint32_t firstExclusiveScissor,
4866 uint32_t exclusiveScissorCount,
4867 const VkRect2D* pExclusiveScissors)
4869 //Not a CREATE or DESTROY function
4873 static VKAPI_ATTR void VKAPI_CALL CmdSetCheckpointNV(
4874 VkCommandBuffer commandBuffer,
4875 const void* pCheckpointMarker)
4877 //Not a CREATE or DESTROY function
4880 static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointDataNV(
4882 uint32_t* pCheckpointDataCount,
4883 VkCheckpointDataNV* pCheckpointData)
4885 //Not a CREATE or DESTROY function
4890 static VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL(
4892 const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
4894 //Not a CREATE or DESTROY function
4898 static VKAPI_ATTR void VKAPI_CALL UninitializePerformanceApiINTEL(
4901 //Not a CREATE or DESTROY function
4904 static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceMarkerINTEL(
4905 VkCommandBuffer commandBuffer,
4906 const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
4908 //Not a CREATE or DESTROY function
4912 static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceStreamMarkerINTEL(
4913 VkCommandBuffer commandBuffer,
4914 const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
4916 //Not a CREATE or DESTROY function
4920 static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceOverrideINTEL(
4921 VkCommandBuffer commandBuffer,
4922 const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
4924 //Not a CREATE or DESTROY function
4928 static VKAPI_ATTR VkResult VKAPI_CALL AcquirePerformanceConfigurationINTEL(
4930 const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
4931 VkPerformanceConfigurationINTEL* pConfiguration)
4933 //Not a CREATE or DESTROY function
4937 static VKAPI_ATTR VkResult VKAPI_CALL ReleasePerformanceConfigurationINTEL(
4939 VkPerformanceConfigurationINTEL configuration)
4941 //Not a CREATE or DESTROY function
4945 static VKAPI_ATTR VkResult VKAPI_CALL QueueSetPerformanceConfigurationINTEL(
4947 VkPerformanceConfigurationINTEL configuration)
4949 //Not a CREATE or DESTROY function
4953 static VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL(
4955 VkPerformanceParameterTypeINTEL parameter,
4956 VkPerformanceValueINTEL* pValue)
4958 //Not a CREATE or DESTROY function
4964 static VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD(
4966 VkSwapchainKHR swapChain,
4967 VkBool32 localDimmingEnable)
4969 //Not a CREATE or DESTROY function
4972 #ifdef VK_USE_PLATFORM_FUCHSIA
4974 static VKAPI_ATTR VkResult VKAPI_CALL CreateImagePipeSurfaceFUCHSIA(
4975 VkInstance instance,
4976 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
4977 const VkAllocationCallbacks* pAllocator,
4978 VkSurfaceKHR* pSurface)
4980 unique_lock_t lock(global_lock);
4981 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4984 #endif /* VK_USE_PLATFORM_FUCHSIA */
4986 #ifdef VK_USE_PLATFORM_METAL_EXT
4988 static VKAPI_ATTR VkResult VKAPI_CALL CreateMetalSurfaceEXT(
4989 VkInstance instance,
4990 const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
4991 const VkAllocationCallbacks* pAllocator,
4992 VkSurfaceKHR* pSurface)
4994 unique_lock_t lock(global_lock);
4995 *pSurface = (VkSurfaceKHR)global_unique_handle++;
4998 #endif /* VK_USE_PLATFORM_METAL_EXT */
5012 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
5014 const VkBufferDeviceAddressInfo* pInfo)
5016 //Not a CREATE or DESTROY function
5021 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT(
5022 VkPhysicalDevice physicalDevice,
5023 uint32_t* pToolCount,
5024 VkPhysicalDeviceToolProperties* pToolProperties)
5026 //Not a CREATE or DESTROY function
5033 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV(
5034 VkPhysicalDevice physicalDevice,
5035 uint32_t* pPropertyCount,
5036 VkCooperativeMatrixPropertiesNV* pProperties)
5038 //Not a CREATE or DESTROY function
5043 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
5044 VkPhysicalDevice physicalDevice,
5045 uint32_t* pCombinationCount,
5046 VkFramebufferMixedSamplesCombinationNV* pCombinations)
5048 //Not a CREATE or DESTROY function
5055 #ifdef VK_USE_PLATFORM_WIN32_KHR
5057 static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT(
5058 VkPhysicalDevice physicalDevice,
5059 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
5060 uint32_t* pPresentModeCount,
5061 VkPresentModeKHR* pPresentModes)
5063 //Not a CREATE or DESTROY function
5067 static VKAPI_ATTR VkResult VKAPI_CALL AcquireFullScreenExclusiveModeEXT(
5069 VkSwapchainKHR swapchain)
5071 //Not a CREATE or DESTROY function
5075 static VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT(
5077 VkSwapchainKHR swapchain)
5079 //Not a CREATE or DESTROY function
5083 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT(
5085 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
5086 VkDeviceGroupPresentModeFlagsKHR* pModes)
5088 //Not a CREATE or DESTROY function
5091 #endif /* VK_USE_PLATFORM_WIN32_KHR */
5094 static VKAPI_ATTR VkResult VKAPI_CALL CreateHeadlessSurfaceEXT(
5095 VkInstance instance,
5096 const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
5097 const VkAllocationCallbacks* pAllocator,
5098 VkSurfaceKHR* pSurface)
5100 unique_lock_t lock(global_lock);
5101 *pSurface = (VkSurfaceKHR)global_unique_handle++;
5106 static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT(
5107 VkCommandBuffer commandBuffer,
5108 uint32_t lineStippleFactor,
5109 uint16_t lineStipplePattern)
5111 //Not a CREATE or DESTROY function
5116 static VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT(
5118 VkQueryPool queryPool,
5119 uint32_t firstQuery,
5120 uint32_t queryCount)
5122 //Not a CREATE or DESTROY function
5127 static VKAPI_ATTR void VKAPI_CALL CmdSetCullModeEXT(
5128 VkCommandBuffer commandBuffer,
5129 VkCullModeFlags cullMode)
5131 //Not a CREATE or DESTROY function
5134 static VKAPI_ATTR void VKAPI_CALL CmdSetFrontFaceEXT(
5135 VkCommandBuffer commandBuffer,
5136 VkFrontFace frontFace)
5138 //Not a CREATE or DESTROY function
5141 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopologyEXT(
5142 VkCommandBuffer commandBuffer,
5143 VkPrimitiveTopology primitiveTopology)
5145 //Not a CREATE or DESTROY function
5148 static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCountEXT(
5149 VkCommandBuffer commandBuffer,
5150 uint32_t viewportCount,
5151 const VkViewport* pViewports)
5153 //Not a CREATE or DESTROY function
5156 static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCountEXT(
5157 VkCommandBuffer commandBuffer,
5158 uint32_t scissorCount,
5159 const VkRect2D* pScissors)
5161 //Not a CREATE or DESTROY function
5164 static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2EXT(
5165 VkCommandBuffer commandBuffer,
5166 uint32_t firstBinding,
5167 uint32_t bindingCount,
5168 const VkBuffer* pBuffers,
5169 const VkDeviceSize* pOffsets,
5170 const VkDeviceSize* pSizes,
5171 const VkDeviceSize* pStrides)
5173 //Not a CREATE or DESTROY function
5176 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnableEXT(
5177 VkCommandBuffer commandBuffer,
5178 VkBool32 depthTestEnable)
5180 //Not a CREATE or DESTROY function
5183 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnableEXT(
5184 VkCommandBuffer commandBuffer,
5185 VkBool32 depthWriteEnable)
5187 //Not a CREATE or DESTROY function
5190 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOpEXT(
5191 VkCommandBuffer commandBuffer,
5192 VkCompareOp depthCompareOp)
5194 //Not a CREATE or DESTROY function
5197 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnableEXT(
5198 VkCommandBuffer commandBuffer,
5199 VkBool32 depthBoundsTestEnable)
5201 //Not a CREATE or DESTROY function
5204 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnableEXT(
5205 VkCommandBuffer commandBuffer,
5206 VkBool32 stencilTestEnable)
5208 //Not a CREATE or DESTROY function
5211 static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT(
5212 VkCommandBuffer commandBuffer,
5213 VkStencilFaceFlags faceMask,
5216 VkStencilOp depthFailOp,
5217 VkCompareOp compareOp)
5219 //Not a CREATE or DESTROY function
5225 static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV(
5227 const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
5228 VkMemoryRequirements2* pMemoryRequirements)
5230 //Not a CREATE or DESTROY function
5233 static VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsNV(
5234 VkCommandBuffer commandBuffer,
5235 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
5237 //Not a CREATE or DESTROY function
5240 static VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsNV(
5241 VkCommandBuffer commandBuffer,
5242 VkBool32 isPreprocessed,
5243 const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo)
5245 //Not a CREATE or DESTROY function
5248 static VKAPI_ATTR void VKAPI_CALL CmdBindPipelineShaderGroupNV(
5249 VkCommandBuffer commandBuffer,
5250 VkPipelineBindPoint pipelineBindPoint,
5251 VkPipeline pipeline,
5252 uint32_t groupIndex)
5254 //Not a CREATE or DESTROY function
5257 static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutNV(
5259 const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
5260 const VkAllocationCallbacks* pAllocator,
5261 VkIndirectCommandsLayoutNV* pIndirectCommandsLayout)
5263 unique_lock_t lock(global_lock);
5264 *pIndirectCommandsLayout = (VkIndirectCommandsLayoutNV)global_unique_handle++;
5268 static VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV(
5270 VkIndirectCommandsLayoutNV indirectCommandsLayout,
5271 const VkAllocationCallbacks* pAllocator)
5281 static VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT(
5282 VkPhysicalDevice physicalDevice,
5284 VkDisplayKHR display)
5286 //Not a CREATE or DESTROY function
5290 static VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT(
5291 VkPhysicalDevice physicalDevice,
5293 uint32_t connectorId,
5294 VkDisplayKHR* display)
5296 //Not a CREATE or DESTROY function
5304 static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT(
5306 const VkPrivateDataSlotCreateInfo* pCreateInfo,
5307 const VkAllocationCallbacks* pAllocator,
5308 VkPrivateDataSlot* pPrivateDataSlot)
5310 unique_lock_t lock(global_lock);
5311 *pPrivateDataSlot = (VkPrivateDataSlot)global_unique_handle++;
5315 static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlotEXT(
5317 VkPrivateDataSlot privateDataSlot,
5318 const VkAllocationCallbacks* pAllocator)
5323 static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateDataEXT(
5325 VkObjectType objectType,
5326 uint64_t objectHandle,
5327 VkPrivateDataSlot privateDataSlot,
5330 //Not a CREATE or DESTROY function
5334 static VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT(
5336 VkObjectType objectType,
5337 uint64_t objectHandle,
5338 VkPrivateDataSlot privateDataSlot,
5341 //Not a CREATE or DESTROY function
5348 static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV(
5349 VkCommandBuffer commandBuffer,
5350 VkFragmentShadingRateNV shadingRate,
5351 const VkFragmentShadingRateCombinerOpKHR combinerOps[2])
5353 //Not a CREATE or DESTROY function
5364 #ifdef VK_USE_PLATFORM_WIN32_KHR
5366 static VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV(
5367 VkPhysicalDevice physicalDevice,
5368 VkDisplayKHR display)
5370 //Not a CREATE or DESTROY function
5374 static VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV(
5375 VkPhysicalDevice physicalDevice,
5376 uint32_t deviceRelativeId,
5377 VkDisplayKHR* pDisplay)
5379 //Not a CREATE or DESTROY function
5382 #endif /* VK_USE_PLATFORM_WIN32_KHR */
5384 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
5386 static VKAPI_ATTR VkResult VKAPI_CALL CreateDirectFBSurfaceEXT(
5387 VkInstance instance,
5388 const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo,
5389 const VkAllocationCallbacks* pAllocator,
5390 VkSurfaceKHR* pSurface)
5392 unique_lock_t lock(global_lock);
5393 *pSurface = (VkSurfaceKHR)global_unique_handle++;
5397 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceDirectFBPresentationSupportEXT(
5398 VkPhysicalDevice physicalDevice,
5399 uint32_t queueFamilyIndex,
5402 //Not a CREATE or DESTROY function
5405 #endif /* VK_USE_PLATFORM_DIRECTFB_EXT */
5409 static VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT(
5410 VkCommandBuffer commandBuffer,
5411 uint32_t vertexBindingDescriptionCount,
5412 const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions,
5413 uint32_t vertexAttributeDescriptionCount,
5414 const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions)
5416 //Not a CREATE or DESTROY function
5422 #ifdef VK_USE_PLATFORM_FUCHSIA
5424 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA(
5426 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
5427 zx_handle_t* pZirconHandle)
5429 //Not a CREATE or DESTROY function
5433 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA(
5435 VkExternalMemoryHandleTypeFlagBits handleType,
5436 zx_handle_t zirconHandle,
5437 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties)
5439 //Not a CREATE or DESTROY function
5442 #endif /* VK_USE_PLATFORM_FUCHSIA */
5444 #ifdef VK_USE_PLATFORM_FUCHSIA
5446 static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA(
5448 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo)
5450 //Not a CREATE or DESTROY function
5454 static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA(
5456 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
5457 zx_handle_t* pZirconHandle)
5459 //Not a CREATE or DESTROY function
5462 #endif /* VK_USE_PLATFORM_FUCHSIA */
5464 #ifdef VK_USE_PLATFORM_FUCHSIA
5466 static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA(
5468 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo,
5469 const VkAllocationCallbacks* pAllocator,
5470 VkBufferCollectionFUCHSIA* pCollection)
5472 unique_lock_t lock(global_lock);
5473 *pCollection = (VkBufferCollectionFUCHSIA)global_unique_handle++;
5477 static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA(
5479 VkBufferCollectionFUCHSIA collection,
5480 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo)
5482 //Not a CREATE or DESTROY function
5486 static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSIA(
5488 VkBufferCollectionFUCHSIA collection,
5489 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo)
5491 //Not a CREATE or DESTROY function
5495 static VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA(
5497 VkBufferCollectionFUCHSIA collection,
5498 const VkAllocationCallbacks* pAllocator)
5503 static VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA(
5505 VkBufferCollectionFUCHSIA collection,
5506 VkBufferCollectionPropertiesFUCHSIA* pProperties)
5508 //Not a CREATE or DESTROY function
5511 #endif /* VK_USE_PLATFORM_FUCHSIA */
5514 static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
5516 VkRenderPass renderpass,
5517 VkExtent2D* pMaxWorkgroupSize)
5519 //Not a CREATE or DESTROY function
5523 static VKAPI_ATTR void VKAPI_CALL CmdSubpassShadingHUAWEI(
5524 VkCommandBuffer commandBuffer)
5526 //Not a CREATE or DESTROY function
5530 static VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI(
5531 VkCommandBuffer commandBuffer,
5532 VkImageView imageView,
5533 VkImageLayout imageLayout)
5535 //Not a CREATE or DESTROY function
5539 static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV(
5541 const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo,
5542 VkRemoteAddressNV* pAddress)
5544 //Not a CREATE or DESTROY function
5549 static VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT(
5550 VkCommandBuffer commandBuffer,
5551 uint32_t patchControlPoints)
5553 //Not a CREATE or DESTROY function
5556 static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnableEXT(
5557 VkCommandBuffer commandBuffer,
5558 VkBool32 rasterizerDiscardEnable)
5560 //Not a CREATE or DESTROY function
5563 static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnableEXT(
5564 VkCommandBuffer commandBuffer,
5565 VkBool32 depthBiasEnable)
5567 //Not a CREATE or DESTROY function
5570 static VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT(
5571 VkCommandBuffer commandBuffer,
5574 //Not a CREATE or DESTROY function
5577 static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnableEXT(
5578 VkCommandBuffer commandBuffer,
5579 VkBool32 primitiveRestartEnable)
5581 //Not a CREATE or DESTROY function
5584 #ifdef VK_USE_PLATFORM_SCREEN_QNX
5586 static VKAPI_ATTR VkResult VKAPI_CALL CreateScreenSurfaceQNX(
5587 VkInstance instance,
5588 const VkScreenSurfaceCreateInfoQNX* pCreateInfo,
5589 const VkAllocationCallbacks* pAllocator,
5590 VkSurfaceKHR* pSurface)
5592 unique_lock_t lock(global_lock);
5593 *pSurface = (VkSurfaceKHR)global_unique_handle++;
5597 static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceScreenPresentationSupportQNX(
5598 VkPhysicalDevice physicalDevice,
5599 uint32_t queueFamilyIndex,
5600 struct _screen_window* window)
5602 //Not a CREATE or DESTROY function
5605 #endif /* VK_USE_PLATFORM_SCREEN_QNX */
5608 static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteEnableEXT(
5609 VkCommandBuffer commandBuffer,
5610 uint32_t attachmentCount,
5611 const VkBool32* pColorWriteEnables)
5613 //Not a CREATE or DESTROY function
5619 static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT(
5620 VkCommandBuffer commandBuffer,
5622 const VkMultiDrawInfoEXT* pVertexInfo,
5623 uint32_t instanceCount,
5624 uint32_t firstInstance,
5627 //Not a CREATE or DESTROY function
5630 static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT(
5631 VkCommandBuffer commandBuffer,
5633 const VkMultiDrawIndexedInfoEXT* pIndexInfo,
5634 uint32_t instanceCount,
5635 uint32_t firstInstance,
5637 const int32_t* pVertexOffset)
5639 //Not a CREATE or DESTROY function
5645 static VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT(
5647 VkDeviceMemory memory,
5650 //Not a CREATE or DESTROY function
5657 static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(
5659 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
5660 const VkAllocationCallbacks* pAllocator,
5661 VkAccelerationStructureKHR* pAccelerationStructure)
5663 unique_lock_t lock(global_lock);
5664 *pAccelerationStructure = (VkAccelerationStructureKHR)global_unique_handle++;
5668 static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureKHR(
5670 VkAccelerationStructureKHR accelerationStructure,
5671 const VkAllocationCallbacks* pAllocator)
5676 static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresKHR(
5677 VkCommandBuffer commandBuffer,
5679 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
5680 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
5682 //Not a CREATE or DESTROY function
5685 static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresIndirectKHR(
5686 VkCommandBuffer commandBuffer,
5688 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
5689 const VkDeviceAddress* pIndirectDeviceAddresses,
5690 const uint32_t* pIndirectStrides,
5691 const uint32_t* const* ppMaxPrimitiveCounts)
5693 //Not a CREATE or DESTROY function
5696 static VKAPI_ATTR VkResult VKAPI_CALL BuildAccelerationStructuresKHR(
5698 VkDeferredOperationKHR deferredOperation,
5700 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
5701 const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos)
5703 //Not a CREATE or DESTROY function
5707 static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureKHR(
5709 VkDeferredOperationKHR deferredOperation,
5710 const VkCopyAccelerationStructureInfoKHR* pInfo)
5712 //Not a CREATE or DESTROY function
5716 static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureToMemoryKHR(
5718 VkDeferredOperationKHR deferredOperation,
5719 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
5721 //Not a CREATE or DESTROY function
5725 static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToAccelerationStructureKHR(
5727 VkDeferredOperationKHR deferredOperation,
5728 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
5730 //Not a CREATE or DESTROY function
5734 static VKAPI_ATTR VkResult VKAPI_CALL WriteAccelerationStructuresPropertiesKHR(
5736 uint32_t accelerationStructureCount,
5737 const VkAccelerationStructureKHR* pAccelerationStructures,
5738 VkQueryType queryType,
5743 //Not a CREATE or DESTROY function
5747 static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureKHR(
5748 VkCommandBuffer commandBuffer,
5749 const VkCopyAccelerationStructureInfoKHR* pInfo)
5751 //Not a CREATE or DESTROY function
5754 static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureToMemoryKHR(
5755 VkCommandBuffer commandBuffer,
5756 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo)
5758 //Not a CREATE or DESTROY function
5761 static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToAccelerationStructureKHR(
5762 VkCommandBuffer commandBuffer,
5763 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo)
5765 //Not a CREATE or DESTROY function
5768 static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddressKHR(
5770 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
5772 //Not a CREATE or DESTROY function
5776 static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR(
5777 VkCommandBuffer commandBuffer,
5778 uint32_t accelerationStructureCount,
5779 const VkAccelerationStructureKHR* pAccelerationStructures,
5780 VkQueryType queryType,
5781 VkQueryPool queryPool,
5782 uint32_t firstQuery)
5784 //Not a CREATE or DESTROY function
5787 static VKAPI_ATTR void VKAPI_CALL GetDeviceAccelerationStructureCompatibilityKHR(
5789 const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
5790 VkAccelerationStructureCompatibilityKHR* pCompatibility)
5792 //Not a CREATE or DESTROY function
5795 static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR(
5797 VkAccelerationStructureBuildTypeKHR buildType,
5798 const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
5799 const uint32_t* pMaxPrimitiveCounts,
5800 VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo)
5802 //Not a CREATE or DESTROY function
5806 static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR(
5807 VkCommandBuffer commandBuffer,
5808 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
5809 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
5810 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
5811 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
5816 //Not a CREATE or DESTROY function
5819 static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesKHR(
5821 VkDeferredOperationKHR deferredOperation,
5822 VkPipelineCache pipelineCache,
5823 uint32_t createInfoCount,
5824 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
5825 const VkAllocationCallbacks* pAllocator,
5826 VkPipeline* pPipelines)
5828 unique_lock_t lock(global_lock);
5829 for (uint32_t i = 0; i < createInfoCount; ++i) {
5830 pPipelines[i] = (VkPipeline)global_unique_handle++;
5835 static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingCaptureReplayShaderGroupHandlesKHR(
5837 VkPipeline pipeline,
5838 uint32_t firstGroup,
5839 uint32_t groupCount,
5843 //Not a CREATE or DESTROY function
5847 static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirectKHR(
5848 VkCommandBuffer commandBuffer,
5849 const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable,
5850 const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable,
5851 const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable,
5852 const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable,
5853 VkDeviceAddress indirectDeviceAddress)
5855 //Not a CREATE or DESTROY function
5858 static VKAPI_ATTR VkDeviceSize VKAPI_CALL GetRayTracingShaderGroupStackSizeKHR(
5860 VkPipeline pipeline,
5862 VkShaderGroupShaderKHR groupShader)
5864 //Not a CREATE or DESTROY function
5868 static VKAPI_ATTR void VKAPI_CALL CmdSetRayTracingPipelineStackSizeKHR(
5869 VkCommandBuffer commandBuffer,
5870 uint32_t pipelineStackSize)
5872 //Not a CREATE or DESTROY function
5878 static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName) {
5879 // TODO: This function should only care about physical device functions and return nullptr for other functions
5880 const auto &item = name_to_funcptr_map.find(funcName);
5881 if (item != name_to_funcptr_map.end()) {
5882 return reinterpret_cast<PFN_vkVoidFunction>(item->second);
5884 // Mock should intercept all functions so if we get here just return null
5888 } // namespace vkmock
5890 #if defined(__GNUC__) && __GNUC__ >= 4
5891 #define EXPORT __attribute__((visibility("default")))
5892 #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
5893 #define EXPORT __attribute__((visibility("default")))
5900 EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName) {
5901 if (!vkmock::negotiate_loader_icd_interface_called) {
5902 vkmock::loader_interface_version = 1;
5904 return vkmock::GetInstanceProcAddr(instance, pName);
5907 EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance instance, const char* pName) {
5908 return vkmock::GetPhysicalDeviceProcAddr(instance, pName);
5911 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion) {
5912 vkmock::negotiate_loader_icd_interface_called = true;
5913 vkmock::loader_interface_version = *pSupportedVersion;
5914 if (*pSupportedVersion > vkmock::SUPPORTED_LOADER_ICD_INTERFACE_VERSION) {
5915 *pSupportedVersion = vkmock::SUPPORTED_LOADER_ICD_INTERFACE_VERSION;
5921 EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
5922 VkInstance instance,
5923 VkSurfaceKHR surface,
5924 const VkAllocationCallbacks* pAllocator)
5926 vkmock::DestroySurfaceKHR(instance, surface, pAllocator);
5929 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
5930 VkPhysicalDevice physicalDevice,
5931 uint32_t queueFamilyIndex,
5932 VkSurfaceKHR surface,
5933 VkBool32* pSupported)
5935 return vkmock::GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
5938 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
5939 VkPhysicalDevice physicalDevice,
5940 VkSurfaceKHR surface,
5941 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
5943 return vkmock::GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
5946 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
5947 VkPhysicalDevice physicalDevice,
5948 VkSurfaceKHR surface,
5949 uint32_t* pSurfaceFormatCount,
5950 VkSurfaceFormatKHR* pSurfaceFormats)
5952 return vkmock::GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
5955 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
5956 VkPhysicalDevice physicalDevice,
5957 VkSurfaceKHR surface,
5958 uint32_t* pPresentModeCount,
5959 VkPresentModeKHR* pPresentModes)
5961 return vkmock::GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
5964 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
5965 VkInstance instance,
5966 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
5967 const VkAllocationCallbacks* pAllocator,
5968 VkSurfaceKHR* pSurface)
5970 return vkmock::CreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
5973 #ifdef VK_USE_PLATFORM_XLIB_KHR
5975 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
5976 VkInstance instance,
5977 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
5978 const VkAllocationCallbacks* pAllocator,
5979 VkSurfaceKHR* pSurface)
5981 return vkmock::CreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
5983 #endif /* VK_USE_PLATFORM_XLIB_KHR */
5985 #ifdef VK_USE_PLATFORM_XCB_KHR
5987 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
5988 VkInstance instance,
5989 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
5990 const VkAllocationCallbacks* pAllocator,
5991 VkSurfaceKHR* pSurface)
5993 return vkmock::CreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
5995 #endif /* VK_USE_PLATFORM_XCB_KHR */
5997 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
5999 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
6000 VkInstance instance,
6001 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
6002 const VkAllocationCallbacks* pAllocator,
6003 VkSurfaceKHR* pSurface)
6005 return vkmock::CreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
6007 #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
6009 #ifdef VK_USE_PLATFORM_ANDROID_KHR
6011 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
6012 VkInstance instance,
6013 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
6014 const VkAllocationCallbacks* pAllocator,
6015 VkSurfaceKHR* pSurface)
6017 return vkmock::CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
6019 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
6021 #ifdef VK_USE_PLATFORM_WIN32_KHR
6023 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
6024 VkInstance instance,
6025 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
6026 const VkAllocationCallbacks* pAllocator,
6027 VkSurfaceKHR* pSurface)
6029 return vkmock::CreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
6031 #endif /* VK_USE_PLATFORM_WIN32_KHR */
6033 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
6035 VkSurfaceKHR surface,
6036 VkDeviceGroupPresentModeFlagsKHR* pModes)
6038 return vkmock::GetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
6041 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
6042 VkPhysicalDevice physicalDevice,
6043 VkSurfaceKHR surface,
6044 uint32_t* pRectCount,
6047 return vkmock::GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
6050 #ifdef VK_USE_PLATFORM_VI_NN
6052 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN(
6053 VkInstance instance,
6054 const VkViSurfaceCreateInfoNN* pCreateInfo,
6055 const VkAllocationCallbacks* pAllocator,
6056 VkSurfaceKHR* pSurface)
6058 return vkmock::CreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
6060 #endif /* VK_USE_PLATFORM_VI_NN */
6062 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
6063 VkPhysicalDevice physicalDevice,
6064 VkSurfaceKHR surface,
6065 VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
6067 return vkmock::GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
6070 #ifdef VK_USE_PLATFORM_IOS_MVK
6072 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK(
6073 VkInstance instance,
6074 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
6075 const VkAllocationCallbacks* pAllocator,
6076 VkSurfaceKHR* pSurface)
6078 return vkmock::CreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
6080 #endif /* VK_USE_PLATFORM_IOS_MVK */
6082 #ifdef VK_USE_PLATFORM_MACOS_MVK
6084 EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(
6085 VkInstance instance,
6086 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
6087 const VkAllocationCallbacks* pAllocator,
6088 VkSurfaceKHR* pSurface)
6090 return vkmock::CreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
6092 #endif /* VK_USE_PLATFORM_MACOS_MVK */