| 4949 | } |
| 4950 | |
| 4951 | void VulkanDestroyResources(HContext _context) |
| 4952 | { |
| 4953 | VulkanContext* context = (VulkanContext*)_context; |
| 4954 | VkDevice vk_device = context->m_LogicalDevice.m_Device; |
| 4955 | |
| 4956 | context->m_PipelineCache.Iterate(DestroyPipelineCacheCb, context); |
| 4957 | if (context->m_VkPipelineCache != VK_NULL_HANDLE) |
| 4958 | { |
| 4959 | vkDestroyPipelineCache(vk_device, context->m_VkPipelineCache, 0); |
| 4960 | context->m_VkPipelineCache = VK_NULL_HANDLE; |
| 4961 | } |
| 4962 | |
| 4963 | DestroyDeviceBuffer(vk_device, &context->m_MainTextureDepthStencil.m_DeviceBuffer.m_Handle); |
| 4964 | DestroyTexture(vk_device, &context->m_MainTextureDepthStencil.m_Handle); |
| 4965 | DestroyDeviceBuffer(vk_device, &context->m_DefaultTexture2D->m_DeviceBuffer.m_Handle); |
| 4966 | DestroyTexture(vk_device, &context->m_DefaultTexture2D->m_Handle); |
| 4967 | delete context->m_DefaultTexture2D; |
| 4968 | DestroyDeviceBuffer(vk_device, &context->m_DefaultTexture2DArray->m_DeviceBuffer.m_Handle); |
| 4969 | DestroyTexture(vk_device, &context->m_DefaultTexture2DArray->m_Handle); |
| 4970 | delete context->m_DefaultTexture2DArray; |
| 4971 | DestroyDeviceBuffer(vk_device, &context->m_DefaultTextureCubeMap->m_DeviceBuffer.m_Handle); |
| 4972 | DestroyTexture(vk_device, &context->m_DefaultTextureCubeMap->m_Handle); |
| 4973 | delete context->m_DefaultTextureCubeMap; |
| 4974 | DestroyDeviceBuffer(vk_device, &context->m_DefaultTexture2D32UI->m_DeviceBuffer.m_Handle); |
| 4975 | DestroyTexture(vk_device, &context->m_DefaultTexture2D32UI->m_Handle); |
| 4976 | delete context->m_DefaultTexture2D32UI; |
| 4977 | DestroyDeviceBuffer(vk_device, &context->m_DefaultStorageImage2D->m_DeviceBuffer.m_Handle); |
| 4978 | DestroyTexture(vk_device, &context->m_DefaultStorageImage2D->m_Handle); |
| 4979 | delete context->m_DefaultStorageImage2D; |
| 4980 | |
| 4981 | vkDestroyRenderPass(vk_device, context->m_MainRenderPass, 0); |
| 4982 | vkDestroyRenderPass(vk_device, context->m_MainRenderPassLoad, 0); |
| 4983 | |
| 4984 | vkFreeCommandBuffers(vk_device, context->m_LogicalDevice.m_CommandPool, DM_ARRAY_SIZE(context->m_MainCommandBuffers), context->m_MainCommandBuffers); |
| 4985 | vkFreeCommandBuffers(vk_device, context->m_LogicalDevice.m_CommandPool, 1, &context->m_MainCommandBufferUploadHelper); |
| 4986 | |
| 4987 | for (uint8_t i=0; i < context->m_MainFrameBuffers.Size(); i++) |
| 4988 | { |
| 4989 | vkDestroyFramebuffer(vk_device, context->m_MainFrameBuffers[i], 0); |
| 4990 | } |
| 4991 | |
| 4992 | for (uint8_t i=0; i < context->m_TextureSamplers.Size(); i++) |
| 4993 | { |
| 4994 | DestroyTextureSampler(vk_device, &context->m_TextureSamplers[i]); |
| 4995 | } |
| 4996 | |
| 4997 | for (uint8_t i=0; i < DM_ARRAY_SIZE(context->m_MainScratchBuffers); i++) |
| 4998 | { |
| 4999 | DestroyDeviceBuffer(vk_device, &context->m_MainScratchBuffers[i].m_DeviceBuffer.m_Handle); |
| 5000 | } |
| 5001 | |
| 5002 | for (uint8_t i=0; i < DM_ARRAY_SIZE(context->m_MainDescriptorAllocators); i++) |
| 5003 | { |
| 5004 | DestroyDescriptorAllocator(vk_device, &context->m_MainDescriptorAllocators[i]); |
| 5005 | } |
| 5006 | |
| 5007 | for (uint8_t i=0; i < DM_ARRAY_SIZE(context->m_MainCommandBuffers); i++) |
| 5008 | { |
no test coverage detected