mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Examples: Vulkan: Fixed handling of VkSurfaceCapabilitiesKHR::maxImageCount = 0 case. Tweaked present mode selections.
This commit is contained in:
		| @@ -107,6 +107,7 @@ Other Changes: | |||||||
|  - Examples: OpenGL2: Disabling/restoring GL_LIGHTING and GL_COLOR_MATERIAL to increase compatibility with legacy OpenGL applications. (#1996) |  - Examples: OpenGL2: Disabling/restoring GL_LIGHTING and GL_COLOR_MATERIAL to increase compatibility with legacy OpenGL applications. (#1996) | ||||||
|  - Examples: DirectX10, DirectX11: Fixed unreleased resources in Init and Shutdown functions. (#1944) |  - Examples: DirectX10, DirectX11: Fixed unreleased resources in Init and Shutdown functions. (#1944) | ||||||
|  - Examples: DirectX11: Querying for IDXGIFactory instead of IDXGIFactory1 to increase compatibility. (#1989) [@matt77hias] |  - Examples: DirectX11: Querying for IDXGIFactory instead of IDXGIFactory1 to increase compatibility. (#1989) [@matt77hias] | ||||||
|  |  - Examples: Vulkan: Fixed handling of VkSurfaceCapabilitiesKHR::maxImageCount = 0 case. Tweaked present mode selections.  | ||||||
|  - Examples: Win32, Glfw, SDL: Added support for the ImGuiMouseCursor_Hand cursor. |  - Examples: Win32, Glfw, SDL: Added support for the ImGuiMouseCursor_Hand cursor. | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -196,11 +196,12 @@ static void SetupVulkanWindowData(ImGui_ImplVulkanH_WindowData* wd, VkSurfaceKHR | |||||||
|  |  | ||||||
|     // Get Present Mode |     // Get Present Mode | ||||||
| #ifdef IMGUI_UNLIMITED_FRAME_RATE | #ifdef IMGUI_UNLIMITED_FRAME_RATE | ||||||
|     VkPresentModeKHR present_mode = VK_PRESENT_MODE_MAILBOX_KHR;// VK_PRESENT_MODE_IMMEDIATE_KHR; |     VkPresentModeKHR present_modes[] = { VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_IMMEDIATE_KHR, VK_PRESENT_MODE_FIFO_KHR }; | ||||||
| #else | #else | ||||||
|     VkPresentModeKHR present_mode = VK_PRESENT_MODE_FIFO_KHR; |     VkPresentModeKHR present_modes[] = { VK_PRESENT_MODE_FIFO_KHR }; | ||||||
| #endif | #endif | ||||||
|     wd->PresentMode = ImGui_ImplVulkanH_SelectPresentMode(g_PhysicalDevice, wd->Surface, &present_mode, 1); |     wd->PresentMode = ImGui_ImplVulkanH_SelectPresentMode(g_PhysicalDevice, wd->Surface, &present_modes[0], IM_ARRAYSIZE(present_modes)); | ||||||
|  |     //printf("[vulkan] Selected PresentMode = %d\n", wd->PresentMode); | ||||||
|  |  | ||||||
|     // Create SwapChain, RenderPass, Framebuffer, etc. |     // Create SwapChain, RenderPass, Framebuffer, etc. | ||||||
|     ImGui_ImplVulkanH_CreateWindowDataCommandBuffers(g_PhysicalDevice, g_Device, g_QueueFamily, wd, g_Allocator); |     ImGui_ImplVulkanH_CreateWindowDataCommandBuffers(g_PhysicalDevice, g_Device, g_QueueFamily, wd, g_Allocator); | ||||||
|   | |||||||
| @@ -13,6 +13,7 @@ | |||||||
|  |  | ||||||
| // CHANGELOG | // CHANGELOG | ||||||
| // (minor and older changes stripped away, please see git history for details) | // (minor and older changes stripped away, please see git history for details) | ||||||
|  | //  2018-08-25: Vulkan: Fixed mishandled VkSurfaceCapabilitiesKHR::maxImageCount=0 case. | ||||||
| //  2018-06-22: Inverted the parameters to ImGui_ImplVulkan_RenderDrawData() to be consistent with other bindings. | //  2018-06-22: Inverted the parameters to ImGui_ImplVulkan_RenderDrawData() to be consistent with other bindings. | ||||||
| //  2018-06-08: Misc: Extracted imgui_impl_vulkan.cpp/.h away from the old combined GLFW+Vulkan example. | //  2018-06-08: Misc: Extracted imgui_impl_vulkan.cpp/.h away from the old combined GLFW+Vulkan example. | ||||||
| //  2018-06-08: Vulkan: Use draw_data->DisplayPos and draw_data->DisplaySize to setup projection matrix and clipping rectangle. | //  2018-06-08: Vulkan: Use draw_data->DisplayPos and draw_data->DisplaySize to setup projection matrix and clipping rectangle. | ||||||
| @@ -825,6 +826,9 @@ VkPresentModeKHR ImGui_ImplVulkanH_SelectPresentMode(VkPhysicalDevice physical_d | |||||||
|     ImVector<VkPresentModeKHR> avail_modes; |     ImVector<VkPresentModeKHR> avail_modes; | ||||||
|     avail_modes.resize((int)avail_count); |     avail_modes.resize((int)avail_count); | ||||||
|     vkGetPhysicalDeviceSurfacePresentModesKHR(physical_device, surface, &avail_count, avail_modes.Data); |     vkGetPhysicalDeviceSurfacePresentModesKHR(physical_device, surface, &avail_count, avail_modes.Data); | ||||||
|  |     //for (uint32_t avail_i = 0; avail_i < avail_count; avail_i++) | ||||||
|  |     //    printf("[vulkan] avail_modes[%d] = %d\n", avail_i, avail_modes[avail_i]); | ||||||
|  |  | ||||||
|     for (int request_i = 0; request_i < request_modes_count; request_i++) |     for (int request_i = 0; request_i < request_modes_count; request_i++) | ||||||
|         for (uint32_t avail_i = 0; avail_i < avail_count; avail_i++) |         for (uint32_t avail_i = 0; avail_i < avail_count; avail_i++) | ||||||
|             if (request_modes[request_i] == avail_modes[avail_i]) |             if (request_modes[request_i] == avail_modes[avail_i]) | ||||||
| @@ -934,9 +938,9 @@ void ImGui_ImplVulkanH_CreateWindowDataSwapChainAndFramebuffer(VkPhysicalDevice | |||||||
|         VkSurfaceCapabilitiesKHR cap; |         VkSurfaceCapabilitiesKHR cap; | ||||||
|         err = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physical_device, wd->Surface, &cap); |         err = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physical_device, wd->Surface, &cap); | ||||||
|         check_vk_result(err); |         check_vk_result(err); | ||||||
| 		if (info.minImageCount < cap.minImageCount) |         if (info.minImageCount < cap.minImageCount) | ||||||
| 			info.minImageCount = cap.minImageCount; | 			info.minImageCount = cap.minImageCount; | ||||||
| 		else if (info.minImageCount > cap.maxImageCount) | 		else if (cap.maxImageCount != 0 && info.minImageCount > cap.maxImageCount) | ||||||
| 			info.minImageCount = cap.maxImageCount; | 			info.minImageCount = cap.maxImageCount; | ||||||
|  |  | ||||||
|         if (cap.currentExtent.width == 0xffffffff) |         if (cap.currentExtent.width == 0xffffffff) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user