global update

This commit is contained in:
2026-08-26 15:30:40 +03:00
parent 52aa5803af
commit 8055881fef
28 changed files with 401 additions and 624 deletions
+7 -70
View File
@@ -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 );