87 ImageDimensions dimensions,
90 MultiSamplingLevel samples,
92 ImageLayout initial_layout,
93 VmaAllocator allocator =
nullptr,
94 VmaAllocation allocation =
nullptr,
95 const std::string& name =
"");
120 static std::unique_ptr<VulkanImage> Allocate(
const VulkanDevice& device,
123 ImageDimensions dimensions,
126 MultiSamplingLevel samples,
128 ImageLayout initial_layout,
129 VmaAllocator& allocator,
130 const VkImageCreateInfo& create_info,
131 const VmaAllocationCreateInfo& allocation_info,
132 VmaAllocationInfo* allocation_result =
nullptr);
152 static std::unique_ptr<VulkanImage> Allocate(
const std::string& name,
156 ImageDimensions dimensions,
159 MultiSamplingLevel samples,
161 ImageLayout initial_layout,
162 VmaAllocator& allocator,
163 const VkImageCreateInfo& create_info,
164 const VmaAllocationCreateInfo& allocation_info,
165 VmaAllocationInfo* allocation_result =
nullptr);
168 [[nodiscard]] VkImageAspectFlags aspectMask()
const noexcept override;
171 [[nodiscard]] VkImageAspectFlags aspectMask(
unsigned plane)
const override;
174 [[nodiscard]]
const VkImageView& imageView(
unsigned plane = 0)
const override;
177 [[nodiscard]]
unsigned elements()
const noexcept override;
180 [[nodiscard]] std::size_t size()
const noexcept override;
183 [[nodiscard]] std::size_t elementSize()
const noexcept override;
186 [[nodiscard]] std::size_t elementAlignment()
const override;
189 [[nodiscard]] std::size_t alignedElementSize()
const noexcept override;
192 [[nodiscard]]
bool writable()
const noexcept override;
195 [[nodiscard]] std::size_t size(
unsigned level)
const override;
201 [[nodiscard]] Format format()
const noexcept override;
204 [[nodiscard]] ImageDimensions dimensions()
const noexcept override;
207 [[nodiscard]]
unsigned levels()
const noexcept override;
210 [[nodiscard]]
unsigned layers()
const noexcept override;
213 [[nodiscard]]
unsigned planes()
const noexcept override;
216 [[nodiscard]] MultiSamplingLevel samples()
const noexcept override;
219 [[nodiscard]] ImageLayout layout(
unsigned sub_resource)
const override;
223 std::unique_ptr<Impl> m_impl;