Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion external/vcpkg
Submodule vcpkg updated 6489 files
27 changes: 20 additions & 7 deletions include/RenderGraph/BufferData.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,27 @@ namespace crg
{
std::string name;
BufferCreateInfo info;
uint32_t maxPages{ 1u };
uint32_t allocatedPages{};

explicit BufferData( std::string name = {}
, BufferCreateFlags flags = {}
, DeviceSize size = {}
, BufferUsageFlags usage = {}
, MemoryPropertyFlags memory = MemoryPropertyFlags::eDeviceLocal )
: name{ std::move( name ) }
, info{ flags, size, usage, memory }
explicit BufferData( std::string pname = {}
, BufferCreateFlags pflags = {}
, DeviceSize psize = {}
, uint32_t pmaxPages = 1u
, BufferUsageFlags pusage = {}
, MemoryPropertyFlags pmemory = MemoryPropertyFlags::eDeviceLocal )
: name{ std::move( pname ) }
, info{ pflags, psize, pusage, pmemory }
, maxPages{ pmaxPages }
{
}

explicit BufferData( std::string pname = {}
, BufferCreateFlags pflags = {}
, DeviceSize psize = {}
, BufferUsageFlags pusage = {}
, MemoryPropertyFlags pmemory = MemoryPropertyFlags::eDeviceLocal )
: BufferData{ std::move( pname ), pflags, psize, 1u, pusage, pmemory }
{
}

Expand Down
8 changes: 4 additions & 4 deletions include/RenderGraph/FrameGraph.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ namespace crg
* Resource creation.
*/
/**@{*/
CRG_API BufferId createBuffer( BufferData const & img );
CRG_API BufferViewId createView( BufferViewData const & view );
CRG_API ImageId createImage( ImageData const & img );
CRG_API ImageViewId createView( ImageViewData const & view );
CRG_API BufferId createBufferId( BufferData const & img );
CRG_API BufferViewId createViewId( BufferViewData const & view );
CRG_API ImageId createImageId( ImageData const & img );
CRG_API ImageViewId createViewId( ImageViewData const & view );
/**@}*/
/**
*\name
Expand Down
46 changes: 35 additions & 11 deletions include/RenderGraph/FrameGraphBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,21 @@ namespace crg
struct LayoutState;
struct PipelineState;
struct RootNode;
struct Sampler;
struct SamplerDesc;
struct SemaphoreWait;
struct Texcoord;
struct VertexBuffer;
struct WriteDescriptorSet;

class Buffer;
class ContextResourcesCache;
class Exception;
class Fence;
class FrameGraph;
class FramePassTimer;
class GraphVisitor;
class Image;
class ImageCopy;
class PipelinePass;
class RecordContext;
Expand Down Expand Up @@ -92,6 +95,38 @@ namespace crg
using PassDependencyCache = std::unordered_map< FramePass const *, DependencyCache >;
using DeviceSize = VkDeviceSize;

struct BufferMemory
{
explicit BufferMemory( VkBuffer buf = {}
, VkDeviceMemory mem = {} )noexcept
: buffer{ buf }
, memory{ mem }
{
}

VkBuffer buffer{};
VkDeviceMemory memory{};

private:
friend bool operator==( BufferMemory const & lhs, BufferMemory const & rhs ) = default;
};

struct ImageMemory
{
explicit ImageMemory( VkImage img = {}
, VkDeviceMemory mem = {} )noexcept
: image{ img }
, memory{ mem }
{
}

VkImage image{};
VkDeviceMemory memory{};

private:
friend bool operator==( ImageMemory const & lhs, ImageMemory const & rhs ) = default;
};

using AttachmentPtr = std::unique_ptr< Attachment >;
using FramePassPtr = std::unique_ptr< FramePass >;
using FramePassGroupPtr = std::unique_ptr< FramePassGroup >;
Expand Down Expand Up @@ -127,20 +162,9 @@ namespace crg
using GraphNodePtrArray = std::vector< GraphNodePtr >;
using WriteDescriptorSetArray = std::vector< WriteDescriptorSet >;
using AttachmentsNodeMap = std::map< ConstGraphAdjacentNode, AttachmentTransitions >;
using BufferMemoryMap = std::map< BufferId, std::pair< VkBuffer, VkDeviceMemory > >;
using BufferViewMap = std::map< BufferViewId, VkBufferView >;
using ImageMemoryMap = std::map< ImageId, std::pair< VkImage, VkDeviceMemory > >;
using ImageViewMap = std::map< ImageViewId, VkImageView >;
using ImageViewIdArray = std::vector< ImageViewId >;
using SemaphoreWaitArray = std::vector< SemaphoreWait >;

template< typename DataT >
using IdDataOwnerCont = std::map< Id< DataT >, std::unique_ptr< DataT > >;
using BufferIdDataOwnerCont = IdDataOwnerCont< BufferData >;
using BufferViewIdDataOwnerCont = IdDataOwnerCont< BufferViewData >;
using ImageIdDataOwnerCont = IdDataOwnerCont< ImageData >;
using ImageViewIdDataOwnerCont = IdDataOwnerCont< ImageViewData >;

using VkAttachmentDescriptionArray = std::vector< VkAttachmentDescription >;
using VkAttachmentReferenceArray = std::vector< VkAttachmentReference >;
using VkBufferArray = std::vector< VkBuffer >;
Expand Down
1 change: 1 addition & 0 deletions include/RenderGraph/FrameGraphFunctions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ namespace crg
CRG_API ImageAspectFlags getAspectFlags( ImageViewId const & image )noexcept;
CRG_API ImageSubresourceRange const & getSubresourceRange( ImageViewId const & image )noexcept;
CRG_API BufferSubresourceRange const & getSubresourceRange( BufferViewId const & buffer )noexcept;
CRG_API std::pair< uint32_t, uint32_t > getBufferPageRange( BufferId bufferId, BufferSubresourceRange const & range );
CRG_API AccessFlags getAccessMask( ImageLayout layout )noexcept;
CRG_API PipelineStageFlags getStageMask( ImageLayout layout )noexcept;
CRG_API PipelineState getPipelineState( PipelineStageFlags flags )noexcept;
Expand Down
6 changes: 0 additions & 6 deletions include/RenderGraph/FrameGraphPrerequisites.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,6 @@ namespace crg
template< typename TypeT >
static inline const TypeT defaultV = DefaultValueGetterT< TypeT >::get();

template< typename TypeT >
static inline TypeT getDefaultV()
{
return DefaultValueGetterT< TypeT >::get();
}

template<>
struct DefaultValueGetterT< VkPipelineVertexInputStateCreateInfo >
{
Expand Down
16 changes: 8 additions & 8 deletions include/RenderGraph/FramePassGroup.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,21 +67,21 @@ namespace crg
CRG_API LayoutState getFinalLayoutState( ImageViewId view
, uint32_t passIndex = 0u )const;
/**
*\copydoc crg::FrameGraph::createBuffer
*\copydoc crg::FrameGraph::createBufferId
*/
CRG_API BufferId createBuffer( BufferData const & img )const;
CRG_API BufferId createBufferId( BufferData const & img )const;
/**
*\copydoc crg::FrameGraph::createView
*\copydoc crg::FrameGraph::createViewId
*/
CRG_API BufferViewId createView( BufferViewData const & view )const;
CRG_API BufferViewId createViewId( BufferViewData const & view )const;
/**
*\copydoc crg::FrameGraph::createImage
*\copydoc crg::FrameGraph::createImageId
*/
CRG_API ImageId createImage( ImageData const & img )const;
CRG_API ImageId createImageId( ImageData const & img )const;
/**
*\copydoc crg::FrameGraph::createView
*\copydoc crg::FrameGraph::createViewId
*/
CRG_API ImageViewId createView( ImageViewData const & view )const;
CRG_API ImageViewId createViewId( ImageViewData const & view )const;
/**
*\copydoc crg::FrameGraph::addInput
*/
Expand Down
3 changes: 2 additions & 1 deletion include/RenderGraph/FramePassTimer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,8 @@ namespace crg
bool written{};
bool started{};
};
std::array< Query, 2u > m_queries;
std::array< Query, 4u > m_queries;
uint32_t m_queryIndex{ 0 };
};
}

Expand Down
2 changes: 2 additions & 0 deletions include/RenderGraph/LayerLayoutStatesHandler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ namespace crg
CRG_API explicit LayerLayoutStatesHandler( LayerLayoutStatesMap const & rhs );
CRG_API void addStates( LayerLayoutStatesHandler const & data );

CRG_API void clear();

CRG_API void setLayoutState( ImageId image
, ImageViewType viewType
, ImageSubresourceRange const & subresourceRange
Expand Down
22 changes: 22 additions & 0 deletions include/RenderGraph/RecordContext.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ namespace crg
CRG_API explicit RecordContext( ContextResourcesCache & resources );
CRG_API explicit RecordContext( ResourceHandler & handler );
/**
*\name Lifetime
*/
//@{
CRG_API void reset();
//@}
/**
*\name States
*/
//@{
Expand Down Expand Up @@ -104,6 +110,8 @@ namespace crg
*\name Memory barriers
*/
//@{
CRG_API void beginBatchBarriers();
CRG_API void flushBatchBarriers( VkCommandBuffer commandBuffer );
/**
*\name Images
*/
Expand Down Expand Up @@ -264,6 +272,15 @@ namespace crg
return m_nextPipelineState;
}

bool isBatching() const
{
return m_isBatching;
}

private:
RecordContext( ResourceHandler & handler
, ContextResourcesCache * resources );

private:
ResourceHandler * m_handler;
ContextResourcesCache * m_resources;
Expand All @@ -276,5 +293,10 @@ namespace crg
PipelineState m_currPipelineState{};
PipelineState m_nextPipelineState{};
LayerLayoutStatesHandler m_nextImages;
std::vector< VkImageMemoryBarrier > m_batchedImageBarriers;
std::vector< VkBufferMemoryBarrier > m_batchedBufferBarriers;
VkPipelineStageFlags m_batchSrcStages{};
VkPipelineStageFlags m_batchDstStages{};
bool m_isBatching{ false };
};
}
Loading
Loading