Loading vulkan/api/vulkan.api +14 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,9 @@ define NULL_HANDLE 0 @extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1 @extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands" @extension("VK_KHR_swapchain_front_buffered") define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_SPEC_VERSION 2 @extension("VK_KHR_swapchain_front_buffered") define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_EXTENSION_NAME "VK_KHR_swapchain_front_buffered" ///////////// Loading Loading @@ -924,6 +927,10 @@ enum VkPresentModeKHR { VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001, VK_PRESENT_MODE_FIFO_KHR = 0x00000002, VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003, //@extension("VK_KHR_swapchain_front_buffered") VK_PRESENT_MODE_FRONT_BUFFERED_DEMAND_REFRESH_KHR = 1000111000, //@extension("VK_KHR_swapchain_front_buffered") VK_PRESENT_MODE_FRONT_BUFFERED_CONTINUOUS_REFRESH_KHR = 1000111001, } @extension("VK_KHR_surface") Loading Loading @@ -6109,6 +6116,13 @@ cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkDeviceGeneratedCommandsLimitsNVX* pLimits) { } @extension("VK_KHR_swapchain_front_buffered") cmd VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain) { return ? } //////////////// // Validation // Loading vulkan/include/vulkan/vulkan.h +14 −0 Original line number Diff line number Diff line Loading @@ -3228,6 +3228,8 @@ typedef enum VkPresentModeKHR { VK_PRESENT_MODE_MAILBOX_KHR = 1, VK_PRESENT_MODE_FIFO_KHR = 2, VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, VK_PRESENT_MODE_FRONT_BUFFERED_DEMAND_REFRESH_KHR = 1000111000, VK_PRESENT_MODE_FRONT_BUFFERED_CONTINUOUS_REFRESH_KHR = 1000111001, VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR, VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR, VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1), Loading Loading @@ -3884,6 +3886,18 @@ typedef struct VkPresentRegionsKHR { const VkPresentRegionKHR* pRegions; } VkPresentRegionsKHR; #define VK_KHR_swapchain_front_buffered 1 #define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_SPEC_VERSION 2 #define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_EXTENSION_NAME "VK_KHR_swapchain_front_buffered" typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain); #endif #define VK_EXT_debug_report 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) Loading vulkan/libvulkan/code-generator.tmpl +1 −0 Original line number Diff line number Diff line Loading @@ -705,6 +705,7 @@ VK_KHR_incremental_present VK_KHR_surface VK_KHR_swapchain VK_GOOGLE_display_timing VK_KHR_swapchain_front_buffered {{end}} Loading vulkan/libvulkan/driver_gen.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,15 @@ VKAPI_ATTR VkResult checkedGetPastPresentationTimingGOOGLE(VkDevice device, VkSw } } VKAPI_ATTR VkResult checkedGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) { if (GetData(device).hook_extensions[ProcHook::KHR_swapchain_front_buffered]) { return GetSwapchainStatusKHR(device, swapchain); } else { Logger(device).Err(device, "VK_KHR_swapchain_front_buffered not enabled. vkGetSwapchainStatusKHR not executed."); return VK_SUCCESS; } } // clang-format on const ProcHook g_proc_hooks[] = { Loading Loading @@ -300,6 +309,13 @@ const ProcHook g_proc_hooks[] = { reinterpret_cast<PFN_vkVoidFunction>(GetSwapchainImagesKHR), reinterpret_cast<PFN_vkVoidFunction>(checkedGetSwapchainImagesKHR), }, { "vkGetSwapchainStatusKHR", ProcHook::DEVICE, ProcHook::KHR_swapchain_front_buffered, reinterpret_cast<PFN_vkVoidFunction>(GetSwapchainStatusKHR), reinterpret_cast<PFN_vkVoidFunction>(checkedGetSwapchainStatusKHR), }, { "vkQueuePresentKHR", ProcHook::DEVICE, Loading Loading @@ -338,6 +354,7 @@ ProcHook::Extension GetProcHookExtension(const char* name) { if (strcmp(name, "VK_KHR_surface") == 0) return ProcHook::KHR_surface; if (strcmp(name, "VK_KHR_swapchain") == 0) return ProcHook::KHR_swapchain; if (strcmp(name, "VK_GOOGLE_display_timing") == 0) return ProcHook::GOOGLE_display_timing; if (strcmp(name, "VK_KHR_swapchain_front_buffered") == 0) return ProcHook::KHR_swapchain_front_buffered; // clang-format on return ProcHook::EXTENSION_UNKNOWN; } Loading vulkan/libvulkan/driver_gen.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ struct ProcHook { KHR_surface, KHR_swapchain, GOOGLE_display_timing, KHR_swapchain_front_buffered, EXTENSION_CORE, // valid bit EXTENSION_COUNT, Loading Loading
vulkan/api/vulkan.api +14 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,9 @@ define NULL_HANDLE 0 @extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1 @extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands" @extension("VK_KHR_swapchain_front_buffered") define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_SPEC_VERSION 2 @extension("VK_KHR_swapchain_front_buffered") define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_EXTENSION_NAME "VK_KHR_swapchain_front_buffered" ///////////// Loading Loading @@ -924,6 +927,10 @@ enum VkPresentModeKHR { VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001, VK_PRESENT_MODE_FIFO_KHR = 0x00000002, VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003, //@extension("VK_KHR_swapchain_front_buffered") VK_PRESENT_MODE_FRONT_BUFFERED_DEMAND_REFRESH_KHR = 1000111000, //@extension("VK_KHR_swapchain_front_buffered") VK_PRESENT_MODE_FRONT_BUFFERED_CONTINUOUS_REFRESH_KHR = 1000111001, } @extension("VK_KHR_surface") Loading Loading @@ -6109,6 +6116,13 @@ cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( VkDeviceGeneratedCommandsLimitsNVX* pLimits) { } @extension("VK_KHR_swapchain_front_buffered") cmd VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain) { return ? } //////////////// // Validation // Loading
vulkan/include/vulkan/vulkan.h +14 −0 Original line number Diff line number Diff line Loading @@ -3228,6 +3228,8 @@ typedef enum VkPresentModeKHR { VK_PRESENT_MODE_MAILBOX_KHR = 1, VK_PRESENT_MODE_FIFO_KHR = 2, VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, VK_PRESENT_MODE_FRONT_BUFFERED_DEMAND_REFRESH_KHR = 1000111000, VK_PRESENT_MODE_FRONT_BUFFERED_CONTINUOUS_REFRESH_KHR = 1000111001, VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR, VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR, VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1), Loading Loading @@ -3884,6 +3886,18 @@ typedef struct VkPresentRegionsKHR { const VkPresentRegionKHR* pRegions; } VkPresentRegionsKHR; #define VK_KHR_swapchain_front_buffered 1 #define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_SPEC_VERSION 2 #define VK_KHR_SWAPCHAIN_FRONT_BUFFERED_EXTENSION_NAME "VK_KHR_swapchain_front_buffered" typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain); #endif #define VK_EXT_debug_report 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) Loading
vulkan/libvulkan/code-generator.tmpl +1 −0 Original line number Diff line number Diff line Loading @@ -705,6 +705,7 @@ VK_KHR_incremental_present VK_KHR_surface VK_KHR_swapchain VK_GOOGLE_display_timing VK_KHR_swapchain_front_buffered {{end}} Loading
vulkan/libvulkan/driver_gen.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,15 @@ VKAPI_ATTR VkResult checkedGetPastPresentationTimingGOOGLE(VkDevice device, VkSw } } VKAPI_ATTR VkResult checkedGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) { if (GetData(device).hook_extensions[ProcHook::KHR_swapchain_front_buffered]) { return GetSwapchainStatusKHR(device, swapchain); } else { Logger(device).Err(device, "VK_KHR_swapchain_front_buffered not enabled. vkGetSwapchainStatusKHR not executed."); return VK_SUCCESS; } } // clang-format on const ProcHook g_proc_hooks[] = { Loading Loading @@ -300,6 +309,13 @@ const ProcHook g_proc_hooks[] = { reinterpret_cast<PFN_vkVoidFunction>(GetSwapchainImagesKHR), reinterpret_cast<PFN_vkVoidFunction>(checkedGetSwapchainImagesKHR), }, { "vkGetSwapchainStatusKHR", ProcHook::DEVICE, ProcHook::KHR_swapchain_front_buffered, reinterpret_cast<PFN_vkVoidFunction>(GetSwapchainStatusKHR), reinterpret_cast<PFN_vkVoidFunction>(checkedGetSwapchainStatusKHR), }, { "vkQueuePresentKHR", ProcHook::DEVICE, Loading Loading @@ -338,6 +354,7 @@ ProcHook::Extension GetProcHookExtension(const char* name) { if (strcmp(name, "VK_KHR_surface") == 0) return ProcHook::KHR_surface; if (strcmp(name, "VK_KHR_swapchain") == 0) return ProcHook::KHR_swapchain; if (strcmp(name, "VK_GOOGLE_display_timing") == 0) return ProcHook::GOOGLE_display_timing; if (strcmp(name, "VK_KHR_swapchain_front_buffered") == 0) return ProcHook::KHR_swapchain_front_buffered; // clang-format on return ProcHook::EXTENSION_UNKNOWN; } Loading
vulkan/libvulkan/driver_gen.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ struct ProcHook { KHR_surface, KHR_swapchain, GOOGLE_display_timing, KHR_swapchain_front_buffered, EXTENSION_CORE, // valid bit EXTENSION_COUNT, Loading