4#include <unordered_map>
8 class SamplerCollection;
35 void Init(
Context* context,
const VkSamplerCreateInfo& samplerCi);
44 inline operator VkSampler()
const {
return mSampler; }
85 VkDescriptorImageInfo
GetVkDescriptorInfo(VkImageLayout layout = VkImageLayout::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
const
123 static uint64_t
GetHash(
const VkSamplerCreateInfo& samplerCi);
Wraps an image + sampler combination.
Definition foray_samplercollection.hpp:61
CombinedImageSampler(core::Context *context, core::ManagedImage *image, const VkSamplerCreateInfo &samplerCi)
Construct and initialize.
core::ManagedImage * mManagedImage
Reference used only for descriptor image info filling.
Definition foray_samplercollection.hpp:93
void Init(core::Context *context, const VkSamplerCreateInfo &samplerCi)
Initializes by fetching a matching sampler from sampler collection.
VkDescriptorImageInfo GetVkDescriptorInfo(VkImageLayout layout=VkImageLayout::VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) const
Build descriptor image info.
Definition foray_samplercollection.hpp:85
CombinedImageSampler(const CombinedImageSampler &other)
void Init(core::Context *context, core::ManagedImage *image, const VkSamplerCreateInfo &samplerCi)
Initializes by fetching a matching sampler from sampler collection.
CombinedImageSampler()=default
CombinedImageSampler(CombinedImageSampler &&other)
CombinedImageSampler & operator=(const CombinedImageSampler &other)
Wraps allocation and lifetime functionality of VkImage.
Definition foray_managedimage.hpp:13
Provides sampler objects based on VkSamplerCreateInfo specifications.
Definition foray_samplercollection.hpp:100
void Unregister(SamplerReference &imageSampler)
virtual bool Exists() const override
Return true, if the managed resource is allocated.
Definition foray_samplercollection.hpp:110
void Register(SamplerReference &imageSampler)
static uint64_t GetHash(const VkSamplerCreateInfo &samplerCi)
virtual ~SamplerCollection()
Definition foray_samplercollection.hpp:114
void GetSampler(SamplerReference &imageSampler, const VkSamplerCreateInfo &samplerCi)
SamplerCollection()=default
std::unordered_map< uint64_t, SamplerInstance > mSamplerInstances
Definition foray_samplercollection.hpp:134
void Init(core::Context *context)
Prepares for use.
Definition foray_samplercollection.hpp:108
core::Context * mContext
Definition foray_samplercollection.hpp:125
virtual void Destroy() override
Make sure no reference to any existing sampler will be used after calling this!
Definition foray_samplercollection.hpp:113
Represents a reference to a VkSampler object managed by a SamplerCollection.
Definition foray_samplercollection.hpp:13
SamplerReference(SamplerCollection *collection, const VkSamplerCreateInfo &samplerCi)
Construct and initialize.
uint64_t mHash
Hash of the Sampler CreateInfo.
Definition foray_samplercollection.hpp:53
SamplerReference(SamplerReference &&other)
void Init(Context *context, const VkSamplerCreateInfo &samplerCi)
Initializes by fetching a matching sampler from sampler collection.
SamplerReference()=default
VkSampler mSampler
Sampler (owned by SamplerCollection, this is a loan)
Definition foray_samplercollection.hpp:51
SamplerReference & operator=(const SamplerReference &other)
virtual ~SamplerReference()
SamplerReference(Context *context, const VkSamplerCreateInfo &samplerCi)
Construct and initialize.
SamplerReference(const SamplerReference &other)
SamplerCollection * mCollection
Collection owning the Sampler object.
Definition foray_samplercollection.hpp:55
void Init(SamplerCollection *collection, const VkSamplerCreateInfo &samplerCi)
Initializes by fetching a matching sampler from sampler collection.
void Destroy()
Returns the sampler and deinitializes.
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_PROPERTY_V(member)
Getter+Setter shorthand for value types.
Definition foray_basics.hpp:81
Definition foray_commandbuffer.hpp:6
Non owning context object.
Definition foray_context.hpp:16
Definition foray_samplercollection.hpp:128
uint64_t SamplerHash
Definition foray_samplercollection.hpp:130
uint64_t RefCount
Definition foray_samplercollection.hpp:131
VkSampler Sampler
Definition foray_samplercollection.hpp:129