global update
This commit is contained in:
@@ -41,57 +41,6 @@ enum EVulkanCommandParameterType
|
||||
VULKAN_PARAMETER_TYPE_IMAGE,
|
||||
};
|
||||
|
||||
enum EDependencyMode
|
||||
{
|
||||
DEPENDENCY_MODE_JUST_CREATED,
|
||||
|
||||
DEPENDENCY_MODE_SHADER_IMAGE_READ,
|
||||
DEPENDENCY_MODE_SHADER_BUFFER_READ,
|
||||
DEPENDENCY_MODE_SHADER_IMAGE_WRITE,
|
||||
DEPENDENCY_MODE_SHADER_BUFFER_WRITE,
|
||||
DEPENDENCY_MODE_SHADER_BUFFER_READ_WRITE,
|
||||
DEPENDENCY_MODE_SHADER_IMAGE_READ_WRITE,
|
||||
DEPENDENCY_MODE_SHADER_ACCELERATION_STRUCTURE,
|
||||
|
||||
DEPENDENCY_MODE_DRAWCALL_VERTEX_BUFFER,
|
||||
DEPENDENCY_MODE_DRAWCALL_INDEX_BUFFER,
|
||||
DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE,
|
||||
DEPENDENCY_MODE_DRAWCALL_OUTPUT_DEPTH_IMAGE,
|
||||
DEPENDENCY_MODE_DRAWCALL_INPUT_IMAGE,
|
||||
DEPENDENCY_MODE_DRAWCALL_MIXED_IMAGE,
|
||||
|
||||
DEPENDENCY_MODE_BUFFER_SOURCE,
|
||||
DEPENDENCY_MODE_IMAGE_SOURCE,
|
||||
DEPENDENCY_MODE_IMAGE_DESTINATION,
|
||||
DEPENDENCY_MODE_BUFFER_DESTINATION,
|
||||
|
||||
DEPENDENCY_MODE_IMAGE_RESOLVE_SOURCE,
|
||||
DEPENDENCY_MODE_IMAGE_RESOLVE_DESTINATION,
|
||||
|
||||
DEPENDENCY_MODE_BLIT_IMAGE_SOURCE,
|
||||
DEPENDENCY_MODE_BLIT_IMAGE_DESTINATION,
|
||||
|
||||
DEPENDENCY_MODE_COLOR_CLEAR_SOURCE,
|
||||
DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION,
|
||||
|
||||
DEPENDENCY_MODE_ALL_COMMANDS,
|
||||
DEPENDENCY_MODE_IMAGE_PRESENT,
|
||||
|
||||
DEPENDENCY_MODE_NEXT_STAGE,
|
||||
|
||||
DEPENDENCY_MODE_COUNT,
|
||||
};
|
||||
|
||||
|
||||
struct VulkanCommandDepenency_t {
|
||||
IRenderingObject *m_pObject;
|
||||
EDependencyMode m_eDependencyMode;
|
||||
};
|
||||
struct VulkanCommandSwapchainDepenency_t {
|
||||
IRenderingObject **m_ppObjects;
|
||||
EDependencyMode m_eDependencyMode;
|
||||
};
|
||||
|
||||
struct VulkanCommandParameter_t
|
||||
{
|
||||
const char *m_szName;
|
||||
@@ -109,12 +58,7 @@ public:
|
||||
virtual ~CVkCommand() = default;
|
||||
//virtual const char *GetName();
|
||||
|
||||
CUtlVector<VulkanCommandDepenency_t> m_dependencies = {};
|
||||
CUtlVector<VulkanCommandSwapchainDepenency_t> m_swapchainDependencies = {};
|
||||
EVulkanCommandType m_eType;
|
||||
|
||||
void AddDependency( IRenderingObject *pObject, EDependencyMode eDependencyMode );
|
||||
void AddSwapchainDependency( IRenderingObject **ppObjects, EDependencyMode eDependencyMode );
|
||||
};
|
||||
|
||||
class IVkCommandBufferManager;
|
||||
@@ -125,7 +69,7 @@ public:
|
||||
virtual void AddCommand( CVkCommand *pCommand ) = 0;
|
||||
|
||||
virtual void Reset() = 0;
|
||||
virtual void Submit( int iFrameIndex = 0 ) = 0;
|
||||
virtual void Submit() = 0;
|
||||
virtual void Render() = 0;
|
||||
};
|
||||
|
||||
@@ -157,7 +101,7 @@ class CVk##name##Command : public CVkCommand \
|
||||
public: \
|
||||
virtual void Execute( VkCommandBuffer hCommandBuffer, int iCurrentFrame ) override; \
|
||||
|
||||
#define END_VULKAN_COMMAND( name ) \
|
||||
#define END_VULKAN_COMMAND() \
|
||||
}; \
|
||||
|
||||
#define DECLARE_VULKAN_COMMAND(name) \
|
||||
@@ -177,7 +121,7 @@ class CVkImage: public IImage
|
||||
{
|
||||
public:
|
||||
CVkImage();
|
||||
CVkImage( uint32_t nWidth, uint32_t nHeight, uint32_t nDepth, EImageFormat eFormat, EMultisampleType eMultisampleType, EImageType eImageType, VkImageUsageFlagBits eUsage );
|
||||
CVkImage( uint32_t nWidth, uint32_t nHeight, uint32_t nDepth, EImageFormat eFormat, EMultisampleType eMultisampleType, EImageType eImageType, VkImageUsageFlags eUsage );
|
||||
~CVkImage();
|
||||
|
||||
virtual void SetDebugName( const char *szName ) override;
|
||||
@@ -186,7 +130,7 @@ public:
|
||||
virtual EImageFormat GetImageFormat() override;
|
||||
virtual EMultisampleType GetMultisampleType() override;
|
||||
|
||||
void CreateImage( uint32_t nWidth, uint32_t nHeight, EImageFormat eFormat, EMultisampleType eMultisampleType, VkImageUsageFlagBits eUsage );
|
||||
void CreateImage( uint32_t nWidth, uint32_t nHeight, EImageFormat eFormat, EMultisampleType eMultisampleType, VkImageUsageFlags eUsage );
|
||||
void CreateImageView();
|
||||
|
||||
static VkImageViewType GetImageViewType( enum EImageType eImageType );
|
||||
@@ -204,10 +148,6 @@ public:
|
||||
VmaAllocation m_allocation;
|
||||
VkImageSubresourceRange m_range;
|
||||
|
||||
VkImageLayout m_ePreferredLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
|
||||
|
||||
VkImageLayout m_eImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
EDependencyMode m_eLastUsage = DEPENDENCY_MODE_JUST_CREATED;
|
||||
VkDescriptorType m_eDescriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
|
||||
};
|
||||
|
||||
@@ -433,6 +373,7 @@ enum EVulkanRenderingStage
|
||||
RENDERING_STAGE_RASTER,
|
||||
RENDERING_STAGE_POST_RASTER,
|
||||
RENDERING_STAGE_FINISHED,
|
||||
RENDERING_STAGE_SYNC,
|
||||
};
|
||||
|
||||
struct VulkanMaterialCommandBuffer_t
|
||||
@@ -508,7 +449,8 @@ public:
|
||||
virtual void StartRecording() override;
|
||||
virtual void EndRecording() override;
|
||||
|
||||
virtual void Barrier( IRenderingObject *pObject, bool bIsRead, bool bIsWrite ) override;
|
||||
virtual void Barrier( EStageHazard eBefore, EStageHazard eAfter, uint32_t hazard ) override;
|
||||
virtual void BarrierTransition( IImage *pObject, EImageLayoutHazard old_layout, EImageLayoutHazard layout, EStageHazard eBefore, EStageHazard eAfter, uint32_t hazard ) override;
|
||||
virtual void DispatchCompute( uint32_t uX, uint32_t uY, uint32_t uZ ) override;
|
||||
|
||||
virtual void CopyImageToImage( IImage *pSrc, IImage *pDst ) override;
|
||||
@@ -517,7 +459,6 @@ public:
|
||||
virtual void ClearDepth( IImage *pImage, float fVal ) override;
|
||||
|
||||
void Submit();
|
||||
void FlushBarriers( CVkCommand *pCmd );
|
||||
|
||||
IVkCommandBufferManager *m_pCommandBufferManager;
|
||||
private:
|
||||
@@ -539,7 +480,6 @@ private:
|
||||
uint32_t m_uHeight;
|
||||
CUtlVector<IVkCommandBuffer*> m_pCommandBuffers = {};
|
||||
CUtlVector<IVkCommandBuffer*> m_pScheduledDestroyPostRaster = {};
|
||||
CUtlVector<VkRenderBarrier_t> m_barriers = {};
|
||||
|
||||
EVulkanRenderingStage m_eCurrentStage = RENDERING_STAGE_SETUP_RASTER;
|
||||
};
|
||||
@@ -547,9 +487,6 @@ private:
|
||||
|
||||
IRenderingObject *VulkanGetObject( VkFrameObject_t stObject, int iIndex );
|
||||
|
||||
VkAccessFlags2 VulkanGetAccessFlags( EDependencyMode eMode );
|
||||
VkPipelineStageFlags2 VulkanGetStageFlags( EDependencyMode eMode );
|
||||
VkImageLayout VulkanGetImageLayout( EDependencyMode eMode );
|
||||
VkFormat VulkanGetVertexFormat( EVertexFormat eFormat );
|
||||
VkPrimitiveTopology VulkanGetTopology( ETopologyMode eMode );
|
||||
VkShaderStageFlagBits VulkanGetShaderStage( EShaderStage eStage );
|
||||
|
||||
Reference in New Issue
Block a user