mirror of
https://github.com/ocornut/imgui.git
synced 2024-12-18 02:26:06 +01:00
Backends: Vulkan: Remove duplicated and dead code in Vulkan backend (#6001)
Sampler, descriptor set layout and pipeline layout are created in exact same way directly in ImGui_ImplVulkan_CreateDeviceObjects(). The removed functions are local and only has call chain that starts in ImGui_ImplVulkan_CreateDeviceObjects(), so will always do early return.
This commit is contained in:
parent
328695bd47
commit
c9aef16066
@ -30,6 +30,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)
|
||||||
|
// 2023-01-02: Vulkan: Removed a bunch of duplicate code.
|
||||||
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
|
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
|
||||||
// 2022-10-04: Vulkan: Added experimental ImGui_ImplVulkan_RemoveTexture() for api symetry. (#914, #5738).
|
// 2022-10-04: Vulkan: Added experimental ImGui_ImplVulkan_RemoveTexture() for api symetry. (#914, #5738).
|
||||||
// 2022-01-20: Vulkan: Added support for ImTextureID as VkDescriptorSet. User need to call ImGui_ImplVulkan_AddTexture(). Building for 32-bit targets requires '#define ImTextureID ImU64'. (#914).
|
// 2022-01-20: Vulkan: Added support for ImTextureID as VkDescriptorSet. User need to call ImGui_ImplVulkan_AddTexture(). Building for 32-bit targets requires '#define ImTextureID ImU64'. (#914).
|
||||||
@ -739,72 +740,6 @@ static void ImGui_ImplVulkan_CreateShaderModules(VkDevice device, const VkAlloca
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ImGui_ImplVulkan_CreateFontSampler(VkDevice device, const VkAllocationCallbacks* allocator)
|
|
||||||
{
|
|
||||||
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
|
||||||
if (bd->FontSampler)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFlags_NoBakedLines' or 'style.AntiAliasedLinesUseTex = false' to allow point/nearest sampling.
|
|
||||||
VkSamplerCreateInfo info = {};
|
|
||||||
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
|
||||||
info.magFilter = VK_FILTER_LINEAR;
|
|
||||||
info.minFilter = VK_FILTER_LINEAR;
|
|
||||||
info.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
|
|
||||||
info.addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT;
|
|
||||||
info.addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT;
|
|
||||||
info.addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT;
|
|
||||||
info.minLod = -1000;
|
|
||||||
info.maxLod = 1000;
|
|
||||||
info.maxAnisotropy = 1.0f;
|
|
||||||
VkResult err = vkCreateSampler(device, &info, allocator, &bd->FontSampler);
|
|
||||||
check_vk_result(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ImGui_ImplVulkan_CreateDescriptorSetLayout(VkDevice device, const VkAllocationCallbacks* allocator)
|
|
||||||
{
|
|
||||||
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
|
||||||
if (bd->DescriptorSetLayout)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ImGui_ImplVulkan_CreateFontSampler(device, allocator);
|
|
||||||
VkSampler sampler[1] = { bd->FontSampler };
|
|
||||||
VkDescriptorSetLayoutBinding binding[1] = {};
|
|
||||||
binding[0].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
|
||||||
binding[0].descriptorCount = 1;
|
|
||||||
binding[0].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
|
||||||
binding[0].pImmutableSamplers = sampler;
|
|
||||||
VkDescriptorSetLayoutCreateInfo info = {};
|
|
||||||
info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
|
||||||
info.bindingCount = 1;
|
|
||||||
info.pBindings = binding;
|
|
||||||
VkResult err = vkCreateDescriptorSetLayout(device, &info, allocator, &bd->DescriptorSetLayout);
|
|
||||||
check_vk_result(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ImGui_ImplVulkan_CreatePipelineLayout(VkDevice device, const VkAllocationCallbacks* allocator)
|
|
||||||
{
|
|
||||||
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
|
||||||
if (bd->PipelineLayout)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Constants: we are using 'vec2 offset' and 'vec2 scale' instead of a full 3d projection matrix
|
|
||||||
ImGui_ImplVulkan_CreateDescriptorSetLayout(device, allocator);
|
|
||||||
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) * 4;
|
|
||||||
VkDescriptorSetLayout set_layout[1] = { bd->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 = 1;
|
|
||||||
layout_info.pPushConstantRanges = push_constants;
|
|
||||||
VkResult err = vkCreatePipelineLayout(device, &layout_info, allocator, &bd->PipelineLayout);
|
|
||||||
check_vk_result(err);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ImGui_ImplVulkan_CreatePipeline(VkDevice device, const VkAllocationCallbacks* allocator, VkPipelineCache pipelineCache, VkRenderPass renderPass, VkSampleCountFlagBits MSAASamples, VkPipeline* pipeline, uint32_t subpass)
|
static void ImGui_ImplVulkan_CreatePipeline(VkDevice device, const VkAllocationCallbacks* allocator, VkPipelineCache pipelineCache, VkRenderPass renderPass, VkSampleCountFlagBits MSAASamples, VkPipeline* pipeline, uint32_t subpass)
|
||||||
{
|
{
|
||||||
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
||||||
@ -889,8 +824,6 @@ static void ImGui_ImplVulkan_CreatePipeline(VkDevice device, const VkAllocationC
|
|||||||
dynamic_state.dynamicStateCount = (uint32_t)IM_ARRAYSIZE(dynamic_states);
|
dynamic_state.dynamicStateCount = (uint32_t)IM_ARRAYSIZE(dynamic_states);
|
||||||
dynamic_state.pDynamicStates = dynamic_states;
|
dynamic_state.pDynamicStates = dynamic_states;
|
||||||
|
|
||||||
ImGui_ImplVulkan_CreatePipelineLayout(device, allocator);
|
|
||||||
|
|
||||||
VkGraphicsPipelineCreateInfo info = {};
|
VkGraphicsPipelineCreateInfo info = {};
|
||||||
info.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
|
info.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO;
|
||||||
info.flags = bd->PipelineCreateFlags;
|
info.flags = bd->PipelineCreateFlags;
|
||||||
@ -919,6 +852,7 @@ bool ImGui_ImplVulkan_CreateDeviceObjects()
|
|||||||
|
|
||||||
if (!bd->FontSampler)
|
if (!bd->FontSampler)
|
||||||
{
|
{
|
||||||
|
// Bilinear sampling is required by default. Set 'io.Fonts->Flags |= ImFontAtlasFlags_NoBakedLines' or 'style.AntiAliasedLinesUseTex = false' to allow point/nearest sampling.
|
||||||
VkSamplerCreateInfo info = {};
|
VkSamplerCreateInfo info = {};
|
||||||
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
||||||
info.magFilter = VK_FILTER_LINEAR;
|
info.magFilter = VK_FILTER_LINEAR;
|
||||||
|
Loading…
Reference in New Issue
Block a user