2#include "../foray_basics.hpp"
3#include "../foray_vulkan.hpp"
30 std::string
Name{
"Unnamed Image"};
39 CreateInfo(VkImageUsageFlags usage, VkFormat format,
const VkExtent2D& extent, std::string_view name =
"Unnamed Image");
47 virtual void Resize(
const VkExtent3D& newextent);
49 virtual void Resize(
const VkExtent2D& newextent);
53 virtual void Create(
Context* context, VkImageUsageFlags usage, VkFormat format,
const VkExtent2D& extent, std::string_view name =
"Unnamed Image");
58 VkPipelineStageFlags
SrcStageMask{VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT};
60 VkPipelineStageFlags
DstStageMask{VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT};
62 VkImageLayout
OldLayout{VkImageLayout::VK_IMAGE_LAYOUT_UNDEFINED};
63 VkImageLayout
NewLayout{VkImageLayout::VK_IMAGE_LAYOUT_UNDEFINED};
64 VkImageAspectFlags
AspectMask{VK_IMAGE_ASPECT_COLOR_BIT};
77 void WriteDeviceLocalData(
const void* data,
size_t size, VkImageLayout layoutAfterWrite, VkBufferImageCopy& imageCopy);
97 virtual void SetName(std::string_view name)
override;
Extension of the commandbuffer wrapper for temporary host synchronized command buffer execution.
Definition foray_commandbuffer.hpp:41
Wraps allocation and lifetime functionality of VkImage.
Definition foray_managedimage.hpp:13
VkImageView mImageView
Definition foray_managedimage.hpp:105
virtual void Create(Context *context, const CreateInfo &createInfo)
Allocates image, creates image, creates imageview.
Context * mContext
Definition foray_managedimage.hpp:102
virtual void SetName(std::string_view name) override
Set a custom name for the object.
CreateInfo mCreateInfo
Definition foray_managedimage.hpp:103
VmaAllocationInfo mAllocInfo
Definition foray_managedimage.hpp:108
virtual bool Exists() const override
Return true, if the managed resource is allocated.
Definition foray_managedimage.hpp:86
VkExtent2D GetExtent2D() const
Definition foray_managedimage.hpp:95
VkExtent3D mExtent3D
Definition foray_managedimage.hpp:110
virtual void Resize(const VkExtent2D &newextent)
Uses stored create info to recreate vulkan image with a new size.
VkFormat mFormat
Definition foray_managedimage.hpp:106
void WriteDeviceLocalData(const void *data, size_t size, VkImageLayout layoutAfterWrite, VkBufferImageCopy &imageCopy)
Creates a staging buffer, writes staging buffer, transitions image layout to transfer destination opt...
virtual ~ManagedImage()
Definition foray_managedimage.hpp:16
VmaAllocation mAllocation
Definition foray_managedimage.hpp:107
void WriteDeviceLocalData(HostSyncCommandBuffer &cmdBuffer, const void *data, size_t size, VkImageLayout layoutAfterWrite, VkBufferImageCopy &imageCopy)
VkSampleCountFlagBits GetSampleCount() const
Definition foray_managedimage.hpp:99
void WriteDeviceLocalData(const void *data, size_t size, VkImageLayout layoutAfterWrite)
See other overload for description. Omits image copy region and assumes a set of default values to wr...
virtual void Resize(const VkExtent3D &newextent)
Uses stored create info to recreate vulkan image with a new size.
virtual void Destroy() override
Destroy the resource.
void CheckImageFormatSupport(const CreateInfo &createInfo)
VkDeviceSize mSize
Definition foray_managedimage.hpp:109
void WriteDeviceLocalData(HostSyncCommandBuffer &cmdBuffer, const void *data, size_t size, VkImageLayout layoutAfterWrite)
virtual void TransitionLayout(ManagedImage::QuickTransition &quickTransition, VkCommandBuffer commandBuffer=VK_NULL_HANDLE)
Simple layout transition.
ManagedImage()
Definition foray_managedimage.hpp:15
virtual void Create(Context *context, VkImageUsageFlags usage, VkFormat format, const VkExtent2D &extent, std::string_view name="Unnamed Image")
Shorthand using common values. See CreateInfo for information.
VkImage mImage
Definition foray_managedimage.hpp:104
ManagedResource variant which automates GetTypeName() overloading by returning a stringified version ...
Definition foray_managedresource.hpp:59
#define FORAY_GETTER_V(member)
Return value.
Definition foray_basics.hpp:39
#define FORAY_GETTER_CR(member)
Return constant reference.
Definition foray_basics.hpp:60
Definition foray_commandbuffer.hpp:6
Non owning context object.
Definition foray_context.hpp:16
Combines all structs used for initialization.
Definition foray_managedimage.hpp:20
VkImageViewCreateInfo ImageViewCI
Vulkan ImageView CreateInfo.
Definition foray_managedimage.hpp:26
bool CreateImageView
If set to true, image view is created.
Definition foray_managedimage.hpp:24
CreateInfo()
Initiliazes .sType fields, chooses common defaults for everything else.
CreateInfo(VkImageUsageFlags usage, VkFormat format, const VkExtent2D &extent, std::string_view name="Unnamed Image")
Shorthand for initializing commonly set values.
VmaAllocationCreateInfo AllocCI
Vma Allocation CreateInfo.
Definition foray_managedimage.hpp:28
std::string Name
Debug object name.
Definition foray_managedimage.hpp:30
VkImageCreateInfo ImageCI
Vulkan Image CreateInfo.
Definition foray_managedimage.hpp:22
Helper struct translated to a VkImageMemoryBarrier2 struct for one-time layout transitions.
Definition foray_managedimage.hpp:57
VkPipelineStageFlags DstStageMask
Definition foray_managedimage.hpp:60
VkImageLayout OldLayout
Definition foray_managedimage.hpp:62
VkImageLayout NewLayout
Definition foray_managedimage.hpp:63
VkPipelineStageFlags SrcStageMask
Definition foray_managedimage.hpp:58
VkImageAspectFlags AspectMask
Definition foray_managedimage.hpp:64
VkAccessFlags DstAccessMask
Definition foray_managedimage.hpp:61
VkAccessFlags SrcAccessMask
Definition foray_managedimage.hpp:59