@@ -959,6 +959,12 @@ VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct lo
959959 table->GetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)gdpa(dev, "vkGetQueueCheckpointDataNV");
960960 table->GetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)gdpa(dev, "vkGetQueueCheckpointData2NV");
961961
962+ // ---- VK_EXT_present_timing extension commands
963+ table->SetSwapchainPresentTimingQueueSizeEXT = (PFN_vkSetSwapchainPresentTimingQueueSizeEXT)gdpa(dev, "vkSetSwapchainPresentTimingQueueSizeEXT");
964+ table->GetSwapchainTimingPropertiesEXT = (PFN_vkGetSwapchainTimingPropertiesEXT)gdpa(dev, "vkGetSwapchainTimingPropertiesEXT");
965+ table->GetSwapchainTimeDomainPropertiesEXT = (PFN_vkGetSwapchainTimeDomainPropertiesEXT)gdpa(dev, "vkGetSwapchainTimeDomainPropertiesEXT");
966+ table->GetPastPresentationTimingEXT = (PFN_vkGetPastPresentationTimingEXT)gdpa(dev, "vkGetPastPresentationTimingEXT");
967+
962968 // ---- VK_INTEL_performance_query extension commands
963969 table->InitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)gdpa(dev, "vkInitializePerformanceApiINTEL");
964970 table->UninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)gdpa(dev, "vkUninitializePerformanceApiINTEL");
@@ -2957,6 +2963,12 @@ VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDis
29572963 if (!strcmp(name, "GetQueueCheckpointDataNV")) return (void *)table->GetQueueCheckpointDataNV;
29582964 if (!strcmp(name, "GetQueueCheckpointData2NV")) return (void *)table->GetQueueCheckpointData2NV;
29592965
2966+ // ---- VK_EXT_present_timing extension commands
2967+ if (!strcmp(name, "SetSwapchainPresentTimingQueueSizeEXT")) return (void *)table->SetSwapchainPresentTimingQueueSizeEXT;
2968+ if (!strcmp(name, "GetSwapchainTimingPropertiesEXT")) return (void *)table->GetSwapchainTimingPropertiesEXT;
2969+ if (!strcmp(name, "GetSwapchainTimeDomainPropertiesEXT")) return (void *)table->GetSwapchainTimeDomainPropertiesEXT;
2970+ if (!strcmp(name, "GetPastPresentationTimingEXT")) return (void *)table->GetPastPresentationTimingEXT;
2971+
29602972 // ---- VK_INTEL_performance_query extension commands
29612973 if (!strcmp(name, "InitializePerformanceApiINTEL")) return (void *)table->InitializePerformanceApiINTEL;
29622974 if (!strcmp(name, "UninitializePerformanceApiINTEL")) return (void *)table->UninitializePerformanceApiINTEL;
@@ -7345,6 +7357,67 @@ VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV(
73457357}
73467358
73477359
7360+ // ---- VK_EXT_present_timing extension trampoline/terminators
7361+
7362+ VKAPI_ATTR VkResult VKAPI_CALL SetSwapchainPresentTimingQueueSizeEXT(
7363+ VkDevice device,
7364+ VkSwapchainKHR swapchain,
7365+ uint32_t size) {
7366+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7367+ if (NULL == disp) {
7368+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7369+ "vkSetSwapchainPresentTimingQueueSizeEXT: Invalid device "
7370+ "[VUID-vkSetSwapchainPresentTimingQueueSizeEXT-device-parameter]");
7371+ abort(); /* Intentionally fail so user can correct issue. */
7372+ }
7373+ return disp->SetSwapchainPresentTimingQueueSizeEXT(device, swapchain, size);
7374+ }
7375+
7376+ VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainTimingPropertiesEXT(
7377+ VkDevice device,
7378+ VkSwapchainKHR swapchain,
7379+ VkSwapchainTimingPropertiesEXT* pSwapchainTimingProperties,
7380+ uint64_t* pSwapchainTimingPropertiesCounter) {
7381+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7382+ if (NULL == disp) {
7383+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7384+ "vkGetSwapchainTimingPropertiesEXT: Invalid device "
7385+ "[VUID-vkGetSwapchainTimingPropertiesEXT-device-parameter]");
7386+ abort(); /* Intentionally fail so user can correct issue. */
7387+ }
7388+ return disp->GetSwapchainTimingPropertiesEXT(device, swapchain, pSwapchainTimingProperties, pSwapchainTimingPropertiesCounter);
7389+ }
7390+
7391+ VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainTimeDomainPropertiesEXT(
7392+ VkDevice device,
7393+ VkSwapchainKHR swapchain,
7394+ VkSwapchainTimeDomainPropertiesEXT* pSwapchainTimeDomainProperties,
7395+ uint64_t* pTimeDomainsCounter) {
7396+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7397+ if (NULL == disp) {
7398+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7399+ "vkGetSwapchainTimeDomainPropertiesEXT: Invalid device "
7400+ "[VUID-vkGetSwapchainTimeDomainPropertiesEXT-device-parameter]");
7401+ abort(); /* Intentionally fail so user can correct issue. */
7402+ }
7403+ return disp->GetSwapchainTimeDomainPropertiesEXT(device, swapchain, pSwapchainTimeDomainProperties, pTimeDomainsCounter);
7404+ }
7405+
7406+ VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingEXT(
7407+ VkDevice device,
7408+ const VkPastPresentationTimingInfoEXT* pPastPresentationTimingInfo,
7409+ VkPastPresentationTimingPropertiesEXT* pPastPresentationTimingProperties) {
7410+ const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7411+ if (NULL == disp) {
7412+ loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7413+ "vkGetPastPresentationTimingEXT: Invalid device "
7414+ "[VUID-vkGetPastPresentationTimingEXT-device-parameter]");
7415+ abort(); /* Intentionally fail so user can correct issue. */
7416+ }
7417+ return disp->GetPastPresentationTimingEXT(device, pPastPresentationTimingInfo, pPastPresentationTimingProperties);
7418+ }
7419+
7420+
73487421// ---- VK_INTEL_performance_query extension trampoline/terminators
73497422
73507423VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL(
@@ -12623,6 +12696,24 @@ bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *na
1262312696 return true;
1262412697 }
1262512698
12699+ // ---- VK_EXT_present_timing extension commands
12700+ if (!strcmp("vkSetSwapchainPresentTimingQueueSizeEXT", name)) {
12701+ *addr = (void *)SetSwapchainPresentTimingQueueSizeEXT;
12702+ return true;
12703+ }
12704+ if (!strcmp("vkGetSwapchainTimingPropertiesEXT", name)) {
12705+ *addr = (void *)GetSwapchainTimingPropertiesEXT;
12706+ return true;
12707+ }
12708+ if (!strcmp("vkGetSwapchainTimeDomainPropertiesEXT", name)) {
12709+ *addr = (void *)GetSwapchainTimeDomainPropertiesEXT;
12710+ return true;
12711+ }
12712+ if (!strcmp("vkGetPastPresentationTimingEXT", name)) {
12713+ *addr = (void *)GetPastPresentationTimingEXT;
12714+ return true;
12715+ }
12716+
1262612717 // ---- VK_INTEL_performance_query extension commands
1262712718 if (!strcmp("vkInitializePerformanceApiINTEL", name)) {
1262812719 *addr = (void *)InitializePerformanceApiINTEL;
0 commit comments