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;
|
~VKRObjectTextureView() override;
|
||||||
|
|
||||||
VkImageView m_textureImageView{ VK_NULL_HANDLE };
|
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
|
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()
|
VKRObjectTextureView::~VKRObjectTextureView()
|
||||||
{
|
{
|
||||||
auto logicalDevice = VulkanRenderer::GetInstance()->GetLogicalDevice();
|
auto logicalDevice = VulkanRenderer::GetInstance()->GetLogicalDevice();
|
||||||
|
if (m_textureViewSampler != VK_NULL_HANDLE)
|
||||||
|
vkDestroySampler(logicalDevice, m_textureViewSampler, nullptr);
|
||||||
if (m_textureDefaultSampler[0] != VK_NULL_HANDLE)
|
if (m_textureDefaultSampler[0] != VK_NULL_HANDLE)
|
||||||
vkDestroySampler(logicalDevice, m_textureDefaultSampler[0], nullptr);
|
vkDestroySampler(logicalDevice, m_textureDefaultSampler[0], nullptr);
|
||||||
if (m_textureDefaultSampler[1] != VK_NULL_HANDLE)
|
if (m_textureDefaultSampler[1] != VK_NULL_HANDLE)
|
||||||
|
|
|
@ -727,7 +727,6 @@ VkDescriptorSetInfo* VulkanRenderer::draw_getOrCreateDescriptorSet(PipelineInfo*
|
||||||
|
|
||||||
VkSamplerCustomBorderColorCreateInfoEXT samplerCustomBorderColor{};
|
VkSamplerCustomBorderColorCreateInfoEXT samplerCustomBorderColor{};
|
||||||
|
|
||||||
VkSampler sampler;
|
|
||||||
VkSamplerCreateInfo samplerInfo{};
|
VkSamplerCreateInfo samplerInfo{};
|
||||||
samplerInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
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)
|
||||||
UnrecoverableError("Failed to create texture sampler");
|
{
|
||||||
info.sampler = sampler;
|
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);
|
textureArray.emplace_back(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue