Merge branch 'better_vk_commands' into indev

This commit is contained in:
kbz_8
2024-01-03 15:47:31 +01:00
committed by GitHub
12 changed files with 763 additions and 27 deletions

View File

@@ -38,7 +38,7 @@ namespace mlx
void setPixel(int x, int y, uint32_t color) noexcept;
int getPixel(int x, int y) noexcept;
inline void setDescriptor(DescriptorSet set) noexcept { _set = std::move(set); }
inline void setDescriptor(DescriptorSet&& set) noexcept { _set = set; }
inline VkDescriptorSet getSet() noexcept { return _set.isInit() ? _set.get() : VK_NULL_HANDLE; }
inline void updateSet(int binding) noexcept { _set.writeDescriptor(binding, *this); _has_been_updated = true; }
inline bool hasBeenUpdated() const noexcept { return _has_been_updated; }

View File

@@ -138,6 +138,16 @@ namespace mlx
void Image::create(uint32_t width, uint32_t height, VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, const char* name, bool dedicated_memory)
{
CmdResource::setDestroyer([this]()
{
this->destroySampler();
this->destroyImageView();
if(_image != VK_NULL_HANDLE)
Render_Core::get().getAllocator().destroyImage(_allocation, _image);
_image = VK_NULL_HANDLE;
});
_width = width;
_height = height;
_format = format;
@@ -332,12 +342,7 @@ namespace mlx
void Image::destroy() noexcept
{
destroySampler();
destroyImageView();
if(_image != VK_NULL_HANDLE)
Render_Core::get().getAllocator().destroyImage(_allocation, _image);
_image = VK_NULL_HANDLE;
CmdResource::requireDestroy();
}
uint32_t formatSize(VkFormat format)

View File

@@ -18,6 +18,7 @@
#include <cstddef>
#include <vector>
#include <vma.h>
#include <renderer/core/cmd_resource.h>
#include <renderer/command/vk_cmd_buffer.h>
#include <renderer/command/vk_cmd_pool.h>
@@ -25,7 +26,7 @@ namespace mlx
{
uint32_t formatSize(VkFormat format);
class Image
class Image : public CmdResource
{
friend class SwapChain;