2#include "../foray_basics.hpp"
3#include "../foray_glm.hpp"
14 virtual
void UpdateTo(uint32_t frameIndex) = 0;
16 virtual
void CmdPrepareForRead(VkCommandBuffer cmdBuffer, VkPipelineStageFlags2 dstStageMask, VkAccessFlags2 dstAccessMask) const;
19 virtual
bool Exists() const override;
24 operator VkBuffer()
const {
return mUboBuffer.GetDeviceBuffer().GetBuffer(); }
40 template <
typename T_UBO>
51 virtual void UpdateTo(uint32_t frameIndex)
override;
57 template <
typename T_UBO>
62 template <
typename T_UBO>
68 mUboBuffer.SetName(name);
72 template <
typename T_UBO>
78 template <
typename T_UBO>
81 mUboBuffer.StageFullBuffer(frameIndex, &mData);
51 virtual void UpdateTo(uint32_t frameIndex)
override; {
…}
Base class enforcing common interface for all classes wrapping a device resource.
Definition foray_managedresource.hpp:11
Helper class for organizing CPU -> GPU data synchronisation. In flight data is stored on host side,...
Definition foray_dualbuffer.hpp:18
Definition foray_managedubo.hpp:8
virtual void CmdCopyToDevice(uint32_t frameIndex, VkCommandBuffer cmdBuffer)
const core::ManagedBuffer * GetDeviceBuffer() const
Definition foray_managedubo.hpp:22
virtual void CmdPrepareForRead(VkCommandBuffer cmdBuffer, VkPipelineStageFlags2 dstStageMask, VkAccessFlags2 dstAccessMask) const
VkBuffer GetVkBuffer() const
Definition foray_managedubo.hpp:28
void Create(core::Context *context, VkDeviceSize size, uint32_t stageBufferCount=INFLIGHT_FRAME_COUNT)
DualBuffer mUboBuffer
Definition foray_managedubo.hpp:31
virtual void UpdateTo(uint32_t frameIndex)=0
virtual void Destroy() override
Destroy the resource.
virtual bool Exists() const override
Return true, if the managed resource is allocated.
size_t SizeOfUbo() const
Definition foray_managedubo.hpp:10
virtual VkBufferMemoryBarrier2 MakeBarrierPrepareForRead(VkPipelineStageFlags2 dstStageMask, VkAccessFlags2 dstAccessMask) const
VkDescriptorBufferInfo GetVkDescriptorBufferInfo() const
Template class for managing a UBO. For Host -> Device synchronization this utilises a DualBuffer.
Definition foray_managedubo.hpp:42
~ManagedUbo()
Definition foray_managedubo.hpp:73
virtual void UpdateTo(uint32_t frameIndex) override
Definition foray_managedubo.hpp:79
void Create(core::Context *context, std::string_view name)
Definition foray_managedubo.hpp:63
T_UBO mData
Definition foray_managedubo.hpp:44
ManagedUbo()
Definition foray_managedubo.hpp:58
#define FORAY_PROPERTY_R(member)
Getter+Setter shorthand for reference types.
Definition foray_basics.hpp:86
Definition foray_dualbuffer.hpp:5
constexpr uint32_t INFLIGHT_FRAME_COUNT
Inflight frame count is the amount of frames 'in flight' aka frames recorded on the host before waiti...
Definition foray_basics.hpp:35
Non owning context object.
Definition foray_context.hpp:16