From 3234f81cb17a2dc0b8d63bf4ae8a610f93f9a1ce Mon Sep 17 00:00:00 2001 From: Marcell Kiss Date: Sat, 20 Aug 2016 13:08:34 +0200 Subject: [PATCH] maxImageCount may be 0; add missing sType; change to 1 push constant range --- examples/vulkan_example/imgui_impl_glfw_vulkan.cpp | 12 +++++------- examples/vulkan_example/main.cpp | 9 ++++++++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/examples/vulkan_example/imgui_impl_glfw_vulkan.cpp b/examples/vulkan_example/imgui_impl_glfw_vulkan.cpp index 33d8e997..fa17959f 100644 --- a/examples/vulkan_example/imgui_impl_glfw_vulkan.cpp +++ b/examples/vulkan_example/imgui_impl_glfw_vulkan.cpp @@ -661,19 +661,16 @@ bool ImGui_ImplGlfwVulkan_CreateDeviceObjects() if (!g_PipelineLayout) { - VkPushConstantRange push_constants[2] = {}; + VkPushConstantRange push_constants[1] = {}; push_constants[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; push_constants[0].offset = sizeof(float) * 0; - push_constants[0].size = sizeof(float) * 2; - push_constants[1].stageFlags = VK_SHADER_STAGE_VERTEX_BIT; - push_constants[1].offset = sizeof(float) * 2; - push_constants[1].size = sizeof(float) * 2; + push_constants[0].size = sizeof(float) * 4; VkDescriptorSetLayout set_layout[1] = {g_DescriptorSetLayout}; VkPipelineLayoutCreateInfo layout_info = {}; layout_info.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; layout_info.setLayoutCount = 1; layout_info.pSetLayouts = set_layout; - layout_info.pushConstantRangeCount = 2; + layout_info.pushConstantRangeCount = 1; layout_info.pPushConstantRanges = push_constants; err = vkCreatePipelineLayout(g_Device, &layout_info, g_Allocator, &g_PipelineLayout); ImGui_ImplGlfwVulkan_VkResult(err); @@ -750,7 +747,8 @@ bool ImGui_ImplGlfwVulkan_CreateDeviceObjects() VkDynamicState dynamic_states[2] = { VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR }; VkPipelineDynamicStateCreateInfo dynamic_state = {}; - dynamic_state.dynamicStateCount = 2; + dynamic_state.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamic_state.dynamicStateCount = 2; dynamic_state.pDynamicStates = dynamic_states; VkGraphicsPipelineCreateInfo info = {}; diff --git a/examples/vulkan_example/main.cpp b/examples/vulkan_example/main.cpp index 130fd870..040ff241 100644 --- a/examples/vulkan_example/main.cpp +++ b/examples/vulkan_example/main.cpp @@ -88,7 +88,14 @@ static void resize_vulkan(GLFWwindow* /*window*/, int w, int h) VkSurfaceCapabilitiesKHR cap; err = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(g_Gpu, g_Surface, &cap); check_vk_result(err); - info.minImageCount = (cap.minImageCount + 2 < cap.maxImageCount) ? (cap.minImageCount + 2) : cap.maxImageCount; + if (cap.maxImageCount > 0) + { + info.minImageCount = (cap.minImageCount + 2 < cap.maxImageCount) ? (cap.minImageCount + 2) : cap.maxImageCount; + } + else + { + info.minImageCount = cap.minImageCount + 2; + } if (cap.currentExtent.width == 0xffffffff) { fb_width = w;