Vulkan: Fix sampler object leak

This commit is contained in:
goeiecool9999 2024-11-04 19:54:04 +01:00
parent df53971507
commit 721d0cebad
3 changed files with 10 additions and 4 deletions

View file

@ -128,6 +128,7 @@ public:
~VKRObjectTextureView() override;
VkImageView m_textureImageView{ VK_NULL_HANDLE };
VkSampler m_textureViewSampler{ VK_NULL_HANDLE };
VkSampler m_textureDefaultSampler[2] = { VK_NULL_HANDLE, VK_NULL_HANDLE }; // relict from LatteTextureViewVk, get rid of it eventually
};

View file

@ -3773,6 +3773,8 @@ VKRObjectTextureView::VKRObjectTextureView(VKRObjectTexture* tex, VkImageView vi
VKRObjectTextureView::~VKRObjectTextureView()
{
auto logicalDevice = VulkanRenderer::GetInstance()->GetLogicalDevice();
if (m_textureViewSampler != VK_NULL_HANDLE)
vkDestroySampler(logicalDevice, m_textureViewSampler, nullptr);
if (m_textureDefaultSampler[0] != VK_NULL_HANDLE)
vkDestroySampler(logicalDevice, m_textureDefaultSampler[0], nullptr);
if (m_textureDefaultSampler[1] != VK_NULL_HANDLE)

View file

@ -727,7 +727,6 @@ VkDescriptorSetInfo* VulkanRenderer::draw_getOrCreateDescriptorSet(PipelineInfo*
VkSamplerCustomBorderColorCreateInfoEXT samplerCustomBorderColor{};
VkSampler sampler;
VkSamplerCreateInfo samplerInfo{};
samplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
@ -900,9 +899,13 @@ VkDescriptorSetInfo* VulkanRenderer::draw_getOrCreateDescriptorSet(PipelineInfo*
}
}
if (vkCreateSampler(m_logicalDevice, &samplerInfo, nullptr, &sampler) != VK_SUCCESS)
UnrecoverableError("Failed to create texture sampler");
info.sampler = sampler;
if(imageViewObj->m_textureViewSampler == VK_NULL_HANDLE)
{
if (vkCreateSampler(m_logicalDevice, &samplerInfo, nullptr, &imageViewObj->m_textureViewSampler) != VK_SUCCESS)
UnrecoverableError("Failed to create texture sampler");
}
info.sampler = imageViewObj->m_textureViewSampler;
textureArray.emplace_back(info);
}