mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-07 23:41:18 +12:00
Vulkan: Fix sampler object leak
This commit is contained in:
parent
df53971507
commit
721d0cebad
3 changed files with 10 additions and 4 deletions
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
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 = sampler;
|
||||
}
|
||||
|
||||
info.sampler = imageViewObj->m_textureViewSampler;
|
||||
textureArray.emplace_back(info);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue