From dd1a51b7523c869c86bb730457dd17a083c796d6 Mon Sep 17 00:00:00 2001 From: kotofyt Date: Mon, 15 Dec 2025 20:31:16 +0200 Subject: [PATCH] added barriers, started working on libraries --- build.cpp | 0 engine/filesystem_pak.cpp | 4 +- fpc/fpc_temp | Bin 0 -> 474384 bytes funnyassets/__build.cpp | 18 +- funnyassets/shaders/flat.slang | 23 +++ materialsystem/__build.cpp | 4 + materialsystem/vulkan/commandbuffer.cpp | 201 ++++++++++++++++++--- materialsystem/vulkan/commands.h | 26 +++ materialsystem/vulkan/commands/base.cpp | 7 + materialsystem/vulkan/commands/draw.cpp | 33 +++- materialsystem/vulkan/libraries/raster.cpp | 57 ++++++ materialsystem/vulkan/raster_libraries.h | 36 ++++ materialsystem/vulkan/rendercontext.cpp | 61 ++++--- materialsystem/vulkan/shader.cpp | 3 + materialsystem/vulkan/utils.cpp | 50 +++++ materialsystem/vulkan/vulkan_state.h | 96 +++++++++- public/materialsystem/imaterialsystem.h | 33 +++- public/tier2/ifilesystem.h | 4 + tier2/filesystem.cpp | 11 ++ tier2/filesystem_libc.cpp | 2 + 20 files changed, 608 insertions(+), 61 deletions(-) mode change 100644 => 100755 build.cpp create mode 100755 fpc/fpc_temp create mode 100644 funnyassets/shaders/flat.slang create mode 100644 materialsystem/vulkan/commands/base.cpp create mode 100644 materialsystem/vulkan/libraries/raster.cpp create mode 100644 materialsystem/vulkan/raster_libraries.h create mode 100644 materialsystem/vulkan/utils.cpp diff --git a/build.cpp b/build.cpp old mode 100644 new mode 100755 diff --git a/engine/filesystem_pak.cpp b/engine/filesystem_pak.cpp index 675f50e..ca175e8 100644 --- a/engine/filesystem_pak.cpp +++ b/engine/filesystem_pak.cpp @@ -82,7 +82,7 @@ public: return; delete pHandle; } + virtual CUtlBuffer Read( IFileHandle *pFile ) override { return NULL; }; }; -CPAKFileSystem g_pakFileSystem; -IFileSystem *filesystem_pak = &g_pakFileSystem; +EXPOSE_FILESYSTEM(CPAKFileSystem, "pakfs"); diff --git a/fpc/fpc_temp b/fpc/fpc_temp new file mode 100755 index 0000000000000000000000000000000000000000..ccd52b1feb1c02902bd593380514e79aa0de28ff GIT binary patch literal 474384 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 literal 0 HcmV?d00001 diff --git a/funnyassets/__build.cpp b/funnyassets/__build.cpp index b974834..bce7449 100644 --- a/funnyassets/__build.cpp +++ b/funnyassets/__build.cpp @@ -8,24 +8,24 @@ void build_shader( const char *szName ) { - filesystem2->MakeDirectory(CUtlString("build/funnygame/metal/gfx")); - filesystem2->MakeDirectory(CUtlString("build/funnygame/vulkan/gfx")); + filesystem2->MakeDirectory(CUtlString("build/funnygame/metal/shaders")); + filesystem2->MakeDirectory(CUtlString("build/funnygame/vulkan/shaders")); CUtlVector slang_args = { - CUtlString("funnyassets/gfx_shaders/%s.slang", szName), + CUtlString("funnyassets/shaders/%s.slang", szName), "-g", "-target", "spirv", "-D", "__SPIRV__=1", "-o", - CUtlString("build/funnygame/vulkan/gfx/%s.shader", szName), + CUtlString("build/funnygame/vulkan/shaders/%s.spv", szName), }; runner->Run("slangc", slang_args); slang_args[3] = "metal"; slang_args[5] = "__METAL__=1"; - slang_args[7] = CUtlString("build/funnygame/metal/gfx/%s.shader", szName); + slang_args[7] = CUtlString("build/funnygame/metal/shaders/%s.spv", szName); runner->Run("slangc", slang_args); runner->Wait(); }; @@ -37,16 +37,19 @@ DECLARE_BUILD_STAGE(assets) filesystem2->CopyDirectory("build", "tools"); filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/maps"); - filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/gfx"); + filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/shaders"); filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/fonts"); filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/textures"); filesystem2->CopyDirectory(CUtlString("build/funnygame/assets"), "funnyassets/materials"); + /* build_shader("mesh_frag"); build_shader("mesh_vert"); build_shader("fgui_rect_frag"); build_shader("fgui_rect_vert"); build_shader("fgui_text_frag"); build_shader("fgui_text_vert"); + */ + build_shader("flat"); CUtlVector python_args = { "build/tools/makepak64.py", CUtlString("build/funnygame/assets"), @@ -62,12 +65,15 @@ DECLARE_BUILD_STAGE(assets) }; runner->Run("python3", python_args); } else { + filesystem2->CopyDirectory(CUtlString("%s/funnygame", szOutputDir.GetString()),"build/funnygame/vulkan/shaders"); + /* python_args = { "build/tools/makepak64.py", CUtlString("build/funnygame/vulkan"), bStaticBuild ? CUtlString("%s/bin/%s.pak", szOutputDir.GetString(), "vulkan") : CUtlString("%s/funnygame/%s.pak", szOutputDir.GetString(), "vulkan"), }; runner->Run("python3", python_args); + */ } runner->Wait(); diff --git a/funnyassets/shaders/flat.slang b/funnyassets/shaders/flat.slang new file mode 100644 index 0000000..96c494f --- /dev/null +++ b/funnyassets/shaders/flat.slang @@ -0,0 +1,23 @@ +struct VS_INPUT +{ + float3 m_vPosition; +} + +struct PS_INPUT +{ + float4 m_vPosition; +} + +[shader("vertex")] +PS_INPUT vsMain( VS_INPUT i ) +{ + PS_INPUT o; + o.m_vPosition = { i.m_vPosition, 1 }; + return o; +} + +[shader("pixel")] +float4 psMain( PS_INPUT i ) +{ + return float4(1); +} diff --git a/materialsystem/__build.cpp b/materialsystem/__build.cpp index 843bde8..53447b4 100644 --- a/materialsystem/__build.cpp +++ b/materialsystem/__build.cpp @@ -9,7 +9,11 @@ CUtlVector MaterialSystem_CompiledFiles = { "materialsystem/vulkan/rendercontext.cpp", "materialsystem/vulkan/material.cpp", "materialsystem/vulkan/commandbuffer.cpp", + "materialsystem/vulkan/utils.cpp", + "materialsystem/vulkan/shader.cpp", "materialsystem/vulkan/commands/draw.cpp", + "materialsystem/vulkan/commands/base.cpp", + "materialsystem/vulkan/libraries/raster.cpp", "external/volk/volk.c", }; CUtlString material_lib; diff --git a/materialsystem/vulkan/commandbuffer.cpp b/materialsystem/vulkan/commandbuffer.cpp index 5812237..5231469 100644 --- a/materialsystem/vulkan/commandbuffer.cpp +++ b/materialsystem/vulkan/commandbuffer.cpp @@ -7,6 +7,20 @@ CUtlVector g_vkCommandBuffers; IVkCommandBufferManager *g_pCommandBufferManager; +struct VulkanCommandLastUsage_t +{ + uint32_t m_nLastUsedCommand; + EDependencyMode m_eLastUsage; + VulkanCommandDepenency_t m_dependency; +}; + +struct VulkanSwapchainCommandLastUsage_t +{ + uint32_t m_nLastUsedCommand; + EDependencyMode m_eLastUsage; + VulkanCommandSwapchainDepenency_t m_dependency; +}; + class CVkCommandBuffer: public IVkCommandBuffer { public: @@ -16,12 +30,15 @@ public: virtual void Render() override; private: void SortDependencies(); - void TryBarrier(); + void TryBarrier( int iCurrent, int iCurrentBuffer ); VulkanCommandDepenency_t *FindLastObjectDependency( IRenderingObject *pObject ); - CUtlSelfReferencingVector m_commands; + CUtlVector m_commands; CUtlVector m_hBuffers = NULL; - CUtlVector m_usedDependencies; + CUtlVector m_usedDependencies; + CUtlVector> m_dependencies; + CUtlVector m_usedSwapchainDependencies; + CUtlVector> m_swapchainDependencies; }; void CVkCommandBuffer::Reset() @@ -65,17 +82,22 @@ void CVkCommandBuffer::Render() uint32_t nNumDependencies; int i = 0; + int y = 0; + + SortDependencies(); for (auto hBuffer: m_hBuffers) { + y = 0; VkCommandBufferBeginInfo stCommandBufferBeginInfo = {}; stCommandBufferBeginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; vkBeginCommandBuffer(hBuffer, &stCommandBufferBeginInfo); for (auto &pCommand: m_commands) { - TryBarrier(); + TryBarrier(y,i); pCommand->Execute(hBuffer, i); + y++; }; vkEndCommandBuffer(hBuffer); @@ -89,33 +111,161 @@ struct VulkanCommandBarrier_t EDependencyMode m_eNewDependency; IRenderingObject *m_pObject; }; + void CVkCommandBuffer::SortDependencies() { + m_dependencies = {}; + m_swapchainDependencies = {}; + m_dependencies.Resize(m_commands.GetSize()); + m_swapchainDependencies.Resize(m_commands.GetSize()); + m_usedDependencies = {}; + m_usedSwapchainDependencies = {}; + + int i = 0; + for ( auto dependency: m_dependencies) + { + dependency = NULL; + } -} - -void CVkCommandBuffer::TryBarrier() -{ - CUtlVector barriers; for (auto &pCommand: m_commands) { - for ( auto dependency: pCommand->m_depedencies) + for ( auto dependency: pCommand->m_dependencies) + { + VulkanCommandLastUsage_t *pLastUsage = NULL; + + for ( auto &dep: m_usedDependencies ) + { + if (dep.m_dependency.m_pObject == dependency.m_pObject) + pLastUsage = &dep; + } + + VulkanCommandLastUsage_t stLastUsage = {}; + stLastUsage.m_nLastUsedCommand = i; + stLastUsage.m_dependency = dependency; + stLastUsage.m_eLastUsage = DEPENDENCY_MODE_FROM_PREVIOUS; + + if (pLastUsage) + stLastUsage.m_eLastUsage = pLastUsage->m_dependency.m_eDependencyMode; + + if (pLastUsage) + m_dependencies[pLastUsage->m_nLastUsedCommand+1].AppendTail(stLastUsage); + else + m_dependencies[0].AppendTail(stLastUsage); + + m_usedDependencies.AppendTail(stLastUsage); + } + for ( auto dependency: pCommand->m_swapchainDependencies) + { + VulkanSwapchainCommandLastUsage_t *pLastUsage = NULL; + + for ( auto &dep: m_usedSwapchainDependencies ) + { + if (dep.m_dependency.m_ppObjects == dependency.m_ppObjects) + pLastUsage = &dep; + } + + VulkanSwapchainCommandLastUsage_t stLastUsage = {}; + stLastUsage.m_nLastUsedCommand = i; + stLastUsage.m_dependency = dependency; + stLastUsage.m_eLastUsage = DEPENDENCY_MODE_FROM_PREVIOUS; + + if (pLastUsage) + stLastUsage.m_eLastUsage = pLastUsage->m_dependency.m_eDependencyMode; + + if (pLastUsage) + m_swapchainDependencies[pLastUsage->m_nLastUsedCommand+1].AppendTail(stLastUsage); + else + m_swapchainDependencies[0].AppendTail(stLastUsage); + + m_usedSwapchainDependencies.AppendTail(stLastUsage); + } + i++; + } +} + + +void CVkCommandBuffer::TryBarrier( int iCurrent, int iCurrentBuffer ) +{ + int x = 0; + CUtlVector dependency = m_dependencies[iCurrent]; + CUtlVector swapchainDependency = m_swapchainDependencies[iCurrent]; + CUtlVector barriers; + + VkDependencyInfo stDependencyInfo = {}; + stDependencyInfo.sType = VK_STRUCTURE_TYPE_DEPENDENCY_INFO; + CUtlVector memoryBarriers = {}; + CUtlVector imageBarriers = {}; + CUtlVector bufferBarriers = {}; + + for (auto barrier: dependency) + { + VulkanCommandBarrier_t stBarrier = {}; + stBarrier.m_eOldDependency = barrier.m_eLastUsage; + stBarrier.m_eNewDependency = barrier.m_dependency.m_eDependencyMode; + stBarrier.m_pObject = barrier.m_dependency.m_pObject; + barriers.AppendTail(stBarrier); + x++; + }; + x = 0; + for (auto barrier: swapchainDependency) + { + VulkanCommandBarrier_t stBarrier = {}; + stBarrier.m_eOldDependency = barrier.m_eLastUsage; + stBarrier.m_eNewDependency = barrier.m_dependency.m_eDependencyMode; + stBarrier.m_pObject = barrier.m_dependency.m_ppObjects[iCurrentBuffer]; + barriers.AppendTail(stBarrier); + x++; + }; + for ( auto barrier: barriers ) + { + union { + IRenderingObject *pObject; + CVkImage *pImage; + CVkBuffer *pBuffer; + }; + + pObject = barrier.m_pObject; + + if (dynamic_cast(pObject)) + { + + VkImageMemoryBarrier2 imageMemoryBarrier = {}; + imageMemoryBarrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2; + imageMemoryBarrier.image = pImage->m_image; + imageMemoryBarrier.subresourceRange = pImage->m_range; + imageMemoryBarrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + imageMemoryBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + imageMemoryBarrier.newLayout = VulkanGetImageLayout(barrier.m_eNewDependency); + imageMemoryBarrier.dstStageMask = VulkanGetStageFlags(barrier.m_eNewDependency); + imageMemoryBarrier.dstAccessMask = VulkanGetAccessFlags(barrier.m_eNewDependency); + if (barrier.m_eOldDependency == DEPENDENCY_MODE_FROM_PREVIOUS) + { + imageMemoryBarrier.oldLayout = VulkanGetImageLayout(pImage->m_eLastUsage); + imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(pImage->m_eLastUsage); + imageMemoryBarrier.srcAccessMask = VulkanGetAccessFlags(pImage->m_eLastUsage); + } else { + imageMemoryBarrier.oldLayout = VulkanGetImageLayout(barrier.m_eOldDependency); + imageMemoryBarrier.srcStageMask = VulkanGetStageFlags(barrier.m_eOldDependency); + imageMemoryBarrier.srcAccessMask = VulkanGetAccessFlags(barrier.m_eOldDependency); + } + imageBarriers.AppendTail(imageMemoryBarrier); + + pImage->m_eLastUsage = barrier.m_eNewDependency; + } + if (dynamic_cast(pObject)) { - VulkanCommandDepenency_t *pLastDependency = FindLastObjectDependency(dependency.m_pObject); } } -}; -VulkanCommandDepenency_t *CVkCommandBuffer::FindLastObjectDependency( IRenderingObject *pObject ) -{ - VulkanCommandDepenency_t *pDependency = NULL; - for ( auto &dependency: m_usedDependencies ) - { - if ( dependency.m_pObject == pObject ) - pDependency = &dependency; - } - return pDependency; -} + if (imageBarriers.GetSize() == 0 && bufferBarriers.GetSize() == 0 ) + return; + + stDependencyInfo.imageMemoryBarrierCount = imageBarriers.GetSize(); + stDependencyInfo.bufferMemoryBarrierCount = bufferBarriers.GetSize(); + stDependencyInfo.pImageMemoryBarriers = imageBarriers.GetData(); + stDependencyInfo.pBufferMemoryBarriers = bufferBarriers.GetData(); + vkCmdPipelineBarrier2(m_hBuffers[iCurrentBuffer], &stDependencyInfo); +}; class CVkCommandBufferManager: public IVkCommandBufferManager { @@ -175,5 +325,10 @@ CVkCommandRegistry::CVkCommandRegistry( const char *szName, fnCreateVulkanComman void CVkCommand::AddDependency( IRenderingObject *pObject, EDependencyMode eDependencyMode ) { - m_depedencies.AppendTail({ pObject, eDependencyMode }); + m_dependencies.AppendTail({ pObject, eDependencyMode }); } +void CVkCommand::AddSwapchainDependency( IRenderingObject **ppObject, EDependencyMode eDependencyMode ) +{ + m_swapchainDependencies.AppendTail({ ppObject, eDependencyMode }); +} + diff --git a/materialsystem/vulkan/commands.h b/materialsystem/vulkan/commands.h index 2ec5f2e..d1da9aa 100644 --- a/materialsystem/vulkan/commands.h +++ b/materialsystem/vulkan/commands.h @@ -1,6 +1,7 @@ #ifndef VULKAN_COMMANDS_H #define VULKAN_COMMANDS_H +#include "tier1/utlvector.h" #include "vulkan_state.h" BEGIN_VULKAN_COMMAND(ClearColor) @@ -12,4 +13,29 @@ BEGIN_VULKAN_COMMAND(ClearColor) IImage **ppSwapchainImages = NULL; END_VULKAN_COMMAND(ClearColor) +struct VulkanRenderOutput_t { + EResolveMode m_eResolveMode; + + VkFrameObject_t m_stImage; + VkFrameObject_t m_stResolveImage; + + ELoadMode m_eLoadMode; + EStoreMode m_eStoreMode; +}; + +BEGIN_VULKAN_COMMAND(Begin) + CUtlVector images; + VulkanRenderOutput_t stDepthImage; + uint32_t nResolutionX; + uint32_t nResolutionY; + + +END_VULKAN_COMMAND(Begin) + +BEGIN_VULKAN_COMMAND(End) +END_VULKAN_COMMAND(End) + +BEGIN_VULKAN_COMMAND(Empty) +END_VULKAN_COMMAND(Empty) + #endif diff --git a/materialsystem/vulkan/commands/base.cpp b/materialsystem/vulkan/commands/base.cpp new file mode 100644 index 0000000..ad32b80 --- /dev/null +++ b/materialsystem/vulkan/commands/base.cpp @@ -0,0 +1,7 @@ +#include "../vulkan_state.h" +#include "../commands.h" +#include "tier0/platform.h" + +DECLARE_VULKAN_COMMAND(Empty) +{ +} diff --git a/materialsystem/vulkan/commands/draw.cpp b/materialsystem/vulkan/commands/draw.cpp index 085db4b..1857aad 100644 --- a/materialsystem/vulkan/commands/draw.cpp +++ b/materialsystem/vulkan/commands/draw.cpp @@ -1,6 +1,9 @@ #include "../vulkan_state.h" #include "../commands.h" +#include "materialsystem/imaterialsystem.h" #include "tier0/platform.h" +#include "tier1/utlvector.h" +#include "vulkan/vulkan_core.h" DECLARE_VULKAN_COMMAND(ClearColor) @@ -8,7 +11,6 @@ DECLARE_VULKAN_COMMAND(ClearColor) CVkImage *pImg; - pImage = NULL; if (pImage) pImg = (CVkImage*)pImage; if (ppSwapchainImages) @@ -17,7 +19,6 @@ DECLARE_VULKAN_COMMAND(ClearColor) if (pImg == NULL) Plat_FatalErrorFunc("pImage and *ppSwapchainImages are NULL\n"); - AddDependency(pImg, DEPENDENCY_MODE_IMAGE_DESTINATION); VkClearColorValue color = {.float32 = {r,g,b,a}}; VkImageSubresourceRange range = { @@ -27,3 +28,31 @@ DECLARE_VULKAN_COMMAND(ClearColor) }; vkCmdClearColorImage(hCommandBuffer, pImg->m_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &color, 1, &range); } + +DECLARE_VULKAN_COMMAND(Begin) +{ + VkRenderingInfo stRenderingInfo = {}; + CUtlVector attachments; + for (auto i: images) + { + VkRenderingAttachmentInfo a; + a.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO; + a.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + a.loadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + a.storeOp = VK_ATTACHMENT_STORE_OP_STORE; + a.imageView = ((CVkImage*)VulkanGetObject(i.m_stImage, iCurrentFrame))->m_imageView; + attachments.AppendTail(a); + } + + stRenderingInfo.sType = VK_STRUCTURE_TYPE_RENDERING_INFO; + stRenderingInfo.layerCount = 1; + stRenderingInfo.colorAttachmentCount = attachments.GetSize(); + stRenderingInfo.pColorAttachments = attachments.GetData(); + + vkCmdBeginRendering(hCommandBuffer, &stRenderingInfo); +} + +DECLARE_VULKAN_COMMAND(End) +{ + vkCmdEndRendering(hCommandBuffer); +} diff --git a/materialsystem/vulkan/libraries/raster.cpp b/materialsystem/vulkan/libraries/raster.cpp new file mode 100644 index 0000000..3812bba --- /dev/null +++ b/materialsystem/vulkan/libraries/raster.cpp @@ -0,0 +1,57 @@ +#include "../vulkan_state.h" +#include "../raster_libraries.h" +#include "tier1/utlbuffer.h" +#include "tier2/ifilesystem.h" +#include "vulkan/vulkan_core.h" + +BEGIN_BUILD_PIPELINE_LIBRARY(Functions) + CUtlBuffer vertexShaderData; + VkShaderModuleCreateInfo stVertexModule = {}; + VkPipelineShaderStageCreateInfo stVertexStage = {}; + if (szVertexShader) + { + + IFileHandle *pFile = filesystem->Open(szVertexShader, FILEMODE_READ); + vertexShaderData = filesystem->Read(pFile); + pFile->Close(); + + stVertexModule.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; + stVertexModule.codeSize = vertexShaderData.GetSize(); + stVertexModule.pCode = (uint32_t*)vertexShaderData.GetMemory(); + + stVertexStage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + stVertexStage.pName = szVertexShaderMain; + stVertexStage.pNext = &stVertexModule; + } + + CUtlBuffer pixelShaderData; + VkShaderModuleCreateInfo stPixelModule = {}; + VkPipelineShaderStageCreateInfo stPixelStage = {}; + if (szPixelShader) + { + + IFileHandle *pFile = filesystem->Open(szPixelShader, FILEMODE_READ); + pixelShaderData = filesystem->Read(pFile); + pFile->Close(); + + stPixelModule.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; + stPixelModule.codeSize = pixelShaderData.GetSize(); + stPixelModule.pCode = (uint32_t*)pixelShaderData.GetMemory(); + + stPixelStage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + stPixelStage.pName = szPixelShaderMain; + stPixelStage.pNext = &stPixelModule; + } +END_BUILD_PIPELINE_LIBRARY() +void CVkFunctionsPipelineLibrary::SetVertex( const char *szFile, const char *szMain ) +{ + szVertexShader = szFile; + szVertexShaderMain = szMain; +} + +void CVkFunctionsPipelineLibrary::SetPixel( const char *szFile, const char *szMain ) +{ + szPixelShader = szFile; + szPixelShaderMain = szMain; +} + diff --git a/materialsystem/vulkan/raster_libraries.h b/materialsystem/vulkan/raster_libraries.h new file mode 100644 index 0000000..c16b698 --- /dev/null +++ b/materialsystem/vulkan/raster_libraries.h @@ -0,0 +1,36 @@ +#include "vulkan_state.h" + +BEGIN_DEFINE_PIPELINE_LIBRARY(Functions) +private: + const char *szVertexShader; + const char *szVertexShaderMain; + const char *szPixelShader; + const char *szPixelShaderMain; +public: + void SetVertex( const char *szFile, const char *szMain ); + void SetPixel( const char *szFile, const char *szMain ); +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(VertexInput) +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(InputAssembly) +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(Tesselation) +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(ViewportState) +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(RasterizationState) +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(MultisampleState) +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(DepthStencilState) +END_DEFINE_PIPELINE_LIBRARY() + +BEGIN_DEFINE_PIPELINE_LIBRARY(ColorBlend) +END_DEFINE_PIPELINE_LIBRARY() diff --git a/materialsystem/vulkan/rendercontext.cpp b/materialsystem/vulkan/rendercontext.cpp index f886450..001e674 100644 --- a/materialsystem/vulkan/rendercontext.cpp +++ b/materialsystem/vulkan/rendercontext.cpp @@ -10,6 +10,7 @@ #include "vulkan/vulkan_core.h" #include "vulkan_state.h" #include "igamewindow.h" +#include "raster_libraries.h" #define REQUIRED_EXTENSION(ext) ext##_EXTENSION_NAME, @@ -126,6 +127,7 @@ void CVkImage::CreateImageView() stImageViewCreateInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; stImageViewCreateInfo.subresourceRange.layerCount = 1; stImageViewCreateInfo.subresourceRange.levelCount = 1; + m_range = stImageViewCreateInfo.subresourceRange; vkCreateImageView(g_vkDevice, &stImageViewCreateInfo, NULL, &m_imageView); } void CVkImage::SetDebugName( const char *szName ) @@ -155,25 +157,6 @@ EMultisampleType CVkImage::GetMultisampleType() } -class CVkBuffer: public IBuffer -{ -public: - CVkBuffer( uint32_t nSize, VkBufferUsageFlags2 eUsage, uint32_t nAlignment ); - ~CVkBuffer(); - - virtual void SetDebugName( const char *szName ) override; - virtual void Lock() override; - virtual void Unlock() override; - virtual void *Map() override; - virtual void Unmap() override; - virtual uint32_t GetSize() override; - - VmaAllocation allocation; - VkBuffer buffer; - VkDeviceAddress address; - uint32_t nSize; -}; - CVkBuffer::CVkBuffer( uint32_t nSize, VkBufferUsageFlags2 eUsage, uint32_t nAlignment ) { } @@ -360,8 +343,7 @@ void CVkRenderContext::DrawPrimitivesIndexed( uint32_t nIndexCount, uint32_t nFi } IVkCommandBuffer *pCommandBuffer; -IVkCommandBuffer *s_pPresentCommandBuffer; -IImage *pCurrentImage; +static IVkCommandBuffer *s_pPresentCommandBuffer; void CVkRenderContext::Init() { VkResult r; @@ -448,11 +430,16 @@ void CVkRenderContext::Init() stDeviceQueueCreateInfo.pQueuePriorities = &fPriority; stDeviceQueueCreateInfo.queueFamilyIndex = g_iDrawFamily; + VkPhysicalDeviceVulkan13Features vk13Features = {}; + vk13Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; + vk13Features.synchronization2 = VK_TRUE; + stDeviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; stDeviceCreateInfo.queueCreateInfoCount = 1; stDeviceCreateInfo.pQueueCreateInfos = &stDeviceQueueCreateInfo; stDeviceCreateInfo.enabledExtensionCount = enabledDeviceExtensions.GetSize(); stDeviceCreateInfo.ppEnabledExtensionNames = enabledDeviceExtensions.GetData(); + stDeviceCreateInfo.pNext = &vk13Features; r = vkCreateDevice(g_vkPhysicalDevice, &stDeviceCreateInfo, NULL, &g_vkDevice); VULKAN_RESULT_PRINT(r, vkEnumeratePhysicalDevices); for (auto &extension: enabledDeviceExtensions) @@ -477,21 +464,44 @@ void CVkRenderContext::Init() g_pCommandBufferManager->Init(); pCommandBuffer = g_pCommandBufferManager->CreateCommandBuffer(); + s_pPresentCommandBuffer = g_pCommandBufferManager->CreateCommandBuffer(); + CVkClearColorCommand *pCommand = (CVkClearColorCommand*)g_pCommandBufferManager->CreateCommand("ClearColor"); pCommand->pImage = NULL; pCommand->ppSwapchainImages = g_vkSwapchainImages.GetData(); pCommand->r = 1; pCommand->b = 1; + pCommand->g = 0; + pCommand->AddSwapchainDependency( (IRenderingObject**)g_vkSwapchainImages.GetData(), DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION ); + + CVkFunctionsPipelineLibrary functions = {}; + functions.SetVertex("funnygame/shaders/flat.spv", "vsMain"); + functions.SetPixel("funnygame/shaders/flat.spv", "psMain"); + functions.Build(); + + CVkEmptyCommand *pPresentCommand = (CVkEmptyCommand*)g_pCommandBufferManager->CreateCommand("Empty"); + pPresentCommand->AddSwapchainDependency( (IRenderingObject**)g_vkSwapchainImages.GetData(), DEPENDENCY_MODE_IMAGE_PRESENT ); + + CVkBeginCommand *pBeginCommand = (CVkBeginCommand*)g_pCommandBufferManager->CreateCommand("Empty"); + pBeginCommand->AddSwapchainDependency((IRenderingObject**)g_vkSwapchainImages.GetData(), DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE); + CVkBeginCommand *pEndCommand = (CVkBeginCommand*)g_pCommandBufferManager->CreateCommand("Empty"); pCommandBuffer->Reset(); pCommandBuffer->AddCommand(pCommand); pCommandBuffer->Render(); + s_pPresentCommandBuffer->Reset(); + s_pPresentCommandBuffer->AddCommand(pPresentCommand); + s_pPresentCommandBuffer->Render(); } void CVkRenderContext::Frame( float fDeltaTime ) { + vkDeviceWaitIdle(g_vkDevice); + pCommandBuffer->Render(); + s_pPresentCommandBuffer->Render(); + static uint32_t s_nImageIndex = 0; uint32_t nImageIndex = 0; @@ -499,6 +509,11 @@ void CVkRenderContext::Frame( float fDeltaTime ) VkResult r = vkAcquireNextImageKHR(g_vkDevice, g_vkSwapchain, UINT64_MAX, g_vkGraphicsSemaphores[s_nImageIndex], NULL, &nImageIndex); vkResetFences(g_vkDevice, 1, &g_vkFences[s_nImageIndex]); + + g_vkCommandBuffers = {}; + + pCommandBuffer->Submit(nImageIndex); + s_pPresentCommandBuffer->Submit(nImageIndex); VkPipelineStageFlags uPipelineStageFlags = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; VkSubmitInfo stSubmitInfo = {}; @@ -506,10 +521,6 @@ void CVkRenderContext::Frame( float fDeltaTime ) stSubmitInfo.waitSemaphoreCount = 1; stSubmitInfo.pWaitSemaphores = &g_vkGraphicsSemaphores[s_nImageIndex]; stSubmitInfo.pWaitDstStageMask = &uPipelineStageFlags; - - pCurrentImage = g_vkSwapchainImages[nImageIndex]; - g_vkCommandBuffers = {}; - pCommandBuffer->Submit(nImageIndex); stSubmitInfo.commandBufferCount = g_vkCommandBuffers.GetSize(); stSubmitInfo.pCommandBuffers = g_vkCommandBuffers.GetData(); diff --git a/materialsystem/vulkan/shader.cpp b/materialsystem/vulkan/shader.cpp index e69de29..97a39b1 100644 --- a/materialsystem/vulkan/shader.cpp +++ b/materialsystem/vulkan/shader.cpp @@ -0,0 +1,3 @@ +#include "vulkan_state.h" + + diff --git a/materialsystem/vulkan/utils.cpp b/materialsystem/vulkan/utils.cpp new file mode 100644 index 0000000..5fe89f8 --- /dev/null +++ b/materialsystem/vulkan/utils.cpp @@ -0,0 +1,50 @@ +#include "vulkan_state.h" + +IRenderingObject *VulkanGetObject( VkFrameObject_t stObject, int iIndex ) +{ + switch (stObject.m_eObjectType) + { + case FRAME_OBJECT_TYPE_SINGLE: + return stObject.m_pSingle; + case FRAME_OBJECT_TYPE_SWAPPED: + return stObject.m_ppSwapped[iIndex]; + default: + return NULL; + } +} + +VkAccessFlags2 VulkanGetAccessFlags( EDependencyMode eMode ) +{ + switch (eMode) + { + case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR; + case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_ACCESS_2_TRANSFER_WRITE_BIT; + case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_ACCESS_2_NONE; + default: + return 0; + } +} + +VkPipelineStageFlags2 VulkanGetStageFlags( EDependencyMode eMode ) +{ + switch (eMode) + { + case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT; + case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_PIPELINE_STAGE_2_TRANSFER_BIT; + case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT; + default: + return VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT; + } +} + +VkImageLayout VulkanGetImageLayout( EDependencyMode eMode ) +{ + switch (eMode) + { + case DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE: return VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + case DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION: return VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL; + case DEPENDENCY_MODE_IMAGE_PRESENT: return VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; + default: + return VK_IMAGE_LAYOUT_UNDEFINED; + } +} diff --git a/materialsystem/vulkan/vulkan_state.h b/materialsystem/vulkan/vulkan_state.h index d9c2d91..dfd96cf 100644 --- a/materialsystem/vulkan/vulkan_state.h +++ b/materialsystem/vulkan/vulkan_state.h @@ -58,13 +58,20 @@ enum EDependencyMode DEPENDENCY_MODE_DRAWCALL_VERTEX_BUFFER, DEPENDENCY_MODE_DRAWCALL_INDEX_BUFFER, DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE, + DEPENDENCY_MODE_DRAWCALL_INPUT_IMAGE, + DEPENDENCY_MODE_DRAWCALL_MIXED_IMAGE, DEPENDENCY_MODE_IMAGE_SOURCE, DEPENDENCY_MODE_IMAGE_DESTINATION, + DEPENDENCY_MODE_COLOR_CLEAR_SOURCE, + DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION, + DEPENDENCY_MODE_ALL_COMMANDS, DEPENDENCY_MODE_IMAGE_PRESENT, + DEPENDENCY_MODE_FROM_PREVIOUS, + DEPENDENCY_MODE_COUNT, }; @@ -73,6 +80,10 @@ struct VulkanCommandDepenency_t { IRenderingObject *m_pObject; EDependencyMode m_eDependencyMode; }; +struct VulkanCommandSwapchainDepenency_t { + IRenderingObject **m_ppObjects; + EDependencyMode m_eDependencyMode; +}; struct VulkanCommandParameter_t { @@ -90,10 +101,12 @@ public: virtual void Execute( VkCommandBuffer hCommandBuffer, int iCurrentFrame ) = 0; //virtual const char *GetName(); - CUtlVector m_depedencies; + CUtlVector m_dependencies = {}; + CUtlVector m_swapchainDependencies = {}; EVulkanCommandType m_eType; -protected: + void AddDependency( IRenderingObject *pObject, EDependencyMode eDependencyMode ); + void AddSwapchainDependency( IRenderingObject **ppObjects, EDependencyMode eDependencyMode ); }; abstract_class IVkCommandBuffer @@ -173,9 +186,88 @@ public: VkImage m_image; VkImageView m_imageView; VmaAllocation m_allocation; + VkImageSubresourceRange m_range; VkImageLayout m_eImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; EDependencyMode m_eLastUsage; }; +class CVkBuffer: public IBuffer +{ +public: + CVkBuffer( uint32_t nSize, VkBufferUsageFlags2 eUsage, uint32_t nAlignment ); + ~CVkBuffer(); + + virtual void SetDebugName( const char *szName ) override; + virtual void Lock() override; + virtual void Unlock() override; + virtual void *Map() override; + virtual void Unmap() override; + virtual uint32_t GetSize() override; + + VmaAllocation allocation; + VkBuffer buffer; + VkDeviceAddress address; + uint32_t nSize; +}; + +class CVkPipelineLibrary +{ +public: + virtual void Build() = 0; + + VkPipeline m_hPipeline = NULL; +}; + +#define BEGIN_DEFINE_PIPELINE_LIBRARY(name) \ +class CVk##name##PipelineLibrary: public CVkPipelineLibrary \ +{ \ +public: \ + virtual void Build() override; \ + +#define END_DEFINE_PIPELINE_LIBRARY() \ +}; + +#define BEGIN_BUILD_PIPELINE_LIBRARY(name) \ +void CVk##name##PipelineLibrary::Build() \ +{ \ + VkGraphicsPipelineCreateInfo pipeline = {}; \ + pipeline.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; \ + +#define END_BUILD_PIPELINE_LIBRARY() \ + vkCreateGraphicsPipelines(g_vkDevice, NULL, 1, &pipeline, NULL, &m_hPipeline); \ +} + +class CVkShader : IShader +{ +public: + void AddShaderLibrary( CVkPipelineLibrary *pLibrary ); + void Build(); + VkPipeline m_hPipeline = NULL; + VkPipelineLayout m_hPipelineLayout; + CUtlVector m_libraries; +}; + +enum EVkFrameObjectType_t +{ + FRAME_OBJECT_TYPE_SINGLE, + FRAME_OBJECT_TYPE_SWAPPED, +}; + +struct VkFrameObject_t +{ + EVkFrameObjectType_t m_eObjectType; + union { + IRenderingObject *m_pSingle; + IRenderingObject **m_ppSwapped; + }; +}; + + +IRenderingObject *VulkanGetObject( VkFrameObject_t stObject, int iIndex ); + +VkAccessFlags2 VulkanGetAccessFlags( EDependencyMode eMode ); +VkPipelineStageFlags2 VulkanGetStageFlags( EDependencyMode eMode ); +VkImageLayout VulkanGetImageLayout( EDependencyMode eMode ); + #endif diff --git a/public/materialsystem/imaterialsystem.h b/public/materialsystem/imaterialsystem.h index fd18311..d3123d6 100644 --- a/public/materialsystem/imaterialsystem.h +++ b/public/materialsystem/imaterialsystem.h @@ -38,6 +38,37 @@ enum EMultisampleType MULTISAMPLE_TYPE_8_SAMPLES, }; +enum EResolveMode +{ + RESOLVE_MODE_NONE, + RESOLVE_MODE_ZERO, + RESOLVE_MODE_AVERAGE, + RESOLVE_MODE_MIN, + RESOLVE_MODE_MAX, +}; + +enum ELoadMode +{ + LOAD_MODE_LOAD, + LOAD_MODE_CLEAR, + LOAD_MODE_DONT_CARE, +}; + +enum EStoreMode +{ + STORE_MODE_STORE, + STORE_MODE_DONT_CARE, +}; + +enum ETopologyMode +{ + TOPOLOGY_MODE_POINT_LIST, + TOPOLOGY_MODE_LINE_LIST, + TOPOLOGY_MODE_LINE_STRIP, + TOPOLOGY_MODE_TRIANGLE_LIST, + TOPOLOGY_MODE_TRIANGLE_STRIP, +}; + abstract_class IRenderingObject { public: @@ -49,7 +80,7 @@ abstract_class IBuffer : public IRenderingObject public: virtual void Lock() = 0; virtual void Unlock() = 0; - virtual void *Map() = 0; +virtual void *Map() = 0; virtual void Unmap() = 0; virtual uint32_t GetSize() = 0; diff --git a/public/tier2/ifilesystem.h b/public/tier2/ifilesystem.h index 2f26440..887bce0 100644 --- a/public/tier2/ifilesystem.h +++ b/public/tier2/ifilesystem.h @@ -3,6 +3,7 @@ #include "iappsystem.h" #include "tier0/platform.h" +#include "tier1/utlbuffer.h" enum EFileMode { @@ -55,6 +56,9 @@ public: virtual void Close( IFileHandle *pFile ) = 0; + // Some cool stuff + virtual CUtlBuffer Read( IFileHandle *pFile ) = 0; + IFileSystem *m_pNext; void RegisterFileSystem(); diff --git a/tier2/filesystem.cpp b/tier2/filesystem.cpp index e2b7ad9..8694cc5 100644 --- a/tier2/filesystem.cpp +++ b/tier2/filesystem.cpp @@ -1,6 +1,8 @@ +#include "tier1/utlbuffer.h" #include "tier2/ifilesystem.h" #include "tier1/interface.h" #include "tier0/lib.h" +#include size_t IFileHandle::Write( const void *pData, size_t nDataSize ) { @@ -83,6 +85,15 @@ public: { } + virtual CUtlBuffer Read( IFileHandle *pFile ) override + { + CUtlBuffer buffer; + buffer = CUtlBuffer(Size(pFile)); + + Read(pFile, buffer.GetMemory(), buffer.GetSize()); + + return buffer; + } }; diff --git a/tier2/filesystem_libc.cpp b/tier2/filesystem_libc.cpp index 80877e7..11dd076 100644 --- a/tier2/filesystem_libc.cpp +++ b/tier2/filesystem_libc.cpp @@ -107,6 +107,8 @@ public: V_fclose(pHandle->m_pFile); delete pHandle; } + + virtual CUtlBuffer Read( IFileHandle *pFile ) override { return NULL; }; }; EXPOSE_FILESYSTEM(CLIBCFileSystem, "sysfs");