Vulkan resource lifecycle management 68/316868/7
authorDavid Steele <david.steele@samsung.com>
Wed, 28 Aug 2024 16:18:56 +0000 (17:18 +0100)
committerDavid Steele <david.steele@samsung.com>
Mon, 30 Sep 2024 16:57:25 +0000 (17:57 +0100)
commitccb6994ee91ae040343c9bfe811a6bee44eb890f
tree3bf7c574c795276b91a53430c6422543c7ce4162
parentf3ed7a7411341d472afd43803696a0bb029091b6
Vulkan resource lifecycle management

For Vulkan implementation of graphics resources:
  Added discard queue, that's cleaned down during Flush().

Added ResourceWithDeleter as a secondary interface on top of ResourceBase, to allow
Program/Pipeline to inherit solely from ResourceBase, and not have to utilize the
same resource deleters that the main graphics objects require.

Removed VkResource inheritance completely from Impl classes.
Kept VkResource as VkSharedResource, as we may still use this on RenderPassImpl

All Impl classes now have a public Destroy method which is called from their
destructor, but may also be called earlier if needed. Note, CommandBuffers should
not be deleted directly, but instead returned to the command pool for re-use.

Implemented owned containers for some Impl objects using
std::unique_ptr. Framebuffer owns it's attachments, Swapchain owns
it's framebuffers.

Change-Id: I651ed4d041cd2fb3e7698304eeede66625031945
47 files changed:
dali/internal/graphics/vulkan-impl/vulkan-buffer-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-buffer-impl.h
dali/internal/graphics/vulkan-impl/vulkan-buffer.cpp
dali/internal/graphics/vulkan-impl/vulkan-buffer.h
dali/internal/graphics/vulkan-impl/vulkan-command-buffer-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-command-buffer-impl.h
dali/internal/graphics/vulkan-impl/vulkan-command-buffer.cpp
dali/internal/graphics/vulkan-impl/vulkan-command-buffer.h
dali/internal/graphics/vulkan-impl/vulkan-command-pool-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-command-pool-impl.h
dali/internal/graphics/vulkan-impl/vulkan-fence-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-framebuffer-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-framebuffer-impl.h
dali/internal/graphics/vulkan-impl/vulkan-framebuffer.cpp
dali/internal/graphics/vulkan-impl/vulkan-framebuffer.h
dali/internal/graphics/vulkan-impl/vulkan-graphics-controller.cpp
dali/internal/graphics/vulkan-impl/vulkan-graphics-controller.h
dali/internal/graphics/vulkan-impl/vulkan-graphics-resource.h
dali/internal/graphics/vulkan-impl/vulkan-image-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-image-impl.h
dali/internal/graphics/vulkan-impl/vulkan-image-view-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-image-view-impl.h
dali/internal/graphics/vulkan-impl/vulkan-memory-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-memory-impl.h
dali/internal/graphics/vulkan-impl/vulkan-pipeline.cpp
dali/internal/graphics/vulkan-impl/vulkan-pipeline.h
dali/internal/graphics/vulkan-impl/vulkan-program.cpp
dali/internal/graphics/vulkan-impl/vulkan-program.h
dali/internal/graphics/vulkan-impl/vulkan-render-pass-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-render-pass-impl.h
dali/internal/graphics/vulkan-impl/vulkan-render-target.h
dali/internal/graphics/vulkan-impl/vulkan-sampler-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-sampler-impl.h
dali/internal/graphics/vulkan-impl/vulkan-sampler.cpp
dali/internal/graphics/vulkan-impl/vulkan-sampler.h
dali/internal/graphics/vulkan-impl/vulkan-shader-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-shader-impl.h
dali/internal/graphics/vulkan-impl/vulkan-surface-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-surface-impl.h
dali/internal/graphics/vulkan-impl/vulkan-swapchain-impl.cpp
dali/internal/graphics/vulkan-impl/vulkan-swapchain-impl.h
dali/internal/graphics/vulkan-impl/vulkan-texture.cpp
dali/internal/graphics/vulkan-impl/vulkan-texture.h
dali/internal/graphics/vulkan-impl/vulkan-types.h
dali/internal/graphics/vulkan/vulkan-device.cpp
dali/internal/graphics/vulkan/vulkan-device.h
dali/internal/graphics/vulkan/vulkan-graphics-impl.cpp