MCPcopy Create free account
hub / github.com/begla/Intrinsic / releaseQueuedResources

Method releaseQueuedResources

IntrinsicCore/src/IntrinsicRendererRenderSystem.cpp:221–277  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

219//<-
220
221void RenderSystem::releaseQueuedResources()
222{
223 _INTR_PROFILE_CPU("Render System", "Releae Queued Resources");
224
225 for (auto it = _resourcesToFree.begin(); it != _resourcesToFree.end();)
226 {
227 ResourceReleaseEntry& entry = *it;
228
229 if (entry.age >= (uint32_t)RenderSystem::_vkSwapchainImages.size())
230 {
231 VkResult result = VK_SUCCESS;
232 if (entry.typeName == _N(VkDescriptorSet))
233 {
234 result = vkFreeDescriptorSets(RenderSystem::_vkDevice,
235 (VkDescriptorPool)entry.userData1, 1u,
236 (VkDescriptorSet*)&entry.userData0);
237 }
238 else if (entry.typeName == _N(VkImage))
239 {
240 vkDestroyImage(RenderSystem::_vkDevice, (VkImage)entry.userData0,
241 nullptr);
242 }
243 else if (entry.typeName == _N(VkImageView))
244 {
245 vkDestroyImageView(RenderSystem::_vkDevice,
246 (VkImageView)entry.userData0, nullptr);
247 }
248 else if (entry.typeName == _N(VkDeviceMemory))
249 {
250 vkFreeMemory(RenderSystem::_vkDevice, (VkDeviceMemory)entry.userData0,
251 nullptr);
252 }
253 else if (entry.typeName == _N(VkBuffer))
254 {
255 vkDestroyBuffer(RenderSystem::_vkDevice, (VkBuffer)entry.userData0,
256 nullptr);
257 }
258 else if (entry.typeName == _N(VkPipeline))
259 {
260 vkDestroyPipeline(RenderSystem::_vkDevice, (VkPipeline)entry.userData0,
261 nullptr);
262 }
263 else
264 {
265 _INTR_ASSERT(false);
266 }
267 _INTR_VK_CHECK_RESULT(result);
268
269 it = _resourcesToFree.erase(it);
270 }
271 else
272 {
273 ++entry.age;
274 ++it;
275 }
276 }
277}
278

Callers

nothing calls this directly

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected